代碼實現請見文末
前段時間利用py爬蟲抓取一些網頁信息,然后通過wxpy發送到微信群,以用作日常告警,感覺還是很方便。
但好景不長,我的小號微信被騰訊封了(很常見咯), 顯示無法登錄網頁版微信,至今已經有半個多月了。
怎么辦,已經體驗過微信告警的方便后,無法回歸原始人工查看了。思來想去,決定探(bai)索(du)Python調用微信企業號試試看;
一、申請企業微信
具體見企業微信官網:https://work.weixin.qq.com/wework_admin/register_wx?from=myhome_mp_home
反正比較麻煩,我是怎么申請的?我當了一次伸手黨,前期有同事申請過微信公眾號,后來直接升級為企業微信。經過深層次的溝通,同事給我加了個管理員權限,哈哈!
開發之前還是要認真研究一下企業微信的API文檔
二、創建應用
1、管理員進入企業微信“管理后台” — “企業應用”創建應用
2、設置應用logo、名稱、描述、可見范圍等。
開發階段“應用可見范圍”可先選擇小范圍可見,待開發完成后再開放給企業員工。
三、獲取access_token
開發者可以使用access_token來訪問企業微信的接口。需要注意的是,所有的接口需使用Https協議、Json數據格式、UTF8編碼。
請求方式:GET(HTTPS)
請求URL:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect
權限說明:
每個應用有獨立的secret,所以每個應用的access_token應該分開來獲取
術語介紹
- corpid:每個企業都擁有唯一的corpid,獲取此信息可在管理后台“我的企業”-“企業信息”下查看(需要有管理員權限)
- secret:secret是企業應用里面用於保障數據安全的“鑰匙”,每一個應用都有一個獨立的訪問密鑰,為了保證數據的安全,secret務必不能泄漏。通訊錄接口的密鑰在“管理工具”-“通訊錄同步”里面查看,企業自定義的應用的密鑰可以在企業應用的詳情里面手動生成
- access_token:access_token是企業后台去企業微信的后台獲取信息時的重要票據,由corpid和secret產生。所有接口在通信時都需要攜帶此信息用於驗證接口的訪問權限
corpid:
secret:
四、發送消息
應用支持推送文本、圖片、視頻、文件、圖文等類型。
請求方式:POST(HTTPS)
請求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
五、代碼實現
import urllib.request import json #-------------------------------- # 獲取企業微信token #-------------------------------- def get_token(url, corpid, corpsecret): token_url = '%s/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (url, corpid, corpsecret) token = json.loads(urllib.request.urlopen(token_url).read().decode())['access_token'] return token #-------------------------------- # 構建告警信息json #-------------------------------- def messages(msg): values = { "touser": '@all', "msgtype": 'text', "agentid": 1000002, #偷懶沒有使用變量了,注意修改為對應應用的agentid "text": {'content': msg}, "safe": 0 } msges=(bytes(json.dumps(values), 'utf-8')) return msges #-------------------------------- # 發送告警信息 #-------------------------------- def send_message(url,token, data): send_url = '%s/cgi-bin/message/send?access_token=%s' % (url,token) respone=urllib.request.urlopen(urllib.request.Request(url=send_url, data=data)).read() x = json.loads(respone.decode())['errcode'] # print(x) if x == 0: print ('Succesfully') else: print ('Failed') ##############函數結束######################## corpid = 'wx***********************' corpsecret = 'Iwy******************************' url = 'https://qyapi.weixin.qq.com' msg='test,Python調用企業微信測試' #函數調用 test_token=get_token(url, corpid, corpsecret) msg_data= messages(msg) send_message(url,test_token, msg_data)