在企业微信二次开发中,有些业务无法立即返回结果,比如订单同步、批量数据处理、审批查询等。
客户发送请求后,如果系统长时间没有回复,很容易重复提交消息。如果只回复一句“正在处理”,客户又无法了解任务进度。
通过星云API对接企业微信消息收发能力,可以结合异步任务和状态管理,实现业务进度同步与最终结果自动推送。
相关接口参考顶部星云官网卡片里的接口文档 。
一、先将消息回复与业务执行分开
收到客户消息后,不建议一直等待后台接口执行完成。
可以先创建任务,再由后台异步处理。
基本步骤:
-
接收企业微信消息,识别业务类型。
-
生成唯一任务ID,保存客户和会话信息。
-
回复客户“任务已受理”。
-
后台异步执行业务。
-
根据实际进度更新任务状态。
-
完成后主动推送最终结果。
这样即使业务执行时间较长,也不会一直占用消息回调处理流程。
二、建立统一的任务状态
建议为每个任务保存以下信息:
| 字段 | 作用 |
|---|---|
| taskId | 任务唯一标识 |
| instanceId | 企业微信实例ID |
| roomId | 原始群聊ID |
| senderId | 消息发送人ID |
| status | 当前任务状态 |
| progress | 任务执行进度 |
| notifyStatus | 消息通知状态 |
任务状态可以分为等待执行、执行中、已完成、执行失败和结果待确认。
业务执行状态与消息通知状态需要分开记录,避免任务已经完成,但消息发送失败时重新执行业务。
三、业务进度同步流程
客户发送业务请求
↓
接收消息并创建任务
↓
回复:任务已受理
↓
后台异步执行业务
↓
更新任务状态与进度
↓
达到进度通知条件
↓
向原始会话推送进度
↓
任务执行完成
↓
推送最终处理结果
↓
记录消息发送状态
例如客户提交100条订单同步任务,可以在关键节点返回:
任务编号:TASK1001
当前状态:正在处理
已完成:50/100
处理进度:50%
任务完成后再推送:
任务编号:TASK1001
处理状态:已完成
成功:98条
失败:2条
进度百分比应根据实际完成数量计算,不能简单按照任务运行时间估算。
四、实际开发需要注意什么
1. 不要频繁发送进度消息
可以按照25%、50%、75%、100%等关键节点推送,避免外部群消息过多。
2. 保证进度与任务准确关联
每次进度更新都需要关联taskId,防止多个客户同时触发任务时出现状态混乱。
3. 处理接口超时和执行失败
接口超时不代表业务失败。应先确认实际执行状态,再决定是否重试,并向客户返回准确的处理信息。
4. 防止重复推送
为每次进度通知建立唯一标识,避免任务重复回调造成相同消息反复发送。
5. 确保最终结果发送准确
任务完成后,通过taskId查询原始实例ID、群ID和客户ID,校验目标会话后再发送结果。涉及客户敏感信息时,应选择经过授权的私密通知方式。
五、总结
企业微信自动回复要实现业务进度持续同步,关键是将消息接收、后台执行、任务状态和结果通知分开管理。
通过异步任务、进度记录、分阶段通知和最终结果推送,可以减少客户重复咨询,也能让整个业务处理过程更加清晰。
本文介绍企业微信二次开发中如何通过异步任务机制实现业务进度同步与最终结果自动推送。核心包括消息接收与业务执行解耦、统一任务状态管理(等待/执行中/完成/失败)、分阶段进度通知(如25%/50%/75%/100%)、防重复推送、超时重试及会话精准投递。关键技术涉及企业微信消息API、任务ID关联、状态持久化与回调校验。
455

被折叠的 条评论
为什么被折叠?



