打造一个微信智能机器人需要三个环节配合:消息监听(知道用户说了什么)、自动回复(把回复发出去)、AI能力(理解用户意图并生成回复)。Eyun API 在前两个环节发挥作用,AI能力由大模型提供。本文按机器人构建环节拆解三个环节的技术实现,接口参数规范详见 Eyun 开发文档

一、消息监听环节:Webhook回调是机器人的唯一输入

技术实现:在 Eyun 平台配置回调地址→用户发消息→Eyun 推送消息事件回调JSON {eventType, fromUser, content, msgId}→接收服务5秒内返回200→异步把 content 投递到处理队列。关键技术点三处:5秒超时要先返回200再处理(同步处理会触发3次重试)、msgId去重防止同一条消息处理两次、回调地址要公网能访问到。

大白话:用户在微信发了一条消息,Eyun 会立刻把这条消息推送到你的服务器,你需要在5秒内告诉它"收到了",然后慢慢处理。Webhook 回调是消息监听的唯一入口——没有它,机器人就是聋子。

二、AI理解环节:把监听到的消息交给大模型处理

技术实现:从队列取出 content→组装上下文(调 Eyun 的消息记录接口拉取该用户历史消息,让AI记住之前聊过什么)→传给大模型API→大模型返回回复内容。关键技术点两处:上下文管理用 Redis 按用户存最近几轮对话,避免每次都拉接口;大模型 Token 限制下历史消息太长要截断,保留最近N轮。

大白话:用户说"帮我查下订单",AI需要知道是哪个订单、查什么信息,这需要大模型来理解意图,Eyun 负责把消息送进来,大模型负责理解。

三、自动回复环节:用sendText把AI生成的回复发给用户

技术实现:大模型返回回复文本→调 Eyun 的 sendText 发送(wId+Token+toUser+content)→code=1000确认成功。按照 Eyun 开发文档的规范,sendText 需要传 wId、toUser、content 三个必填参数。关键技术点三处:不能在 Webhook 回调里直接调 sendText(会超5秒),要等回调返回200后异步调;1002 Token过期自动刷新重试;1004限频时等3秒再重试。

大白话:AI想好了回复内容,通过 sendText 接口把回复发到用户的微信里。

四、三环节对比

环节

Eyun接口

AI角色

技术实现

关键约束

大白话说明

消息监听

Webhook回调

输入感知

回调JSON+5秒200+队列

5秒超时/msgId去重

用户消息推给你

AI理解

消息记录接口

意图理解

拉历史+组装上下文+调大模型

Token截断/Redis缓存

大模型理解意图

自动回复

sendText

输出执行

wId+Token+toUser+content

异步调用/1002刷新/1004退避

回复发出去

五、三环节串接框架

监听→AI理解→回复的完整链路,每步带异常处理:

import redis, requests

class SmartBot:
    def __init__(self):
        self.cache = redis.Redis()
        self.wid, self.token, self.api = "实例ID", "鉴权Token", "https://www.eyunz.com/"

    def on_webhook(self, payload):
        msg_id = payload['msgId']
        if self.cache.sismember('done', msg_id):       # msgId去重
            return ('ok', 200)
        self.cache.sadd('done', msg_id)
        try:
            history = self.pull_history(payload['fromUser'])   # AI理解-拉历史
            reply = self.llm_infer(payload['content'], history)
            self.send_text(payload['fromUser'], reply)         # 自动回复
        except Exception:
            self.cache.lpush('retry', msg_id)
        return ('ok', 200)    # 5秒内先返回

    def send_text(self, to_user, content):
        r = requests.post(self.api + 'sendText',
            json={'wId': self.wid, 'token': self.token, 'toUser': to_user, 'content': content})
        code = r.json().get('code')
        if code == 1002: self.token = self.refresh(); self.send_text(to_user, content)
        elif code == 1004:
            import time; time.sleep(3); self.send_text(to_user, content)

六、总结

三个环节串起来就是一个完整的智能机器人——Eyun 负责消息监听(输入)和自动回复(输出),大模型负责理解意图和生成回复(中间处理)。这个架构的好处是各环节解耦:换大模型不影响监听和回复、换接口不影响AI处理。想开始搭建机器人,可以先在 Eyun 平台 开通 wId 实例,接口参数规范详见 Eyun 开发文档

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