c#使用微信接口开发微信门户应用中微信消息的处理和应答的示例
这篇文章主要介绍c#使用微信接口开发微信门户应用中微信消息的处理和应答的示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1、微信的消息应答交互
我们知道,微信的服务器架起了客户手机和开发者服务器的一个桥梁,通过消息的传递和响应,实现了与用户的交互操作,下面是它的消息流程图。
微信向开发者服务器请求的消息包含了多种类型,不过基本来说,分为了文本消息处理、事件消息处理、语音消息的识别,以及成为开发者之前的那个消息认证操作基本分类,下面是我绘制的一个消息分类图,其中介绍了这几种关系,以及各自的消息细化分类。
对于这些消息的请求,我们在开发服务器端,需要编写相关的逻辑进行对应给的处理,然后给微信服务器平台回应消息即可。
在前一篇的随笔里面我贴过代码,介绍微信消息处理的入口操作,代码如下所示。 代码如下:
publicvoidProcessRequest(HttpContextcontext) { //WHC.Framework.Commons.LogTextHelper.Info("测试记录"); stringpostString=string.Empty; if(HttpContext.Current.Request.HttpMethod.ToUpper()=="POST") { using(Streamstream=HttpContext.Current.Request.InputStream) { Byte[]postBytes=newByte[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> ///<paramname="postStr">POST方式提交的数据</param> privatevoidExecute(stringpostStr) { WeixinApiDispatchdispatch=newWeixinApiDispatch(); stringresponseContent=dispatch.Execute(postStr); HttpContext.Current.Response.ContentEncoding=Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); }
里面的WeixinApiDispatch就是一个分发的管理类,它提取请求消息的内容,并构建不同类型的消息参数,传递给不同的响应函数进行处理,然后返回封装好的XML内容,作为响应。
具体的代码处理逻辑如下图所示。
这个消息处理接口,其实就是定义好一系列的对请求消息的处理操作,参数是不同给的消息对象,具体的代码定义如下所示(由于篇幅原因,省略部分接口,具体可以参考上图)。
代码如下:
///<summary> ///客户端请求的数据接口 ///</summary> publicinterfaceIWeixinAction { ///<summary> ///对文本请求信息进行处理 ///</summary> ///<paramname="info">文本信息实体</param> ///<returns></returns> stringHandleText(RequestTextinfo); ///<summary> ///对图片请求信息进行处理 ///</summary> ///<paramname="info">图片信息实体</param> ///<returns></returns> stringHandleImage(RequestImageinfo); ///<summary> ///对订阅请求事件进行处理 ///</summary> ///<paramname="info">订阅请求事件信息实体</param> ///<returns></returns> stringHandleEventSubscribe(RequestEventSubscribeinfo); ///<summary> ///对菜单单击请求事件进行处理 ///</summary> ///<paramname="info">菜单单击请求事件信息实体</param> ///<returns></returns> stringHandleEventClick(RequestEventClickinfo); }
从上面的代码可以看出,不同的消息,到处理函数这里,就以不同的消息实体类的方式传递过来了(注意:实体类是我根据程序开发需要自己定义的,非微信本身的实体类),这样非常方便我们处理操作,否则每次需要解析不同的消息内容,很容易出现问题,这样强类型的数据类型,提高了我们开发微信应用的强壮型和高效性。这些实体类的对象有一定的继承关系的,他们的继承关系如下所示。
2、微信的管理接口
上面的消息分类是微信服务器向开发者服务器发送的消息请求操作,还有一种消息,是我们开发者服务器向微信服务器进行的消息请求或者响应,这种这里暂且称之为微信的管理接口,它表明了我们可以通过这些接口进行相关的消息回复或者数据管理操作。它的分类图如下所示。
微信的回复消息处理,它也和上面小节的信息一样,它也是继承自BaseMessage实体类的(同样,下图的实体类及其继承关系也是自定义的,方便程序开发),它的关系如下所示
回复的消息,一般用的最多的是文本消息和图文消息。
文本消息的效果如下所示。
图文消息,可以增加图片,还可以增加详细的链接页面,是非常好看的一种效果,对于一些内容比较多,希望展现更好效果的,一般采用这种,效果如下所示。
以上是“c#使用微信接口开发微信门户应用中微信消息的处理和应答的示例”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
EasyWechat如何开发微信公众号自动回复
-
微信开发怎样直接访问本地调试
微信开发怎样直接访问本地调试这篇文章主要为大家分析了微信开发怎样直...
-
微信开发中的自定菜单该如何创建
微信开发中的自定菜单该如何创建这篇文章主要为大家分析了微信开发中的...
-
如何实现微信打开网址添加在浏览器中打开提示
-
微信被限制登录的原因有哪些
-
微信中文件撤回时间延长了多久
-
微信提示登录环境异常的原因有哪些
这篇文章主要介绍微信提示登录环境异常的原因有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信提示登录...
-
微信开发之用户与姓名不匹配指的是什么意思
这篇文章给大家分享的是有关微信开发之用户与姓名不匹配指的是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过...
-
微信聊天中拍了拍指的是什么意思
-
微信莫名退出登录原因有哪些
小编给大家分享一下微信莫名退出登录原因有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!微信莫名退出登录原因:...