最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python實(shí)現(xiàn)開發(fā)釘釘通知機(jī)器人

 更新時間:2023年02月07日 08:45:42   作者:Ckend  
在項(xiàng)目協(xié)同工作或自動化流程完成時,我們需要用一定的手段通知自己或他人。Telegram 非常好用,幾個步驟就能創(chuàng)建一個機(jī)器人,可惜在國內(nèi)無法使用。所以本文就來開發(fā)一個釘釘通知機(jī)器人吧

在項(xiàng)目協(xié)同工作或自動化流程完成時,我們需要用一定的手段通知自己或他人。比如說,當(dāng)服務(wù)器CPU使用率達(dá)到90%,發(fā)送告警信息給多名項(xiàng)目成員、或是股票自動化交易成交時發(fā)送通知給自己等應(yīng)用場景。通知的手段有很多,使用郵件、Telegram都可以實(shí)現(xiàn),但是它們都有各自的缺點(diǎn)。

郵件通知的方式存在滯后性,而且容易覆蓋掉一些重要的郵件,整理起來非常繁瑣。Telegram 非常好用,幾個步驟就能創(chuàng)建一個機(jī)器人,可惜在國內(nèi)無法使用,需要添加代理才能使用。

不過,前幾天發(fā)現(xiàn)釘釘?shù)臋C(jī)器人其實(shí)和Telegram的相差無幾,用起來也相當(dāng)舒服,因此今天給大家?guī)硪粋€開發(fā)釘釘通知機(jī)器人的教程,非常簡單,門檻極低,任何人都能用,每個人都能學(xué)會。

1.準(zhǔn)備

開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。

