在做企业微信 API 二次开发时,API 和 RPA 经常需要配合使用。
API更适合处理系统之间的数据传递,RPA则负责执行具体的自动化操作。
两者结合后,可以把原本需要人工完成的一些操作接入业务系统。
一、API和RPA分别负责什么?
先把两个概念分开来看。
API负责"传递任务"
业务系统产生任务后,通过接口把相关参数传递给自动化流程。
例如:
业务系统 → API → 任务参数
API主要处理的是:
-
接收请求
-
参数校验
-
任务分发
-
返回处理结果
RPA负责"执行任务"
RPA拿到任务后,根据预设流程执行对应操作。
例如:
接收任务 → 判断状态 → 执行操作 → 返回结果
所以可以简单理解为:
API负责连接,RPA负责执行。
二、一个简单的自动化流程
以外部群发送消息为例。
业务系统产生一条通知:
订单状态发生变化
然后进入API:
业务系统
↓
API接口
↓
参数校验
↓
RPA任务
↓
企业微信操作
↓
返回执行结果
整个过程中,业务系统不需要参与具体的操作步骤。
三、API接口怎么设计?
一个基础的任务接口,可以接收类似这样的参数:
{
"appId": "YOUR_APPID",
"toWxid": "GROUP_ID",
"content": "订单状态已更新"
}
收到请求之后,首先不要直接执行。
建议先进行参数检查:
请求
↓
参数是否完整?
↓
实例是否正常?
↓
目标是否有效?
↓
创建RPA任务
这样可以提前过滤掉一部分无效请求。
四、为什么建议使用任务模式?
如果API收到请求后直接同步执行RPA操作,业务量增加后容易出现问题。
例如同时来了几十个请求:
请求1 ─┐
请求2 ─┤
请求3 ─┤ → RPA
请求4 ─┤
请求5 ─┘
如果所有请求同时执行,任务之间容易互相影响。
更合理的方式是增加任务队列:
多个API请求
↓
任务队列
↓
任务逐个处理
↓
RPA
这样可以让API请求和实际执行过程解耦。
五、任务状态怎么设计?
建议给每个自动化任务设置明确的状态。
例如:
PENDING 待处理
RUNNING 执行中
SUCCESS 成功
FAILED 失败
任务创建后:
PENDING
↓
RUNNING
↓
SUCCESS
如果执行失败:
RUNNING
↓
FAILED
后续可以根据失败原因决定是否重新处理。
六、RPA执行失败怎么办?
自动化操作出现异常是比较常见的,所以不能只设计"成功"流程。
可以增加:
任务执行
↓
判断结果
↙ ↘
成功 失败
↓ ↓
结束 记录原因
↓
判断是否重试
但是重试也需要设置次数限制。
例如最多重试2~3次,避免一个异常任务一直循环。
七、日志怎么设计?
开发自动化接口时,日志非常重要。
至少建议记录:
任务ID
业务ID
实例ID
目标ID
任务类型
创建时间
开始时间
结束时间
执行状态
失败原因
例如:
任务ID:TASK001
业务ID:ORDER001
任务类型:群消息
状态:SUCCESS
耗时:2.3s
出现异常时,可以根据任务ID快速找到对应的执行记录。
八、API不要和RPA流程强绑定
如果后面RPA流程发生变化,最好不要影响业务系统。
例如业务系统只关心:
发送一条群消息
至于RPA内部具体怎么执行:
打开页面
→ 定位群聊
→ 输入内容
→ 执行发送
这些细节应该尽量封装在自动化层。
这样业务系统和RPA之间形成比较清晰的边界。
九、实际开发中的一个基本架构
可以设计成:
┌────────────┐
│ 业务系统 │
└─────┬──────┘
↓
┌────────────┐
│ API接口层 │
└─────┬──────┘
↓
┌────────────┐
│ 任务队列 │
└─────┬──────┘
↓
┌────────────┐
│ RPA执行层 │
└─────┬──────┘
↓
┌────────────┐
│ 企业微信操作 │
└────────────┘
API负责接入请求,任务队列负责调度,RPA负责实际执行。
这种结构比较适合后续继续扩展自动化功能。
十、几个容易忽略的细节
1. 做好幂等处理
同一个业务请求重复提交时,需要判断是否已经执行过。
避免因为网络重试导致同一个任务重复执行。
2. 控制任务并发
RPA任务不一定适合无限并发,需要根据实际执行能力控制并发数量。
3. 设置超时时间
一个任务长时间没有返回结果时,需要能够识别为异常状态。
4. 保留原始请求
出现问题时,保留必要的请求参数,有助于后续排查。
十一、总结
API和RPA结合时,可以把整个系统拆成几个独立部分:
业务系统 → API接口 → 任务调度 → RPA执行 → 返回结果
API解决的是"怎么把任务传过来"。
RPA解决的是"任务具体怎么执行"。
真正做项目时,再增加任务状态、队列、日志、超时和重试机制,整个自动化接口会更加稳定,也方便后续继续扩展。