django - 用python编写微信公共平台的后台如何在用户关注之后自动先回复一条欢迎信息
巴扎黑
巴扎黑 2017-04-17 11:41:43
[Python讨论组]

就是比方有用户加了关注之后 并没有发送任何消息 然后由后台主动发送一条欢迎信息 微信中有内嵌被关注这个事件吗 还是有其他的方法 我找到一个类似的文章 但是是php的 也没怎么看懂 麻烦有没有用python的高人可以解释一下怎么做啊

传送门http://www.cnblogs.com/txw1958/archive/2013/04/01/weixin-if26-subscribe.html

巴扎黑
巴扎黑

全部回复(4)
黄舟

被用户关注之后,微信会发送一个 MsgType 为 Event 、Event 为 subscribe 的事件(你给的文章里已经写到了啊)

用 Bottle 写出来的话,大概是这样的:

from bottle import Bottle, request, response
from xml.etree import ElementTree

app = Bottle()


@app.post('/')
def handle():
    xml = request.body.read()
    msg = dict((child.tag, to_unicode(child.text))
              for child in ElementTree.fromstring(xml))
    if msg.get("MsgType", None) == "Event" and msg.get("Event", None) == "subscribe":
        #被用户关注
        pass

为什么不用框架开发呢?比如 WeRoBot

伊谢尔伦

微信关注后会发送一个关注的事件,你只要捕获这个事件给预回复就好了?不会python,下面这个是我用着的,php写的。

public function receiveEvent($object){
    $recEve = $object->Event;
    if($recEve == 'subscribe'){
        $contentStr='感谢关注XXXXXX。';
    }
    $resultStr = $this->transmitText($object,$contentStr);
    return $resultStr;
}

回完帖子才点了一下你那个链接,发现方法是一样的。请问你哪里不懂呢?

PHP中文网

捕获MsgType,如果为event,表明这是一个subscribe的事件,就可以这样处理:

# 纯文本格式
textTpl = """<xml>
         <ToUserName><![CDATA[%s]]></ToUserName>
         <FromUserName><![CDATA[%s]]></FromUserName>
         <CreateTime>%s</CreateTime>
         <MsgType><![CDATA[text]]></MsgType>
         <Content><![CDATA[%s]]></Content>
         <FuncFlag>0</FuncFlag>
         </xml>"""
# 判断MsgType内容,如果等于"event",表明是一个新关注用户
if msg["MsgType"] == "event":
    echostr = textTpl % (
        msg['FromUserName'], msg['ToUserName'], str(int(time.time())),
        u"这里替换为你想返回给用户的信息")
    return echostr
黄舟

推荐werobot

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号