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

如何通过message_token调用Viber REST API获取消息?

关于Viber机器人通过message_token获取已发送消息的问题解答

我之前做过Viber机器人的分布式部署相关开发,正好碰到过类似的问题,给你捋捋清楚:

首先明确一个核心点:Viber官方API并不支持通过message_token反向查询已发送的消息内容。这个message_token的主要作用是用来关联用户的回复(比如用户回复某条消息时,received事件里的token能帮你定位到用户是针对哪条消息做出的回应),以及做消息送达确认的校验,本身并没有提供反向查询消息本体的能力。

那针对你这种分布式服务部署的场景,该怎么解决获取已发消息的需求呢?答案是必须自行实现消息同步与存储机制,具体可以这么做:

  • 集中存储已发送消息:搭建一个统一的存储服务(比如Redis、MySQL或者MongoDB都可以),每次你的任意一个服务节点调用Viber API发送消息后,把返回结果里的message_token和对应的消息内容、目标用户ID、发送时间戳等关键信息绑定存储起来。这里要注意,Viber发送消息的API响应里会返回对应的message_token,一定要用这个返回值来做存储关联,而不是自己生成的标识。
  • 关联received事件查询:当收到用户触发的received事件时,取出事件里的message_token,直接去你的集中存储里查询对应的消息记录,就能拿到之前发送给用户的具体消息内容了。
  • 分布式场景的一致性处理:因为是多服务节点部署,要保证存储操作的原子性——比如发送消息和存储记录这两步最好做成一个事务(如果用数据库的话),或者用Redis的原子命令来避免出现消息发送成功但记录没存上的情况,同时也要避免重复存储相同的token记录。
  • 存储过期策略:根据你的业务需求设置存储的过期时间,比如如果你的业务只需要保留最近30天的消息记录,就给存储的条目加上过期时间,避免存储冗余占用资源。

简单来说,Viber没给我们现成的反向查询接口,所以只能靠自己把发送出去的消息“留底”,这样后续需要的时候才能通过token找回来。

内容的提问来源于stack exchange,提问作者Matvii Strechen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:59:03