官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141016&token=&lang=zh_CN

业务描述:点击菜单,推送消息,消息内容为自定义的读取数据库信息之后,为用户推送的动态消息。

首先需要用代码实现自定义菜单,为对应的菜单指定click事件。

关于自定义菜单的创建及事件指定,请看上一篇文章,本篇主要介绍事件响应的实现。

MVC controller 中的代码如下:

public void MenuEventHandle()
{
#region 验证Token 此块代码只在启用服务器配置时执行一次验证token令牌,服务器配置启用之后可以删掉块内代码,相关代码请看验证微信签名那一篇
string echoStr = Request.QueryString["echoStr"];
string signature = Request.QueryString["signature"];
string timestamp = Request.QueryString["timestamp"];
string nonce = Request.QueryString["nonce"];
Log.logmsg("测试输出: echoStr = " + echoStr);
Log.logmsg("测试输出: signature = " + signature);
Log.logmsg("测试输出: timestamp = " + timestamp);
Log.logmsg("测试输出: nonce = " + nonce); if (AdminUtil.CheckSignature("基本设置中的Token令牌", signature, timestamp, nonce) && !string.IsNullOrEmpty(echoStr))
{
Response.Write(echoStr);
Response.End();
}
#endregion
Log.logmsg("开始执行按钮事件"); string postString = string.Empty;
if (HttpContext.Request.HttpMethod.ToUpper() == "POST")
{
using (Stream stream = HttpContext.Request.InputStream)
{
//获取微信提交过来的参数
Byte[] postBytes = new Byte[stream.Length];
stream.Read(postBytes, 0, (Int32)stream.Length);
postString = Encoding.UTF8.GetString(postBytes);
//对其进行处理
AdminUtil.MenuMessage(postString);
}
}
}

AdminUtil类

#region 处理应答消息
/// <summary>
/// 处理应答消息
/// </summary>
/// <param name="postStr">微信提交过来的参数</param>
/// <returns></returns>
public static string MenuMessage(string postStr)
{
string responseContent = "";
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(new System.IO.MemoryStream(System.Text.Encoding.GetEncoding("GB2312").GetBytes(postStr)));
XmlNode MsgType = xmldoc.SelectSingleNode("/xml/MsgType");
if (MsgType != null)
{
switch (MsgType.InnerText)
{
case "event":
responseContent = WXApi.MenuEventHandle(xmldoc);//事件处理
break;
//case "text":
// responseContent = TextHandle(xmldoc);//接受文本消息处理
// break;
default:
break;
}
}
return responseContent;
} #endregion

WXApi类:

 public static string MenuEventHandle(XmlDocument xmldoc)
{
string responseContent = "";
XmlNode Event = xmldoc.SelectSingleNode("/xml/Event");//事件类型,CLICK
XmlNode EventKey = xmldoc.SelectSingleNode("/xml/EventKey");//事件KEY值,与自定义菜单接口中KEY值对应
XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName");//开发者微信号
XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName");//发送方账号一个openid
if (Event != null)
{
//菜单单击事件
if (Event.InnerText.Equals("CLICK"))
{
if (EventKey.InnerText.Equals("V1001_01"))//可以进行相关内容的实现,如发送自定义的动态消息
{
Log.logmsg("Event=" + Event + ";EventKey=" + EventKey + ";ToUserName=" + ToUserName + ";FromUserName=" + FromUserName + "。");
AdminUtil.SendNewsMsg(FromUserName.InnerText, "进度提醒", "描述!", "", "");
}
}
}
return responseContent;
}

基本配置如下:

.net MVC 微信公众号 点击菜单拉取消息时的事件推送的更多相关文章

  1. 微信公众号开发C#系列-7、消息管理-接收事件推送

    1.概述 在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息.其中,某些事件推送在发生后,是允许 ...

  2. C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  3. C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  4. ASP.NET MVC 微信公众号支付,微信公众平台配置

    微信公众号支付,首先要登录微信公众号进行配置: 第一步:配置网页授权域名

  5. C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)

    文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们 ...

  6. asp.net mvc 微信公众号token验证

    本人的公众号要申请成为开发者,必须经过token认证.微信公众号的官方代码只列出了PHP代码的实例,明显是歧视.net用户.我用的asp.net mvc中的web api,结果调了好久都没有成功,最后 ...

  7. .net mvc 微信公众号 验证微信签名

    官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319&token=&lang=zh_CN ...

  8. JAVA微信公众号网页开发——将接收的消息转发到微信自带的客服系统

    如果公众号处于开发模式,普通微信用户向公众号发消息时,微信服务器会先将消息POST到开发者填写的url上,无法直接推送给微信自带的客服功能.如果需要把用户推送的普通消息推送到客服功能中,就需要进行代码 ...

  9. [3] 微信公众号开发 - 结合UEditor实现图文消息群发功能

    0.写在前面的话 如何实现微信平台后台管理中的,图文消息发送功能? 大概的过程如下: 通过类似表单的形式,将文章各部分内容提交到后台,封装成一个实体类,并持久化到数据库中 需要推送的时候,将不同的文章 ...

随机推荐

  1. 【R语言入门】R语言中的变量与基本数据类型

    说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...

  2. C语言讲义——注释

    注释 什么是注释?  --注释写在代码中的文字,不参与代码编译,不影响运行结果. 为什么要注释?--让代码可读性更强. C语言有两种注释: 单行注释 // 多行注释 /* */ 多行注释可以只有一行, ...

  3. LeetCode 004 Median of Two Sorted Arrays

    题目描述:Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respectively. F ...

  4. 【入门】ZooKeeper 相关概念总结

    1. 前言 相信大家对 ZooKeeper 应该不算陌生.但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢? 拿我自 ...

  5. Java读书计划和分享

    写在前面 为什么要写这些呢? 接触java已经有三年多了,感触颇多,比如从0到60,只要勤实践.勤思考,很快就可以入门,从60分到满分极致,则单单不是凭借工作年限或者什么就可以.曾经也有过一段迷茫时期 ...

  6. PyQt(Python+Qt)学习随笔:Qt Designer中部件的三个属性sizeHint缺省尺寸、minimumSizeHint建议最小尺寸和minimumSize最小尺寸

    在Qt Designer中的每个部件,要调整部件大小,需要关注三个部件大小相关的属性:sizeHint.minimumSizeHint.minimumSize: 1.sizeHint:为布局管理器中部 ...

  7. CNVD漏洞证书(2)

    第二张CNVD的原创漏洞证书. 关于证书申请可以看我之前写的这篇博客: https://www.cnblogs.com/Cl0ud/p/12720413.html 继续加油

  8. clion2020最新安装破解版教程 内含激活码、破解补丁、无限重置时间插件

    clion是一款开发C.C++等相关程序的利器,到目前为止已经更新到2020.3版本啦!还没有升级的小伙伴们赶紧升级啦,本文教大家如何安装clion2020.3版本并且破解,此方法亲测100%可以永久 ...

  9. 【题解】Railway [Uva10263]

    [题解]Railway [Uva10263] 传送门:\(\text{Railway [Uva10263]}\) [题目描述] 给出点 \(M\) 以及一个由 \(n\) 条线段依次相连的类曲形图(由 ...

  10. Codeforces Edu Round 50 A-D

    A. Function Height 由于只能提升\(x\)为奇数的点,每个三角形的底一定为\(2\), 则要求我们求: \(2 * (h_1 + h_2 + - + h_n) / 2 = k\),使 ...