用Python開發釘釘群機器人,自動辦公神器


最近疫情比較嚴重,很多公司依靠阿里旗下的辦公軟件釘釘來進行遠程辦公,當然了,釘釘這個產品真的是讓人一言難盡,要多難用有多難用,真的讓人覺得阿里的pm都是腦殘才會設計出這種腦殘產品,不過吐槽歸吐槽,該用還得用,雖然釘釘別的功能很雞肋,但是機器人這個功能還是讓人眼前一亮,屬於比較極客的功能,它可以將第三方服務的信息聚合到釘釘群中,實現信息的自動化同步,

用Python開發釘釘群機器人,自動辦公神器

注意:很多人學Python過程中會遇到各種煩惱問題,沒有人解答容易放棄。為此我建了個python學習資源群裡面有最新學習資料,如果你想學python,可以關注我,後臺私信我 ‘py’ 自動獲取最新python教程資料!還有老司機解答哦!接下來正題:
例如:通過聚合Github、Gitlab等源碼管理服務,實現源碼更新同步;通過聚合Trello、JIRA等項目協調服務,實現項目信息同步;同時,支持Webhook協議的自定義接入,支持更多可能性,例如:將運維報警提醒、自動化測試的結果報告提醒、工作、生活日程安排(上班打卡、下班吃飯、健身、讀書、生日、紀念日...)等等的提醒,通過自定義機器人聚合到釘釘中。

不過關於釘釘機器人網上的一些攻略年代都比較久遠,代碼很多都基於python2,為了與時俱進,我們嘗試用python3.7來開發配置釘釘自定義機器人。

首先明確一點,釘釘自定義機器人早就不支持在手機端創建了,所以打開你的pc端或者mac端的釘釘客戶端,在需要機器人的聊天群界面,點擊智能群助手

用Python開發釘釘群機器人,自動辦公神器

隨後點擊添加機器人按鈕

用Python開發釘釘群機器人,自動辦公神器

此時能看到很多已經封裝好的第三方機器人,本次我們選擇自定義機器人

用Python開發釘釘群機器人,自動辦公神器

值得一提的是,釘釘的機器人基於webhook協議,webhook呢是一個api概念,是微服務api的使用範式之一,也被稱為反向api,即前端不主動發送請求,完全由後端推送,有機會會專獨寫一篇文章闡述webhook

在添加機器人界面裡,填寫一些機器人的信息

用Python開發釘釘群機器人,自動辦公神器

需要注意的是,在安全設置一欄裡,我們選擇加簽的方式來驗證,在此說明一下,釘釘機器人的安全策略有三種,第一種是使用關鍵字,就是說你推送的消息裡必須包含你創建機器人時定義的關鍵字,如果不包含就推送不了消息,第二種就是使用加密簽名,第三種是定義幾個ip源,非這些源的請求會被拒絕,綜合來看還是第二種又安全又靈活。

用Python開發釘釘群機器人,自動辦公神器

創建成功後,系統會分配給你一個webhook地址,這個地址需要保存一下,地址中有唯一的accesstoken

ok,那麼怎麼利用這個地址讓你的機器人推送消息呢?查看官方文檔: ding-doc.dingtalk.com/doc#/server…

發現文檔居然還是python2.0的版本,好吧,我們自己來翻譯成3.0

<code>import time
import hmac
import hashlib
import base64

import urllib.parse

timestamp = str(round(time.time() * 1000))
secret = 'SEC90485937c351bfaed41fea8eda5f1e155bbf22842d5f9d6871999e05822fd894'
secret_enc = secret.encode('utf-8')
string_to_sign = '{}n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote(base64.b64encode(hmac_code))
# print(timestamp)
# print(sign)


import requests,json #導入依賴庫
headers={'Content-Type': 'application/json'} #定義數據類型
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=f0ca7636f5812fe4815c97a72de9a7cc780c414c258b6c9a631036b1d0f49e3b×tamp='+timestamp+"&sign="+sign
#定義要發送的數據
#"at": {"atMobiles": "['"+ mobile + "']"
data = {
"msgtype": "text",
"text": {"content": '都誰沒加到群裡來?小心升不了班'},
"isAtAll": True}
res = requests.post(webhook, data=json.dumps(data), headers=headers) #發送post請求

print(res.text)
複製代碼/<code>

推送效果是下面這樣的:

用Python開發釘釘群機器人,自動辦公神器

都看懂了嗎?注意:很多人學Python過程中會遇到各種煩惱問題,沒有人解答容易放棄。為此我建了個python學習資源群裡面有最新學習資料,如果你想學python,可以關注我,後臺私信我 ‘py’ 自動獲取最新python教程資料!還有老司機解答哦!

本文的文字及圖片來源於網絡加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。


分享到:


相關文章: