<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1.既然是使用釘釘訊息提醒,那麼第需要有釘釘。
2.第二步自定義機器人是群機器人,所以需要有個群。
3.新增機器人,點選頭像>機器人管理>自定義機器人
4.給機器人取個名字>選擇新增到哪個群組>選擇適合自己的安全設定>完成
1.有三種安全設定方式:自定義關鍵詞、加簽、IP地址。
2.自定義關鍵詞:簡單來說就是你傳送的內容必須包含這個關鍵詞,才能傳送成功。
3.加簽:就是生成你特定的簽名,在程式中,進行加密生成引數,請求時,攜帶此引數,才能傳送成功。
4.IP地址:就是在設定的指定IP地址範圍內進行請求,才能傳送成功。
5.選擇適合自己的安全設定方式,這裡選擇的是加簽,即設定好後,程式碼在使用、複用、遷移等方面會稍加靈活一點,如果在公司,按實際需求選擇就行。把這個簽名記錄下來,待會需要它來加密生成引數。
6.點選完成之後,就可以看到自己的Webhook,記下來,待會需要用到。
1.首先,在__init__方法中,設定好機器人的資訊。
def __init__(self): # 安全設定使用加簽方式 timestamp = str(round(time.time() * 1000)) secret = 'SEC7******fe0a' # 剛才記錄下來的簽名 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_plus(base64.b64encode(hmac_code)) # 以上就是加簽的安全設定,其它安全設定,無需設定以上資訊 # webhook地址 webhook = 'https://oapi.dingtalk.com/robot/send?******' # 剛才記錄的webhook self.webhook = "{}×tamp={}&sign={}".format(webhook, timestamp, sign) # 如果你的不是加簽的安全方式,即可省去 ×tamp={}&sign={} 部分引數 # 設定請求headers self.headers = { "Content-Type": "application/json", "Charset": "UTF-8" # 發起POST請求時,必須將字元集編碼設定成UTF-8。 }
2.其次,傳送請求
def send_req(self, message): """ 傳送請求 :param message: 你的訊息體 :return: """ # 將請求資料進行json資料封裝 form_data = json.dumps(message) # 發起請求 res_info = requests.post(url=self.webhook, headers=self.headers, data=form_data) # 列印返回的結果 print('郵件傳送結果:', res_info.json()) print('通知成功!' if (res_info.json())['errmsg'] == 'ok' else '通知失敗!')
3.再次,構造訊息體,釘釘給出6種訊息型別體
3.1.第一種、text型文字資料
def send_text_msg(self, content, at_mobiles=None, is_at_all=False): """ 傳送text型文字資料 :param content: 訊息內容 :param at_mobiles: 傳入列表型別資料,@出現在列表中的電話聯絡人,如果群裡沒有該聯絡人,則不會@(可選引數) :param is_at_all: 是否@所有人,預設不艾特(可選引數) :return: """ message = { "msgtype": "text", # 訊息型別 "text": { "content": content }, "at": { "atMobiles": at_mobiles, "isAtAll": is_at_all } } self.send_req(message) # 傳送訊息
a.呼叫
DingTalkWarn().send_text_msg('測試訊息傳送!')
b.效果圖
3.2.第二種、link型文字資料
def send_link_msg(self, text, title, message_url, pic_url=None): """ 傳送link型文字資料 :param text: 訊息內容 :param title: 訊息標題 :param message_url: 點選訊息跳轉的URL :param pic_url: 圖片URL(可選引數) :return: """ message = { "msgtype": "link", "link": { "text": text, # 訊息內容,如果太長只會部分展示 "title": title, # 訊息標題 "picUrl": pic_url, # 圖片URL "messageUrl": message_url # 點選訊息跳轉的URL } } self.send_req(message) # 傳送訊息
a.呼叫
DingTalkWarn().send_link_msg( text='愛分享,愛折騰,愛生活,樂於分享自己在學習過程中的一些心得、體會。', title='a'ゞ開心果的部落格', message_url='https://blog.csdn.net/qq_45352972', pic_url='https://cdn.jsdelivr.net/gh/King-ing/CDN/assets/background.png' )
b.效果圖
3.3.第三種、markdown型文字資料
def send_markdown_msg(self, text, title, at_mobiles=None, is_at_all=False): """ 傳送markdown型文字資料 :param text: markdown格式內容 :param title: 標題 :param at_mobiles: 傳入列表型別資料,@出現在列表中的電話聯絡人,如果群裡沒有該聯絡人,則不會@(可選引數) :param is_at_all: 是否@所有人,預設不艾特(可選引數) :return: """ message = { "msgtype": "markdown", "markdown": { "title": title, "text": text }, "at": { "atMobiles": at_mobiles, "isAtAll": is_at_all } } self.send_req(message) # 傳送訊息
a.呼叫
DingTalkWarn().send_markdown_msg( text="## 這是一個二級標題n ![news](https://cdn.jsdelivr.net/gh/King-ing/CDN/assets/background.png)n###### {}釋出".format(time.strftime("%Y-%m-%d %H:%M:%S")), title='markdown格式資料', )
b.效果圖
3.4.第四種、整體跳轉ActionCard型別的資料
def send_all_action_card_msg(self, text, title, single_url, single_title='閱讀全文'): """ 傳送整體跳轉ActionCard型別的資料 :param text: markdown格式內容 :param title: 標題 :param single_url: 詳情url地址 :param single_title: 點選進入詳情按鈕 :return: """ message = { "actionCard": { "title": title, "text": text, "singleTitle": single_title, "singleURL": single_url }, "msgtype": "actionCard" } self.send_req(message) # 傳送訊息
a.呼叫
DingTalkWarn().send_all_action_card_msg( text='## 抓包工具-mitmproxy前奏n ![](https://img-blog.csdnimg.cn/20201211103655824.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MzUyOTcy,size_16,color_FFFFFF,t_70)n介紹:mitmproxy類似於Fiddler、Charles的功能,可以支援HTTP跟HTTPS請求,只不過它是通過控制檯的形式進行操作。mitmproxy有兩個關聯的元件,mitmdump跟mitmweb。mitmdump是mitmproxy的命令列介面;mitmweb是一個web程式,可以通...', title='抓包工具-mitmproxy前奏', single_url='https://blog.csdn.net/qq_45352972/article/details/111028741?spm=1001.2014.3001.5501' )
b.效果圖
3.5.第五種、獨立跳轉ActionCard型別的資料
def send_alone_action_card_msg(self, text, title, btn_orientation=1, btns=None): """ 傳送獨立跳轉ActionCard型別的資料 :param text: markdown格式文字資料 :param title: 標題 :param btn_orientation: 0-按鈕豎直排列;1-按鈕橫向排列 :param btns: 列表資料,裡面存字串,用來放按鈕資訊跟連結,如下 [ { "title": "內容不錯", "actionURL": "https://www.dingtalk.com/" }, { "title": "不感興趣", "actionURL": "https://www.dingtalk.com/" } ] :return: """ message = { "msgtype": "actionCard", "actionCard": { "title": title, "text": text, "hideAvatar": "0", "btnOrientation": btn_orientation, "btns": btns } } self.send_req(message) # 傳送訊息
a.呼叫
DingTalkWarn().send_alone_action_card_msg( text='### 檢視好友部落格n![](https://profile.csdnimg.cn/C/B/7/1_qq_45352972)', title='檢視好友部落格', btns=[ { "title": "不感興趣", "actionURL": "https://www.dingtalk.com/" }, { "title": "我看看", "actionURL": "https://blog.csdn.net/qq_45352972/" } ] )
b.效果圖
3.6.第六種、FeedCard型別資料
def send_feed_card_msg(self, links): """ 傳送FeedCard型別資料 :param links: 列表型別,格式如下 [ { "title": "時代的火車向前開1", "messageURL": "https://www.dingtalk.com/", "picURL": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png" }, { "title": "時代的火車向前開2", "messageURL": "https://www.dingtalk.com/", "picURL": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png" } ] :return: """ message = { "msgtype": "feedCard", "feedCard": { "links": links } } self.send_req(message) # 傳送訊息
a.呼叫
DingTalkWarn().send_feed_card_msg( links=[ { "title": "爬蟲之解決需要登入的網站", "messageURL": "https://blog.csdn.net/qq_45352972/article/details/113831698?spm=1001.2014.3001.5501", "picURL": "https://img-blog.csdnimg.cn/20210217102838577.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MzUyOTcy,size_16,color_FFFFFF,t_70#pic_center" }, { "title": "控制檯簡單實現列印顯示進度條", "messageURL": "https://blog.csdn.net/qq_45352972/article/details/112191329?spm=1001.2014.3001.5501", "picURL": "https://img-blog.csdnimg.cn/20210104184651355.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MzUyOTcy,size_16,color_FFFFFF,t_70" }, { "title": "Email郵件提醒", "messageURL": "https://blog.csdn.net/qq_45352972/article/details/109280576?spm=1001.2014.3001.5501", "picURL": "https://img-blog.csdnimg.cn/2020102522530334.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MzUyOTcy,size_16,color_FFFFFF,t_70#pic_center" } ] )
b.效果圖
import base64 import hashlib import hmac import time import urllib.parse import requests import json class DingTalkWarn: """釘釘訊息通知""" def __init__(self): # 安全設定使用加簽方式 timestamp = str(round(time.time() * 1000)) # 剛才記錄下來的簽名 secret = 'SEC24e640447734a80b9d430d678765a103652b33f334a69974cfda88415e601d22' 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_plus(base64.b64encode(hmac_code)) # 以上就是加簽的安全設定,其它安全設定,無需設定以上資訊 # webhook地址(剛才記錄的webhook) webhook = 'https://oapi.dingtalk.com/robot/send?access_token=5f56131ba70c78f42a10c7e9531c8da55def990313a4a74cfc87bf82c4bb8b7b' # 如果你的不是加簽的安全方式,即可省去 ×tamp={}&sign={} 部分引數 self.webhook = "{}×tamp={}&sign={}".format(webhook, timestamp, sign) # 設定請求headers self.headers = { "Content-Type": "application/json", "Charset": "UTF-8" # 發起POST請求時,必須將字元集編碼設定成UTF-8。 } def send_text_msg(self, content, at_mobiles=None, is_at_all=False): """ 傳送text型文字資料 :param content: 訊息內容 :param at_mobiles: 傳入列表型別資料,@出現在列表中的電話聯絡人,如果群裡沒有該聯絡人,則不會@(可選引數) :param is_at_all: 是否@所有人,預設不艾特(可選引數) :return: """ message = { "msgtype": "text", # 訊息型別 "text": { "content": content }, "at": { "atMobiles": at_mobiles, "isAtAll": is_at_all } } self.send_req(message) # 傳送訊息 def send_link_msg(self, text, title, message_url, pic_url=None): """ 傳送link型文字資料 :param text: 訊息內容 :param title: 訊息標題 :param message_url: 點選訊息跳轉的URL :param pic_url: 圖片URL(可選引數) :return: """ message = { "msgtype": "link", "link": { "text": text, # 訊息內容,如果太長只會部分展示 "title": title, # 訊息標題 "picUrl": pic_url, # 圖片URL "messageUrl": message_url # 點選訊息跳轉的URL } } self.send_req(message) # 傳送訊息 def send_markdown_msg(self, text, title, at_mobiles=None, is_at_all=False): """ 傳送markdown型文字資料 :param text: markdown格式內容 :param title: 標題 :param at_mobiles: 傳入列表型別資料,@出現在列表中的電話聯絡人,如果群裡沒有該聯絡人,則不會@(可選引數) :param is_at_all: 是否@所有人,預設不艾特(可選引數) :return: """ message = { "msgtype": "markdown", "markdown": { "title": title, "text": text }, "at": { "atMobiles": at_mobiles, "isAtAll": is_at_all } } self.send_req(message) # 傳送訊息 def send_all_action_card_msg(self, text, title, single_url, single_title=u'閱讀全文'): """ 傳送整體跳轉ActionCard型別的資料 :param text: markdown格式內容 :param title: 標題 :param single_url: 詳情url地址 :param single_title: 點選進入詳情按鈕 :return: """ message = { "actionCard": { "title": title, "text": text, "singleTitle": single_title, "singleURL": single_url }, "msgtype": "actionCard" } self.send_req(message) # 傳送訊息 def send_alone_action_card_msg(self, text, title, btn_orientation=1, btns=None): """ 傳送獨立跳轉ActionCard型別的資料 :param text: markdown格式文字資料 :param title: 標題 :param btn_orientation: 0-按鈕豎直排列;1-按鈕橫向排列 :param btns: 列表資料,裡面存字串,用來放按鈕資訊跟連結,如下 [ { "title": "內容不錯", "actionURL": "https://www.dingtalk.com/" }, { "title": "不感興趣", "actionURL": "https://www.dingtalk.com/" } ] :return: """ message = { "msgtype": "actionCard", "actionCard": { "title": title, "text": text, "hideAvatar": "0", "btnOrientation": btn_orientation, "btns": btns } } self.send_req(message) # 傳送訊息 def send_feed_card_msg(self, links): """ 傳送FeedCard型別資料 :param links: 列表型別,格式如下 [ { "title": "時代的火車向前開1", "messageURL": "https://www.dingtalk.com/", "picURL": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png" }, { "title": "時代的火車向前開2", "messageURL": "https://www.dingtalk.com/", "picURL": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png" } ] :return: """ message = { "msgtype": "feedCard", "feedCard": { "links": links } } self.send_req(message) # 傳送訊息 def send_req(self, message): """ 傳送請求 :param message: 你的訊息體 :return: """ # 將請求資料進行json資料封裝 form_data = json.dumps(message) # 發起請求 res_info = requests.post(url=self.webhook, headers=self.headers, data=form_data) # 列印返回的結果 print(u'郵件傳送結果:', res_info.json()) print(u'通知成功!' if (res_info.json())['errmsg'] == 'ok' else u'通知失敗!') if __name__ == '__main__': """測試傳送訊息""" DingTalkWarn().send_text_msg(u'測試訊息傳送!') """ DingTalkWarn().send_link_msg( text='愛分享,愛折騰,愛生活,樂於分享自己在學習過程中的一些心得、體會。', title='a'ゞ開心果的部落格', message_url='https://blog.csdn.net/qq_45352972', pic_url='https://cdn.jsdelivr.net/gh/King-ing/CDN/assets/background.png' ) DingTalkWarn().send_markdown_msg( text="## 這是一個二級標題n ![news](https://cdn.jsdelivr.net/gh/King-ing/CDN/assets/background.png)n###### {}釋出".format(time.strftime("%Y-%m-%d %H:%M:%S")), title='markdown格式資料', ) DingTalkWarn().send_all_action_card_msg( text='## 抓包工具-mitmproxy前奏n ![](https://img-blog.csdnimg.cn/20201211103655824.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MzUyOTcy,size_16,color_FFFFFF,t_70)n介紹:mitmproxy類似於Fiddler、Charles的功能,可以支援HTTP跟HTTPS請求,只不過它是通過控制檯的形式進行操作。mitmproxy有兩個關聯的元件,mitmdump跟mitmweb。mitmdump是mitmproxy的命令列介面;mitmweb是一個web程式,可以通...', title='抓包工具-mitmproxy前奏', single_url='https://blog.csdn.net/qq_45352972/article/details/111028741?spm=1001.2014.3001.5501' ) DingTalkWarn().send_alone_action_card_msg( text='### 檢視好友部落格n![](https://profile.csdnimg.cn/C/B/7/1_qq_45352972)', title='檢視好友部落格', btns=[ {"title": "不感興趣", "actionURL": "https://www.dingtalk.com/" }, { "title": "我看看", "actionURL": "https://blog.csdn.net/qq_45352972/" } ] ) DingTalkWarn().send_feed_card_msg( links=[ { "title": "爬蟲之解決需要登入的網站", "messageURL": "https://blog.csdn.net/qq_45352972/article/details/113831698?spm=1001.2014.3001.5501", "picURL": "https://img-blog.csdnimg.cn/20210217102838577.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MzUyOTcy,size_16,color_FFFFFF,t_70#pic_center" }, { "title": "控制檯簡單實現列印顯示進度條", "messageURL": "https://blog.csdn.net/qq_45352972/article/details/112191329?spm=1001.2014.3001.5501", "picURL": "https://img-blog.csdnimg.cn/20210104184651355.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MzUyOTcy,size_16,color_FFFFFF,t_70" }, { "title": "Email郵件提醒", "messageURL": "https://blog.csdn.net/qq_45352972/article/details/109280576?spm=1001.2014.3001.5501", "picURL": "https://img-blog.csdnimg.cn/2020102522530334.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1MzUyOTcy,size_16,color_FFFFFF,t_70#pic_center" } ] ) """
到此這篇關於Python基於釘釘監控傳送訊息提醒的實現的文章就介紹到這了,更多相關Python 釘釘監控傳送訊息提醒內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45