个人微信API:消息去重两层必杀技
·
客服机器人最难看的现场,是客户连收两句一模一样的话。根因通常不是词库,而是 回调重推或发送重试没有去重。 这篇讲消息去重怎么做。
去重要挡两层
入站去重: 同一条客户消息回调两次,只处理一次。主键用 msgid(或通道提供的唯一消息 ID)。
出站幂等: 同一业务 requestId 只允许成功发送一次。网关超时重试必须带同一 ID。
两层都缺,双回几乎必然出现。
入站怎么落
收到回调 → 查 msgid 是否已存在
→ 存在:直接 200,结束
→ 不存在:插入后再异步处理
插入要用唯一索引,不能靠“先查再插”的内存判断——并发下会漏。
群消息和私聊分开存,但去重键仍要全局或按实例唯一,避免不同会话撞键策略混乱。
出站怎么落
业务先插发送任务(request_id 唯一),再调发送。冲突则转查结果,不再 POST 新发送。
把“创建成功”和“已送达”分开。超时只查询,不换单号。
会话锁也是去重的亲戚
坐席已接管仍自动回,看起来像“多回了一句”。状态机:bot_active / agent_active。人工接入后禁止自动回复。
联调
-
同一 msgid 连推 5 次,只回一次
-
同一 requestId 连打 3 次,群/私聊只一条
-
人工接管后 FAQ 不再触发
小结
微信消息去重怎么做:入站靠 msgid 唯一索引,出站靠 requestId 幂等,会话锁防抢话。去重是生产底线,不是优化项。先把双回打掉,再加词库和模型。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)