(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda,它內(nèi)置了Python和pip.

(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn)

Python 環(huán)境準(zhǔn)備完成后,我們就可以來創(chuàng)建一個釘釘機(jī)器人了。

1.1 打開釘釘軟件,選擇 "", 再點(diǎn)擊右上角+號,選擇建場景群

1.2 這里可以選擇任意一種群,我選擇了培訓(xùn)群

1.3 群新建好后,點(diǎn)擊右上角的齒輪—群設(shè)置,點(diǎn)擊智能群助手。這里你也可以修改群的名字,點(diǎn)擊名字右邊的鉛筆就能修改群名。

1.4 點(diǎn)擊添加機(jī)器人

1.5 點(diǎn)擊右上角的+號

1.7 然后輸入機(jī)器人名字,安全設(shè)置選擇加簽,這一字符串你需要拷貝下來,發(fā)通知的時候就是我們的 SECRET KEY.

1.8 點(diǎn)擊完成后,會彈出創(chuàng)建成功的框框,請把這串webhook的鏈接拷貝下來,并將access_token參數(shù)復(fù)制下來,這一串 access_token 我們發(fā)送消息的時候也需要用到。

機(jī)器人創(chuàng)建完畢后,會在群聊中出現(xiàn),然后我們就可以開始編寫通知代碼了。

2.Python 釘釘機(jī)器人通知代碼

我們通過往 https://oapi.dingtalk.com/robot/send 地址發(fā)送 POST 請求的方式就能夠利用釘釘自定義機(jī)器人發(fā)送消息。釘釘機(jī)器人支持兩種消息內(nèi)容:

  • 1. 純文本信息
  • 2. Markdown信息

簡單來講,如果你的消息只有文本內(nèi)容,就用第一種。如果你的消息內(nèi)含圖片和自定義格式,就用第二種。

純文本消息,你的內(nèi)容需要包含以下3種參數(shù),并帶2個內(nèi)容體:

參數(shù)列表:

  • 1. access_token: 創(chuàng)建成功后返回的webhook鏈接里就有這個參數(shù)。
  • 2. sign: 就是我們選擇加簽安全設(shè)置中返回的SECRET.
  • 3. timestamp: 當(dāng)前時間戳。

內(nèi)容體包含:

  • 1. msgtype: 消息內(nèi)容 text/markdown
  • 2. text: 文本內(nèi)容

代碼如下,非常簡單:

# Python實(shí)用寶典
# 2021/11/13
import?json
import?hashlib
import?base64
import?hmac
import?os
import?time
import?requests
from?urllib.parse?import?quote_plus


class?Messenger:
????def?__init__(self, token=os.getenv("DD_ACCESS_TOKEN"), secret=os.getenv("DD_SECRET")):
????????self.timestamp = str(round(time.time() *?1000))
????????self.URL =?"https://oapi.dingtalk.com/robot/send"
????????self.headers = {'Content-Type':?'application/json'}
????????secret = secret
????????secret_enc = secret.encode('utf-8')
????????string_to_sign =?'{}\n{}'.format(self.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()
????????self.sign = quote_plus(base64.b64encode(hmac_code))
????????self.params = {'access_token': token,?"sign": self.sign}

????def?send_text(self, content):
????????"""
????????發(fā)送文本
????????@param content: str, 文本內(nèi)容
????????"""
????????data = {"msgtype":?"text",?"text": {"content": content}}
????????self.params["timestamp"] = self.timestamp
????????return?requests.post(
????????????url=self.URL,
????????????data=json.dumps(data),
????????????params=self.params,
????????????headers=self.headers
????????)

使用的時候,請注意token和secret你既可以通過環(huán)境變量配置,也可以直接傳入給Messenger:

if?__name__ ==?"__main__":
????m = Messenger(
????????token="你的token",
????????secret="你的secret"
????)
????m.send_text("測試一下,今天天氣不錯")

然后運(yùn)行這個腳本,就能獲取消息通知:

如果你只需要文本通知,那么到這里就已經(jīng)實(shí)現(xiàn)了,如果你還需要發(fā)送圖文消息或更多自定義內(nèi)容體,請看下面的內(nèi)容。

3.釘釘機(jī)器人支持Markdown

為了支持發(fā)送圖片消息和自定義的文字格式,我們需要配置更多的參數(shù):

def?send_md(self, title, content):
????"""
????發(fā)送Markdown文本
????@param title: str, 標(biāo)題
????@param content: str, 文本內(nèi)容
????"""
????data = {"msgtype":?"markdown",?"markdown": {"title": title,?"text": content}}
????self.params["timestamp"] = self.timestamp
????return?requests.post(
????????url=self.URL,
????????data=json.dumps(data),
????????params=self.params,
????????headers=self.headers
????)

msgtype參數(shù)改為markdown,并配置markdown的參數(shù),包括:

  • 1. title: 標(biāo)題
  • 2. content: markdown內(nèi)容

這樣,就能支持發(fā)送markdown消息了,我們試一下:

# Python實(shí)用寶典
# 2021/11/13
import?json
import?hashlib
import?base64
import?hmac
import?os
import?time
import?requests
from?urllib.parse?import?quote_plus


class?Messenger:
????def?__init__(self, token=os.getenv("DD_ACCESS_TOKEN"), secret=os.getenv("DD_SECRET")):
????????self.timestamp = str(round(time.time() *?1000))
????????self.URL =?"https://oapi.dingtalk.com/robot/send"
????????self.headers = {'Content-Type':?'application/json'}
????????secret = secret
????????secret_enc = secret.encode('utf-8')
????????string_to_sign =?'{}\n{}'.format(self.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()
????????self.sign = quote_plus(base64.b64encode(hmac_code))
????????self.params = {'access_token': token,?"sign": self.sign}

????def?send_text(self, content):
????????"""
????????發(fā)送文本
????????@param content: str, 文本內(nèi)容
????????"""
????????data = {"msgtype":?"text",?"text": {"content": content}}
????????self.params["timestamp"] = self.timestamp
????????return?requests.post(
????????????url=self.URL,
????????????data=json.dumps(data),
????????????params=self.params,
????????????headers=self.headers
????????)

def?send_md(self, title, content):
????"""
????發(fā)送Markdown文本
????@param title: str, 標(biāo)題
????@param content: str, 文本內(nèi)容
????"""
????data = {"msgtype":?"markdown",?"markdown": {"title": title,?"text": content}}
????self.params["timestamp"] = self.timestamp
????return?requests.post(
????????url=self.URL,
????????data=json.dumps(data),
????????params=self.params,
????????headers=self.headers
????)


if?__name__ ==?"__main__":
????markdown_text =?"\n".join(open("md_test.md", encoding="utf-8").readlines())
????m = Messenger(
????????token="你的token",
????????secret="你的secret"
????)
????m.send_text("測試一下,今天天氣不錯")
????m.send_md("測試Markdown", markdown_text)

效果如下:

效果還是不錯的,速度也非???,一運(yùn)行腳本,馬上就能收到通知消息。大家可以在Python實(shí)用寶典公眾號后臺回復(fù) 釘釘 下載本文源代碼,也可以在下面的github鏈接中找到源代碼:https://github.com/Ckend/dd_notice

到此這篇關(guān)于基于Python實(shí)現(xiàn)開發(fā)釘釘通知機(jī)器人的文章就介紹到這了,更多相關(guān)Python釘釘通知機(jī)器人內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

惠水县| 绍兴市| 和硕县| 兰州市| 德化县| SHOW| 南丹县| 东乌珠穆沁旗| 自治县| 盘锦市| 西和县| 如皋市| 淅川县| 平乐县| 南陵县| 兴安盟| 三明市| 唐海县| 巴彦淖尔市| 琼中| 泸水县| 界首市| 沈丘县| 杨浦区| 上杭县| 鄂尔多斯市| 渭源县| 灵宝市| 孝义市| 靖边县| 封开县| 来安县| 加查县| 新建县| 甘泉县| 汪清县| 许昌县| 建平县| 资源县| 毕节市| 本溪|