接受事件推送,消息发送等
在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测试通过。