如何給coding的項目綁定釘釘機器人

寫在前面的話:
之前想弄這個功能來着,但是不巧,釘釘的Webhook正好在維護,就擱置了。於是每次合併代碼之類的,我都會對着老大喊一嗓子,同意一下唄。今天喊了一嗓子後,老大說:你快弄下那個機器人提醒吧。哈哈,可能受不了我突然的一嗓子~弄好之後趁着熱乎勁,順便記錄一下過程,方便以後再用,老話說–好記性不如爛筆頭。

釘釘上:

首先你得有個羣,並且是羣管理員,然後點擊 羣助手>添加機器人
在這裏插入圖片描述
選擇自定義>添加
在這裏插入圖片描述
輸入機器人名字,設置頭像,完成安全設置(下面介紹),勾選,點擊完成。

華麗麗的分割線開始:以下內容粘貼自釘釘開發文檔


安全設置

安全設置目前有3種方式:
(1)方式一,自定義關鍵詞

最多可以設置10個關鍵詞,消息中至少包含其中1個關鍵詞纔可以發送成功。

例如:添加了一個自定義關鍵詞:監控報警

則這個機器人所發送的消息,必須包含 監控報警 這個詞,才能發送成功。

(2)方式二,加簽

第一步,把timestamp+"\n"+密鑰當做簽名字符串,使用HmacSHA256算法計算簽名,然後進行Base64 encode,最後再把簽名參數再進行urlEncode,得到最終的簽名(需要使用UTF-8字符集)。
在這裏插入圖片描述
簽名計算代碼示例(Java)

Long timestamp = System.currentTimeMillis();
String stringToSign = timestamp + "\n" + secret;
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
return URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");

簽名計算代碼示例(Python)

#python 2.7
import time
import hmac
import hashlib
import base64
import urllib

timestamp = long(round(time.time() * 1000))
secret = 'this is secret'
secret_enc = bytes(secret).encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
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()
sign = urllib.quote_plus(base64.b64encode(hmac_code))
print(timestamp)
print(sign)

第二步,把 timestamp和第一步得到的簽名值拼接到URL中。
在這裏插入圖片描述

https://oapi.dingtalk.com/robot/send?access_token=XXXXXX&timestamp=XXX&sign=XXX

(3)方式三,IP地址(段)

設定後,只有來自IP地址範圍內的請求才會被正常處理。支持兩種設置方式:IP、IP段,暫不支持IPv6地址白名單,格式如下:
在這裏插入圖片描述
注意:安全設置的上述三種方式,需要至少設置其中一種,以進行安全保護。
校驗不通過的消息將會發送失敗,錯誤如下:

// 消息內容中不包含任何關鍵詞
{
  "errcode":310000,
  "errmsg":"keywords not in content"
}

// timestamp 無效
{
  "errcode":310000,
  "errmsg":"invalid timestamp"
}

// 簽名不匹配
{
  "errcode":310000,
  "errmsg":"sign not match"
}

// IP地址不在白名單
{
  "errcode":310000,
  "errmsg":"ip X.X.X.X not in whitelist"
}

華麗麗的分割線結束。
多說句廢話,我選擇了最簡單的第一種,第二種我沒太看懂(小菜雞),第三種有點麻煩的樣子。

點擊完成後頁面如下:
在這裏插入圖片描述
到現在爲止機器人就設置好了,接下來就是在codding中使用了。
項目中:
首先你有個項目(廢話真多)並且得是項目管理員,找到項目設置>開發者選項>WebHook
在這裏插入圖片描述
點擊 新建WebHook
在這裏插入圖片描述
輸入相關內容,url就是剛纔生成的WebHook地址,監聽事件根據自己需要勾選,最後點擊 新建WebHook 就OK了。
在這裏插入圖片描述
接下來就可以看到自己添加的記錄了,並且狀態是成功發送(綠色的√)。此時,釘釘羣將會收到一條測試推送。
在這裏插入圖片描述
下面是我測試機器人的消息:
在這裏插入圖片描述
應該似乎沒啥問題了吧。
提醒一下下:如果在釘釘羣重置了WebHook地址,一定要去項目中同步更新一下哦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章