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í)代的火車向前開",
"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))
消息類型
text類型
{
"msgtype": "text",
"text": {
"content": "我就是我, 是不一樣的煙火@156xxxx8827"
},
"at": {
"atMobiles": [
"156xxxx8827",
"189xxxx8325"
],
"isAtAll": false
}
}

效果圖如下

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

效果圖如下

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

效果圖如下

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

{
"actionCard": {
"title": "喬布斯 20 年前想打造一間蘋果咖啡廳,而它正是 Apple Store 的前身",
"text": "
### 喬布斯 20 年前想打造的蘋果咖啡廳
Apple Store 的設(shè)計(jì)正從原來(lái)滿滿的科技感走向生活化,而其生活化的走向其實(shí)可以追溯到 20 年前蘋果一個(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類型
{
"feedCard": {
"links": [
{
"title": "時(shí)代的火車向前開",
"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í)代的火車向前開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ì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
python實(shí)戰(zhàn)之百度智能云使人像動(dòng)漫化
這篇文章主要介紹了python實(shí)戰(zhàn)之百度智能云使人像動(dòng)漫化,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-04-04
Python畫圖小案例之多啦A夢(mèng)叮當(dāng)貓超詳細(xì)注釋
在看了很多Python教程之后,覺得是時(shí)候做點(diǎn)什么小項(xiàng)目來(lái)練練手了,于是想來(lái)想去,用python寫了一個(gè)童年記憶的卡通人物哆啦A夢(mèng),代碼注釋無(wú)比詳細(xì)清楚,快來(lái)看看吧2021-09-09
Python灰度變換中灰度切割分析實(shí)現(xiàn)
灰度變換是指根據(jù)某種目標(biāo)條件按一定變換關(guān)系逐點(diǎn)改變?cè)磮D像中每個(gè)像素灰度值的方法。目的是改善畫質(zhì),使圖像顯示效果更加清晰。圖像的灰度變換處理是圖像增強(qiáng)處理技術(shù)中的一種非常基礎(chǔ)、直接的空間域圖像處理方法,也是圖像數(shù)字化軟件和圖像顯示軟件的一個(gè)重要組成部分2022-10-10
在Python中字典按值排序的實(shí)現(xiàn)方法
這篇文章主要介紹了在Python中字典按值排序的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
淺談PyTorch的可重復(fù)性問題(如何使實(shí)驗(yàn)結(jié)果可復(fù)現(xiàn))
今天小編就為大家分享一篇淺談PyTorch的可重復(fù)性問題(如何使實(shí)驗(yàn)結(jié)果可復(fù)現(xiàn)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
python列表數(shù)據(jù)增加和刪除的具體實(shí)例
在本篇文章里小編給大家整理的是一篇關(guān)于python列表數(shù)據(jù)增加和刪除的具體實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-05-05
Python實(shí)現(xiàn)將sqlite數(shù)據(jù)庫(kù)導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法
這篇文章主要介紹了Python實(shí)現(xiàn)將sqlite數(shù)據(jù)庫(kù)導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法,結(jié)合實(shí)例形式分析了Python針對(duì)sqlite數(shù)據(jù)庫(kù)的連接、讀取及使用寫操作包(xlwt)生成Excel表的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07

