zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

使用Linux Crontab结合 企业微信的群聊机器人 定时发送消息通知

2023-03-07 09:09:32 时间

我所在的组每周五都需要发送一条填写周报的通知,经常因为琐事烦恼就忘记了,一直想着搞写一个模块挂在服务器上,定时发一个HTTP请求给企微自带的群聊机器人,这样就实现了一个最简单的“自动化办公”

一开始是想通过写个模块来实现,还可以对接公司的项目管理的数据库,查一些数据分析,后面扩展性很高。但一直没实现的原因还是懒,懒得另外起一个项目,甚至是接入一堆臃肿的组件。

bg

今天重新思考下,其实目前我的通知内容并不需要查询到数据库,需要自动化查询当前的8月份,以及附带excel的url(每个月的url都会变,方便组员点击后直接到对应的月份)。 然后又想起来Linux下其实有自带的定时任务插件——Crontab。

那么思路一下来了:

  1. 将消息通知内容通过shell脚本写成一个Linux下可执行的HTTP请求。
#!/bin/bash
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=群聊机器人的key' \
   -H 'Content-Type: application/json' \
   -d '
   {
    "msgtype": "text",
    "text": {
             "content": "请大家更新周进度。\n 1.请....",
             "mentioned_list":["userid1","userid2","userid3","@all"]
            }
    }' 

2.将shell脚本添加到crontab的任务列表里面,并配置需要的cron表达式。

#每周五下午16:30分执行一次通知脚本
30 16  * * 5 cd / && ./week_report_notify.sh

这样子只要当前服务器可以连通外网,将请求发送到企微的服务器,那么我们就完成一个最简单的OA办公自动化脚本,提供我们的生产效率啦~

测试截图

实际上week_report_notify.sh可以玩的花样很多,我在实际使用中还添加几个变量,用以获取当前的月份;在需要连接数据库时,也可以通过访问我们自己后台接口,“curl http://ip:port/requestName >> response.log” 将返回的内容作为参数,添加到我们的请求中,这样子可以做的事情多很多了。

禅定时刻 这个事情反思一下: 事情要先思考本质,要警惕程序员的技术性思维,如果按照最开始的自动化模块的想法,可能这个事情会一直搁置下去,但换个简单的方式,几分钟就搞定了~