C#开发微信门户及应用(3) 文本消息和图文消息应答
发布时间 - 2026-01-11 01:52:49 点击率:次微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下、学习下微信的相关开发,也就成为计划的安排事情之一了。本系列文章希望从一个循序渐进的角度上,全面介绍微信的相关开发过程和相关经验总结,希望给大家了解一下相关的开发历程。

在前面两篇两篇随笔《C#开发微信门户及应用(1)--开始使用微信接口》和《C#开发微信门户及应用(2)--微信消息的处理和应答》里面,大致介绍了我微信应用的框架构建,本随笔继续介绍这一主题,介绍消息应答里面的文本应答和图文应答的过程。
我们知道,给手机用户发送响应消息,它可以分为好多种方式,如回复文本消息、回复图片消息、回复语音消息、回复视频消息、回复音乐消息、回复图文消息等,如下所示。
而其中图片、视频、语音这三种方式,是需要开通微信认证才可以向用户发送存在微信服务器上的媒体信息,一般没有认证的公众号或者服务号,是不能发送这几种内容的。
1、实体信息关系及定义
在上一篇微信开发的随笔中,我展示了对接收消息和回复消息的应用实体类,这些实体类是我根据需要,根据开发需要,在应用层面对它们进行了封装,如回复的消息关系如下所示。
消息基类BaseMessage的实体类定义如下所示,它对日期构造了一个整形数值,并具备了一些常规的属性,并且还有一个重要的ToXML方法,用来给方法传递这些XML数据的。
/// <summary>
/// 基础消息内容
/// </summary>
[XmlRoot(ElementName = "xml")]
public class BaseMessage
{
/// <summary>
/// 初始化一些内容,如创建时间为整形,
/// </summary>
public BaseMessage()
{
this.CreateTime = DateTime.Now.DateTimeToInt();
}
/// <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 = DateTime.Now.DateTimeToInt();//重新更新
return MyXmlHelper.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>
/// 内容
/// </summary>
public string Content { 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; }
}
而其中的图文列表集合中的对象,它也是一个实体类型,包含了一些图文的链接,标题等信息,不在赘述。
2、消息的回复处理
如对于文本消息,我们可以用以下的方式进行处理。
ResponseText response = new ResponseText(info); response.Content = "抱歉,此功能暂未开通。"; result = response.ToXml();
对于图文消息,我们可能需要录入更多的消息才能返回更好的效果。
注意图文的消息,图片的尺寸最好按照官方的标准,否则在手机上看起来不好看,官方的标准好像是宽高是(360,200)像素
/// <summary>
/// 订阅或者显示公司信息
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
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.iqidi.com/WeixinImage/company.png";
entity.Url = "http://www.iqidi.com";
response.Articles.Add(entity);
result = response.ToXml();
return result;
}
我们来看看我公司的微信门户菜单,看起来是不是很酷呢。
对于这两种(文本消息、图文消息)用的地方是最多,很多微信门户,都主要是使用这两种方式进行响应。当然,我们还可以根据客户手机提交上来的各种消息进行不同的处理,请求消息的类型我在上一篇的随笔有介绍,如下所示。
需要关注了解整体效果,可以使用微信直接扫描二维码即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# C#微信文本消息
# C#微信图文消息
# C#微信消息应答
# C#开发微信门户及应用(2) 微信消息处理和应答
# C#微信开发之接收 / 返回文本消息
# C#微信公众号开发之接收事件推送与消息排重的方法
# c#使用微信接口开发微信门户应用中微信消息的处理和应答
# C#实现微信公众号群发消息(解决一天只能发一次的限制)实例分享
# C#微信开发之发送模板消息
# 所示
# 是一个
# 实体类
# 广州
# 这两种
# 两篇
# 这一
# 我在
# 还可以
# 第一个
# 最好的
# 也就
# 最多
# 具备了
# 可以用
# 不是很
# 把它
# 是一家
# 帐号
# 给大家
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
网站优化排名时,需要考虑哪些问题呢?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
Python自动化办公教程_ExcelWordPDF批量处理案例
BootStrap整体框架之基础布局组件
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
如何用AWS免费套餐快速搭建高效网站?
Android自定义listview布局实现上拉加载下拉刷新功能
详解Android图表 MPAndroidChart折线图
音乐网站服务器如何优化API响应速度?
如何在不使用负向后查找的情况下匹配特定条件前的换行符
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
浅析上传头像示例及其注意事项
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何在云服务器上快速搭建个人网站?
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
如何注册花生壳免费域名并搭建个人网站?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
javascript中的try catch异常捕获机制用法分析
iOS验证手机号的正则表达式
Laravel如何实现模型的全局作用域?(Global Scope示例)
如何登录建站主机?访问步骤全解析
Windows Hello人脸识别突然无法使用
如何在IIS7上新建站点并设置安全权限?
如何在Tomcat中配置并部署网站项目?
iOS中将个别页面强制横屏其他页面竖屏
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
Laravel如何优化应用性能?(缓存和优化命令)
JavaScript中的标签模板是什么_它如何扩展字符串功能
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
javascript如何操作浏览器历史记录_怎样实现无刷新导航
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
jquery插件bootstrapValidator表单验证详解
用v-html解决Vue.js渲染中html标签不被解析的问题
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
javascript读取文本节点方法小结
打造顶配客厅影院,这份100寸电视推荐名单请查收
Laravel如何记录自定义日志?(Log频道配置)
Android仿QQ列表左滑删除操作
Laravel storage目录权限问题_Laravel文件写入权限设置
再谈Python中的字符串与字符编码(推荐)
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法

