C#-MVC开发微信应用(3)--文本消息和图文消息的应答

最近咨询微信的人很多,感觉这块也是一块商机,也为了演示SNF快速开发平台的优势,就用SNF快速开发平台开发出一套微信应用程序。使用《SNF.CodeGenerator》代码生成工具可以节省大量时间。

在前面两篇两篇随笔《C#-MVC开发微信应用(1)--开始使用微信接口》和《C#-MVC开发微信应用(2)--开始使用微信接口》里面,大致介绍了我微信应用的框架构建,本随笔继续介绍这一主题,介绍消息应答里面的文本应答和图文应答的过程。

我们知道,给手机用户发送响应消息,它可以分为好多种方式,如回复文本消息、回复图片消息、回复语音消息、回复视频消息、回复音乐消息、回复图文消息等,如下所示。

而其中图片、视频、语音这三种方式,是需要开通微信认证才可以向用户发送存在微信服务器上的媒体信息,一般没有认证的公众号或者服务号,是不能发送这几种内容的。

1、实体信息关系及定义

在上一篇微信开发的随笔中,我展示了对接收消息和回复消息的应用实体类,这些实体类是我根据需要,根据开发需要,在应用层面对它们进行了封装,如回复的消息关系如下所示。

消息基类BaseMessage的实体类定义如下所示,它对日期构造了一个整形数值,并具备了一些常规的属性,并且还有一个重要的ToXML方法,用来给方法传递这些XML数据的。

/// <summary>
    /// 基础消息内容
    /// </summary>
    [XmlRoot(ElementName = "xml")]
    public class BaseMessage
    {
        /// <summary>
        /// 初始化一些内容,如创建时间为整形,
        /// </summary>
        public BaseMessage()
        {
            this.CreateTime = BusinessLogic.ConvertDateTimeInt(DateTime.Now);
        }

        /// <summary>
        /// 开发者微信号
        /// </summary>
        public string ToUserName { get; set; }

        /// <summary>
        /// 发送方帐号(一个OpenID)
        /// </summary>
        public string FromUserName { get; set; }

        /// <summary>
        /// 消息创建时间 (整型)
        /// </summary>
        public int CreateTime { get; set; }

        /// <summary>
        /// 消息类型
        /// </summary>
        public string MsgType { get; set; }

        public virtual string ToXml()
        {
            this.CreateTime = BusinessLogic.ConvertDateTimeInt(DateTime.Now);//重新更新
            return XmlHelper.ObjectToXml(this);
        }

    }

回复的文本消息实体类代码如下所示,我们可以看到,它继承了很多通用的实体属性,并且还具备了一个ToXml的通用方法,我们需要把它转换为响应的XML的时候,就使用这个方法就可以了。

/// <summary>
/// 回复文本消息
/// </summary>
[System.Xml.Serialization.XmlRoot(ElementName = "xml")]
public class ResponseText : BaseMessage
{
public ResponseText()
{
this.MsgType = ResponseMsgType.Text.ToString().ToLower();
}

public ResponseText(BaseMessage info)
: this()
{
this.FromUserName = info.ToUserName;
this.ToUserName = info.FromUserName;
}

/// <summary>
/// 内容 消息内容,大小限制在2048字节,字段为空为不合法请求
/// </summary>
public string Content { get; set; }

/// <summary>
/// 星标字段
/// </summary>
public string FuncFlag = "0";//{ get; set; }

}

而图文消息对象类ResponseNews,它包含更多的信息定义

