zoukankan      html  css  js  c++  java
  • Python开发入门与实战21-订阅事件(subscribe)

    21. 订阅事件(subscribe)

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

    事件推送(event);

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

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

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

    @csrf_exempt
    def wechat(request):
        response = None
        if request.method == 'GET':
            response = HttpResponse(checkSignature(request),content_type="text/plain")
    elif request.method == 'POST': response= HttpResponse(responseMsg(request.body),content_type="application/xml") else: response = None return response

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

    def responseMsg(postContent):
        postStr = smart_str(postContent)
        if postStr:
            msg = xmlContent2Dic(postStr)
            if msg['MsgType']:
                if msg['MsgType'] == 'event':
                    resultStr = handleEvent(msg)  #处理事件推送
            else:
                resultStr = 'Input something...'    
    
    return resultStr
    
    #函数把微信XML格式信息转换成字典格式
    def xmlContent2Dic(xmlContent):  
        dics = {}  
        elementTree = ElementTree.fromstring(xmlContent)
        if elementTree.tag == 'xml':  
            for child in elementTree :  
                dics[child.tag] = smart_unicode(child.text)  
        return dics

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

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

    def handleEvent(msg):
        if msg['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'感谢您关注【微人人公众号】
    目前功能如下:【1】 库存查询;')  
        return resultStr
     

    21.4. 更新代码到云

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

    Screenshot_2015-09-09-14-09-12

    21.5. 小结

    本章节我们简要介绍了如何用户关注订阅号/服务号的关注事件,依此类推我们也可以扩展代码进一步处理用户取消关注的事件或微信接口供处理的其它事件。

  • 相关阅读:
    心得
    构建之法--界面化的简单四则运算
    构建之法--简单四则运算
    构建之法--初识Git
    构建之法---第一次作业
    【软件工程实践】结对项目-四则运算 “软件”之升级版
    第三次作业:个人项目-小学四则运算 “软件”之初版
    分布式版本控制系统Git的安装与使用
    第一次作业-准备
    字符串、文件操作,英文词率统计预处理
  • 原文地址:https://www.cnblogs.com/haozi0804/p/4794451.html
Copyright © 2011-2022 走看看