国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python微信公眾號之關(guān)鍵詞自動回復(fù)

2020-02-15 21:53:20
字體:
供稿:網(wǎng)友

最近忙國賽的一個項目,我得做一個微信公眾號。功能就是調(diào)數(shù)據(jù)并回復(fù)給用戶,需要用戶發(fā)送給公眾號一個關(guān)鍵詞,通過關(guān)鍵詞自動回復(fù)消息。

這時就是查詢微信公眾平臺文檔了,地址如下: 文檔

按照它的入門指南,我基本上了解了用戶給公眾號發(fā)送消息的一個機制,并且一旦給公眾號發(fā)送消息,在開發(fā)者后臺,會收到公眾平臺發(fā)送的一個xml,所以通過編寫Python腳本進行xml的解析與自動發(fā)送功能。

如果用戶給公眾號發(fā)送一段text消息,比如“hello”,那么后臺就會收到一個xml為:

<xml><ToUserName><![CDATA[公眾號]]></ToUserName><FromUserName><![CDATA[粉絲號]]></FromUserName><CreateTime>1460541339</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[hello]]></Content></xml>

注意這里面有一些標(biāo)記對于我們開發(fā)者來說是非常有用的:ToUserName,F(xiàn)romUserName,MsgType,Content
所以我們只要知道了這些信息,我們就能做到自動回復(fù)的功能。

我們發(fā)現(xiàn)這個MsgType 為 ‘text'。而微信中的MsgType有“text”(文本)、“image”(圖像)、“voice”(語音)、“video”(視頻)、“shortvideo”(短視頻)、“l(fā)ocation”(位置)、“l(fā)ink”(鏈接)、“event”(事件)

首先我們寫一個main.py文件

main.py

# -*- coding: utf-8 -*-# filename: main.pyimport webfrom handle import Handleurls = ( '/wx', 'Handle',)if __name__ == '__main__': app = web.application(urls, globals()) app.run()

然后寫一個receive.py,作為接受用戶發(fā)送過來的數(shù)據(jù),并解析xml,返回數(shù)據(jù)的腳本。

receive.py

import xml.etree.ElementTree as ETdef parse_xml(web_data): if len(web_data) == 0:  return None xmlData = ET.fromstring(web_data) msg_type = xmlData.find('MsgType').text if msg_type == 'text':  #print('text')  return TextMsg(xmlData) elif msg_type == 'image':  return ImageMsg(xmlData) elif msg_type == 'location':  #print('location')  return LocationMsg(xmlData) elif msg_type == 'event':  #print('event')  return EventMsg(xmlData)class Event(object): def __init__(self, xmlData):  self.ToUserName = xmlData.find('ToUserName').text  self.FromUserName = xmlData.find('FromUserName').text  self.CreateTime = xmlData.find('CreateTime').text  self.MsgType = xmlData.find('MsgType').text  self.Eventkey = xmlData.find('EventKey').textclass Msg(object): def __init__(self, xmlData):  self.ToUserName = xmlData.find('ToUserName').text  self.FromUserName = xmlData.find('FromUserName').text  self.CreateTime = xmlData.find('CreateTime').text  self.MsgType = xmlData.find('MsgType').text  self.MsgId = xmlData.find('MsgId').textclass TextMsg(Msg): def __init__(self, xmlData):  Msg.__init__(self, xmlData)  self.Content = xmlData.find('Content').text.encode("utf-8")class ImageMsg(Msg): def __init__(self, xmlData):  Msg.__init__(self, xmlData)  self.PicUrl = xmlData.find('PicUrl').text  self.MediaId = xmlData.find('MediaId').textclass LocationMsg(Msg): def __init__(self, xmlData):  Msg.__init__(self, xmlData)  self.Location_X = xmlData.find('Location_X').text  self.Location_Y = xmlData.find('Location_Y').textclass EventMsg(Msg): def __init__(self, xmlData):  Event.__init__(self, xmlData)  self.Event = xmlData.find('Event').text            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 景德镇市| 萨迦县| 苍梧县| 东丰县| 磴口县| 麦盖提县| 赤峰市| 和政县| 万宁市| 永仁县| 铜山县| 长沙市| 建瓯市| 门源| 横山县| 平阴县| 英超| 南靖县| 阿尔山市| 贺州市| 醴陵市| 商南县| 巴马| 灵山县| 台南市| 花莲县| 沅江市| 互助| 曲阳县| 五河县| 辉县市| 广河县| 宜州市| 孝感市| 邯郸县| 兰西县| 祥云县| 临夏县| 阿合奇县| 兴海县| 卢氏县|