第5、6课 MessageHandler:简化消息处理流程

删除回忆录丶 提交于 2020-08-10 13:36:15

文章说明:

  本文是基于盛派网络苏震巍老师的《微信公众号+小程序快速开发》课程笔记。

课程地址:

  https://study.163.com/course/courseMain.htm?courseId=1004873017

本课项目地址:

  https://github.com/wechatdeveloper/WechatVideoCourse

课程目标

  从0开始新建Asp.Net MVC Web项目引入Senparc.Weixin SDK,并把Web项目发布到应用服务器实现和微信公众号服务器的通讯接口对接,实现对用户不同消息(文本、图片、地理位置等)的处理以及根据需求返回不同的消息(文本、图片、图片消息等)。

课程准备 ①域名(需要备案) ②基础版云服务器一台

课程主题消息通讯的过程,如下图

课程代码参考:

1,Sample项目 https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Samples/net45-mvc

2,视频课程对应的项目WechatVideoCourse:https://github.com/JeffreySu/WechatVideoCourse

由于在视频录制之后,SDK有了很多个版本的更新迭代,部分接口和实现方法有更新;

所以我也新建立了课程对应的项目,使用的是最新版本的Senparc SDK。

项目名称:SenparcCourse , 大家也可作为参考,项目地址:https://github.com/wechatdeveloper/WechatVideoCourse

 

课程项目创建步骤和过程:

  1. 创建Asp.net MVC Web项目(.Net Framework 4.5):

    • 项目名称 :SenparcCourse

  2. 解决方案下添加新的类库项目:

    • 类库名称 :SenparcCourse.Service , 给Web项目提供基础服务

    • Web项目引用类库项目

  3. Web 项目和类库都安装Nuget包:

    • Senparc.Weixin.mp

  4. SenparcCourse.Service 项目下添加类:

    • 消息上下文类:CustomerMessageContext.cs

    • 消息处理类:CustomerMessageHandler.cs

  5. MVC Web项目下添加Controller

    • WeixinController.cs ,添加方法实现和微信服务器的验证

  6. 复制Github Sample中的web.config 配置参数

    • WeixinAppId,Secret ,Token配置为和测试公众号一致

  7. 测试号配置应用服务器的URL信息

    • 配置后,返回是否成功的消息

  8. WeixinController 接收微信服务器消息交给MessageHandler处理后,再返回给微信服务器:

    Wexin/Index 接收处理用户消息

    1. messageHandler , 接收、处理、返回用户消息

    2. messageHandler.SaveRequestMessageLog(); //记录Request日志

    3. messageHandler.SaveResponseMessageLog(); //记录Response日志

    4. postModel.EncodingAESKey = EncodingAESKey;//根据自己后台的设置保持一致,消息加密处理

    5. messageHandler.OmitRepeatedMessage = true;//消息去重,如果微信服务器发给应用服务器的消息没有得到响应,5秒内 微信服务器会连续发送相同MsgId的消息

    6. var maxRecordCount = 10; // 配置每个人上下文消息储存的最大数量

       

    消息处理类:CustomerMessageHandler.cs

    1. 用户请求消息 (RequestMessage)

    2. 响应消息返回给用户(ResponseMessage)

    3. TextKeywordHandler 用户消息关键字处理

    4. OnTextRequest 文字消息处理

    5. OnTextOrEventRequest 文字、消息统一处理方法

    6. 关键字消息回复

      `var keyWordHandler = requestMessage.StartHandler(false)

      .Keyword("",()=>{}) //关键字处理

      Keywords(new string[] { "exit", "quit", "close" }, () => {})//多个关键字`

      .Regex(@"^http", () => {}) //正则表达式

    7. OnExcuteing 消息的前置处理,如检查消息的合法性

    8. OnExcuted 消息后置处理 ,如添加签名

    9. base.GetCurrentMessageContext().Result.ExpireMinutes = 10; ///消息没有响应时候的会话过期时间

    10. base.CancelExcute = true;//取消以后所有的消息回复

    11. return new ResponseMessageNoResponse(); //不返回任何消息

    12. DefaultResponseMessage , MessageHandler中没有处理到的消息类型给个默认的处理

 

Web项目发布后,在测试号管理后台填写接口配置信息的URL 和 Token

如果配置失败,可F12打开调试窗口,查看失败原因

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!