钉钉消息推送机器人搭建教程
极力推荐的消息推送服务
前言
最近刚好有个项目要使用到消息推送,以前我都是用的server酱
公众号来推送,但是它只能每天免费推送5条消息,并且它的通知需要点开才能看,所以折腾了一下其他的推送服务,兜兜转转感觉钉钉机器人很不错,所以记录分享一下
先说说好处吧:免费无限制,消息可定制,服务稳定,搭建简单。并且钉钉工作属性就很强,所以挺适合消息推送的场景
准备工作
创建钉钉群
首先得用到电脑版钉钉,手机不行
要使用机器人需要新建一个群,而建群需要邀请人,所以可以使用面对面建群建实现单人建群
入口在客户端左上角,这里就不贴图了
启用机器人
在群设置中找到机器人
选择右下角自定义机器人
这里要讲一下安全设置,至少选一个
如果不是特别正式重要的使用的话,用自定义关键词即可,配置简单
否则用加签,不过得写加签的代码
需要注意的是:勾选多个,那么每次请求所有条件都要满足
这两个待会调用接口再讲,创建成功后会有Webhook
这就是接口了,记好不要泄露了
接口API调用
每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。
自定义关键词
如果你选的是这个,那么验证接口就很方便了
比如我就会在消息开头加上“推送@我的手机号\n”
,关键词是推送
准备好你的WebHook:https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx
替换掉下方命令中的链接,然后在cmd中执行:
1
curl "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx" -H "Content-Type: application/json" -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"推送\n消息推送机器人搭建成功!\"}}"
没有意外的话,就可以接收到消息了
加签
如果选择加签,会得到一个密钥,这里就不贴图了
sign计算方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#python 3.8
import time
import hmac
import hashlib
import base64
import urllib.parse
timestamp = str(round(time.time() * 1000))
secret = 'this is secret'
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
print(timestamp)
print(sign)
再将计算的 timestamp 和 sign 拼接到 URL 中
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX×tamp=XXX&sign=XXX
结语
接口本身还支持更多的参数和消息格式,感兴趣可以到钉钉的官方文档看看
请求接口的完整代码文档也有,这里就不贴代码了
参考资料:
https://open.dingtalk.com/document/orgapp/custom-bot-to-send-group-chat-messages