用 Python 做微信机器人,最常见的起步方式是:找个示例、复制一段发送代码、在测试好友上点一点。
能发出去当然高兴,但一接到真实业务——自动回、CRM、AI——就会发现:收不稳、回双份、偶发找不到人。
个人微信 API 实战,建议把目标定小一点:先跑通最小收发闭环。
闭环的意思是:消息能稳定进来,处理不重复,回复回得对人,并且留得下日志。GeWe API 可作为通道接到你的 Python 服务;具体字段和调用方式以官方文档为准,这里不编造参数。
闭环长什么样
客户发消息 → 你的 Webhook 收到推送 → 校验 + 去重 + 入队 → 快速返回成功 → Worker 取出任务 → 生成回复(先写死一句话也行) → 发送 → 记录结果 客户手机里能看到回复别把「调通一个发送例子」当成闭环。没有「收」和「去重」,上线后一样会炸。
Python 侧怎么拆两个角色
角色 A:Webhook 服务(Flask / FastAPI 均可)
负责:
接收回调
做来源校验(按你配置的安全方式)
生成去重键,重复则直接成功返回
把原始事件写入 Redis 列表、RQ/Celery、或数据库任务表
马上返回
角色 B:Worker 服务
负责:
循环取任务
匹配关键词或调用业务逻辑
调用发送能力把回复发出去
写下:业务单号、设备、目标会话、成功与否、耗时
两个角色可以先跑在同一台机器两个进程里,联调够用。
三条硬规矩(写进代码注释里都值得)
1. 回调里不做重活
查 CRM、调 OpenAI、拼长文案,全部给 Worker。回调越快,丢消息和重复推送越少。
2. 同一条消息只消费一次
去重键优先用消息唯一编号;没有就用设备 + 聊天对象 + 发送人 + 时间 + 内容摘要。
3. 发送目标和设备对齐
回复时用进线设备;会话标识用系统回写值,不要用微信号当发送目标。私聊、群聊分字段存,别混。
建议的联调顺序
只收不回:回调能入队,日志能打印出发送人与内容摘要
探针发送:对已知正确的测试好友发「探针-时间戳」,人眼确认收到
固定话术自动回:例如收到「人工」就回转接提示
再接业务库:把客户 ID、会话标识映射起来
最后才接 AI
一步到位上 AI,出问题你分不清是模型、队列还是会话映射。
日志最少记这些
客户说「没收到」时,你要能回答:
当时用哪台设备发的
发到哪个会话
有没有记到成功结果
整段花了多久
没有这些,只能和客户对线「我们系统显示成功了」,说服力很弱。
小结
Python 开发个人微信 API,语法从来不是主难点。
主难点是工程节奏:收要快、去重要准、发要对人、账要记得清。最小闭环跑稳了,再叠 CRM 和 AI,才会越做越顺。
详见 GeWe API 文档