>  기사  >  php教程  >  微信公众帐号开发教程第13篇-图文消息全攻略

微信公众帐号开发教程第13篇-图文消息全攻略

WBOY
WBOY원래의
2016-06-13 11:28:281140검색

引言及内容概要

已经有几位读者抱怨“柳峰只用到文本消息作为示例,从来不提图文消息,都不知道图文消息该如何使用”,好吧,我错了,原本以为把基础API封装完、框架搭建好,再给出一个文本消息的使用示例,大家就能够照猫画虎的,或许是因为我的绘画功底太差,画出的那只猫本来就不像猫吧……

本篇主要介绍微信公众帐号开发中图文消息的使用,以及图文消息的几种表现形式。标题取名为“图文消息全攻略”,这绝对不是标题党,是想借此机会把大家对图文消息相关的问题、疑虑、障碍全部清除掉。

 

图文消息的主要参数说明

通过微信官方的消息接口指南,可以看到对图文消息的参数介绍,如下图所示:

从图中可以了解到:

1)图文消息的个数限制为10,也就是图中ArticleCount的值(图文消息的个数,限制在10条以内);

2)对于多图文消息,第一条图文的图片显示为大图,其他图文的图片显示为小图;

3)第一条图文的图片大小建议为640*320,其他图文的图片大小建议为80*80;

好了,了解这些,再结合第4篇文章所讲的消息及消息处理工具的封装,想要回复图文消息给用户也就不是什么难事了。

 

图文消息的多种表现形式

下面直接通过代码演示图文消息最主要的五种表现形式的用法,源代码如下:

[java] view plaincopy  
  1. package org.liufeng.course.service;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Date;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import javax.servlet.http.HttpServletRequest;  
  9.   
  10. import org.liufeng.course.message.resp.Article;  
  11. import org.liufeng.course.message.resp.NewsMessage;  
  12. import org.liufeng.course.message.resp.TextMessage;  
  13. import org.liufeng.course.util.MessageUtil;  
  14.   
  15. /** 
  16.  * 核心服务类 
  17.  *  
  18.  * @author liufeng 
  19.  * @date 2013-07-25 
  20.  */  
  21. public class CoreService {  
  22.     /** 
  23.      * 处理微信发来的请求 
  24.      *  
  25.      * @param request 
  26.      * @return 
  27.      */  
  28.     public static String processRequest(HttpServletRequest request) {  
  29.         String respMessage = null;  
  30.         try {  
  31.             // xml请求解析  
  32.             Map requestMap = MessageUtil.parseXml(request);  
  33.   
  34.             // 发送方帐号(open_id)  
  35.             String fromUserName = requestMap.get("FromUserName");  
  36.             // 公众帐号  
  37.             String toUserName = requestMap.get("ToUserName");  
  38.             // 消息类型  
  39.             String msgType = requestMap.get("MsgType");  
  40.   
  41.             // 默认回复此文本消息  
  42.             TextMessage textMessage = new TextMessage();  
  43.             textMessage.setToUserName(fromUserName);  
  44.             textMessage.setFromUserName(toUserName);  
  45.             textMessage.setCreateTime(new Date().getTime());  
  46.             textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);  
  47.             textMessage.setFuncFlag(0);  
  48.             // 由于href属性值必须用双引号引起,这与字符串本身的双引号冲突,所以要转义  
  49.             textMessage.setContent("欢迎访问柳峰的博客!");  
  50.             // 将文本消息对象转换成xml字符串  
  51.             respMessage = MessageUtil.textMessageToXml(textMessage);  
  52.   
  53.             // 文本消息  
  54.             if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {  
  55.                 // 接收用户发送的文本消息内容  
  56.                 String content = requestMap.get("Content");  
  57.   
  58.                 // 创建图文消息  
  59.                 NewsMessage newsMessage = new NewsMessage();  
  60.                 newsMessage.setToUserName(fromUserName);  
  61.                 newsMessage.setFromUserName(toUserName);  
  62.                 newsMessage.setCreateTime(new Date().getTime());  
  63.                 newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);  
  64.                 newsMessage.setFuncFlag(0);  
  65.   
  66.                 List
     articleList = new ArrayList
    ();  
  67.                 // 单图文消息  
  68.                 if ("1".equals(content)) {  
  69.                     Article article = new Article();  
  70.                     article.setTitle("微信公众帐号开发教程Java版");  
  71.                     article.setDescription("柳峰,80后,微信公众帐号开发经验4个月。为帮助初学者入门,特推出此系列教程,也希望借此机会认识更多同行!");  
  72.                     article.setPicUrl("http://0.xiaoqrobot.duapp.com/images/avatar_liufeng.jpg");  
  73.                     article.setUrl("http://blog.csdn.net/lyq8479");  
  74.                     articleList.add(article);  
  75.                     // 设置图文消息个数  
  76.                     newsMessage.setArticleCount(articleList.size());  
  77.                     // 设置图文消息包含的图文集合  
  78.                     newsMessage.setArticles(articleList);  
  79.                     // 将图文消息对象转换成xml字符串  
  80.                     respMessage = MessageUtil.newsMessageToXml(newsMessage);  
  81.                 }  
  82.                 // 单图文消息---不含图片  
  83.                 else if ("2".equals(content)) {  
  84.                     Article article = new Article();  
  85.                     article.setTitle("微信公众帐号开发教程Java版");  
  86.                     // 图文消息中可以使用QQ表情、符号表情  
  87.                     article.setDescription("柳峰,80后," + emoji(0x1F6B9)  
  88.                             + ",微信公众帐号开发经验4个月。为帮助初学者入门,特推出此系列连载教程,也希望借此机会认识更多同行!\n\n目前已推出教程共12篇,包括接口配置、消息封装、框架搭建、QQ表情发送、符号表情发送等。\n\n后期还计划推出一些实用功能的开发讲解,例如:天气预报、周边搜索、聊天功能等。");  
  89.                     // 将图片置为空  
  90.                     article.setPicUrl("");  
  91.                     article.setUrl("http://blog.csdn.net/lyq8479");  
  92.                     articleList.add(article);  
  93.                     newsMessage.setArticleCount(articleList.size());  
  94.                     newsMessage.setArticles(articleList);  
  95.                     respMessage = MessageUtil.newsMessageToXml(newsMessage);  
  96.           
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.