您的位置:首页 > 编程语言 > Python开发

Python开发入门与实战21-订阅事件(subscribe)

2015-10-08 09:46 555 查看

21.订阅事件(subscribe)

新用户关注微信公众平台,将产生一个订阅事件,即subscribe事件,在新用户关注公众平台后为新用户提供一些简明扼要的公众号说明

事件推送(event);

接收到消息后,首先需要对消息类型做出判断,然后再针对不同类型的消息做出处理。在事件推送中,事件类型又分为三种,subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件),还需要再加一次判断;判断为subscribe事件后,根据设定好的欢迎消息,回复给用户

21.1.修改微信服务入口函数wechat

首先,我们修改前面的微信入口函数wechat,增加处理Post内容功能。

@csrf_exempt
defwechat(request):
response=None
ifrequest.method=='GET':
response=HttpResponse(checkSignature(request),content_type="text/plain")
elifrequest.method=='POST':
response=HttpResponse(responseMsg(request.body),content_type="application/xml")
else:
response=None

returnresponse


21.2.增加responseMsg函数来专门处理微信的事件推送

defresponseMsg(postContent):
postStr=smart_str(postContent)
ifpostStr:
msg=xmlContent2Dic(postStr)
ifmsg['MsgType']:
ifmsg['MsgType']=='event':
resultStr=handleEvent(msg)#处理事件推送
else:
resultStr='Inputsomething...'

returnresultStr

#函数把微信XML格式信息转换成字典格式
defxmlContent2Dic(xmlContent):
dics={}
elementTree=ElementTree.fromstring(xmlContent)
ifelementTree.tag=='xml':
forchildinelementTree:
dics[child.tag]=smart_unicode(child.text)
returndics


21.3.增加handleEvent函数来专门处理微信的事件推送

在“微信”的事件推送中,事件类型又分为三种,subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件),这样我们在handleEvent函数里判断本次推送是subscribe事件,然后根据设定好的欢迎消息,回复给用户。

defhandleEvent(msg):
ifmsg['Event']=='subscribe':
resultStr="<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>"
resultStr=resultStr%(msg['FromUserName'],msg['ToUserName'],str(int(time.time())),'text',u'感谢您关注【微人人公众号】\n目前功能如下:【1】库存查询;')
returnresultStr



21.4.更新代码到云

代码更新好后,当用户有关注我们的公众号时,就会得到上面的回复。





21.5.小结

本章节我们简要介绍了如何用户关注订阅号/服务号的关注事件,依此类推我们也可以扩展代码进一步处理用户取消关注的事件或微信接口供处理的其它事件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: