• 微信公众平台开发学习系列(二):微信公众平台接收消息与发送消息


    本篇主要介绍如何使用senparc来处理微信公众平台的接收消息与发送消息。

    首先微信端会将用户的发送的信息以post请求发送到填写的url上,服务端代码如下:

    1         [HttpPost]
    2         public ActionResult Get(PostModel postModel)
    3         {
    4             var messageHandler = new CustomMessageHandler(Request.InputStream, postModel);
    5 
    6             messageHandler.Execute();//执行微信处理过程
    7 
    8             return Content(messageHandler.ResponseDocument.ToString());
    9         }

    新建一个CustomMessageHandler类和一个CustomMessageContext类,CustomMessageHandler类继承MessageHandler<CustomMessageContext>,CustomMessageContext类继承MessageContext<IRequestMessageBase,IResponseMessageBase>,CustomMessageContext类的方法此处不贴出,主要是实现CustomMessageHandler类的方法,代码如下:

     1         public CustomMessageHandler(Stream inputStream, PostModel postModel)
     2             : base(inputStream, postModel)
     3         {
     4 
     5         }
     6 
     7         public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage)
     8         {
     9             var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); //ResponseMessageText指返回文本信息
    10             responseMessage.Content = "这条消息来自DefaultResponseMessage。"+requestMessage.MsgId;
    11             return responseMessage;
    12         }

    返回信息的格式多种多样,如:ResponseMessageText,ResponseMessageNews,ResponseMessageImage等。接收信息的格式也分很多种,不同格式有不同的处理方法:OnTextRequest,OnImageRequest,OnEvent_ViewRequest等。如果没有重写相应方法,就默认执行DefaultResponseMessage方法。本篇重写2个方法作为简单的例子。

    用户发送文本信息情况下的返回信息处理

    1         public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage)
    2         {
    3             var responseMessage = base.CreateResponseMessage<ResponseMessageText>();
    4             responseMessage.Content = "您的OpenID是:" + requestMessage.FromUserName     
    5                                     + "。
    您发送了文字信息:" + requestMessage.Content; 
    6             return responseMessage;
    7         }

    菜单点击事件情况下的返回信息处理

     1         public override IResponseMessageBase OnEvent_ClickRequest(RequestMessageEvent_Click requestMessage)
     2         {
     3             IResponseMessageBase reponseMessage = null;
     4             //菜单点击,需要跟创建菜单时的Key匹配
     5             switch (requestMessage.EventKey)
     6             {
     7                 case "OneClick":
     8                     {
     9                         var strongResponseMessage = CreateResponseMessage<ResponseMessageNews>();
    10                         reponseMessage = strongResponseMessage;
    11                         strongResponseMessage.Articles.Add(new Article()
    12                         {
    13                             Title = "您点击了菜单图文按钮",
    14                             Description = "您点击图文链接按钮,这是一条图文信息。",
    15                             PicUrl = "https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=3233073314,694013259&fm=58&s=39C718720E8EBE011B398BAC0300F024",
    16                             Url = "http://www.baidu.com"
    17                         });
    18                     }
    19                     break;
    20                 case "SubClickRoot_Text":
    21                     {
    22                         var strongResponseMessage = CreateResponseMessage<ResponseMessageText>();
    23                         reponseMessage = strongResponseMessage;
    24                         strongResponseMessage.Content = "您点击了子菜单按钮。";
    25                     }
    26                     break;
    27                 default:
    28                     {
    29                         var strongResponseMessage = CreateResponseMessage<ResponseMessageText>();
    30                         strongResponseMessage.Content = "您点击了按钮,EventKey:" + requestMessage.EventKey;
    31                         reponseMessage = strongResponseMessage;
    32                     }
    33                     break;
    34             }
    35 
    36             return reponseMessage;
    37         }
  • 相关阅读:
    自定义控件:瀑布流水字母
    Android ViewPager欢迎页+引导页+进入首页
    自定义控件:滑动开关按钮
    自定义控件:滑动开关按钮(自定义属性)
    关于div宽度和高度的100%设定
    html中的图片、css、js等路径加载问题
    Laravel 安装
    phpmyadmin数据库导入大小限制的修改
    linux套件安装过程中configure,make,make install的作用
    Ubuntu 12.04下PHP环境的搭建(LAMP)
  • 原文地址:https://www.cnblogs.com/dashuailuoli/p/5094116.html
Copyright © 2020-2023  润新知