You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js开发的viber-bot中正确使用optionalTrackingData解决返回为空问题

问题根因及解决方案

你遇到的问题是trackingData参数传递位置不符合Viber Bot API的要求,同时需要注意参数格式约束,按以下步骤修改即可:

  • 首先修正sendMessage的参数结构:Viber Node.js SDK要求trackingData必须放在配置对象的optional子属性下,不能直接放在配置对象顶层,你当前的传参方式无法被API识别。
  • 其次注意trackingData的类型要求:该字段仅支持字符串类型,如果需要传递结构化数据,需要先通过JSON.stringify序列化,收到用户回复时再用JSON.parse解析即可。
  • 若你使用自定义键盘接收用户回复,需要确认键盘按钮没有单独设置空的trackingData,按钮级配置优先级高于消息级配置,会覆盖你在消息层设置的值。

修正后的代码示例

bot.sendMessage(response.userProfile, [
  new TextMessage("please select your email:"),
  keyboardMessage
], {
  optional: {
    // 字符串类型,传结构化数据请先序列化
    trackingData: JSON.stringify({ customField: "yourCustomValue" })
  }
});

接收侧取值说明

用户回复后,trackingData会出现在回调请求的message.tracking_data字段中(注意是下划线命名,不是驼峰格式),不要取错字段层级。

内容的提问来源于stack exchange,提问作者Vasya Krysa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:24:06