整个过程分为三步:
不做过多赘述
不做过多赘述
机器人配置主要看两部分,一个是访问地址及 Token 的获取,另一个是 安全设置,前者保证你能将消息准确发送到刚才新建的群里面,后者保证只有在满足你设定的拦截条件后消息才能发送到群里面。
前者的样式如下:
# xxx 代表具体的 token,每个群不一样
https://oapi.dingtalk.com/robot/send?access_token=xxx
钉钉通过三种方式保证消息的安全发送,即下图所示的关键字、加签及 IP 白名单
我们这里选择用第二种方式——加签,需要将上图中的 Webhook 地址 和 加签 的内容进行复制,等下第三步要用到。
在官网上我们能够找到 Python 的部分示例代码。
import urllib.parse
import json
import time
import hmac
import hashlib
import base64
import urllib.parse
import requests
def ding_notify(message):
# 这里替换为复制的完整 webhook 地址
token = 'd24e65492a5bdc11e6c6c6ca0cf9837d74a3dd85006b352632efc6f275ebf310'
prefix = f'https://oapi.dingtalk.com/robot/send?access_token={token}'
timestamp = str(round(time.time() * 1000))
# 这里替换为自己复制过来的加签秘钥
secret = 'SEC981bd209c9438xxxxxxxxxxxxxxxxxxxxd4053d968'
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))
url = f'{prefix}×tamp={timestamp}&sign={sign}'
# 钉钉消息格式,其中 msg 就是我们要发送的具体内容
data = {
"at": {
"isAtAll": False, #true
"atMobiles" :['178xxxxxxxx',] # 需要at的人,列表,每个元素为手机号
},
"text": {
"content": message
},
"msgtype": "text"
}
data = json.dumps(data) #json.dumps()用于将字典形式的数据转化为字符串
headers = {'Content-Type': 'application/json', "Charset": "UTF-8"}
return requests.post(url=url, data=data, headers=headers,).text
#自行添加定义
job_id = 1
hosts = []
message = (
f"新建批量流程:\n"
f"JOB_ID: {job_id}\n"
)
ding_notify(message)
上述代码中,除了汉字备注的部分,其余可视为固定写法。