完整官方文档其实很清楚,但是我还是决定写个文章记录一下。
官方文档: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×tamp={}&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命令安装
好了,问题都解决了。