如何通过Viber API发送欢迎消息?回调无接收方详情求助
问题分析与解决方案
核心问题定位
- 接口用途混淆:
conversation_started是Viber向你的webhook推送的用户触发事件接口,用于通知Bot用户首次发起对话,不是主动给用户发送消息的接口。你调用这个接口的操作,本质是模拟Viber给你的Bot推送事件,而非发送消息。 - 请求地址错误:你的Postman返回的是Pipedream的响应,说明你实际请求的是自己的Pipedream webhook地址,而非Viber官方的API接口,根本没有调用到Viber的消息发送服务。
正确操作步骤
1. 使用官方消息发送接口
主动给特定联系人发消息,需调用Viber的send_message接口,地址为:https://chatapi.viber.com/pa/send_message
2. 构造合法请求参数
请求必须包含以下关键字段:
receiver:接收用户的Viber ID(需从用户触发的conversation_started事件中获取并存储)X-Viber-Auth-Token:请求头中必须携带你的Bot认证令牌
示例请求体:
{ "receiver": "UieTlBq7hUsZKsSMW6QnxA==", "sender": { "name": "John McClane", "avatar": "http://avatar.example.com" }, "tracking_data": "tracking data", "type": "text", "text": "Welcome to our bot!" }
3. 获取接收方ID
当用户首次打开与Bot的对话时,Viber会自动推送conversation_started事件到你的Pipedream webhook,此时回调内容中的event.body.event.sender.id就是该用户的Viber ID,你需要将这个ID存储下来,作为后续主动发消息的receiver值。
对当前回调内容的说明
你在Pipedream中收到的回调,是你用Postman模拟请求自己webhook产生的测试数据,其中的sender字段是你模拟的用户信息,并非实际要发送消息的接收方,这是因为你错误地调用了事件通知接口而非消息发送接口。
内容的提问来源于stack exchange,提问作者Deshan-Charuka
相关产品推荐
相关产品推荐

