官网友情链接: wechatapi.net
个人微信二次开发做到一定规模以后,消息发送会逐渐从“调用一个发送接口”变成完整任务调度问题。
最开始只有一个账号、每天几百条消息时,收到客户消息后直接调用发送能力就可以。但多账号、微信群、自动回复、文件发送、AI 客服一起运行以后,系统可能同时存在大量待发送任务。
例如:
客户实时咨询需要立即回复;
销售任务计划发送跟进内容;
群机器人准备发送FAQ;
后台批量发送资料;
文件消息还要先准备资源。
如果这些任务全部放在一个队列里按照先来先执行,客户实时回复很容易被大量后台任务堵住。
所以个人微信API接入以后,消息发送需要单独设计调度队列。
WechatApi 可以作为个人微信API接入层,负责消息发送、账号、会话和文件能力。本地业务系统则负责队列优先级、账号配额、时效、幂等和失败补偿。
一、发送队列为什么不能只有一个
假设账号 A 正在执行 2000 条历史资料发送任务。
客户突然发来:
“刚才那个问题还是不行。”
自动回复任务排在第 2001 位。
即使最终一分钟后回复成功,业务体验也已经很差。
所以实时客户消息和批任务应该物理或逻辑隔离。
二、可以拆几类发送队列
例如:
urgent;
realtime;
normal;
batch。
urgent:
投诉、重大故障、重点人工任务。
realtime:
普通客户实时回复。
normal:
销售普通跟进。
batch:
历史任务、批量资料。
调度器优先处理实时队列。
三、一个具体例子
系统同时有:
批量资料任务 5000 条;
实时私聊 30 条;
微信群FAQ 20 条;
投诉人工确认回复 2 条。
合理执行顺序应该:
投诉 2;
私聊实时;
群聊实时;
批量资料慢速执行。
而不是所有任务混在一个 FIFO 队列里。
四、账号级队列也很重要
即使任务类型分开,如果账号 A 有大量任务,也不能占用全部发送 Worker。
每个账号可以设置:
max_concurrency;
rate_limit;
burst_limit。
这样账号 A 异常不会拖累 B、C。
五、WechatApi 在这里的位置
WechatApi 负责真正的发送能力。
例如:
文本;
图片;
文件;
群消息。
本地队列负责:
什么时候发;
哪个账号发;
是否还应该发。
这两个职责分开后系统更稳定。
六、发送任务一定要有截止时间
客户实时回复:
可能 30 秒以后就价值下降。
活动提醒:
活动开始后不再发送。
批量资料:
时效宽松。
所以每条发送任务最好有:
deadline_at。
超过以后不再执行。
七、发送前最终检查
任务从创建到执行可能隔几分钟。
执行前再判断:
会话是否人工接管;
客户是否免打扰;
原消息是否撤回;
账号是否正常;
任务是否取消;
规则版本是否仍有效。
这是非常重要的安全门。
八、消息内容要固定版本
如果任务创建时使用回复模板 V3。
排队期间模板更新到 V4。
是否自动切换?
一般建议任务固定:
content_version。
否则审核和执行内容可能不同。
九、文件发送和文本发送分开
文件任务通常需要:
上传;
获取资源;
发送。
耗时比文本长。
如果共用执行资源,大文件会阻塞文本实时回复。
所以文件发送可以独立队列。
十、失败分类
网络超时:
可以快速重试。
账号异常:
暂停该账号任务。
客户关系失效:
不再重试。
文件失效:
重新准备文件或人工。
错误分类决定补偿策略。
十一、幂等
发送任务最怕重复。
任务第一次实际发送成功,但状态写入失败。
重试时不能再发一次。
所以业务结果要有:
idempotency_key。
例如:
source_message_id + reply_rule_version。
十二、人工发送也可以走统一队列吗
即时人工回复可以优先级极高。
仍然可以走发送服务,获得:
日志;
幂等;
账号健康检查。
但不能因为统一队列导致人工明显延迟。
可以设置专用高优先级通道。
十三、任务取消
客户问题已经解决。
旧AI回复还在排队。
系统可以取消。
状态:
cancelled。
不要从数据库直接删任务。
历史仍然知道发生过什么。
十四、队列积压监控
实时队列正常等待:
100ms。
突然变成:
8秒。
即使最终成功,也说明系统已经有问题。
可以监控:
queue_wait_time;
queue_depth;
send_latency。
十五、账号恢复
账号离线半小时。
恢复后积压1000条任务。
不能全部立即执行。
先过滤:
过期;
人工已处理;
客户已取消。
再渐进释放有效任务。
十六、权限
运营可以看自己任务。
主管可以取消批任务。
管理员能强制暂停账号发送。
高风险操作需要审计。
十七、数据看板
发送任务总量;
实时队列;
平均等待;
失败率;
过期率;
取消率;
重复拦截。
这些指标直接反映微信自动化健康度。
十八、总结
个人微信二次开发里的消息发送,业务规模一大以后就不能再理解成“调一次接口”。
WechatApi 可以提供个人微信消息发送能力,但本地系统还需要通过实时队列、批量队列、账号级限流、deadline、执行前检查和幂等,保证真正重要的客户消息优先执行。
成熟的微信机器人不是“所有任务最终都发出去了”就算稳定,而是实时客户不会被后台批任务堵住,已经过期的内容不会补发,重复任务不会重复触达。
只有发送队列真正理解业务时效和优先级,微信自动化才能长期保持自然、及时和可控。