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

Python版Viber Bot无响应,消息未送达问题求助

解决Viber Bot接收消息无响应、消息未送达问题

1. 确认Webhook端点的可达性与响应规范

  • 检查服务器日志,确认是否收到Viber的POST请求:如果没有,排查防火墙/安全组是否开放HTTPS端口(默认443),或是否有WAF/CDN拦截了Viber的IP请求。
  • 必须在3秒内返回200 OK响应:如果消息处理逻辑耗时,要异步处理(比如将消息放入队列),先返回响应,否则Viber会判定请求失败,不再重试。
  • 响应头需正确:返回的响应头必须包含Content-Type: application/json,即使响应体为空。

2. 修正消息发送逻辑

官方示例直接回传接收的message对象可能存在字段不兼容问题,建议重新构造消息对象:

from viberbot.api.messages.text_message import TextMessage

# 解析请求
viber_request = viber.parse_request(request.get_data())

if isinstance(viber_request, ViberMessageRequest):
    # 重新构造文本消息,避免直接复用接收的消息对象
    reply_msg = TextMessage(text=viber_request.message.text)
    # 打印发送响应,排查错误
    send_response = viber.send_messages(viber_request.sender.id, [reply_msg])
    print("发送结果:", send_response)
  • 检查send_messages的返回值:如果返回非0状态码,根据Viber API错误码说明排查问题(比如sender ID无效、Bot无权限发送消息等)。

3. 验证Bot与用户的会话状态

  • 确认用户已订阅Bot:只有用户主动通过扫码、链接等方式订阅后,Bot才能正常发送消息。如果是首次通过conversation_started事件触发的对话,需要先调用send_messages初始化会话。
  • 重新确认Webhook配置:虽然set_webhook返回成功,可再次调用该接口,确保event_types包含message且配置生效。

4. 检查SSL证书与TLS配置

  • 使用受信任CA颁发的证书:Viber服务器不接受自签名SSL证书,需使用Let's Encrypt等正规CA证书。
  • 确保TLS版本符合要求:服务器需支持TLS 1.2及以上版本,过时的TLS 1.0/1.1会被Viber拒绝连接。

内容的提问来源于stack exchange,提问作者Nikos Epitropakis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:13:15