从一个简单机器人开始认识个人微信二次开发,开发思路其实没那么难
很多人一听到"个人微信二次开发"就觉得门槛很高,要会很多东西才能上手。其实真的不用。把它拆成三步最小迭代,每一步只验证一件事,做成了再走下一步,半天之内就能跑通一个一问一答的机器人。今天就用这三步把思路讲明白。
第一步是能发消息,先把发送通道打通。
这一步啥复杂逻辑也别写,目标只有一个:你的个人微信号能发出一条测试消息。完成标志很简单:写一个脚本运行起来,你的号给任意一个好友发出去"你好我是机器人",对方真的收到了就算过。具体步骤:先在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加数据库,结果出了问题根本不知道哪一步错的。按三步来,一步不通就只查这一步的问题,定位简单十倍。三步做完有了基础,后面加功能就跟搭积木一样,想加什么一块一块往上垒就行,不用推倒重来。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)