说到企业微信群机器人,大家应该都不陌生,我们时常能够在企微群中见到它的身影。在日常工作中,我们往往需要在部门间传递信息、信息共享,比如业务数据同步到各部门、项目发布通知给相关方、生产监控告警快速响应等等。另外,我们还可以利用企微群机器人满足定时提醒推送。它能够起到信息同步、监控告警、数据推送等作用,在我们的日常工作中受到广泛的应用。
框架: APScheduler(全称 Advanced Python Scheduler,在指定的时间规则执行指定的作业)、requests、logging
语言: python
这里挑选两个重要的流程,来看一下scheduler的工作原理。其中一个是add job,添加任务,另一是scheduler,每次唤醒调度时的执行过程。
设置在2016年12月12日12点执行
scheduler.add_job(job_function, 'date', run_date=datetime(2016, 12, 12, 12, 0, 0), args=['text'])
设置时间范围,在设置的时间范围内每隔2小时执行一次
scheduler.add_job(my_job, 'interval', hours=2, start_date='2017-9-8 21:30:00', end_date='2018-06-15 21:30:00)
设置时间范围,在工作日的17:30执行一次
scheduler.add_job(my_job, ‘cron’, day_of_week='0-4', hour=17, minute=30, end_date='2017-10-30')
自定义机器人支持: 文本(text)、markdown(markdown)、图片(image)、图文(news)四种消息类型,此外还支持发送文件(excel、word等)
消息发送频率限制: 每个机器人发送的消息不能超过20条/分钟
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa' \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "text",
"text": {
"content": "hello world"
}
}'
结合定时框架、企微群机器人、项目管理平台对外API:
缺陷超时提醒: 主要目的是提醒经办人处理已经超过半天且优先级高的缺陷
上线工单超时提醒: 主要是提醒工单对应的负责人把已经上线的工单的状态流转到终态
需求状态变更提醒: 根据项目管理平台需求排期,超过排期的时间,通知相应负责人修改状态
from apscheduler.schedulers.blocking import BlockingScheduler
Scheduler = BlockingScheduler()
Scheduler.add_job(job.pushContent, 'cron', day_of_week='0-3', hour='17', minute='28', second='0',
args=['XXXXXXXXXXXXX', '站立会啦,请大家前往会议室'])
Scheduler.start()
job.pushContent: job执行的函数,包装了企微群机器人的接口请求的方法
args: job执行函数所需要的位置参数,从demo中可以看出,第一个参数是群机器人的key,第二个是推送的文案
cron: 上文已经提到cron风格表达式是属于周期性执行,用于(在指定时间内)定期运行job的场景
day_of_week='0-3', hour='17', minute='28', second='0': 表示每周一到周四的17:28分执行任务
企微群机器人的能力,完全取决于推送消息逻辑处理后台能力的大小,我们可以根据不同使用场景,实现各类推送、提醒的功能,制定更个性化的需求,从而降低我们的沟通成本,提高我们的工作效率。
随着项目的发展,会有更多的团队接入,制定项目流程中关键节点的推送,配置系统需要实现平台化,除此之外还需要补充更多的应用场景。
作者:阿紫 KOO团队工程师