/// <summary>
    /// 回复图文消息
    /// </summary>
    [System.Xml.Serialization.XmlRoot(ElementName = "xml")]
    public class ResponseNews : BaseMessage
    {
        public ResponseNews()
        {
            this.MsgType = ResponseMsgType.News.ToString().ToLower();

            this.Articles = new List<ArticleEntity>();
        }
        public ResponseNews(BaseMessage info)
            : this()
        {
            this.FromUserName = info.ToUserName;
            this.ToUserName = info.FromUserName;
        }

        /// <summary>
        /// 图文消息个数,限制为10条以内
        /// </summary>
        public int ArticleCount
        {
            get
            {
                return this.Articles.Count;
            }
            set
            {
                ;//增加这个步骤才出来XML内容
            }
        }

        /// <summary>
        /// 图文列表。
        /// 多条图文消息信息,默认第一个item为大图,注意,如果图文数超过10,则将会无响应
        /// </summary>
        [System.Xml.Serialization.XmlArrayItem("item")]
        public List<ArticleEntity> Articles { get; set; }

        ///// <summary>
        ///// 星标字段
        ///// </summary>
        //public string FuncFlag = "0";//{ get; set; }

    }

而其中的图文列表集合中的对象,它也是一个实体类型,包含了一些图文的链接,标题等信息,不在赘述。

2、消息的回复处理

如对于文本消息,我们可以用以下的方式进行处理。

 //01.文本信息
            //ResponseText response = new ResponseText(info);
            //response.Content = "抱歉,抱歉此功能就不给你用。";
            //02.图片信息
            //ResponseImage response = new ResponseImage(info);
            //response.Image.MediaId = "hlTgQw3xRqAFw9hj0x8eGxhlGzenpq4XQ-ntSSjEMt0XvFdvp3uTcPNmOBA_hOfy";
            //string str = response.ToXml();

对于图文消息,我们可能需要录入更多的消息才能返回更好的效果。

注意图文的消息,图片的尺寸最好按照官方的标准,否则在手机上看起来不好看,官方的标准好像是宽高是(360,200)像素

//使用在微信平台上的图文信息(单图文信息)
            ResponseNews response = new ResponseNews(info);
            ArticleEntity entity = new ArticleEntity();
            entity.Title = "北斗集团";
            entity.Description = "欢迎关注北斗集团--专业的单位信息化软件和软件开发框架提供商";

            entity.PicUrl = "http://images.cnitblog.com/blog/48652/201501/051238582343793.jpg";
            entity.Url = "http://www.cnblogs.com/spring_wang";

            response.Articles.Add(entity);
            result = response.ToXml();

            return result;

我们来看看我公司的微信门户菜单,看起来是不是很酷呢。

对于这两种(文本消息、图文消息)用的地方是最多,很多微信门户,都主要是使用这两种方式进行响应。当然,我们还可以根据客户手机提交上来的各种消息进行不同的处理,请求消息的类型我在上一篇的随笔有介绍,如下所示。

需要关注了解整体效果,可以使用微信直接扫描二维码即可。

时间: 2024-10-25 18:47:33

C#-MVC开发微信应用(3)--文本消息和图文消息的应答的相关文章

C#-MVC开发微信应用(8)--菜单管理的实现

之前讲解了微信后台管理页面的操作来管理菜单,下面我们在简单的来看一下,代码是如何实现的. 我们要实现获取微信的菜单.创建菜单.删除菜单等操作. 01.首先定义菜单操作的接口: /// <summary> /// 菜单的相关操作 /// </summary> public interface IMenuApi { /// <summary> /// 获取菜单数据 /// </summary> /// <param name="accessTok

C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息

在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码.希望从一个更高的层次介绍微信的开发. 在<C#-MVC开发微信应用(6)--用户分组信息管理>具体介绍了微信用户分组接口的实现方法,本篇将介绍,如何在我的平台软件上进行管理我们微信上的用户分组. 其实微信能够风风火火的原因,主要就是因为有用户信息,所以同步并管理好微信账号的关注用户数据是非常重要的.有了微信用户的数据,你可以和你任何应用

C#开发微信门户及应用(3)--文本消息和图文消息的应答

