知识点

相关文章

更多

最近更新

更多

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

2019-03-02 00:50|来源: 网路

微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下、学习下微信的相关开发,也就成为计划的安排事情之一了。本系列文章希望从一个循序渐进的角度上,全面介绍微信的相关开发过程和相关经验总结,希望给大家了解一下相关的开发历程。本篇随笔主要基于上一篇《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实体类的(同样,下图的实体类及其继承关系也是自定义的,方便程序开发),它的关系如下所示

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

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

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

 

转载自:http://www.cnblogs.com/wuhuacong/p/3614175.html


转自:http://www.cnblogs.com/vip-ygh/p/3616200

相关问答

更多
  • 微信企业号虽然功能很强大,但里面只有一些简单的应用,企业号提供接口,需要第三方公司来开发各种功能,我知道的有企微、动酷,做的还不错。
  • 直接在百度输即速应用进入网站,下即速插件开发文档。
  • 主要是在交货前充分做好程序测试,是否能满足你的需求。 另外,售后服务一定要有保证,如果有更新协议的话最好确定更新时间和周期; 基本上就这样,最好选择一些信誉比较好的公司吧。企业开发微信小程序要明确自己的需求。 把需求提交给产品进行设计。 设计和开发做好小程序后提交审核最终上线。
  • 1. 微信小程序教程主要是前端技术。 2. 在学习下小程序的文档即可。
  • 1. 看你的资源是如何的。 2. 如果有好的技术就可以开发小程序。 3. 如果自己有实体的企业可以开发一个自己的小程序。
  • 微信小程序”开发之前必须要完成和注册认证。 您好,开发微信小程序之前必须要完成注册认证,你也可以找微信第三方开发商,具体你可以百度一下。 微信小程序申请流程如下: 1. 进入微信公众平台官方网站,点击右上方“立即注册”。 2. 在选择注册账号类型的页面,点击左下方的“小程序”。 3. 填写需要注册的邮箱、密码以及验证码后,点击“注册”按钮。注意:需要之前没有在公众号注册过的邮箱,每个邮箱仅能申请一个小程序,填写完成以后会发送一封确认邮件到邮箱。 4. 登录注册用的邮箱,激活账号。 5. 接下来填写主题类型、 ...
  • 这个按照功能来算费用的。 有的功能比较简单开发费用就比较小,有些就会比较大。 一般情况下普通的开发3000-5000元足够满足了, 如果需要深度开发,那就要1万以上也是很正常的。
  • 小猪cms本身就是收费的平台,何来免费这一说,不过是把原程序进行升级而已
  • 各个行业都有的。可以看下小猪CMS,,you shiyong
  • 不会,停用后就不发消息, 如果楼主只是不想让软件发送消息,可以开启消息免打扰模式。 进入微信界面,在微信选项中找到微信运动进入 点击右上的设置进入,向上划动屏幕,开启消息免打扰就可以(如果要关闭微信运动,点击当前界面的停用就可以将微信运动关闭掉)。