自定义机器人接入文档
获取自定义机器人Webhook
安装依赖
pip install requests
Python代码
# -*- coding: utf-8 -*-
import time
import hashlib
import base64
import hmac
import requests
from urllib.parse import quote
# 自定义机器人webhook
dingTalkUrl = 'https://oapi.dingtalk.com/robot/send?access_token=xxxx'
# 自定义机器人加签密钥
dingTalkSecret = 'xxxx'
def dingTalkSign():
# 获取当前时间戳,并将其转换为毫秒级
timestamp = int(time.time() * 1000)
# 将时间戳和钉钉应用的密钥拼接在一起,将拼接后的字符串转换为字节数组
signBefore = ('%s\n%s' % (timestamp, dingTalkSecret)).encode('utf-8')
# 用HMAC-SHA256算法对字节数组进行签名
hsha256 = hmac.new(dingTalkSecret.encode('utf-8'), signBefore, hashlib.sha256)
# 将签名进行Base64编码,将编码后的签名进行URL编码
sign = quote(base64.b64encode(hsha256.digest()))
return {"timestamp": timestamp, "sign": sign}
def sendMessage(message, atMobiles=[], isAtAll=False):
print("发送内容:", message, atMobiles, isAtAll)
json = {
"msgtype": "text",
"text": {
"content": message,
},
"at": {
"atMobiles": atMobiles,
"isAtAll": isAtAll
}
}
sign = dingTalkSign()
response = requests.post(url=dingTalkUrl, params=sign, json=json)
print("响应内容:", response.json())
'''
每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。
'''
if __name__ == "__main__":
# 发送消息不@任何人
# sendMessage('服务器不正常啦!')
# 发送消息并@指定人员
# sendMessage(message='服务器不正常啦!', atMobiles=['13888888888'])
# 发送消息并@所有人员
sendMessage(message='服务器不正常啦!', isAtAll=True)