• 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. 小结

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

  • 相关阅读:
    Maven打包时去掉项目版本号
    maven编译的时候排除junit测试类
    Redis与Zookeeper实现分布式锁的区别
    分布式锁(基于redis和zookeeper)详解
    解读阿里巴巴集团的“大中台、小前台”组织战略
    java高并发系列
    JAVA之Unsafe学习笔记
    测试用例之正交排列法
    测试用例之因果图/判定表
    测试用例之边界值法
  • 原文地址:https://www.cnblogs.com/haozi0804/p/4794451.html
Copyright © 2020-2023  润新知