一,搭建测试报告错误的时候,发送钉钉消息
1,首先在在钉钉上面建立一个群,要确保你的群主
2,建立发送钉钉消息的流程
。进入钉钉群,打开“群设置”
。点击“智能群助手”
。选择“添加机器人”,进入群机器人页面
。选择“添加机器人”,然后跳转页面,选择“自定义”
。进入机器人设置页面,设置机器人的名字,看见Webhook 那一栏,复制下来https://oapi.dingtalk.com/robot/send?access_token=*****
注意:access_token是机器人的token,每个群的机器人token都不一致的,但是前面的接口地址都是一致的
。自定义关键词:
填上自定义的关键词,每次发送消息的时候,消息文本前面都要带上这个关键词
代码如下:
import reuqests
data = {
"msgtype": "text",
"text": {
"content": "测试报警:自动化脚本代码错误,请速度查看" #我用的是“测试”这个关键词,所以所有的的消息文本前面都要带“测试”两个字
},
"at": {
"atMobiles": [self.dingding_mobile, #这个是发送消息的时候,想要艾特那个人,填上联系人的电话号码就行了,我已经参数化了
self.dingding_mobile_2, #同上
self.dingding_mobile_3, #同上
self.dingding_mobile_4],#同上
"isAtAll": False}} #这个是发送消息的时候是不是要艾特所有人,False是不要,True是要
r = requests.post(url=url, data=json.dumps(data), headers=headers)
print(r.text)
其实很简单的,就等于获取到机器人的接口地址和token,然后按照钉钉开发文件上面的参数要求传参然后发送post秦秋就行了,钉钉开发文件地址是:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
其实发送钉钉警报消息还真不难,麻烦的是要发送一个文件上钉钉群这里,以下我大概的说一下流程
二,Python操控钉钉机器人发送文件
1,首先,你要登录钉钉开发者平台:https://open-dev.dingtalk.com ,注意啊!要钉钉群的注册者或者管理者才能登陆上去,登陆成功后,我们要注意获取几个代码需要用到的参数
2,管理员账号登录开发者平台,应用开发-创建应用-查看详情-appkey;应用里的appsecret,这两个参数,复制黏贴下来准备代码使用
3,查看首页的CorpId,复制黏贴下来准备代码使用
4,打开 https://wsdebug.dingtalk.com/ 然后用钉钉注册人或者钉钉管理员的账号扫码登陆,进入调试模式,然后调用调用 V0.12 {"corpId":"xxx","isAllowCreateGroup":true,"filterNotOwnerGroup":true}
方法获得群聊的 chatid
chatid 参数复制黏贴下来有用
5,最后用管理员或注册人的账号,在指定的钉钉群那里建立智能机器人(创建机器人的步骤“一”上面说过了,就不重复了)
然后就是代码了,
class Dingding_Robot_new():
def __init__(self):
self.appkey=dingding_cfg.appkey
self.appsecret=dingding_cfg.appsecret
self.chatid=dingding_cfg.chatid
def getAccess_token(self):
appkey = self.appkey # 管理员账号登录开发者平台,应用开发-创建应用-查看详情-appkey
appsecret = self.appsecret # 应用里的appsecret
#https://oapi.dingtalk.com/gettoken?appkey=key&appsecret=secret
url = 'https://oapi.dingtalk.com/gettoken'
headers = {
'Content-Type': "application/x-www-form-urlencoded"
}
data = {'appkey': appkey,
'appsecret': appsecret}
r = requests.get( url=url,params=data,headers=headers)
# print(r.text)
access_token = r.json()["access_token"]
print(access_token)
return access_token
def getMedia_id(self):
access_token = self.getAccess_token() # 拿到接口凭证
path = '**********' # 文件路径
url = 'https://oapi.dingtalk.com/media/upload?access_token=' + access_token + '&type=file'
files = {'media': open(path, 'rb')}
data = {'access_token': access_token,
'type': 'file'}
response = requests.post(url, files=files, data=data)
json = response.json()
print(json)
return json["media_id"]
def SendFile(self):
access_token =self.getAccess_token()
media_id = self.getMedia_id()
chatid = self.chatid # 通过jsapi工具获取的群聊id
url = 'https://oapi.dingtalk.com/chat/send?access_token=' + access_token
header = {
'Content-Type': 'application/json'
}
data = {'access_token': access_token,
'chatid': chatid,
'msg': {
'msgtype': 'file',
'file': {'media_id': media_id}
}}
r = requests.request('POST', url, data=json.dumps(data), headers=header)
print(r.json())
if __name__=="__main__":
run=Dingding_Robot_new()
run.SendFile()