客服机器人最难看的现场,是客户连收两句一模一样的话。根因通常不是词库,而是 回调重推或发送重试没有去重。 这篇讲消息去重怎么做。

去重要挡两层

入站去重: 同一条客户消息回调两次,只处理一次。主键用 msgid(或通道提供的唯一消息 ID)。

出站幂等: 同一业务 requestId 只允许成功发送一次。网关超时重试必须带同一 ID。

两层都缺,双回几乎必然出现。

入站怎么落

收到回调 → 查 msgid 是否已存在
  → 存在:直接 200,结束
  → 不存在:插入后再异步处理

插入要用唯一索引,不能靠“先查再插”的内存判断——并发下会漏。

群消息和私聊分开存,但去重键仍要全局或按实例唯一,避免不同会话撞键策略混乱。

出站怎么落

业务先插发送任务(request_id 唯一),再调发送。冲突则转查结果,不再 POST 新发送。
把“创建成功”和“已送达”分开。超时只查询,不换单号。

会话锁也是去重的亲戚

坐席已接管仍自动回,看起来像“多回了一句”。状态机:bot_active / agent_active。人工接入后禁止自动回复。

联调

  • 同一 msgid 连推 5 次,只回一次

  • 同一 requestId 连打 3 次,群/私聊只一条

  • 人工接管后 FAQ 不再触发

小结

微信消息去重怎么做:入站靠 msgid 唯一索引,出站靠 requestId 幂等,会话锁防抢话。去重是生产底线,不是优化项。先把双回打掉,再加词库和模型。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