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

如何用Viber Bot向群组发送消息?问题排查求助

问题解答

a. 当前问题定位

你遇到的直接问题是webhookNotSet错误,这是因为Viber Bot必须先配置有效的Webhook才能正常调用API;另外你获取聊天ID的方式错误,分享链接末尾的内容不是Viber认可的合法聊天ID。

b. 无法正常运行的原因

  1. 强制前置条件缺失:Viber平台要求所有Bot必须配置一个公网可访问的HTTPS Webhook,哪怕你的机器人不需要响应任何用户消息,这个步骤也不能省略。没有Webhook的话,Viber不会承认你的Bot实例,调用sendMessage必然返回10号错误。
  2. 聊天ID获取错误:Viber的聊天ID不是从分享链接提取的,必须让Bot加入目标群组后,从Viber推送的群组事件中获取。

c. 获取Viber聊天ID的正确方法

  1. 先完成Webhook配置,确保你的Bot服务有公网可访问的HTTPS地址。
  2. 让目标群组的管理员把Bot添加到群组/社区/频道中。
  3. 当Bot被加入群组时,Viber会向你的Webhook发送conversation_started事件,事件数据里的chat.id就是你需要的聊天ID。你可以在Webhook的处理逻辑里打印这个事件,提取并保存ID。
    关键事件结构示例:
    {
      "event": "conversation_started",
      "chat": {
        "id": "目标聊天ID",
        "name": "群组名称"
      }
    }
    

d. 能否接入任意聊天群组?

不行。Bot必须由聊天的管理员手动添加才能进入对应群组/社区/频道,没有管理员授权的话,你无法让Bot接入并发送公告。

修复代码的具体步骤

  1. 配置Webhook与启动服务:添加代码启动HTTP服务器并设置Webhook(必须用HTTPS地址):
    const http = require('http');
    const port = process.env.PORT || 3000;
    
    // 启动服务器接收Viber事件
    http.createServer(viberBot.middleware()).listen(port, () => {
      console.log(`服务器运行在端口${port}`);
      // 设置Webhook地址
      viberBot.setWebhook('https://你的公网HTTPS地址/')
        .then(() => console.log('Webhook设置成功'))
        .catch(err => console.error('Webhook设置失败:', err));
    });
    
  2. 提取聊天ID:添加事件监听获取聊天ID:
    viberBot.onConversationStarted((user, context, onFinish) => {
      console.log('获取到聊天ID:', context.chat.id);
      onFinish();
    });
    
  3. 发送公告:把提取到的聊天ID存入环境变量VIBER_GROUP_ID,之后调用sendMessage就能正常发送公告了。

内容的提问来源于stack exchange,提问作者Elias Babenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:55:17