钉钉自定义机器人

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

官方文档:https://ding-doc.dingtalk.com/doc#/serverapi3/iydd5h

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

先说第二种:加签

#coding=UTF-8

#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这是加密的签名

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

这个东西

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

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

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

现在再说

第一种:关键字

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

#coding=UTF-8
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)

 

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

好了,这个更简单,测试一下:

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

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

“ImportError: No module named ‘requests’

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

好了,问题都解决了。

Guess you like

Origin blog.csdn.net/pyf_914406232/article/details/108105004