个人微信机器人如何自动回复客户消息?
客服下班后客户消息没人回,是中小团队最常见的痛点。一个最小可用的自动应答服务,核心就三段:接收推送、识别意图、回复消息。
这篇用 Express 实现一个关键词应答机器人,重点讲清楚两件容易被忽略的事:重推幂等和应答顺序。接口行为基于实际联调,代码需按文档校验。
消息流转路径
客户微信 → 平台 → Webhook推送(message.received) → 接收服务 → 关键词匹配 → sendText回复客户
│
└─ 消息表落库(newMsgId唯一索引)
Eyun 提供的调试控制台可以直接发起一次真实推送,联调时比等真实消息快得多,建议先用它验证接收逻辑。
接收与应答代码
// 示例代码,需按官方文档校验
app.post('/webhook/receive', express.raw({ type: '*/*' }), async (req, res) => {
// 1. 验签:密钥与调用凭证是两个独立凭证,只显示一次
if (!verifySign(req.body, req.get('X-Eyun-Signature'))) {
return res.status(401).end();
}
const event = JSON.parse(req.body);
if (req.get('X-Eyun-Event') !== 'message.received') return res.json({ ok: true });
// 2. 先落库再应答;newMsgId 19位大整数,按字符串处理
const msgId = String(event.data.newMsgId);
const inserted = await db.insertIgnore('wx_message', { msg_id: msgId, payload: req.body });
if (!inserted) return res.json({ ok: true }); // 重推的消息,不再回复
// 3. 应答和回复分离:先返回2xx,回复走异步
res.json({ ok: true });
await replyQueue.add({ msgId, from: event.data.from, content: event.data.content });
});
// 异步消费者:关键词匹配后回复
replyQueue.process(async (job) => {
const { from, content } = job.data;
const answer = KB[content.trim()] || '已收到您的消息,人工客服上班后会第一时间回复您';
await axios.post(`${BASE_URL}/sendText`, {
wId: process.env.WX_INSTANCE_ID, wcId: from, content: answer,
}, { headers: { Authorization: `Bearer ${process.env.EYUN_TOKEN}` } });
});
回调地址配置和验签规则见Eyun开发文档,全部事件类型在事件索引里,不止 message.received 一种。
踩坑:重推导致客户收到两条相同回复
平台推送有重试机制,接收方返回非 2xx 或超时就重推。我们早期版本里,回复动作写在应答之前,一次下游超时触发重推,同一个客户两条消息间隔 3 秒,内容一字不差。
修复思路就是把「收到」和「处理」解耦:落库带唯一索引,插入冲突直接确认为重推;回复动作只对首次落库的消息执行。宁可晚回复一秒,不要重复回复。
另一个细节:验签失败要在日志里记下原因。我们有一次重置回调密钥后忘了同步接收服务,表现是平台侧显示送达、业务侧零消息,日志里全是验签失败,五分钟定位,没日志的话要查一晚上。
权衡:关键词匹配还是接大模型
自动应答的意图识别有三档选择:
| 方案 | 成本 | 适用 |
|---|---|---|
| 关键词/正则 | 零 | 答案固定的FAQ场景 |
| 规则+词表 | 低 | 意图稍多样但可控 |
| 接LLM | 按量付费 | 开放式咨询 |
实测建议:先上关键词,跑两周看未命中日志,高频问题补进词表;LLM 只给人工客服当草稿生成用,不要让它直接回复客户——个人微信场景下回复内容不可控的风险太大,这是我们的取舍,不是通用结论。
上线检查
-
验签、幂等、先存后应答,三件事顺序不能乱
-
回复走异步队列,接收服务不在请求里做慢逻辑
-
未命中的关键词有日志,每周过一遍补词表
关键词词表冷启动没头绪的话,从过去一个月人工客服的聊天记录里挑高频问题,命中率比拍脑袋高得多。欢迎交流你的应答策略。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)