背景:
钉钉常用于日常工作中 我们经常需要每天或者每周定时去做一些事情 比如 日报 周报 晨会 周会等 为了防止忘记做这些事情 故考虑定时发送提醒消息。
实现方式:
我本次使用的方式是crontab定时器命令添加python脚本任务。
步骤:
一、创建钉钉机器人并获取Webhook
1、选择需要添加机器人的群聊,然后依次单击群设置 > 智能群助手。
2、在机器人管理页面选择自定义机器人,输入机器人名字并选择要发送消息的群,同时可以为机器人设置机器人头像。
3、完成必要的安全设置,勾选我已阅读并同意《自定义机器人服务及免责条款》,然后单击完成。(安全设置添加其中一个就行 我选择的是 自定义关键字)
4、完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下:
二、使用介绍:
获取到Webhook地址后,向这个地址发起POST 请求,即可实现给该钉钉群发送消息。
自定义机器人支持文本 (text)、链接 (link)、markdown(markdown)、ActionCard、FeedCard消息类型。
三、使用方式
1、命令行工具curl
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content":"我就是我, 是不一样的烟火"}}'
2、SDK
本次使用脚本执行 没有接入SDK 需要可以参考链接
3、定时器命令行(crontab) + 脚本(python)
1、先写好脚本 我使用的是link格式 需要其他格式可以参考钉钉自定义机器人消息类型及数据格式
#!/usr/bin/python3.8
#导入依赖库
import sys
#append一定要在报错模块之前
sys.path.append("/Users/BMW/Library/Python/3.8/lib/python/site-packages")
import requests,json
from pbxproj import XcodeProject
#定义数据类型
headers={
"Content-Type": "application/json",
"Charset": "UTF-8"
}
#定义webhook,从钉钉群机器人设置页面复制获得
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=9108beea68ce394d502744c226035e9aaabb341e6cd5f9cd9a2b68623c52c9bc'
#定义要发送的数据
data = {
"msgtype": "link",
"link": {
"text":"每周一、周五 下午五点提醒",
# "text":"更新周报链接",
"title":"自动群消息 写周报啦!!!",
"messageUrl":"https://alidocs.dingtalk.com/i/team/WO4GjOJDJ4B1zDRM/docs/WO4Gjay35eYkVmDR?corpId=ding9ec7ae752d870c5b35c2f4657eb6378f# 「2022.02.14.-2022.02.18」",
"picUrl":"https://img.lianzhixiu.com/uploads/allimg/191119/30-1911191119380-L.jpg"
}
}
#发送post请求
requests.post(webhook, data=json.dumps(data), headers=headers)
2、可以先手动执行一下脚本 测试消息是否可以发送成功
cd到脚本文件根目录
执行python(python3) sendMessage.py
3、启动定时器执行脚本
常规做法:
1、打开定时器编辑模式
sudo crontab -e
通常第一次使用这个命令的时候会类似报下面这个错:
no crontab for BMW - using an empty one
原因是我们终端使用的是vim编辑器 系统没有指定默认编辑器 所以需要我们指定编辑器为vim
终端输入su命令进入root用户 没有密码的话 先设置个密码。
su
passwd
修改root用户密码
切换到root用户以后设置编辑模式:
crontab -e
export EDITOR=vim
设置默认编辑器模式
系统支持三种编辑器模式emacs、vim、nano,如果需要其他格式的 命令行对应修改即可。
至此报错信息解决。
此时用户已经切换至root
所以直接执行下面的步骤即可:
1、终端输入: crontab -e
2、点击i进入编辑模式
3、添加所需执行命令如下:
35 11 * * 1-5 /usr/bin/python3 /Users/BMW/Desktop/Panda/sendMessage.py
0 10 * * 1-5 /bin/echo "I love you " >> /Users/BMW/Desktop/lalala/foo.txt
可利用换行同时添加多个任务
4、按ESC退出编辑模式
5、双击大写字母Z退出vim
此时如果看到installing new crontab提示 证明任务已经添加成功
可使用crontab -l命令查看当前正在执行的命令。
如果报类似下面的错误 大概率是因为上面添加的任务格式不对 输入Y可以重新进入编辑模式 对照crontab文档检查一下格式重新执行就可以了。
crontab添加任务报错
网友评论