C#开发微信门户及应用(3)--文本消息和图文消息的应答 微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为计划的安排事情之一了.本系列文章希望从一个循序渐进的角度上,全面介绍微信的相关开发过程和相关经验总结,希望给大家了解一下相关的开发历程. 在前面两篇两篇随笔<C#开发微信门户及应用(1)--开始使用微信接口>和<C#开发微信门户及应用(2)--微信消息的处理和应答>里面,大致介绍了我微信应用的框架

C#-MVC开发微信应用(2)--开始使用微信接口

微信应用使用场景和商机很多,所以这也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为SNF完善的必要条件了.本系列文章希望从一个循序渐进的角度上,全面介绍微信的相关开发过程和相关经验总结,希望给大家了解一下相关的开发历程.本篇随笔主要基于上一篇<C#-MVC开发微信应用(1)--开始使用微信接口>的基础上进行深入的介绍,介绍微信消息的处理和应答的过程. 1.微信的消息应答交互 我们知道,微信的服务器架起了客户手机和开发者服务器的一个桥梁,通过消息的传递和响应,实现了与用户的交

微信公共平台开发-(.net实现)4--发送图文消息

之前说了让微信发送给关注我们的粉丝普通的文本信息,下面我们来看看如何发送图文信息,需要注意的是这里说的是,让微信发给我们,而不是我们拍个图片发给微信处理,上传图片在以后的再讲.下面是发送图文消息的函数,涉及title(标题),description(摘要),picurl(图片),链接 (url)几个关键的参数: 格式如下:(此为多图文形式) 其实格式呢就和上篇http://www.cnblogs.com/QLJ1314/p/3855371.html格式一样. 1 protected string

C#-MVC开发微信应用(4)--微信门户菜单的管理操作

最近对微信接口进行深入的研究,通过把底层接口一步步进行封装后,逐步升级到自动化配置.自动化应答,以及后台处理界面的优化和完善上,力求搭建一个较为完善.适用的微信门户应用管理系统. 在微信门户系统里面,实现下面这些功能操作: 1)实现菜单的动态配置及更新到服务器上: 2)动态定义事件和响应消息,实现对不同行业,不同需求的菜单动作响应: 3)动态的应答指令配置处理,实现整套应答链的消息处理: 4)获取订阅用户和用户分组信息,并可以实现用户分组信息的维护等操作: 5)管理并更新多媒体文件.图文消息等内

【玩转微信公众平台之十】 图文消息回复讲解

讲解目录 <保卫战:异形入侵>游戏开发    1 第一讲   游戏演示和资源的介绍    1 第二讲  "异形"怪物的实现    1 第三讲  "异形"怪物生命值的体现    9 第四讲  "异形"怪物死后处理    12 第五讲  玩家的制作    15 第六讲  玩家的行走控制(键盘)    16 第七讲  武器的切换(鼠标)     16 第八讲  摄像头的变化(鼠标)    19 第九讲  子弹预制体和特效的制作    20

微信公众平台改版 终于支持图文消息链接了

微信公众平台发布更新了,终于允许在图文消息中加入跳转链接,但仅针对开通了微信支付的公众号,开通微信支付应该不算难,大伙赶紧去开通吧.本次微信公众平台改版升级还新增开发者中心.界面扁平化.改善用户体验等,以下是微信团队的公告: 微信公众平台改版说明 1. 允许在图文消息中加入跳转链接 对开通了微信支付的公众号,允许在图文消息中加入跳转链接 2. 将服务中心升级为功能插件 每个公众号都可以在添加功能插件页面,看到该帐号能申请的所有功能. 3. 商户功能改名为微信支付 为便于企业或商家认知及申请微信支

微信回复文本消息和图文消息

微信自动回复,我的理解,大体可以分为: 1.关注平台后自动回复. 2.用户推送了文本,我们回复消息.包括文本消息,单图文消息和多图文消息等等. 3.click事件,响应事件后回复消息. 我们先写一个判断类型的函数: public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postS