很多人一听到"个人微信二次开发"就觉得门槛很高,要会很多东西才能上手。其实真的不用。把它拆成三步最小迭代,每一步只验证一件事,做成了再走下一步,半天之内就能跑通一个一问一答的机器人。今天就用这三步把思路讲明白。

第一步是能发消息,先把发送通道打通。

这一步啥复杂逻辑也别写,目标只有一个:你的个人微信号能发出一条测试消息。完成标志很简单:写一个脚本运行起来,你的号给任意一个好友发出去"你好我是机器人",对方真的收到了就算过。具体步骤:先在Eyun平台开通wId和Token,照着文档写一个sendText请求,用Postman或者curl发出去,返回code等于1000说明接口调用成功,再到微信里看消息有没有真的到。如果失败了别急着加东西,按返回码查:code是1001基本就是参数错了,回去核对三个必填项;code是1002就是Token过期了,去刷新一下;code是1004就是限频了,等三秒再试。耗时大概30分钟到1小时。大白话讲,第一步啥也别想,先让你的号能发出一条消息来,发出去你心里就有底了。

第二步是能收消息,把接收通道打通。

这一步也不处理任何业务逻辑,目标只有一个:有人给机器人发消息,你服务器这边能看见。完成标志是:用自己的号给机器人号发一条"测试",控制台打印出收到的消息内容、发送者wxid和msgId,三样都齐就过。具体步骤:自己搭一个HTTP接口,确保公网能访问到,然后在Eyun平台把回调地址填进去,再给自己机器人发一条消息,控制台应该能看到完整的消息JSON。如果没收到就逐个排查:地址不是公网的,先整个ngrok做内网穿透;Eyun没推送,先核对地址和端口有没有写对;超过5秒没返回200会被重试,先把回调里的业务逻辑全去掉,只return 200试试。这里要记住Eyun的回调规范:5秒内必须返回200,不然它会连续重试三次。耗时大概1到2小时。大白话讲,第二步也不处理逻辑,先确保"能听到",有人说话你这边能看见内容就行。

第三步是收了能回,把简单闭环打通。

到这一步收发都通了,再把两边连起来。完成标志有两个:给机器人发"你好",它自动回"你好!有什么可以帮你的?";再发"help",它回一份功能列表,两个都过就齐活了。具体步骤:在第二步回调的基础上,收到消息之后判断一下content,如果等于"你好"就把回复内容写成欢迎语,然后调Eyun的sendText回去,最后return 200。这里按照Eyun开发文档的规范,sendText必须传wId、toUser、content三个参数,其中toUser直接用回调里带回来的fromUser就行。耗时大概30分钟。大白话讲,第三步就是把"能发加能收"连起来,听到了说一句话,一分钟能完成一次一问一答,机器人本质上就跑通了。

下面把三步最小迭代整理成一张对比表,做的时候可以对着核对:

迭代步骤

目标

完成标志

关键动作

如果失败怎么办

耗时

大白话说明

迭代1 能发消息

打通发送通道

脚本运行后,微信里真的发出"你好我是机器人"

开通wId/Token,写sendText,Postman或curl发送

code=1001核对参数,1002刷新Token,1004等3秒重试

30分钟-1小时

啥也别想,先发出去一条消息再说

迭代2 能收消息

打通接收通道

发一条"测试",控制台打印消息内容、wxid、msgId

搭HTTP endpoint,公网可访问,Eyun配置回调地址

非公网用ngrok穿透,没推送核对地址端口,5秒没200先只return 200

1-2小时

不处理逻辑,先确保"能听到"就行

迭代3 收了能回

打通简单闭环

发"你好"回欢迎语,发"help"回功能列表

回调收消息→判断content→调sendText回复→return 200

toUser用回调的fromUser,三个必填参数不能缺

30分钟

把收发连起来,一问一答就跑通了

下面给一段完整的Python代码,把三步最小迭代串起来,三十来行,改改参数就能跑:

# 迭代1:发送测试脚本(单独运行可验证能发消息)
import requests
EYUN_URL = "https://api.eyunz.com/sendText"
wId, token = "你的wId", "你的Token"
resp = requests.post(EYUN_URL, json={"wId": wId, "toUser": "好友wxid", "content": "你好我是机器人"},
                     headers={"Authorization": f"Bearer {token}"})
print(resp.json())   # 返回 code=1000 代表发送成功

# 迭代2+3:Webhook收消息并回你好(Flask最小闭环)
from flask import Flask, request
app = Flask(__name__)

@app.route("/webhook", methods=["POST"])
def webhook():
    data = request.get_json()
    # 迭代2完成标志:控制台能看到收到的消息内容、发送者wxid、msgId
    print("收到消息:", data.get("content"), "来自:", data.get("fromUser"), "msgId:", data.get("msgId"))
    # 迭代3:收到"你好"或"help"时调用Eyun自动回复
    if data.get("content") == "你好":
        requests.post(EYUN_URL, json={"wId": wId, "toUser": data["fromUser"], "content": "你好!有什么可以帮你的?"},
                      headers={"Authorization": f"Bearer {token}"})
    elif data.get("content") == "help":
        requests.post(EYUN_URL, json={"wId": wId, "toUser": data["fromUser"], "content": "支持:1.查资料 2.下单 3.转人工"},
                      headers={"Authorization": f"Bearer {token}"})
    return "", 200   # Eyun回调规范:5秒内必须返回200

if __name__ == "__main__":
    app.run(port=8080)

最后再聊几句思路。
三步最小迭代加起来,总耗时半天之内就能跑通一个最简单的一问一答机器人。核心其实就是"每一步只验证一件事,别把所有逻辑堆在第一步"。新手最容易犯的错就是上来就写自动回复加AI加数据库,结果出了问题根本不知道哪一步错的。按三步来,一步不通就只查这一步的问题,定位简单十倍。三步做完有了基础,后面加功能就跟搭积木一样,想加什么一块一块往上垒就行,不用推倒重来。

Logo

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

更多推荐