Python實(shí)現(xiàn)釘釘訂閱消息功能
釘釘設(shè)置機(jī)器人
首先在釘釘設(shè)置釘釘機(jī)器人
群設(shè)置—> 智能群助手—>添加機(jī)器人—>自定義


添加完成,得到一個(gè)Webhook API地址

Python腳本實(shí)現(xiàn)推送釘釘消息
釘釘官方給出了機(jī)器人接口的文檔:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
但是該文檔只實(shí)現(xiàn)了JAVA和PHP的示例。以下是python腳本的示例。
# -*- coding: utf-8 -*-
"""Created on Mon Jan 13 11:18:59 2020
python3
@author: 謝公子
"""
import json
import requests
def send_msg(url,data):
headers = {'Content-Type': 'application/json;charset=utf-8'}
r = requests.post(url,data = json.dumps(data),headers=headers)
return r.text
if __name__ == '__main__':
data = {
"msgtype": "text",
"text": {
"content": "hello,word!test"
},
}
url = 'https://oapi.dingtalk.com/robot/send?access_token=xx' #此處為釘釘機(jī)器人的webhook地址
print(send_msg(url,data))


如果要實(shí)現(xiàn)簽名認(rèn)證,如下

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 13 11:18:59 2020
python3
@author: mi
"""
import json
import requests
import time
import hmac
import hashlib
import base64
import urllib
from urllib import parse
def send_msg(url,data):
headers = {'Content-Type': 'application/json;charset=utf-8'}
r = requests.post(url,data = json.dumps(data),headers=headers)
return r.text
def auth(secret):
timestamp = round(time.time() * 1000)
secret = secret #秘鑰
secret_enc = bytes(secret.encode('utf-8'))
string_to_sign = '{}\n{}'.format(timestamp, secret) #把 timestamp+"\n"+密鑰 當(dāng)做簽名字符串 string_to_sign
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() #使用HmacSHA256算法計(jì)算簽名,得到 hmac_code
hmac_code_base64=base64.b64encode(hmac_code) #將hmac_code進(jìn)行Base64 encode
sign = urllib.parse.quote(hmac_code_base64) #進(jìn)行urlEncode,得到最終的簽名sign
authlist=[timestamp,sign]
return authlist
if __name__ == '__main__':
data = {
"msgtype": "link",
"link": {
"text": "",
"title": "時(shí)代的火車(chē)向前開(kāi)",
"messageUrl": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng"
}
}
authlist = auth("你的簽名")
url = "https://oapi.dingtalk.com/robot/send?access_token=xxx"+"×tamp="+str(authlist[0])+"&sign="+authlist[1]
print(send_msg(url,data))
消息類(lèi)型
text類(lèi)型
{
"msgtype": "text",
"text": {
"content": "我就是我, 是不一樣的煙火@156xxxx8827"
},
"at": {
"atMobiles": [
"156xxxx8827",
"189xxxx8325"
],
"isAtAll": false
}
}

效果圖如下

link類(lèi)型
{
"msgtype": "link",
"link": {
"text": "這個(gè)即將發(fā)布的新版本,創(chuàng)始人xx稱(chēng)它為“紅樹(shù)林”。
而在此之前,每當(dāng)面臨重大升級(jí),產(chǎn)品經(jīng)理們都會(huì)取一個(gè)應(yīng)景的代號(hào),這一次,為什么是“紅樹(shù)林”?",
"title": "時(shí)代的火車(chē)向前開(kāi)",
"picUrl": "",
"messageUrl": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng
}
}

效果圖如下

markdown類(lèi)型
{
"msgtype": "markdown",
"markdown": {
"title":"杭州天氣",
"text": "#### 杭州天氣 @156xxxx8827\n" +
"> 9度,西北風(fēng)1級(jí),空氣良89,相對(duì)溫度73%\n\n" +
"> \n" +
"> ###### 10點(diǎn)20分發(fā)布 [天氣](http://www.thinkpage.cn/) \n"
},
"at": {
"atMobiles": [
"156xxxx8827",
"189xxxx8325"
],
"isAtAll": false
}
}

效果圖如下

整體跳轉(zhuǎn)ActionCard類(lèi)型
{
"actionCard": {
"title": "喬布斯 20 年前想打造一間蘋(píng)果咖啡廳,而它正是 Apple Store 的前身",
"text": "
### 喬布斯 20 年前想打造的蘋(píng)果咖啡廳
Apple Store 的設(shè)計(jì)正從原來(lái)滿(mǎn)滿(mǎn)的科技感走向生活化,而其生活化的走向其實(shí)可以追溯到 20 年前蘋(píng)果一個(gè)建立咖啡館的計(jì)劃",
"hideAvatar": "0",
"btnOrientation": "0",
"singleTitle" : "閱讀全文",
"singleURL" : "https://www.dingtalk.com/"
},
"msgtype": "actionCard"
}

效果圖如下

獨(dú)立跳轉(zhuǎn)ActionCard類(lèi)型

{
"actionCard": {
"title": "喬布斯 20 年前想打造一間蘋(píng)果咖啡廳,而它正是 Apple Store 的前身",
"text": "
### 喬布斯 20 年前想打造的蘋(píng)果咖啡廳
Apple Store 的設(shè)計(jì)正從原來(lái)滿(mǎn)滿(mǎn)的科技感走向生活化,而其生活化的走向其實(shí)可以追溯到 20 年前蘋(píng)果一個(gè)建立咖啡館的計(jì)劃",
"hideAvatar": "0",
"btnOrientation": "0",
"btns": [
{
"title": "內(nèi)容不錯(cuò)",
"actionURL": "https://www.dingtalk.com/"
},
{
"title": "不感興趣",
"actionURL": "https://www.dingtalk.com/"
}
]
},
"msgtype": "actionCard"
}
效果圖如下

FeedCard類(lèi)型
{
"feedCard": {
"links": [
{
"title": "時(shí)代的火車(chē)向前開(kāi)",
"messageURL": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI",
"picURL": "https://www.dingtalk.com/"
},
{
"title": "時(shí)代的火車(chē)向前開(kāi)2",
"messageURL": "https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI",
"picURL": "https://www.dingtalk.com/"
}
]
},
"msgtype": "feedCard"
}

效果圖如下

總結(jié)
以上所述是小編給大家介紹的Python實(shí)現(xiàn)釘釘訂閱消息功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Python Charles抓包配置實(shí)現(xiàn)流程圖解
這篇文章主要介紹了Python Charles抓包實(shí)現(xiàn)流程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Python面向?qū)ο蠖鄳B(tài)實(shí)現(xiàn)原理及代碼實(shí)例
這篇文章主要介紹了Python面向?qū)ο蠖鄳B(tài)實(shí)現(xiàn)原理及代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
flask路由分模塊管理及自定義restful響應(yīng)格式詳解
這篇文章主要為大家介紹了flask路由分模塊管理及自定義restful響應(yīng)格式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
python中用logging實(shí)現(xiàn)日志滾動(dòng)和過(guò)期日志刪除功能
這篇文章主要介紹了python中用logging實(shí)現(xiàn)日志滾動(dòng)和過(guò)期日志刪除功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
用pickle存儲(chǔ)Python的原生對(duì)象方法
下面小編就為大家?guī)?lái)一篇用pickle存儲(chǔ)Python的原生對(duì)象方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04

