微信开发之图文消息

微信订阅号在文章素材中不能加入链,如果我们想使用推广表单,我们可以使用回复图文消息的方式,和文章组合在一起实用又好看.

关注后回复图文消息

if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
					
					   // 创建图文消息   关注后发送多图文消息
	                NewsMessage newsMessage = new NewsMessage();  
	                newsMessage.setToUserName(fromUserName);  
	                newsMessage.setFromUserName(toUserName);  
	                newsMessage.setCreateTime(new Date().getTime());  
	                newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);  
	          
	  
	                List<Article> articleList = new ArrayList<Article>();  
					Article article1 = new Article();
					article1.setTitle("");
					article1.setDescription("");
					article1.setPicUrl("");
					article1.setUrl("");
 
					Article article2 = new Article();
					article2.setTitle("");
					article2.setDescription("");
					article2.setPicUrl("");
					article2.setUrl("");
					
					articleList.add(article1);
					articleList.add(article2);
					newsMessage.setArticleCount(articleList.size());
					newsMessage.setArticles(articleList);
					respContent = MessageUtil.messageToXml(newsMessage);
					 return respContent;
				}
				else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
				}
				
				else if (eventType.equals(MessageUtil.EVENT_TYPE_SCAN)) {
					
				}
		
				else if (eventType.equals(MessageUtil.EVENT_TYPE_LOCATION)) {
					
				}
				
				else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
				
				}
				return MessageUtil.messageToXml(textMessage);
			}
			textMessage.setContent(respContent);
		
			respXml = MessageUtil.messageToXml(textMessage);
			}catch (Exception e) {
			e.printStackTrace();
		}
		return respXml;
		}

关键词回复图文消息

if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
		  
	                // 接收用户发送的文本消息内容  
	               // String content = requestMap.get("Content");  
	  
	                // 创建图文消息  
	                NewsMessage newsMessage = new NewsMessage();  
	                newsMessage.setToUserName(fromUserName);  
	                newsMessage.setFromUserName(toUserName);  
	                newsMessage.setCreateTime(new Date().getTime());  
	                newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);  
	                // newsMessage.setFuncFlag(0);  
	  
	                List<Article> articleList = new ArrayList<Article>();  
						// 多图文消息
						if ("XXX".contains(content)) {
							Article article1 = new Article();
							article1.setTitle("");
							article1.setDescription("");
							article1.setPicUrl("");
							article1.setUrl("");
		 
							Article article2 = new Article();
							article2.setTitle("");
							article2.setDescription("");
							article2.setPicUrl("");
							article2.setUrl("");
							
							articleList.add(article1);
							articleList.add(article2);
							
							newsMessage.setArticleCount(articleList.size());
							newsMessage.setArticles(articleList);
							respContent = MessageUtil.messageToXml(newsMessage);
							return respContent;
				}
                    return MessageUtil.messageToXml(textMessage);
	

关键词回复图文消息和订阅后推送图文消息,实现方式是一样的.

消息回复中如果你不想回复任何内容,又不想出现服务器出现故障,请稍后再试,你可以返回空字符串return "";腾讯就知道你不想回复任何内容了.

整体代码:


/**
 * 
 * @author bym @date 2018年7月4日
 */
public class CoreService {
	/** 生成订阅时的图文消息
	 * 
	 * @param fromUserName
	 * @param toUserName
	 * @return */
	public static String processRequest(HttpServletRequest request) {
	
		String respXml = null;
	
		String respContent = "请求处理异常,请稍候尝试!";
		try {
			
			Map<String, String> requestMap = MessageUtil.parseXml(request);
			
			String fromUserName = requestMap.get("FromUserName");
			String toUserName = requestMap.get("ToUserName");
			String msgType = requestMap.get("MsgType");
			String content = requestMap.get("Content");
			TextMessage textMessage = new TextMessage();
			textMessage.setToUserName(fromUserName);
			textMessage.setFromUserName(toUserName);
			textMessage.setCreateTime(new Date().getTime());
			textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
			
			if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
				  
	                // 接收用户发送的文本消息内容  
	               // String content = requestMap.get("Content");  
	  
	                // 创建图文消息  
	                NewsMessage newsMessage = new NewsMessage();  
	                newsMessage.setToUserName(fromUserName);  
	                newsMessage.setFromUserName(toUserName);  
	                newsMessage.setCreateTime(new Date().getTime());  
	                newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);  
	                // newsMessage.setFuncFlag(0);  
	  
	                List<Article> articleList = new ArrayList<Article>();  
						// 多图文消息
						if ("XXX".contains(content)) {
							Article article1 = new Article();
							article1.setTitle("");
							article1.setDescription("");
							article1.setPicUrl("");
							article1.setUrl("");
		 
							Article article2 = new Article();
							article2.setTitle("");
							article2.setDescription("");
							article2.setPicUrl("");
							article2.setUrl("");

							articleList.add(article1);
							articleList.add(article2);
	
							newsMessage.setArticleCount(articleList.size());
							newsMessage.setArticles(articleList);
							respContent = MessageUtil.messageToXml(newsMessage);
							return respContent;
					}
				   return MessageUtil.messageToXml(textMessage);
	
			}else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
			
				String eventType = requestMap.get("Event");
			
				if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
					
					   // 创建图文消息   关注后发送多图文消息
	                NewsMessage newsMessage = new NewsMessage();  
	                newsMessage.setToUserName(fromUserName);  
	                newsMessage.setFromUserName(toUserName);  
	                newsMessage.setCreateTime(new Date().getTime());  
	                newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);  
	          
	  
	                List<Article> articleList = new ArrayList<Article>();  
					Article article1 = new Article();
					article1.setTitle("");
					article1.setDescription("");
					article1.setPicUrl("");
					article1.setUrl("");
 
					Article article2 = new Article();
					article2.setTitle("");
					article2.setDescription(包");
					article2.setPicUrl("");
					article2.setUrl("");
					
					articleList.add(article1);
					articleList.add(article2);
					newsMessage.setArticleCount(articleList.size());
					newsMessage.setArticles(articleList);
					respContent = MessageUtil.messageToXml(newsMessage);			  
					       return respContent;
				}
				else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
					UserDao.delUser(fromUserName);
				}
				
				else if (eventType.equals(MessageUtil.EVENT_TYPE_SCAN)) {
					
				}
		
				else if (eventType.equals(MessageUtil.EVENT_TYPE_LOCATION)) {
					
				}
				
				else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
				
				}
				
				return MessageUtil.messageToXml(textMessage);
			}
			textMessage.setContent(respContent);
		
			respXml = MessageUtil.messageToXml(textMessage);
			}catch (Exception e) {
			e.printStackTrace();
		}
		return respXml;
		}
}
发布了79 篇原创文章 · 获赞 48 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/bianyamei/article/details/81069424