钉钉群发消息机器人

钉钉自定义机器人 - 后台开发,我们通过配置就好了,方便操作!
首先需要的是自定义机器人唯一的 webhook,可以通过电脑端的钉钉申请,申请完成后记录下该机器人的 webhook。如图:
钉钉群发消息机器人

点击添加机器人,选择“自定义机器人”
钉钉群发消息机器人

点击添加:
钉钉群发消息机器人

自定义她的功能名称:
钉钉群发消息机器人

完成必要的安全设置(至少选择一种),重置我已阅读并同意《自定义机器人服务及免责条款》,单击“完成”。安全设置目前有 3 种方式,设置说明见介绍。
钉钉群发消息机器人

钉钉群发消息机器人

完成安全设置后,复制出机器人的 Webhook 地址,可用于向这个群发送消息,格式如下:

`https://oapi.dingtalk.com/robot/send?access_token=XXXXXX`

注意:请保管好此 Webhook 地址,不要公布在外部网站上,避免后有安全风险。

安全设置
安全设置目前有 3 种方式:

(1)方式一,自定义关键词

最多可以设置 10 个关键字,消息中至少包含其中 1 个关键字才可以发送成功。

例如:添加了一个自定义关键字:监控报警

则这个机器人所发送的消息,必须包含监控报警 这个词,才能发送成功。

(2)方式二,加签

首先,把 timestamp +“ \ n” + 密钥当做签名密钥,使用 HmacSHA256 算法计算签名,然后进行 Base64 编码,最后再把签名参数再进行 urlEncode,得到最终的签名(需要使用 UTF-8 字符集) )。

钉钉群发消息机器人

签名计算代码示例(Python)

import time  
import hmac  
import hashlib  
import base64  
import urllib  

timestamp = long(round(time.time() * 1000)) 
secret = 'this is secret' 
secret_enc = bytes(secret).encode('utf-8') 
string_to_sign = '{}\n{}'.format(timestamp, secret) 
string_to_sign_enc = bytes(string_to_sign).encode('utf-8') 
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest() 
sign = urllib.quote_plus(base64.b64encode(hmac_code)) 
print(timestamp) 16print(sign)`

第二步,把 timestamp 和第一步得到的签名值分割到 URL 中。

钉钉群发消息机器人

https://oapi.dingtalk.com/robot/send?access_token=XXXXXX×tamp=XXX&sign=XXX

(3)方式三,IP 地址(段)

设定后,只有来自 IP 地址范围内的请求才会被正常处理。支持两种设置方式:IP,IP 段,暂不支持 IPv6 的地址白名单,格式如下:

钉钉群发消息机器人

注意:安全设置的上述三种方式,需要至少设置其中一种,以进行安全保护。校正不通过的消息将会发送失败,错误如下:

1 //消息内容中不包含任何关键词
 2 {
 3   “ERRCODE”:310000,
 4   “ERRMSG”: “关键字不是在内容”
 5 }
 6 
7 //时间戳无效
 8 {
 9   “ERRCODE”:310000,
 10   “ ERRMSG “:”无效时间戳“
 11 }
 12 
13 //签名不匹配
 14 {
 15   ”ERRCODE“:310000,
 16   ”ERRMSG“: ”符号不匹配“
 17 }
 18 
19 // IP地址不在白名单
 20 {
 21   ” ERRCODE“:310000,
 22  “ errmsg”:“ ip XXXX不在白名单中”
 23 }

使用自定义机器人

(1)获取到 Webhook 地址后,用户可以向该地址发起 HTTP POST 请求,即可实现给该钉钉群发送消息。注意,发起 POST 请求时,必须将字符集编码设置成 UTF-8。

(2)当前自定义机器人支持文本(文本),链接(链接),markdown(markdown),ActionCard,FeedCard 消息类型,大家可以根据自己的使用场景选择合适的消息类型,达到最好的展示样式。

(3)自定义机器人发送消息时,可以通过手机号码指定“被 @人列表”。在“被 @人列表”里面的人员收到该消息时,会有 @消息提醒(免打扰会话仍然通知提醒,首屏出现“有人 @你”)。

(4)当前机器人尚不支持应答机制(该机制指的是群里成员在聊天 @机器人的时候,钉钉指定的服务地址,即传出机器人)。

下面放出发送文本信息时的代码:

webhook = web_hook
ding = chatbot.DingtalkChatbot(webhook)
ding.send_text(msg=self.message_text,is_at_all=True)   
# is_at_all=True表示@all ,如果不加这个参数,钉钉群组收到消息不会@任何人。

web_hook 为定义的流程变量,赋值为上述步骤中保存的唯一标识码,形如https://oapi.dingtalk.com/robot/send?access_token=XXXXXX
message_text 为定义的全局变量,存放想要发送的消息。

运行后截图:
钉钉群发消息机器人