一,搭建測試報告錯誤的時候,發送釘釘消息
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()