很多系统都会有这样的需求:

订单支付成功了,需要通知客服;
客户提交了申请,需要提醒负责人;
任务执行完成了,需要通知指定人员;
某个业务出现异常,需要及时发消息提醒。

如果全部靠人工查看后台,再手动通知,不仅效率低,还容易漏掉。

比较常见的做法,就是把企业微信消息推送和业务系统连接起来。

核心思路其实很简单:

业务状态发生变化 → 判断通知条件 → 生成消息 → 调用接口 → 企业微信自动发消息


一、先判断什么情况下需要通知

不要一有状态变化就发送消息。

应该先定义哪些状态需要通知。

例如订单系统:

待支付 → 已支付 → 已发货 → 已完成

可以设置:

已支付 → 通知销售
已发货 → 通知客户
已完成 → 更新业务记录
异常 → 通知负责人

这样消息推送就有明确的业务规则。


二、把业务状态和消息规则分开

实际开发时,可以单独维护一套通知规则。

例如:

业务状态通知对象消息类型
支付成功销售文本
审核通过负责人文本
任务完成操作人员文本
业务异常管理人员告警

业务系统只需要告诉通知模块:

{
  "event": "order_paid",
  "orderId": "10001"
}

通知模块再根据 event 找到对应规则。

这样以后修改通知对象或者消息内容,不需要修改核心业务代码。


三、消息内容可以动态生成

自动通知不能每次都发固定的一句话。

可以根据业务数据动态生成。

例如:

message = f"""
订单支付成功

订单号:{order_id}
客户:{customer_name}
金额:{amount} 元
"""

然后通过企业微信接口发送。

最终效果类似:

订单支付成功

订单号:10001
客户:张三
金额:399 元

这样收到消息的人,不需要再打开系统查询一次。


四、根据不同业务状态发送给不同的人

比较实用的一点,是不要所有消息都发给同一个人。

可以根据业务数据找到对应负责人。

例如:

订单 → 销售 → 对应销售人员

售后 → 客服 → 对应客服人员

异常 → 管理员 → 对应负责人

流程可以设计成:

业务事件 → 查询负责人 → 获取接收对象 → 生成消息 → 企业微信API → 消息推送

这样做出来的企业微信自动化会更加灵活。


五、注意不要重复发送

这是做自动通知时非常容易遇到的问题。

例如订单状态更新了一次:

已支付

系统因为某个原因触发了两次事件。

如果没有去重,就可能收到两条一样的消息。

所以可以给每次通知生成一个唯一标识:

order_10001_paid

发送前先检查:

if notification_exists(event_id):
    return

send_message()

save_notification(event_id)

这样同一个业务事件只处理一次。


六、消息发送失败也要有记录

不能调用接口失败之后就直接结束。

至少应该记录:

业务事件
通知对象
发送时间
接口结果
失败原因
重试次数

例如:

订单10001
通知:销售A
状态:发送失败
原因:请求超时
重试:1次

后面可以针对失败任务进行处理。

这样在做企业微信API开发的时候,排查问题会方便很多。


七、不要让业务系统直接处理所有接口细节

比较推荐的结构是:

业务系统 → 通知模块 → 企业微信API → 企业微信

业务系统只负责产生事件。

例如:

{
  "event": "payment_success",
  "data": {
    "orderId": "10001"
  }
}

通知模块负责:

  • 判断是否需要通知

  • 查找接收人

  • 生成消息

  • 调用接口

  • 保存发送结果

这样以后增加新的企业微信开放接口时,也不会影响原来的业务逻辑。


八、批量通知建议使用任务队列

如果一次业务变化需要通知很多人,不建议全部请求堆在一起执行。

可以先创建任务:

业务事件 → 创建通知任务 → 进入队列 → 逐个执行 → 记录结果

例如:

任务1 → 销售A → 成功
任务2 → 销售B → 成功
任务3 → 客服A → 失败

失败任务可以单独重新处理。

如果涉及大量企业微信群发或者批量消息,也可以采用类似的任务管理方式。


九、实际场景举个例子

比如一个客户管理系统。

当客户提交表单之后:

客户提交表单
→ 系统生成客户记录
→ 判断客户负责人
→ 创建通知任务
→ 企业微信消息推送
→ 销售收到提醒

销售收到:

新客户提醒

客户:张先生
来源:官网
提交时间:19:32
负责人:销售A

整个过程不需要人工去后台查看。

这就是比较典型的企业微信自动运营场景。


十、还可以增加通知优先级

不是所有消息都一样重要。

可以设置:

普通 → 正常发送
重要 → 优先发送
紧急 → 立即通知负责人

例如:

订单完成 → 普通
客户投诉 → 重要
系统异常 → 紧急

这样通知系统后面还可以继续扩展成比较完整的消息中心。


总结

根据业务状态自动发送企业微信消息,本质上就是把:

业务事件 → 通知规则 → 消息生成 → 接口调用 → 发送结果

连接起来。

开发时建议重点考虑:

  1. 哪些业务状态需要通知

  2. 不同状态对应哪些接收人

  3. 消息内容如何动态生成

  4. 如何避免重复通知

  5. 失败后如何记录和处理

  6. 批量通知如何拆分任务

  7. 业务代码和接口代码如何解耦

这样后面无论是做企业微信消息推送企业微信机器人,还是进一步做企业微信二次开发,都可以在这个基础上继续扩展。

企业微信 API 开发文档:

查看企业微信 API 开发文档

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