发布日期 » 2017年9月9日 星期六

版权声明 » 帅华君原创文章,未经允许不得转载。

微信开发·接收普通消息

当微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。

实验

激活微信测试公众号并微信扫码关注该测试账号后,即可和使用其它公众号一样使用该测试公众号。

微信用户向微信服务器发送一段文本:

微信服务器将该文本包装成XML转发给该公众号关联的开发服务器,也就是我们自己的服务器,我们可以将这段XML信息输出:

如此就完成了一条普通信息的接收。除了文本消息,还包含多种消息的类型,每天使用微信的小伙伴,肯定清楚,微信支持哪些消息类型吧。

普通消息类型

  • 文本消息
  • 图片消息
  • 语音消息
  • 视频消息
  • 小视频消息
  • 地理位置消息
  • 链接消息

通用XML

不论哪种消息类型,XML中都包含如下5中信息:

  • ToUserName
  • FromUserName
  • CreateTime
  • MsgType
  • MsgId
<xml>
 <ToUserName><![CDATA[这是开发者微信的openid]]></ToUserName>
 <FromUserName><![CDATA[这是微信用户的openID]]></FromUserName>
 <CreateTime>这里是消息发出时的时间戳</CreateTime>
 <MsgType><![CDATA[这里是消息类型]]></MsgType>
 <MsgId>这里是消息ID</MsgId>
</xml>

各消息类型特殊性

文本消息

<Content><![CDATA[this is a test]]></Content>

图片消息

<PicUrl><![CDATA[this is a url]]></PicUrl>
<MediaId><![CDATA[media_id]]></MediaId>

语音消息

<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>

开通语音识别后,会增加一条语音识别XML

<Recognition>< ![CDATA[这里是语音识别结果] ]></Recognition>

视频消息

<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>

小视频消息

<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>

地理位置消息

<Location_X>23.134521</Location_X>
<Location_Y>113.358803</Location_Y>
<Scale>20</Scale>
<Label><![CDATA[位置信息]]></Label>

链接消息

<Title><![CDATA[链接的标题]]></Title>
<Description><![CDATA[接连的描述信息]]></Description>
<Url><![CDATA[链接的完整URL地址]]></Url>

后续处理

拿到普通消息后,可将消息内容存入数据库,对于图片、视频、语音等消息,可使用相关接口将这些素材下载到自己的服务器保存。