常見的報警方式有:郵件,電話,簡訊,微信。
簡訊和電話,通常是收費的(若你有不收費的,可以評論分享一下),而郵件又不是那麼及時,因此最後我選擇微信通知。
這裡說的微信,是企業微信,而我之前註冊過個體戶的執照,因此可以很輕鬆就可以註冊自己的企業微信。
私信小編01即可獲取大量python學習資源
# 1. 新建應用
登陸網頁版企業微信
(https://work.weixin.qq.com/),
點選 應用管理 -> 應用 -> 建立應用
上傳應用的 logo,輸入應用名稱,再選擇可見範圍,成功建立一個告警應用
# 2. 獲取Secret
使用 Python 傳送告警請求,其實就只使用到兩個介面
- 獲取 Token :
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={secret}
- 傳送請求 :
https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}
可以看到,最重要的是 corpid 和 secret:
- corpid:唯一標識你的企業
- secret:應用級的金鑰,有了它程式才知道你要傳送該企業的哪個應用
corpid 可以透過 我的企業 -> 企業資訊 獲取
而 secret 獲取相對麻煩一點,點選前面的建立應用,點選 檢視 secret
然後再點擊發送就會發送到你的企業微信上
最後將 corpid 和 secret 填入下面的常量中。
import json
import datetime
import requests
CORP_ID = ""
SECRET = ""
class WeChatPub:
s = requests.session()
def __init__(self):
self.token = self.get_token()
def get_token(self):
url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={CORP_ID}&corpsecret={SECRET}"
rep = self.s.get(url)
if rep.status_code != 200:
print("request failed.")
return
return json.loads(rep.content)['access_token']
def send_msg(self, content):
url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + self.token
header = {
"Content-Type": "application/json"
}
form_data = {
"touser": "@all",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "textcard",
"agentid": 1000002,
"textcard": {
"title": "服務異常告警",
"description": content,
"url": "URL",
"btntxt": "更多"
},
"safe": 0
}
rep = self.s.post(url, data=json.dumps(form_data).encode('utf-8'), headers=header)
if rep.status_code != 200:
print("request failed.")
return
return json.loads(rep.content)
然後就可以透過 send_msg 函式傳送訊息了。
wechat = WeChatPub()
now = datetime.datetime.now()
timenow = now.strftime('%Y年%m月%d日 %H:%M:%S')
wechat.send_msg(f"<div class=\"gray\">{timenow}</div> <div class=\"normal\">阿里雲 cookie 已失效</div><div class=\"highlight\">請儘快更換新的 cookie</div>")
只要你的企業微信沒有關閉通知的許可權,那你的手機立馬就會彈出這個告警資訊。
簡單幾步就對接了企業微信,實現了手機的實時告警功能,推薦有企業微信的同學使用。
當然一定有更多,更好用的實現方法,我只是我選擇了其中一種。