如何用Python發(fā)送通知到微信?
一、通知方式有哪些?
常見(jiàn)的通知方式有:郵件,電話,短信,微信。短信和電話:通常是收費(fèi)的,較少使用;郵件:適合帶文件類型的通知,較正式,存檔使用;微信:適合告警類型通知,較方便。這里說(shuō)的微信,是企業(yè)微信。
本文目的:通過(guò)企業(yè)微信應(yīng)用給企業(yè)成員發(fā)消息。
二、如何實(shí)現(xiàn)企業(yè)微信通知?
1、新建應(yīng)用
登陸網(wǎng)頁(yè)版企業(yè)微信 (https://work.weixin.qq.com),點(diǎn)擊 應(yīng)用管理 → 應(yīng)用 → 創(chuàng)建應(yīng)用

上傳應(yīng)用的 logo,輸入應(yīng)用名稱(債券打新),再選擇可見(jiàn)范圍,成功創(chuàng)建一個(gè)告警應(yīng)用

2、獲取Secret
使用 Python 發(fā)送告警請(qǐng)求,其實(shí)就只使用到兩個(gè)接口:
獲取 Token :https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={secret}
發(fā)送請(qǐng)求:https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}
可以看到,最重要的是 corpid 和 secret:
corpid:唯一標(biāo)識(shí)你的企業(yè)
secret:應(yīng)用級(jí)的密鑰,有了它程序才知道你要發(fā)送該企業(yè)的哪個(gè)應(yīng)用
corpid 可以通過(guò) 我的企業(yè) → 企業(yè)信息 → 企業(yè)id 獲取

secret 可以通過(guò) 點(diǎn)擊 新創(chuàng)建的應(yīng)用(債券打新) → 查看 secret → 發(fā)送 來(lái)獲取


最后將 corpid 和 secret 填入下面的常量中。
3、代碼實(shí)現(xiàn)
import?json
import?time
import?requests
'''
本文件主要實(shí)現(xiàn)通過(guò)企業(yè)微信應(yīng)用給企業(yè)成員發(fā)消息
'''
CORP_ID?=?"xxxx"
SECRET?=?"xxxx"
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":?"FengXianMei",#接收人
????????????"toparty":?"1",#接收部門(mén)
????????????"totag":?"?TagID1?|?TagID2?",#通訊錄標(biāo)簽id
????????????"msgtype":?"textcard",
????????????"agentid":?1000002,#應(yīng)用ID
????????????"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)
if?__name__?==?"__main__":
????wechat?=?WeChatPub()
????timenow?=?time.strftime("%Y-%m-%d?%H:%M:%S",time.localtime())
????wechat.send_msg(f"{timenow}?注意!今日有新債,堅(jiān)持打新!")
????print('消息已發(fā)送!')
4、實(shí)現(xiàn)效果:




加入知識(shí)星球【我們談?wù)摂?shù)據(jù)科學(xué)】
500+小伙伴一起學(xué)習(xí)!
·?推薦閱讀?·
盤(pán)點(diǎn)2021最佳數(shù)據(jù)可視化作品
「Python實(shí)用秘技04」pdf文件批量添加文字水印
