国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 武威市| 琼中| 丰台区| 澳门| 苍南县| 浦江县| 天水市| 建阳市| 阿坝| 乌海市| 库车县| 临颍县| 且末县| 磴口县| 垣曲县| 门头沟区| 福清市| 法库县| 五峰| 西和县| 江阴市| 左贡县| 花垣县| 读书| 民乐县| 且末县| 安康市| 镇安县| 广安市| 盈江县| 梁平县| 镇平县| 福建省| 渑池县| 宣化县| 修文县| 平谷区| 富蕴县| 琼海市| 陇南市| 达孜县|