「客户说机器人回了两遍」——这类工单里,研发爱查发送,产品爱怪模型。
真正高频的原因更土:去重键设计得不好,重复推送被你当成两条新消息。
消息回调重推很难彻底消灭,但重复消费可以消灭。去重规则写在你自己的服务里,这是底线能力。
先分清两层去重
进门去重(别处理两遍)
同一条客户消息,自动回复逻辑只跑一次。
出门占坑(别发出两遍)
同一笔回复只成功发送一次。
只做进门,Worker 重试仍可能发两条;只做出门,业务侧仍可能建两张工单。两层都要。
进门键怎么拼才靠谱
优先:消息唯一编号。
没有编号时,拼这些:
设备
会话(聊天窗口)
发送人
消息时间
内容指纹(摘要)
少拼一项的后果
少了 | 后果 |
|---|---|
设备 | 多账号互相误杀或互漏 |
会话 | 不同群同句「好的」撞车 |
发送人 | 群里两人同句被合成一条 |
消息时间 | 真·两条不同消息被当成重复 |
用「服务器收到时间」 | 重推时时间变了,去重失效 |
出门键怎么拆
自动回复:
进门键 + 已回复主动通知:
订单号 + 动作名(如发货通知)
两套钥匙分开,别让发货通知和自动回抢同一把锁。
推荐处理顺序(好记)
消息来了 → 探活?直接成功返回 → 进门占坑失败?说明重复,仍返回成功 → 入队,立刻返回成功 → Worker 出门占坑 → 再发送重复也要返回成功。返回失败,只会鼓励对方继续重推。
怎么验收
同一内容连打 3 次:只回 1 条
两台设备收到相同文本:互不误杀
发送超时重试:已成功的不会再发第二条
小结
双回不是玄学,是键少了字段或少了一层占坑。
把进门键、出门键设计清楚,自动回复才会「迟钝得刚刚好」。