接受事件推送,消息发送等

在urls.py里设置好接口地址,并在微信公众号里面也配置好,如果一切顺利,显示配置成功的话,接下来我们就打算干点实际的东西了,接受事件推送。

当用户在关注,取消关注等行为时,微信服务器会把相关的数据post到你配置好的接口地址上,下面实现一下用户关注(订阅)你的公众号时,你给用户一条欢迎信息的功能。

因为微信给你post的数据是xml格式的,所以要引进lxml这个包来解析,如果是centos,可以这么安装:


$yum install libxml2
$yum install libxml2-devel
$yum install libxslt-devel

别的操作系统,请自行google之

接收微信服务器post过来的数据的python代码如下:


if request.method == 'POST':
    str_xml = request.body
    xml = etree.fromstring(str_xml)
    msg_type = xml.find('MsgType').text
    from_user = xml.find('FromUserName').text
    to_user = xml.find('ToUserName').text

当检测到是一个关注事件时,发送欢迎消息:


if msg_type == 'event':
    event_name = xml.find('Event')
    if event_name.text == 'subscribe':
        re_content = u'您好,欢迎关注业讯通服务号,你可以试试回复[海外置业],我们会有专门的海外置业顾问在线为您答疑。' 
        t = loader.get_template('reply_text.xml')
        c = {
                'toUser' : from_user,
                'fromUser' : to_user,
                'content' : re_content
            }

        result = t.render(Context(c))

reply_text.xml是返回给微信服务器的数据的xml模板,放在templates文件夹内,在下面的源码里你可以找到,消息推送的代码就不讲了,自己下载看吧。

源码下载,已经Django1.5测试通过。

微信 二次开发 事件 python django
Views (7021) Comments (2) 2014-03-06
王二麻子 :
centos不好用啊,万一没有包,多着急
老楠 Reply to 王二麻子 :
看个人喜好,啥版本的linux没包,都着急。
For example, "name@something.com". If someone replies to you it will be via email.
For example, "http://someaddress.com"