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、AppKey AppSecret 獲取 

打開應用開發-> 查看對應的小程序,如圖即可獲取

 

 

 

最后直接上代碼

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()

 

執行后,即可看到群里自動發送了文件如圖。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM