wechat-0021,微信公众号,回复不同类型的消息

1. 微信公众号可以回复不同类型的消息,具体有以下种类:文本,图片,语音,视频,音乐,图文。

2. 回复消息其实就是在构建xml文件,使用xstrem工具将实体类序列化为xml

3. 构建不同消息的实体类

消息基类-所有消息共同的信息

/**
 * 回复消息基类
 * 
 * @author WRY
 *
 */
public class BaseMessage {
	// 接收方帐号
	private String ToUserName;
	// 开发者微信号
	private String FromUserName;
	// 消息创建时间
	private long CreateTime;
	// 文本类型
	private String MsgType;

	public String getMsgType() {
		return MsgType;
	}

	public void setMsgType(String msgType) {
		MsgType = msgType;
	}

	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;
	}

}

文本消息

/**
 * 文本类型信息
 * 
 * @author WRY
 *
 */
public class TextMessage extends BaseMessage {
	// 内容
	private String Content;

	public String getContent() {
		return Content;
	}

	public void setContent(String content) {
		Content = content;
	}

}

图片消息

/**
 * 图像内容
 * @author WRY
 *
 */
public class Image {
	// 图片id。
	private String MediaId;

	public String getMediaId() {
		return MediaId;
	}

	public void setMediaId(String mediaId) {
		MediaId = mediaId;
	}
}
/**
 * 图片回复消息
 * 
 * @author WRY
 *
 */
public class ImageMessage extends BaseMessage {
	private Image Image;

	public Image getImage() {
		return Image;
	}

	public void setImage(Image image) {
		this.Image = image;
	}
}

语音,视频,音乐和图片一致,media_id需要现在素材管理中上传。

图文消息

/**
 * 单条图文消息
 * 
 * @author WRY
 *
 */
public class News {
	// Title 是 图文消息标题
	private String Title;
	// Description 是 图文消息描述
	private String Description;
	// PicUrl 是 图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200
	private String PicUrl;
	// Url 是 点击图文消息跳转链接
	private String Url;

	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 getPicUrl() {
		return PicUrl;
	}

	public void setPicUrl(String picUrl) {
		PicUrl = picUrl;
	}

	public String getUrl() {
		return Url;
	}

	public void setUrl(String url) {
		Url = url;
	}

}

/**
 * 图文回复消息
 * 
 * @author WRY
 *
 */
public class NewsMessage extends BaseMessage {
	// ArticleCount 是 图文消息个数,限制为8条以内
	private Integer ArticleCount;
	private List<News> Articles = new ArrayList<News>();

	public Integer getArticleCount() {
		return ArticleCount;
	}

	public void setArticleCount(Integer articleCount) {
		ArticleCount = articleCount;
	}

	public List<News> getArticles() {
		return Articles;
	}

	public void setArticles(List<News> articles) {
		Articles = articles;
	}
}

4. 序列化

文本消息

/**
	 * 发送文本消息
	 * 
	 * @param map
	 * @return
	 */
	public String replyText(Map<String, String> map) {
		// 构建恢复消息
		TextMessage textMessage = new TextMessage();
		textMessage.setToUserName(map.get(MessageParameter.FROMUSERNAME));
		textMessage.setCreateTime(new Date().getTime());
		textMessage.setFromUserName(map.get(MessageParameter.TOUSERNAME));
		textMessage.setMsgType(MessageParameter.TEXT);
		textMessage.setContent("你好你好");
		// 将pojo对象转成xml
		XmlUtil.xstream.alias("xml", textMessage.getClass());
		return XmlUtil.xstream.toXML(textMessage);
	}

图片消息,语音视频音乐类似

/**
	 * 回复图片消息
	 * 
	 * @param map
	 * @return
	 */
	public String replyImage(Map<String, String> map) {
		Image image = new Image();
		image.setMediaId("5qQ62MbSXKzsmCKoiBE4SWviiJt8bbJiNtlbYhPPQmY");
		ImageMessage imageMessage = new ImageMessage();
		imageMessage.setCreateTime(new Date().getTime());
		imageMessage.setFromUserName(map.get(MessageParameter.TOUSERNAME));
		imageMessage.setToUserName(map.get(MessageParameter.FROMUSERNAME));
		imageMessage.setMsgType(MessageParameter.IMAGE);
		imageMessage.setImage(image);
		// 将pojo对象转成xml
		XmlUtil.xstream.alias("xml", imageMessage.getClass());
		return XmlUtil.xstream.toXML(imageMessage);
	}

图文消息

/**
	 * 回复图文消息
	 * 
	 * @param map
	 * @return
	 */
	public String replyNews(Map<String, String> map) {
		News news = new News();
		news.setDescription("程序员薪酬报告:过去1年大数据领域薪资有多高? ");
		news.setPicUrl("http://mmbiz.qpic.cn/mmbiz_jpg/qAVuTCR99vXYU0lnG7kbweH8oDGmp4J8JZmwhDI36aL1GHPosLBl4u3U4q1NkSu1RPAhDQ3scY9FTAHFhGobKQ/0?wx_fmt=jpeg");
		news.setTitle("程序员薪酬报告:过去1年大数据领域薪资有多高?");
		news.setUrl("https://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650697704&idx=2&sn=793101bd3f862e7219065acb86c57267&chksm=bea61e3b89d1972d7d1f13a871b1b04f01eb133b703a5fa9025cb7bf72f879f8f02effaaa63a&scene=0#rd");
		NewsMessage newsMessage = new NewsMessage();
		newsMessage.setArticleCount(1);
		newsMessage.getArticles().add(news);
		newsMessage.setCreateTime(new Date().getTime());
		newsMessage.setFromUserName(map.get(MessageParameter.TOUSERNAME));
		newsMessage.setMsgType(MessageParameter.NEWS);
		newsMessage.setToUserName(map.get(MessageParameter.FROMUSERNAME));
		// 将pojo对象转成xml
		XStream xStream = new XStream();
		xStream.alias("xml", NewsMessage.class);
		xStream.alias("item", News.class);
		return xStream.toXML(newsMessage);
	}
图文消息中会用到重命名策略。



猜你喜欢

转载自blog.csdn.net/wrongyao/article/details/80277689
今日推荐