C#如何实现文本消息和图文消息的应答
创始人
2024-11-23 17:21:11
0次

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

C#如何实现文本消息和图文消息的应答

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

1、实体信息关系及定义

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

C#如何实现文本消息和图文消息的应答

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

    /// 
    /// 基础消息内容    /// 
    [XmlRoot(ElementName = "xml")]    public class BaseMessage
    {        /// 
        /// 初始化一些内容,如创建时间为整形,        /// 
        public BaseMessage()
        {            this.CreateTime = DateTime.Now.DateTimeToInt();
        }        /// 
        /// 开发者微信号        /// 
        public string ToUserName { get; set; }        /// 
        /// 发送方帐号(一个OpenID)        /// 
        public string FromUserName { get; set; }        /// 
        /// 消息创建时间 (整型)        /// 
        public int CreateTime { get; set; }        /// 
        /// 消息类型        /// 
        public string MsgType { get; set; }        public virtual string ToXml()
        {            this.CreateTime = DateTime.Now.DateTimeToInt();//重新更新
            return MyXmlHelper.ObjectToXml(this);
        }

    }

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

    /// 
    /// 回复文本消息    /// 
    [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;
        }        /// 
        /// 内容        ///         
        public string Content  { get; set; }
    }

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

    /// 
    /// 回复图文消息    /// 
    [System.Xml.Serialization.XmlRoot(ElementName = "xml")]    public class ResponseNews : BaseMessage
    {        public ResponseNews()
        {            this.MsgType = ResponseMsgType.News.ToString().ToLower();            this.Articles = new List();
        }        public ResponseNews(BaseMessage info) : this()
        {            this.FromUserName = info.ToUserName;            this.ToUserName = info.FromUserName;
        }        /// 
        /// 图文消息个数,限制为10条以内        /// 
        public int ArticleCount
        {            get
            {                return this.Articles.Count;
            }            set
            {
                ;//增加这个步骤才出来XML内容            }
        }        /// 
        /// 图文列表。        /// 多条图文消息信息,默认第一个item为大图,注意,如果图文数超过10,则将会无响应        /// 
        [System.Xml.Serialization.XmlArrayItem("item")]        public List Articles { get; set; }

    }

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

2、消息的回复处理

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

                ResponseText response = new ResponseText(info);
                response.Content = "抱歉,此功能暂未开通。";
                result = response.ToXml();

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

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

        /// 
        /// 订阅或者显示公司信息        /// 
        /// 
        /// 
        private string ShowCompanyInfo(BaseMessage info)
        {            string result = "";            //使用在微信平台上的图文信息(单图文信息)
            ResponseNews response = new ResponseNews(info);
            ArticleEntity entity = new ArticleEntity();
            entity.Title = "广州爱奇迪软件科技有限公司";
            entity.Description = "欢迎关注广州爱奇迪软件--专业的单位信息化软件和软件开发框架提供商,我们立志于为客户提供最好的软件及服务。\r\n";
            entity.Description += "我们是一家极富创新性的软件科技公司,从事研究、开发并销售最可靠的、安全易用的技术产品及优质专业的服务,帮助全球客户和合作伙伴取得成功。\r\n......(此处省略1000字,哈哈)";
            entity.PicUrl = "http://www.php.cn/";
            entity.Url = "http://www.php.cn/";

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

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

C#如何实现文本消息和图文消息的应答

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

C#如何实现文本消息和图文消息的应答

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...