我目前正在 Node 上的 viber 聊天机器人中开发基于位置的服务,但是 viber 文档 缺少信息,或者我不明白一些重要的东西。 我需要的方法是
location-picker
创建一个用于与我的机器人共享位置的按钮,以及 open-map
为用户设备打开默认地图应用程序并在按下按钮时显示信息。我既没有找到此功能的任何工作示例,也没有找到有关键盘对这些功能的请求应该是什么样子的任何实际数据。
我尝试制作这样的物体:
"Buttons": {
"Columns":6,
"Rows":3,
"ActionType": "open-map",
"Map": {
"Latitude": data.latitude,
"Longitude": data.longitude
},
"Image": data.image
},
但这会在将其发送到 viber 时返回 UnhandledPromiseRejectionWarning。
(当然,这不是整个键盘对象,而是它的“不工作”部分;如果我将 ActionType 更改为“回复”并添加回复文本,它将正常工作)
对于位置选择器我尝试过
"Buttons": {
"Columns": 6,
"Rows": 1,
"BgColor": "#26CF94",
"BgLoop": true,
"ActionType": "location-picker",
"Text": "Share location",
},
但这会返回 UnhandledPromiseRejectionWarning。
从这一点来看,问题很明显,发送的键盘对象出了问题,但我无法弄清楚到底出了什么问题。那么正确的方法是什么?
附注我正在使用 viber-bot 库来管理请求
按钮没有问题。问题出在 API 版本上。准备消息时需要指定API版本。
var registerMessage = new TextMessage("Please register your account to continue", registerKeyboard,undefined,undefined,undefined,3)
这是用于短信。我正在使用 API 版本 3 。同样,您可以对其他类型的消息和其他 api 版本执行此操作
正确:
“按钮”:{ “列”:6, “行”:1, "背景颜色": "#26CF94", “BgLoop”:正确, "ActionType": "位置选择器", "ActionBody" : "位置", "Text": "分享位置", },
ActionBody - 是强制参数!