接收普通消息
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。
具体有以下类型的消息类型
- 文本消息
- 图片消息
- 语音消息
- 视频消息
- 小视频消息
- 地理位置消息
- 链接消息
下面简单介绍各种消息包含数据字段和数据实体封装
文本消息
<xml>
<ToUserName><![CDATA[gh_47bd9550a0a1]]></ToUserName>
<FromUserName><![CDATA[oFTYt0l9wQDDhwmx1js_d1T6zZkw]]></FromUserName>
<CreateTime>1530689641</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[文本消息]]></Content>
<MsgId>6574261948839470964</MsgId>
</xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | text |
Content | 文本消息内容 |
MsgId | 消息id,64位整型 |
public class TextData extends WeixinData {
private String Content; //文本消息内容
private String MsgId; //消息id,64位整型
public TextData(){}
public TextData(String toUserName, String fromUserName, String content) {
super(toUserName, fromUserName, "text");
Content = content;
}
public String getContent() {
return Content;
}
public void setContent(String content) {
Content = content;
}
public String getMsgId() {
return MsgId;
}
public void setMsgId(String msgId) {
MsgId = msgId;
}
}
图片消息
<xml>
<ToUserName><![CDATA[gh_47bd9550a0a1]]></ToUserName>
<FromUserName><![CDATA[oFTYt0l9wQDDhwmx1js_d1T6zZkw]]></FromUserName>
<CreateTime>1530689943</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[http://mmbiz.qpic.cn/mmbiz_jpg/T85yfKllsbIWj3WwiaaDGkysmbNYo80JtffEwIvKj3dkDfm2NfuqZJ34wJNKdYwn7wQ5V9g5JHv5mCe9jqEvtcA/0]]></PicUrl>
<MsgId>6574263245919594391</MsgId>
<MediaId><![CDATA[SRazYKH_aw5nACnUdjwexDcc9WmPAuJVV8_u6Fa5-79WzpiQtoScKljpG8musls2]]></MediaId>
</xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | image |
PicUrl | 图片链接(由系统生成) |
MediaId | 图片消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
MsgId | 消息id,64位整型 |
public class ReceivedImageData extends WeixinData {
private String PicUrl; //图片链接(由系统生成)
private String MediaId; //图片消息媒体id,可以调用多媒体文件下载接口拉取数据。
private String MsgId; //消息id,64位整型
public ReceivedImageData(String toUserName, String fromUserName){
super(toUserName, fromUserName, "image");
}
public String getPicUrl() {
return PicUrl;
}
public void setPicUrl(String picUrl) {
PicUrl = picUrl;
}
public String getMediaId() {
return MediaId;
}
public void setMediaId(String mediaId) {
MediaId = mediaId;
}
public String getMsgId() {
return MsgId;
}
public void setMsgId(String msgId) {
MsgId = msgId;
}
}
语音消息
<xml>
<ToUserName><![CDATA[gh_47bd9550a0a1]]></ToUserName>
<FromUserName><![CDATA[oFTYt0l9wQDDhwmx1js_d1T6zZkw]]></FromUserName>
<CreateTime>1530689999</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[e2D0kI4d9xvcJMT2TDbg3e-W3muya6eKG_lje_gw9-3dkqCIO6-bZ-DgDEK8SLwK]]></MediaId>
<Format><![CDATA[amr]]></Format>
<MsgId>6574263486437762981</MsgId>
<Recognition><![CDATA[]]></Recognition>
</xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 语音为voice |
MediaId | 语音消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
Format | 语音格式,如amr,speex等 |
MsgID | 消息id,64位整数 |
public class ReceivedVoiceData extends WeixinData {
private String MediaId;//语音消息媒体id,可以调用多媒体文件下载接口拉取数据。
private String Format;//语音格式,如amr,speex等
private String MsgID;//消息id,64位整型
public ReceivedVoiceData(String toUserName, String fromUserName){
super(toUserName, fromUserName, "voice");
}
public String getMediaId() {
return MediaId;
}
public void setMediaId(String mediaId) {
MediaId = mediaId;
}
public String getFormat() {
return Format;
}
public void setFormat(String format) {
Format = format;
}
public String getMsgID() {
return MsgID;
}
public void setMsgID(String msgID) {
MsgID = msgID;
}
}
视频消息<xml>
<ToUserName><![CDATA[gh_47bd9550a0a1]]></ToUserName>
<FromUserName><![CDATA[oFTYt0l9wQDDhwmx1js_d1T6zZkw]]></FromUserName>
<CreateTime>1530690073</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<MediaId><![CDATA[g-ycQ1lYkP4VFmsnlI9g4R_RKhljGLUVR40EdReW0wyf45KxJEbvv8AiMr5JxTSd]]></MediaId>
<ThumbMediaId><![CDATA[riUl68vupZ9q0LEyG-ltqPcS-AXhd9hlcsGayGixxd6-OWkCkxJKOihrqkAVRaYX]]></ThumbMediaId>
<MsgId>6574263804265342892</MsgId>
</xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 视频为video |
MediaId | 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
ThumbMediaId | 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 |
MsgId | 消息id,64位整型 |
public class ReceivedVideoData extends WeixinData {
private String MediaId; //视频消息媒体id,可以调用多媒体文件下载接口拉取数据。
private String ThumbMediaId; //视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。
private String MsgId; //消息id,64位整型
public ReceivedVideoData(String toUserName, String fromUserName){
super(toUserName, fromUserName, "video");
}
public String getMediaId() {
return MediaId;
}
public void setMediaId(String mediaId) {
MediaId = mediaId;
}
public String getThumbMediaId() {
return ThumbMediaId;
}
public void setThumbMediaId(String thumbMediaId) {
ThumbMediaId = thumbMediaId;
}
public String getMsgId() {
return MsgId;
}
public void setMsgId(String msgId) {
MsgId = msgId;
}
}
小视频消息
<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>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 小视频为shortvideo |
MediaId | 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
ThumbMediaId | 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 |
MsgId | 消息id,64位整型 |
地理位置消息
<xml>
<ToUserName><![CDATA[gh_47bd9550a0a1]]></ToUserName>
<FromUserName><![CDATA[oFTYt0l9wQDDhwmx1js_d1T6zZkw]]></FromUserName>
<CreateTime>1530690166</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>40.054329</Location_X>
<Location_Y>116.303307</Location_Y>
<Scale>16</Scale>
<Label><![CDATA[北京市海淀区西二旗]]></Label>
<MsgId>6574264203697301436</MsgId>
</xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | location |
Location_X | 地理位置维度 |
Location_Y | 地理位置经度 |
Scale | 地图缩放大小 |
Label | 地理位置信息 |
MsgId | 消息id,64位整型 |
public class ReceivedLocationData extends WeixinData {
private String Location_X; // 地理位置维度
private String Location_Y; // 地理位置经度
private String Scale; // 地图缩放大小
private String Label; // 地理位置信息
private String MsgId; // 消息id,64位整型
public ReceivedLocationData(String toUserName, String fromUserName){
super(toUserName, fromUserName, "location");
}
public String getLocation_X() {
return Location_X;
}
public void setLocation_X(String location_X) {
Location_X = location_X;
}
public String getLocation_Y() {
return Location_Y;
}
public void setLocation_Y(String location_Y) {
Location_Y = location_Y;
}
public String getScale() {
return Scale;
}
public void setScale(String scale) {
Scale = scale;
}
public String getLabel() {
return Label;
}
public void setLabel(String label) {
Label = label;
}
public String getMsgId() {
return MsgId;
}
public void setMsgId(String msgId) {
MsgId = msgId;
}
}
链接消息
<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>
参数 | 描述 |
---|---|
ToUserName | 接收方微信号 |
FromUserName | 发送方微信号,若为普通用户,则是一个OpenID |
CreateTime | 消息创建时间 |
MsgType | 消息类型,link |
Title | 消息标题 |
Description | 消息描述 |
Url | 消息链接 |
MsgId | 消息id,64位整型 |
public class ReceivedLinkData extends WeixinData {
private String Title; // 消息标题
private String Description; // 消息描述
private String Url; // 消息链接
private String MsgId; // 消息id,64位整型
public ReceivedLinkData(String toUserName, String fromUserName){
super(toUserName, fromUserName, "link");
}
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
public String getUrl() {
return Url;
}
public void setUrl(String url) {
Url = url;
}
public String getMsgId() {
return MsgId;
}
public void setMsgId(String msgId) {
MsgId = msgId;
}
}
将普通消息中公有的数据抽取出来封装成底层的基类WeixinData
public class WeixinData {
private String ToUserName; //开发者微信号
private String FromUserName; //发送方帐号(一个OpenID)
private Long CreateTime; //消息创建时间 (整型)
private String MsgType; //消息类型,event,text,image
public WeixinData() {
}
public WeixinData(String toUserName, String fromUserName, String msgType) {
ToUserName = toUserName;
FromUserName = fromUserName;
MsgType = msgType;
this.CreateTime = System.currentTimeMillis();
}
public String getToUserName() {
return ToUserName;
}
public void setToUserName(String toUserName) {
ToUserName = toUserName;
}
public String getFromUserName() {
return FromUserName;
}
public void setFromUserName(String fromUserName) {
FromUserName = fromUserName;
}
public Long getCreateTime() {
return CreateTime;
}
public void setCreateTime(Long createTime) {
CreateTime = createTime;
}
public String getMsgType() {
return MsgType;
}
public void setMsgType(String msgType) {
MsgType = msgType;
}
}
微信官方文档 :https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453