微信开发·接收普通消息
当微信用户向公众账号发消息时,微信服务器将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>
后续处理
拿到普通消息后,可将消息内容存入数据库,对于图片、视频、语音等消息,可使用相关接口将这些素材下载到自己的服务器保存。