1. 程式人生 > 實用技巧 >python 釘釘 訊息推送 檔案傳輸

python 釘釘 訊息推送 檔案傳輸

1、訊息推送

釘釘群新增機器人

方式一:釘釘 群設定新增

群設定 -> 智慧群助手 -> 新增機器人 -- 自定義機器人

設定如下: 這裡選擇 自定義關鍵字 填寫"訊息推送" ,只有傳送的訊息包含了 這個關鍵字,才會推送這個訊息

複製webhook,程式碼需要用到

def send_massage(message):

    webhook = 'Your webhook'


    chatbot = DingtalkChatbot(webhook)
    chatbot.send_text(msg=message,is_at_all=False,is_auto_at=True,at_mobiles=['
@人手機號']) send_massage('訊息推送:傳送訊息"')

如上如果send_massage 不含訊息推送,則不會發送訊息。

方式二:建立一個小程式應用:

    1. 登入釘釘開發者後臺
      說明:只有管理員和子管理員可登入開發者後臺。註冊企業或個人

註冊後登入首頁如圖

點選應用開發,建立應用,如圖建立機器人

建立後點擊上線,即可上線該機器人

最後手動在群裡可以新增該機器人

在群裡檢視該機器人,即可看到該機器人 webhook

def send_massage(message):

    webhook = 'Your webhook
' chatbot = DingtalkChatbot(webhook) chatbot.send_text(msg=message,is_at_all=False,is_auto_at=True,at_mobiles=['@人手機號']) send_massage('test:message"')

這裡沒有設定關鍵字,所以訊息就都可以傳送。

2、檔案傳輸

釘釘群機器人推送訊息型別只支援text,link,markdown等形式,並不支援檔案和圖片類媒體檔案的推送,所以咱們這裡就需要用到釘釘的API介面來實現了,進入釘釘開放平臺:https://open-dev.dingtalk.com

首頁如下,記到:Corpid,後續會用到

到應用開發,準備建立小程式

開發管理:新增伺服器出口IP, 獲取IP:http://myip.fireflysoft.net/ 注意:根據網路自動獲取,網路不同,ip不同,切如果ip已經被佔用,請變更網路

新增介面許可權,新增企業會話許可權,該許可權可以推送檔案到群聊,如果無此許可權,則無法推送檔案。

到此完成了釘釘 推送檔案小程式的設定,接下來準備需要的資訊:

1、chatid 通過地址https://wsdebug.dingtalk.com/

使用釘釘管理員的釘釘掃描二維碼

然後 定位到 v0.1.2

複製首頁的

未認證服務商 CorpId 並替換其中的xxx,點選執行,此時釘釘會彈出彈出框,讓選擇群聊,點選需要推送檔案的群聊,確定即可,如圖返回了chatid。

2、AppKeyAppSecret 獲取

開啟應用開發-> 檢視對應的小程式,如圖即可獲取

最後直接上程式碼

import requests
import json


def getAccess_token():
    appkey = '****'   # 替換自己的key
    appsecret = '****'  # 替換自己的secret

    url = 'https://oapi.dingtalk.com/gettoken?appkey=%s&appsecret=%s' % (appkey, appsecret)

    headers = {
        'Content-Type': "application/x-www-form-urlencoded"
    }
    data = {'appkey': appkey,
            'appsecret': appsecret}
    r = requests.request('GET', url, data=data, headers=headers)
    access_token = r.json()["access_token"]

    print(access_token)
    return access_token


def getMedia_id():
    access_token = getAccess_token()  # 拿到介面憑證
    # 獲取要推送檔案的路徑
    path = os.getcwd()
    file = os.path.join(path,'moudleCore.txt')
    # path = './helloworld.txt'  # 檔案地址
    url = 'https://oapi.dingtalk.com/media/upload?access_token=%s&type=file' % access_token
    files = {'media': open(file, '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():
    access_token = getAccess_token()
    media_id = getMedia_id()
    chatid = '*****' # 替換自己的chatid
    # 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__':
    SendFile()

執行後,即可看到群裡自動傳送了檔案如圖。