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

本篇主要介绍如何使用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                                     + "。\r\n您发送了文字信息:" + 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         }
时间: 2024-10-05 23:17:12

微信公众平台开发学习系列(二):微信公众平台接收消息与发送消息的相关文章

微信公众平台开发学习系列(三):网页授权获取用户基本信息

官方文档:http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html 在接口权限表 将其修改成服务器的域名 根据官方文档,需要一个授权页面链接,可以用封装好的OAuthApi.GetAuthorizeUrl()方法实现 1 menu.button.Add(new MenuFull_RootButton() { key = "link", name = "链接", type = Button

微信小程序开发学习(二)

一些官方API 总结了一些官方API,便于之后有用时针对性查找(发现官方给了好多好用的API)官方API文档 基础 wx.canIUse:判断小程序的API,回调,参数,组件等是否在当前版本可用,返回值为boolean. 使用${API}.${method}.${param}.${options}或者${component}.${attribute}.${option}方式来调用 参数说明 ${API}代表API名字 ${method}代表调用方式,有效值为return,success, obj

web多终端开发学习系列(二)--- 硬件交互框架Phonegap学习

目前对于移动端.桌面端的原生开发各平台都有各自的开发语言.开发工具等.如果要开发出一个适配多个终端的系统,我们需要用各自的平台工具分别开发出各自的应用,这对于一个团队或者一个开发人员来说要求非常高,并且非常耗时.前一篇学习了Bootstrap框架,对于多终端的界面适配有了解决方案.但一个系统除了与用户之间的交互外,其内部还可能需要与硬件进行交互来实现某些特殊需求,比如摄像头的调用,相册的获取等等.对于这些硬件的调用我们可以选择Phonegap. 介绍 Phonegap是一个适配多个终端进行硬件交

Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者

Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者 这一篇主要讲作为一名使用公众平台接口的开发者,你需要知道的一些东西.其中也涉及到一些微信官方的规定或比较掩蔽的注意点.欢迎补充! 我觉得做好成为开发者的准备比稀里糊涂开通微信后台的"高级"功能更重要,所以这一节先放在前面说. 一.公众平台的通讯过程 作为开发者,我们需要面对的主要有两个对象:微信服务器和应用程序(网站)服务器. 当微信用户向你的公众平台发送一条消息,实际上这条消息首先发送到微信服务器,由

微信公众号开发C#系列-1、微信公众平台注册

微信公众号简介 微信公众号分为服务号.订阅号.企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以. 我们所说的微信公众号开发主要指的是公众号的账号类型,公众号的账号类型分为订阅号.服务号.企业微信.小程序四种.关于他们之间的具体区别,官方是这样解释的 服务号:主要偏向于服务交互(功能类似12315,114,银行,提供绑定信息,服务交互),每月可群发4条消息:服务号适用人群:媒体.企业.政府或其他组织. 订阅号:主要偏向于为用户传达资讯,(功能类似报纸杂志,为用户提供新闻信息或娱乐趣事)

微信公众平台开发教程(二) 基本原理及消息接口

微信公众平台开发教程(二) 基本原理及消息接口 一.基本原理 在开始做之前,大家可能对这个很感兴趣,但是又比较茫然.是不是很复杂?很难学啊? 其实恰恰相反,很简单.为了打消大家的顾虑,先简单介绍了微信公众平台的基本原理. 微信服务器就相当于一个转发服务器,终端(手机.Pad等)发起请求至微信服务器,微信服务器,然后将请求转发给自定义服务(这就里就是我们的具体实现). 服务处理完毕,然后挥发给微信服务器,微信服务器再将具体响应回复到终端. 通信协议为:HTTP 数据格式为:XML 具体的流程如下图

微信公众平台开发(十二) 发送客服消息

原文:微信公众平台开发(十二) 发送客服消息 一.简介 当用户主动发消息给公众号的时候(包括发送信息.点击自定义菜单.订阅事件.扫描二维码事件.支付成功事件.用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数.此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务. 二.思路分析 官方文档中只提供了一个发送客服消息的接口,开发者只要POS

Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)

本文将介绍如何在 .NET Core 环境下,借助 SignalR 在小程序内使用 WebSocket.关于 WebSocket 和 SignalR 的基础理论知识不在这里展开,已经有足够的参考资料,例如参考 SignalR 的官方教程:https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-2.1 我们先看一下完成本教程内容后,在小程序内实现的 WebSocket 效果: 私有及群发消息

微信订阅号开发笔记(二)

微信开发的流程其实很简单 o(∩_∩)o 哈哈!在微信网站的编辑操作 额,就不说了.虽然有人问过.下面是我的微信开发过程,简单记录下. 成为开发者 材料:1.自己的服务器资源,百度的BAE,新浪的SAE都不错. 2.懂那么点编程语言. 3.注册微信公众号. 上面的都有了之后,就可以自己动手开发了.哇咔咔,好兴奋.有木有. 在登录进去之后,怎么成为开发者?不知道,自己看去. 开始coding吧. 1.验证 if (! empty ( $_GET ['echostr'] ) && ! empt