NodeJS Viber中带节点的位置选择器和打开Map方法

uklbhaso  于 2023-11-17  发布在  Node.js
关注(0)|答案(2)|浏览(87)

我目前正在Node上的Viber聊天机器人中从事基于位置的服务,但是,要么viber docs缺少信息,要么我不明白一些重要的东西。我需要的方法是location-picker制作一个按钮,用于与我的机器人共享位置,open-map打开用户设备的默认Map应用程序,并在按下按钮时显示信息。我既没有找到任何工作示例也没有找到任何关于键盘对这些功能的请求应该是什么样子的实际数据。
我试着做了一个这样的物体:

"Buttons": {
  "Columns":6,
  "Rows":3,
  "ActionType": "open-map",
  "Map": {
    "Latitude": data.latitude,
    "Longitude": data.longitude
  },
  "Image": data.image
  },

字符串
但这会在发送到viber时返回UnhandledPromiseRejectionWarning。
(Of当然,这不是整个键盘对象,但它的'不工作'的一部分;如果我改变键盘类型为“回复”,并添加回复文本,它会工作得很好)
对于location-picker,我尝试

"Buttons": {
        "Columns": 6,
        "Rows": 1,
        "BgColor": "#26CF94",
        "BgLoop": true,
        "ActionType": "location-picker",
        "Text": "Share location",
},


但这会返回UnhandledPromiseRejectionWarning。
从这一点上看,问题是显而易见的,键盘对象发送错误,但我不能找出到底是什么错了。那么什么是正确的方法来做到这一点?
p.s.我正在使用viber-bot库来管理请求

a64a0gku

a64a0gku1#

按钮没有问题。问题与API版本有关。您需要在准备消息时指定API版本。

var registerMessage = new TextMessage("Please register your account to continue", registerKeyboard,undefined,undefined,undefined,3)

字符串
这是文本消息。我使用的是API版本3。同样,你可以为其他类型的消息和其他API版本做这件事

9q78igpj

9q78igpj2#

正确:

"Buttons": {
  "Columns": 6,
  "Rows": 1,
  "BgColor": "#26CF94",
  "BgLoop": true,
  "ActionType": "location-picker",
  "ActionBody" : "location",
  "Text": "Share location",
},

字符串
ActionBody-是强制参数!

相关问题