我们知道一旦使用开发者模式,我们就无法使用公众号平台中的自动回复功能,也就是关注自动回复功能只有自己写才可以。
如图所示,我们无法直接使用此功能。
那么接着上一个博客,我们完成了关键词自动回复功能,博文地址
实现自动回复的机制就是:
一旦用户给公众号一个触发(有可能发了一段文字、或者图片等等,也可能是关注了公众号),后台就会收到一个对应的XML消息,我们需要做的就是解析它,并作出回应即可。
那么如果关注了一个公众号,公众号后台会收到这样的XML消息。
1
2
3
4
5
6
7
|
< xml > < ToUserName > <![CDATA[toUser]]> </ ToUserName > < FromUserName > <![CDATA[FromUser]]> </ FromUserName > < CreateTime >123456789</ CreateTime > < MsgType > <![CDATA[event]]> </ MsgType > < Event > <![CDATA[subscribe]]> </ Event > </ xml > |
参数如下:
以上,那就easy了,我们只要解析这个XML,获得MsgType为event,那么就进行判断event是否为“subscribe”如果是,就进行回复消息即可。
关键代码如下:(具体代码看上一个博文)
1
2
3
4
5
6
7
8
9
|
def parse_xml(web_data): if len (web_data) = = 0 : return None xmlData = ET.fromstring(web_data) msg_type = xmlData.find( 'MsgType' ).text ... #省略了一部分 elif msg_type = = 'event' : #判断为事件消息 #print('event') return EventMsg(xmlData) |
1
2
3
4
|
class EventMsg(Msg): def __init__( self , xmlData): Event.__init__( self , xmlData) self .Event = xmlData.find( 'Event' ).text #取Event这个参数里的内容 |
1
2
3
4
5
6
7
|
if recMsg.MsgType = = 'event' : #print('yes') event = recMsg.Event if event = = 'subscribe' : #判断如果是关注则进行回复 content = "。。。" replyMsg = reply.TextMsg(toUser, fromUser, content) return replyMsg.send() |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/karry_zzj/article/details/78490896