☰
微信消息回调重复推送?个人微信API二次开发防双回实战
2026/10/15 11:17:52 网站建设 项目流程

客服把聊天截图甩过来:客户只问了一句「在吗」,机器人回了两句一模一样的「在的,请问有什么可以帮您」。
工单系统里还并排躺着两张新建单。研发第一反应常常是:「回调怎么推了两次?平台有问题吧?」

先把心态摆正:推两次很常见,算不上事故。真正丢人的,是你的业务被执行了两次。

做个人微信 API 二次开发,尤其是接 GeWe API 这类通道时,消息回调会因网络抖动、处理超时、补偿重试等原因重复到达。你几乎控制不了「绝对只推一次」,但完全可以保证「同一条消息,业务只认真做一次」。

重复推送时,线上到底会发生什么

典型连锁反应是这样的:

  1. 客户发来一条消息

  2. 你的服务收到回调,开始查库、调逻辑,甚至同步等 AI

  3. 处理偏慢,对端认为失败,又推了一次

  4. 两次回调都跑完自动回复和建单

  5. 客户觉得被刷屏,客服觉得系统疯了

所以防重复不是「锦上添花」,而是自动回复、工单、CRM 同步的底线能力。

业务端怎么做:三道闸

第一道:进门先认人

每条进来的消息,先生成一把「防重复钥匙」。

  • 优先用消息自带的唯一编号

  • 没有编号时,用几样拼起来:哪台设备、哪个聊天窗口、谁发的、大概什么时间、内容摘要

钥匙已经存在:说明处理过了,直接返回成功,后面什么业务都别做。
钥匙不存在:先占住,再往下走。

这里有个反直觉点:重复请求也要返回成功。你要是返回失败,对方可能继续重推,重复问题更严重。

第二道:回调里只做轻活

很多人卡在回调里又查资料、又调模型、又发消息,干完才返回。时间一长,重推概率直接上升。

比较稳的节奏:

收到回调 → 校验 → 去重占坑 → 写入队列或数据库 → 马上返回成功 慢活(规则、AI、发消息、建单)全部放到后台 Worker

可以记一句口诀:先进柜,再慢慢干。

第三道:发出去之前再挡一次

进门去重防止「处理两遍」,还挡不住「发出去两遍」。
自动回复、创建工单、修改订单状态,建议各自再备一把业务钥匙,例如:

  • 消息ID + 已回复

  • 消息ID + 已建单

占住了就不能再做第二次。这样即使 Worker 重试、进程重启,也不会给客户再来一条。

钥匙少拼一项,会出什么怪事

少了什么

可能后果

设备

多账号之间互相误判为重复,表现为偶发不回

聊天窗口

不同群里同一句「好的」撞车

发送人

群里两个人说一样的话被当成一条

用服务器收到时间当钥匙

重推时间一变,去重失效

上线前怎么验收

  1. 用同一条消息内容,对着回调地址连打 3 次:只回一句、只建一张单

  2. 故意把 Worker 处理拖慢:回调仍快速成功,且最终仍不双回

  3. 看日志里去重命中次数是否在升高(升高说明重推存在,但被挡住了,这是健康信号)

小结

回调重复不可怕,业务重复才可怕。
接个人微信自动化时,把「认人、快回、出门再占坑」做进自己的服务,比反复纠结「为什么会推两次」有用得多。字段与回调约定以官方说明为准。

接入说明见 GeWe API 文档

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询