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

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

  • 相关阅读:
    爬虫中动态的POST参数
    Sublime3注册码和安装中文包
    [pytorch][进阶之路]pytorch学习笔记二-自动求导和module
    [pytorch][进阶之路]pytorch学习笔记一
    [python][进阶之路]理解python中的深复制和浅复制
    [python][matlab]在python36上安装matlab2015b引擎
    [python][进阶之路]list复制引发的问题
    [python][pandas]DataFrame的基本操作
    [Algorithm]ADMM简明理解
    [python][cpp]对浮点数进行n位翻转
  • 原文地址:https://www.cnblogs.com/haozi0804/p/4794451.html
Copyright © 2011-2022 走看看