微信公众号开发实践(二)--接收用户消息并回复

微信公众账号能接收的用户发送的6种格式的消息:

注意:回复消息,都要用到post 请求。所以处理微信的view要加上 @csrf_exempt (跨域攻击),不然django会拒绝post请求(我被卡在这里很久,哎呀,新手伤不起啊)

参考页面:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453

一,文本消息

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId></xml>

所以可以依据文本消息或文本消息的内容回复文本消息,需要构造上面的结构,然后response给request. ToUserName和FromUserName要互换

二,图片消息

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[image]]></MsgType> <PicUrl><![CDATA[this is a url]]></PicUrl> <MediaId><![CDATA[media_id]]></MediaId> <MsgId>1234567890123456</MsgId></xml>

三,语音消息

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1357290913</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <Format><![CDATA[Format]]></Format> <MsgId>1234567890123456</MsgId></xml>

四,视频消息

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1357290913</CreateTime> <MsgType><![CDATA[video]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId> <MsgId>1234567890123456</MsgId></xml>

五,小视频消息

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1357290913</CreateTime> <MsgType><![CDATA[shortvideo]]></MsgType> <MediaId><![CDATA[media_id]]></MediaId> <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId> <MsgId>1234567890123456</MsgId></xml>

六,地理位置

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[location]]></MsgType> <Location_X>23.134521</Location_X> <Location_Y>113.358803</Location_Y> <Scale>20</Scale> <Label><![CDATA[位置信息]]></Label> <MsgId>1234567890123456</MsgId></xml>

六,链接

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[link]]></MsgType> <Title><![CDATA[公众平台官网链接]]></Title> <Description><![CDATA[公众平台官网链接]]></Description> <Url><![CDATA[url]]></Url> <MsgId>1234567890123456</MsgId></xml>        

最后举一个返回文本消息的例子,其他的都参考这样的模式构造返回的内容。

class TextMsg(): def __init__(self,dict_obj): self.__dict = dict_obj def send(self): xmlForm = """ <xml> <ToUserName><![CDATA[{ToUserName}]]></ToUserName> <FromUserName><![CDATA[{FromUserName}]]></FromUserName> <CreateTime>{CreateTime}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[{Content}]]></Content> </xml> """ return xmlForm.format(**self.__dict)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 桥是每个地方不可却少的交通要道而旬阳就有一座美丽的桥――廊桥。 它横跨在小可之上,桥下有三个大石柱...
    薛亮的家长阅读 412评论 0 0
  • 活动方案 时间:2018.11.4下午13:30-17:00 主题:现金流桌游 活动流程: 1.每桌7人,1个是银...
    林荫儿阅读 311评论 0 0
  • Http和Https 就是浏览器地址栏中开头的字符,表示网页的内容是按照这个标准传递的。HyperText Tra...
    张老师Klog阅读 4,474评论 0 6
  • 旧亭新花掩重重,清风浅涧依然东。 且簪茱萸初发后,登高随心落枫红。 独行无人寒径里,青鸟有伴暖阳中。 不见经年满载...
    桨影铭阅读 362评论 4 5