文章

钉钉消息推送机器人搭建教程

极力推荐的消息推送服务

钉钉消息推送机器人搭建教程

前言


最近刚好有个项目要使用到消息推送,以前我都是用的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&timestamp=XXX&sign=XXX


结语


接口本身还支持更多的参数和消息格式,感兴趣可以到钉钉的官方文档看看

请求接口的完整代码文档也有,这里就不贴代码了

参考资料:

https://open.dingtalk.com/document/orgapp/custom-bot-send-message-type?spm=ding_open_doc.document.0.0.1fdb7f7fIwB2Vi

https://open.dingtalk.com/document/orgapp/customize-robot-security-settings?spm=ding_open_doc.document.0.0.2b4f371fQfaYyG

https://open.dingtalk.com/document/orgapp/custom-bot-to-send-group-chat-messages

本文由作者按照 CC BY 4.0 进行授权