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

来源:互联网 发布:独立时代 知乎 编辑:程序博客网 时间:2024/05/22 21:19

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

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

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

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

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

参数如下:

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

以上,
那就easy了,我们只要解析这个XML,获得MsgType为event,那么就进行判断event是否为“subscribe”如果是,就进行回复消息即可。

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

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()
阅读全文
0 0
原创粉丝点击