把 AI 接到微信上,很多人以为就是"用户发消息→AI 回复"一步搞定。实际落地时"用户消息识别到智能任务处理"不是一步到位的,而是经过"消息感知→意图识别→任务规划→执行反馈"4 个阶段,Eyun API 和 AI 各承担不同阶段——一步到位的写法只能应付简单闲聊,一旦要处理"建工单、查订单"这类有副作用的任务就撑不住。理清这 4 个阶段的分工才能把 AI 真正用起来,下面按阶段说清楚 Eyun 负责什么、AI 负责什么。Webhook 回调和 sendText 的规范可参考 Eyun 开发文档。
一、消息感知阶段:Eyun 当耳朵
阶段实现:用户发消息 → Webhook 回调 JSON{eventType, fromUser, content, msgId}→ 5 秒内返回 200 → 异步投递content到 AI 处理队列。
按照 Eyun 开发文档的回调规范,5 秒内必须返回 200 否则重试 3 次。Webhook 回调是消息感知的唯一入口。此阶段 AI 不参与。
大白话:用户说了句话,Eyun 把这句话送过来——它是"耳朵"。
二、意图识别阶段:AI 当大脑
阶段实现:从队列取content→ AI 模型(规则引擎或大模型)理解用户意图 → 输出意图分类(如QueryOrder查询订单 /CreateTicket创建工单 /Chat闲聊)+ 实体提取(orderId=12345、问题描述=退款)。
如果需要上下文,调消息记录接口拉取历史消息让 AI 有记忆。此阶段 AI 主导,历史数据由接口提供。
大白话:AI 看看用户这句话想干什么——是查东西、办事情还是随便聊聊——AI 是"大脑"。
三、任务规划阶段:AI 当指挥官
阶段实现:意图=CreateTicket→ 拆解为步骤 1(调工单系统 API 建工单)+ 步骤 2(调 sendText 回复工单号)+ 步骤 3(工单处理完后调 sendText 推送结果通知)。按照开发文档规范,sendText 需要传wId、toUser、content三个必填参数。此阶段 AI 负责任务拆解,sendText 作为任务步骤之一。在 Eyun 平台 开通 wId 即可调用。
大白话:AI 想好了"先建工单→再告诉用户工单号→等处理完了再通知用户"——AI 是"指挥官"。
四、执行反馈阶段:Eyun 当嘴巴和手
阶段实现:步骤 1 调工单 API 建工单 → 步骤 2 调 sendText 回复用户"工单已创建,编号 T001" → 步骤 3 等工单处理完后调 sendText 推送"工单 T001 已处理完成"。
Eyun 的错误码体系保证执行可靠性:1002刷新 Token /1004退避 3 秒。步骤之间建议加幂等校验,避免重试导致重复建工单。此阶段 sendText 负责反馈执行,AI 负责任务编排调度。
大白话:按计划一步步干活,每干完一步用微信告诉用户进度——Eyun 是"嘴巴和手"。
五、4 阶段对比
处理阶段 | 做什么 | Eyun 角色 | AI 角色 | 关键技术点 | 大白话说明 |
|---|---|---|---|---|---|
消息感知 | 接收用户消息 | 唯一入口 | 不参与 | Webhook 5秒返回200 | 耳朵 |
意图识别 | 理解用户想干啥 | 提供历史数据 | 主导 | 意图分类+实体提取 | 大脑 |
任务规划 | 拆解任务步骤 | sendText 作为步骤 | 主导 | 步骤拆解 | 指挥官 |
执行反馈 | 执行并反馈 | sendText 反馈 | 编排调度 | 错误码 1002/1004 | 嘴巴和手 |
六、4 阶段 AI 应用框架代码
import queue, time; msg_queue = queue.Queue() def on_webhook(j): # 阶段1 感知 msg_queue.put(j["content"]); return "", 200 # 5秒返回200,否则重试3次 def recognize_intent(content, client): # 阶段2 识别:AI 主导 history = client.call("fetchHistory", {"wxid": "u1", "range": "1h"}) # 拉历史让AI有记忆 return ai_model.predict(content, history) # {"type":"CreateTicket",...} def plan_tasks(intent): # 阶段3 规划:AI 拆步骤 return ["create_ticket", "reply_no", "notify"] if intent["type"] == "CreateTicket" else ["chat_reply"] def execute(tasks, client, to_user): # 阶段4 执行 for t in tasks: if t == "create_ticket": ticket_no = call_ticket_api() elif t == "reply_no": client.call("sendText", {"wId": client.wId, "toUser": to_user, "content": f"工单已创建,编号{ticket_no}"}) elif t == "notify": client.call("sendText", {"wId": client.wId, "toUser": to_user, "content": "工单已处理完成"}) time.sleep(3 if client.last_error == 1004 else 0) # 1004退避3秒七、结尾
4 个阶段清晰地划分了分工——Eyun 负责消息感知(阶段 1 耳朵)和结果反馈(阶段 4 嘴巴和手),AI 负责意图识别(阶段 2 大脑)和任务规划(阶段 3 指挥官)。这种分工意味着:换 AI 模型不影响感知和反馈(接口不变),换接口(假设升级)也不影响 AI 的识别和规划逻辑。从趋势看,AI 能力越强,意图识别和任务规划越智能,但 4 阶段链路的基础架构不变。落地建议:先用规则引擎跑通阶段 2 的意图识别(成本低、可控),验证整条链路通了再逐步换成大模型。Webhook 回调和 sendText 的参数规范详见 Eyun 开发文档,在 Eyun 平台开通 wId 即可开始。