如何利用python給微信公眾號發(fā)消息實例代碼
現(xiàn)在通過發(fā)微信公眾號信息來做消息通知和告警已經(jīng)很普遍了。最常見的就是運維通過zabbix調用shell腳本給微信發(fā)消息,起到告警的作用。當要發(fā)送的信息較多,而且希望按照指定格式顯示的好看一點的時候,shell處理起來,個人感覺不太方便。于是我用python重寫了發(fā)微信的功能。
#coding:utf-8 import urllib2 import json import sys def getMsg(): #為了避免發(fā)送中文消息報錯,使用utf8方式編碼 reload(sys) sys.setdefaultencoding('utf8') #這個方法生成想要發(fā)送的消息 msg = ''' 要發(fā)送的消息1 要發(fā)送的消息2 要發(fā)送的消息3 ... ''' return msg if __name__ == '__main__': #微信公眾號上應用的CropID和Secret CropID='xxxxxxxxxxxxxxxxxx' Secret='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' #獲取access_token GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s" % (CropID,Secret) result=urllib2.urlopen(urllib2.Request(GURL)).read() dict_result = json.loads(result) Gtoken=dict_result['access_token'] #生成通過post請求發(fā)送消息的url PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Gtoken #企業(yè)號中的應用id AppID=1 #部門成員id,微信接收者 UserID=1 #部門id,定義可接收消息的成員范圍 PartyID=1 #生成post請求信息 post_data = {} msg_content = {} msg_content['content'] = getMsg() post_data['touser'] = UserID post_data['toparty'] = PartyID post_data['msgtype'] = 'text' post_data['agentid'] = AppID post_data['text'] = msg_content post_data['safe'] = '0' #由于字典格式不能被識別,需要轉換成json然后在作post請求 #注:如果要發(fā)送的消息內容有中文的話,第三個參數(shù)一定要設為False json_post_data = json.dumps(post_data,False,False) #通過urllib2.urlopen()方法發(fā)送post請求 request_post = urllib2.urlopen(PURL, json_post_data) #read()方法查看請求的返回結果 print request_post.read()
追加:企業(yè)公眾號]升級到[企業(yè)微信]之后發(fā)送消息失敗
最近,看到消息,說是微信把企業(yè)公眾號升級到企業(yè)微信。當時并沒有在意,但是后來發(fā)現(xiàn)之前用企業(yè)公眾號的接口來發(fā)通知消息的程序發(fā)不出去消息了。
于是,我又打開升級消息,仔細的讀了一下:企業(yè)號將遷移至企業(yè)微信管理后臺(work.weixin.qq.com/login)進行統(tǒng)一管理。之前企業(yè)公眾號的管理后臺地址是qy.weixin.qq.com,發(fā)不了消息難道是接口地址也變了嗎。
登到新后臺看了下,發(fā)現(xiàn)應用的Secret值變了,相比之前位數(shù)要少一些。將代碼中的Secret值替換成新的之后,發(fā)現(xiàn)還是不行。debug看了下,在用post請求調用接口發(fā)消息的時候報錯:{“errcode”:-1,”errmsg”:”Invalid input”}。分析原因可能有兩個:調用的發(fā)消息接口地址不對了;或者,傳的post參數(shù)的格式不對了。
還好,在其官網(wǎng)上找到了企業(yè)微信的API說明文檔:https://work.weixin.qq.com/api/doc ,上面有較詳細的使用說明。經(jīng)確認,調用接口的url地址并沒有變(發(fā)送消息還是用https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN)。但是發(fā)現(xiàn)文本消息的格式有點不一樣,官網(wǎng)示例如下:
{ "touser" : "UserID1|UserID2|UserID3", "toparty" : " PartyID1|PartyID2 ", "totag" : " TagID1 | TagID2 ", "msgtype" : "text", "agentid" : 1, "text" : { "content" : "你的快遞已到,請攜帶工卡前往郵件中心領取。\n出發(fā)前可查看<a href=\"http://work.weixin.qq.com\">郵件中心視頻實況</a>,聰明避開排隊。" } }
上面的UserID、PartyID這些應該我之前都是當數(shù)值傳的,但示例上是放在引號里面的,那就是被當做字符串了。于是,我把代碼也改成按字符串的方式試了下,結果可以了。。。
總結
到此這篇關于如何利用python給微信公眾號發(fā)消息的文章就介紹到這了,更多相關python給微信公眾號發(fā)消息內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python使用htpasswd實現(xiàn)基本認證授權的例子
這篇文章主要介紹了Python使用htpasswd實現(xiàn)基本認證授權的例子,服務器使用的是mini_httpd,需要的朋友可以參考下2014-06-06python 通過pip freeze、dowload打離線包及自動安裝的過程詳解(適用于保密的離線環(huán)境
這篇文章主要介紹了python 通過pip freeze、dowload打離線包及自動安裝【適用于保密的離線環(huán)境】,本文通圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Python 標準庫zipfile將文件夾加入壓縮包的操作方法
Python zipfile 庫可用于壓縮/解壓 zip 文件. 本文介紹一下如何創(chuàng)建壓縮包,對Python zipfile壓縮包相關知識感興趣的朋友一起看看吧2021-09-09