微信公众号开发——关注公众号自动回复

咱们知道一旦使用开发者模式,咱们就没法使用公众号平台中的自动回复功能,也就是关注自动回复功能只有本身写才能够。
这里写图片描述
如图所示,咱们没法直接使用此功能。python

那么接着上一个博客,咱们完成了关键词自动回复功能,博文地址以下:
http://blog.csdn.net/karry_zzj/article/details/78451901web

实现自动回复的机制就是:
一旦用户给公众号一个触发(有可能发了一段文字、或者图片等等,也多是关注了公众号),后台就会收到一个对应的XML消息,咱们须要作的就是解析它,并做出回应便可。微信

那么若是关注了一个公众号,公众号后台会收到这样的XML消息。svg

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
</xml>

参数以下:spa

参数 描述
ToUserName 开发者微信号
FromUserName 发送方账号(一个OpenID)
CreateTime 消息建立时间 (整型)
MsgType 消息类型,event
Event 事件类型,subscribe(订阅)、unsubscribe(取消订阅)

以上,
那就easy了,咱们只要解析这个XML,得到MsgType为event,那么就进行判断event是否为“subscribe”若是是,就进行回复消息便可。.net

关键代码以下:(具体代码看上一个博文)code

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)
class EventMsg(Msg):
    def __init__(self, xmlData):
        Event.__init__(self, xmlData)
        self.Event = xmlData.find('Event').text#取Event这个参数里的内容
if recMsg.MsgType == 'event':
                    #print('yes')
                    event = recMsg.Event
                    if event == 'subscribe':#判断若是是关注则进行回复
                        content = "。。。"
                        replyMsg = reply.TextMsg(toUser, fromUser, content)
                        return replyMsg.send()