钉钉自定义机器人

169 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

完整官方文档其实很清楚,但是我还是决定写个文章记录一下。

官方文档:ding-doc.dingtalk.com/doc#/server…

官方说有三种安全设置,我只研究了前面2种方式

先说第二种:加签

 
#python 2.7
import time
import hmac
import hashlib
import base64
import urllib
import requests
import json
 
timestamp = long(round(time.time() * 1000))
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)
print(sign)
 
url='https://oapi.dingtalk.com/robot/send?access_token=a90472c762e6ffb3b4e3b788be28406b8be07557b0d4367cd48330d07388d414&timestamp={}&sign={}'.format(timestamp, sign)
print (url)
headers={
   "Content-Type": "application/json ;charset=utf-8 "
}
json={
	"msgtype": "text",
    "text": {
				"content": "热更完成 \n版本号:11.34"
			},
	"at":{
			"isAtAll":True
		},
			
	}
 
resp=requests.post(url=url,headers=headers,json=json)
print (resp.text)

secret这是加密的签名

image.png 就是这里的东西,我不懂的是,不知道为啥这里的签名不能复制出来,我敲了半天的键盘,我很不爽。

这个东西

image.png 是你自定义机器人添加的时候生成的webhook这个是可以复制的:

image.png 好了,说的很清楚了,现在跑一下看结果:

image.png 这样就成功了,官方还有其他的错误码返回,可以自己去看。

现在再说

第一种:关键字

image.png 我就随便写了个test作为关键字

import requests
import json
 
baseUrl = "https://oapi.dingtalk.com/robot/send?access_token=a90472c762e6ffb3b4e3b788be28406b8be07557b0d4367cd48330d07388d414"
 
# please set charset= utf-8
HEADERS = {
		 "Content-Type": "application/json ;charset=utf-8 "
	 }
 
# 这里的message是你想要推送的文字消息
message = "我是测试test000"
stringBody ={
		 "msgtype": "text",
		 "text": {"content": message},
		 "at": {
				"isAtAll": True
		 }
  }
MessageBody = json.dumps(stringBody)
 
result = requests.post(url=baseUrl, data=MessageBody, headers=HEADERS)
print(result.text)
 

这里需要注意的是发送的内容中需要包含关键字,不然就会返回错误码

image.png 好了,这个更简单,测试一下: 测试结果是成功了,但是这里有一个坑需要注意,这二种方式不可以同时开启,只能开启其中一个,如果开了二种方式就会返回错误码,你的机器人就不会发送消息。一一对应,保持唯一就行了。

image.png 如果你的python是3.3或者其他版本的话,自己去查阅资料重新照着写,假如你的代码报错,提示你错误:

“ImportError: No module named ‘requests’

启动命令行工具窗口,切换到Python安装目录,使用pip install requests命令安装

image.png 好了,问题都解决了。