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.小结
本章节我们简要介绍了如何用户关注订阅号/服务号的关注事件,依此类推我们也可以扩展代码进一步处理用户取消关注的事件或微信接口供处理的其它事件。相关文章推荐
- rabbitmq学习
- 新手学python--字典
- python+sqlite3
- Python GUI with Tkinter (from youtube) 在youtube上能找到很多编程视频...
- Python中的对象的排序
- python脚本: 云服务器集群计算节点客户机网卡状态管理
- Python中深拷贝与浅拷贝
- python最简单的wsgi例子
- python脚本生成exe文件
- python 编码问题记录
- 11个可能不知道的Python库
- Python爬虫简单笔记
- python装饰器和偏函数联合运用碰到的问题
- Python中的注释写法
- 20151007kaggle Titanic心得.md
- Win8系统 Python安装 - 入门
- Python入门之中文乱码
- 文章标题
- python windows whl pip 安装 64 位
- 线性回归中的数学原理