全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#开发微信门户及应用(2) 微信消息处理和应答

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

1、微信的消息应答交互

我们知道,微信的服务器架起了客户手机和开发者服务器的一个桥梁,通过消息的传递和响应,实现了与用户的交互操作,下面是它的消息流程图。

微信向开发者服务器请求的消息包含了多种类型,不过基本来说,分为了文本消息处理、事件消息处理、语音消息的识别,以及成为开发者之前的那个消息认证操作基本分类,下面是我绘制的一个消息分类图,其中介绍了这几种关系,以及各自的消息细化分类。

对于这些消息的请求,我们在开发服务器端,需要编写相关的逻辑进行对应给的处理,然后给微信服务器平台回应消息即可。

在前一篇的随笔里面我贴过代码,介绍微信消息处理的入口操作,代码如下所示。

  public void ProcessRequest(HttpContext context)
  {
   //WHC.Framework.Commons.LogTextHelper.Info("测试记录");

   string postString = string.Empty;
   if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
   {
    using (Stream stream = HttpContext.Current.Request.InputStream)
    {
     Byte[] postBytes = new Byte[stream.Length];
     stream.Read(postBytes, 0, (Int32)stream.Length);
     postString = Encoding.UTF8.GetString(postBytes);
    }

    if (!string.IsNullOrEmpty(postString))
    {
     Execute(postString);
    }
   }
   else
   {
    Auth();
   }
  }

其中的Execute(postString);就是对消息的处理函数,它实现了对不同消息的分发处理过程。‘

    /// <summary>
    /// 处理各种请求信息并应答(通过POST的请求)
    /// </summary>
    /// <param name="postStr">POST方式提交的数据</param>
    private void Execute(string postStr)
    {
      WeixinApiDispatch dispatch = new WeixinApiDispatch();
      string responseContent = dispatch.Execute(postStr);

      HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
      HttpContext.Current.Response.Write(responseContent);
    }

里面的WeixinApiDispatch就是一个分发的管理类,它提取请求消息的内容,并构建不同类型的消息参数,传递给不同的响应函数进行处理,然后返回封装好的XML内容,作为响应。

具体的代码处理逻辑如下图所示。

这个消息处理接口,其实就是定义好一系列的对请求消息的处理操作,参数是不同给的消息对象,具体的代码定义如下所示(由于篇幅原因,省略部分接口,具体可以参考上图)。

  /// <summary>
  /// 客户端请求的数据接口
  /// </summary>
  public interface IWeixinAction
  {
    /// <summary>
    /// 对文本请求信息进行处理
    /// </summary>
    /// <param name="info">文本信息实体</param>
    /// <returns></returns>
    string HandleText(RequestText info);

    /// <summary>
    /// 对图片请求信息进行处理
    /// </summary>
    /// <param name="info">图片信息实体</param>
    /// <returns></returns>
    string HandleImage(RequestImage info);

...........................


    /// <summary>
    /// 对订阅请求事件进行处理
    /// </summary>
    /// <param name="info">订阅请求事件信息实体</param>
    /// <returns></returns>
    string HandleEventSubscribe(RequestEventSubscribe info);

    /// <summary>
    /// 对菜单单击请求事件进行处理
    /// </summary>
    /// <param name="info">菜单单击请求事件信息实体</param>
    /// <returns></returns>
    string HandleEventClick(RequestEventClick info);

..............................
  }

从上面的代码可以看出,不同的消息,到处理函数这里,就以不同的消息实体类的方式传递过来了(注意:实体类是我根据程序开发需要自己定义的,非微信本身的实体类),这样非常方便我们处理操作,否则每次需要解析不同的消息内容,很容易出现问题,这样强类型的数据类型,提高了我们开发微信应用的强壮型和高效性。这些实体类的对象有一定的继承关系的,他们的继承关系如下所示。

2、微信的管理接口

上面的消息分类是微信服务器向开发者服务器发送的消息请求操作,还有一种消息,是我们开发者服务器向微信服务器进行的消息请求或者响应,这种这里暂且称之为微信的管理接口,它表明了我们可以通过这些接口进行相关的消息回复或者数据管理操作。它的分类图如下所示。

微信的回复消息处理,它也和上面小节的信息一样,它也是继承自BaseMessage实体类的(同样,下图的实体类及其继承关系也是自定义的,方便程序开发),它的关系如下所示

回复的消息,一般用的最多的是文本消息和图文消息。

文本消息的效果如下所示。

图文消息,可以增加图片,还可以增加详细的链接页面,是非常好看的一种效果,对于一些内容比较多,希望展现更好效果的,一般采用这种,效果如下所示。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# C#  # 微信  # 消息  # C# 窗口过程消息处理 WndProc的方法详解  # C#微信公众号开发之使用MessageHandler简化消息处理流程  # C#微信公众号开发之消息处理  # c# 重载WndProc  # 实现重写“最小化”的实现方法  # 所示  # 实体类  # 单击  # 程序开发  # 是一个  # 实现了  # 他们的  # 还可以  # 也就  # 基础上  # 有一定  # 很容易  # 我们可以  # 给大家  # 数据管理  # 几种  # 自定义  # 可以看出  # 循序渐进  # 如火如荼 


相关文章: 如何在IIS7上新建站点并设置安全权限?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  nginx修改上传文件大小限制的方法  平台云上自助建站如何快速打造专业网站?  制作网站怎么制作,*游戏网站怎么搭建?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  建站主机如何安装配置?新手必看操作指南  高端网站建设与定制开发一站式解决方案 中企动力  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何用PHP快速搭建高效网站?分步指南  如何快速搭建支持数据库操作的智能建站平台?  网站微信制作软件,如何制作微信链接?  如何设置并定期更换建站之星安全管理员密码?  建站之星如何助力企业快速打造五合一网站?  教程网站设计制作软件,怎么创建自己的一个网站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  北京网站制作公司哪家好一点,北京租房网站有哪些?  建站之星如何防范黑客攻击与数据泄露?  ui设计制作网站有哪些,手机UI设计网址吗?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  制作网站的软件免费下载,免费制作app哪个平台好?  建站主机类型有哪些?如何正确选型  网站制作公司,橙子建站是合法的吗?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何通过VPS建站无需域名直接访问?  网站制作话术技巧,网站推广做的好怎么话术?  建站之星后台密码遗忘或太弱?如何重置与强化?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  建站主机选购指南与交易推荐:核心配置解析  建站之星图片链接生成指南:自助建站与智能设计教程  设计网站制作公司有哪些,制作网页教程?  长沙做网站要多少钱,长沙国安网络怎么样?  网站制作新手教程,新手建设一个网站需要注意些什么?  建站ABC备案流程中有哪些关键注意事项?  名字制作网站免费,所有小说网站的名字?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  网站图片在线制作软件,怎么在图片上做链接?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何在阿里云通过域名搭建网站?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  Python路径拼接规范_跨平台处理说明【指导】  网站网页制作专业公司,怎样制作自己的网页?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  盘锦网站制作公司,盘锦大洼有多少5G网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。