需求
目前需要接入消息推送的模块是任务中心,原因是任务中心是多人协作处理某个特定小组内的所有分析任务,在整个分析的过程中,一个任务的生命周期会经历若干个关键的状态节点,
当分析师或审批人触发了相关动作,去改变当前任务的状态转移到特定的新状态时,需要业务层生成一条消息发送到企业微信群内,通知相关责任人第一时间关注这个任务的状态信息。
从而分析师或审批人能在第一时间内,看到消息后,去wxqb的业务系统做进一步的后续处理。
前期调研
一、怎么在业务层代码实现推送消息到企业微信?
1.首先你得有个机器人
企业微信默认是群内相关成员都有权限添加机器人,操作入口如下:

可能弹出后的效果是:

点击“添加机器人”按钮,得到:

为啥我们没有看到创建或则叫新建机器人的入库?
网上搜了一下,看看有无创建企业微信机器人的文档,搜索结果如下:


找有权限的用户拿到了创建后web hook地址:(地址里面的key很关键,不要暴露到互联网,可能会被别人利用,给你推送一些乱七八糟的消息)

2.如何推送消息到企业微信机器人
首先,想到的是企业微信的openapi应该提供了对外的api能力,让我们可以通过调用接口的方式,实现消息的推送!
文档传送门:https://open.work.weixin.qq.com/api/doc/90000/90136/91770
文档主要内容截图示意:

二、业务层接入方案设计
a.方案概述
简述为,任务中心的特定api接口,被触发后,调用已经封装好的企业微信消息推送方法,推送消息到企业微信机器人。
可以设计的细节为:
1.根据需求,整理一下当前的消息内容有哪些?
“任务id:168,任务类型:样本分析,已被张三完成。”
“任务id:168,任务类型:样本分析,已被张三提交审核。”
“任务id:168,任务类型:样本分析,分析师:张三,已被李四审核通过。”
那么,我们可以对这类消息抽象成消息模板,形如:
“A,B”
A:对任务的描述信息(用于分析师,看到消息时,能去业务系统查找对应的任务)
B:对当前任务怎么了,发生了什么事件的描述(告知特定人员发生了啥,你需要后续响应)
消息模板形如:
“任务id:${id},任务类型:${type},已被${displayname}完成。”
${id}是消息的占位符,用于实际发送消息时,替换占位符为真实信息,得到最终的消息字符串。
模板的占位符的实际参数,在发送阶段通过业务层代码去补全。;
2.关于消息推送的时机
按照现有的模板消息,基本上是一条消息对应一个任务中心的api,对于当前mvc的框架来说,就是对应到了特定module/controller/action的代码块内。
如果你不想通过把model层封装的推送消息的方法,埋点到各个module/controller/action的代码块内。
这样做的弊端:
代码太分散了,如果后期修改了消息推送的方法,特别是参数有所变化,那么埋点的代码块的调用语句,都要跟着适配修改,不利于项目的后期维护。
那么,

本文详述了如何在业务层实现任务中心状态变更时,通过企业微信机器人发送消息给相关人员。包括创建机器人、配置模板、触发时机控制及数据库设计,探讨了如何在ThinkPHP5框架中集成消息推送逻辑并优化潜在问题。
最低0.47元/天 解锁文章
2560

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



