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


    文章说明:

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

    课程地址:

      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打开调试窗口,查看失败原因

     

  • 相关阅读:
    do while 后面要加分号,你大爷的
    ATS push cache 测试
    ATS (apache traffic server) http_ui 设置与使用
    chrome 开发者工具使用一例
    beautiful soup 遇到class标签的值中含有空格的处理
    virtualbox sharefolder mount fail
    从wait角度调优
    Service Broker入门
    数据库建立初步
    只读账号设置-db_datareader
  • 原文地址:https://www.cnblogs.com/WechatDeveloper/p/SenparcWeixinSDK-Course-5-6.html
Copyright © 2020-2023  润新知