实例:用C#.NET手把手教你做微信公众号开发(15)--事件消息处理之点击菜单1
用户点击自定义菜单后,微信会把点击事件推送给开发者,请注意,点击菜单弹出子菜单,不会产生上报。
微信用户点击菜单时,会通过微信服务器转发两种事件给你的服务器,一种是拉取消息时的事件推送;另一种是跳转链接时的事件推送。
本篇先讲第一种。
一、消息格式
推送XML数据包示例:
123456789

二、操作演示


三、代码实现
在接收到微信服务器发来的事件之后,首先由指定的接口网页AccessWx.aspx对事件类型进行判别,然后交给指定的事件处理类处理和回应。在本系列文章第1篇介绍的AccessWx.aspx.cs中开始部分引入命名空间using QinMing.Weixin.EventHandlerMenuClick;
并完善下面处理CLICK这一段,增加本篇给出的点击菜单触发键值事件处理环节。
else if(Event == "CLICK"){//对用户点击菜单触发的click事件处理,使用QinMing.Weixin.EventHandlerMenuClick命名空间下的MenuClickEventDeal类MenuClickEventDeal med = new MenuClickEventDeal();Response.Write(med.DealResult(weixinXML)); }
在命名空间QinMing.Weixin.EventHandlerMenuClick下新建一个类MenuClickEventDeal,用来处理微信服务器发来的点击菜单事件。记得类源码文件要放在App_Code目录下!下面是点击菜单事件处理源码:
QinMingWeixinEventHandlerMenuClick.cs文件内容如下:
using System;
using System.Web;
using System.Xml;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using QinMing.Config;
using QinMing.Tools;
using QinMing.Weixin.ReturnContent;namespace QinMing.Weixin.EventHandlerMenuClick
{//事件消息处理:点击菜单clickpublic class MenuClickEventDeal :System.Web.UI.Page{public string DealResult(string weixinXML){string content = DealMenuClick(weixinXML); return content;}public string DealMenuClick(string weixinXML){string strresponse = "";XmlDocument doc = new XmlDocument();doc.LoadXml(weixinXML);XmlNodeList list = doc.GetElementsByTagName("xml");XmlNode xn = list[0];string FromUserName = xn.SelectSingleNode("//FromUserName").InnerText; //关注用户的加密后openidstring ToUserName = xn.SelectSingleNode("//ToUserName").InnerText; //公众微信号原始IDstring MsgType=xn.SelectSingleNode("//MsgType").InnerText;string Event=xn.SelectSingleNode("//Event").InnerText;string EventKey=xn.SelectSingleNode("//EventKey").InnerText;//保存点击菜单click事件SaveEvent(FromUserName, ToUserName, EventKey);if(EventKey == "14"){//菜单自定义键值14的处理ReturnMsg rm = new ReturnMsg();strresponse = rm.ReturnText(FromUserName, ToUserName, "您刚点击的菜单键值为" + EventKey);}//给管理员发送粉丝点击菜单通知QinMing.WeixinTemplateMessage.SendTemplateMessage.SendRemindMsg("管理员openid", "粉丝点击菜单信息提醒" + FromUserName, "http://www.yourweb.com/OneUser.aspx?open_id=" + FromUserName); return strresponse;}//保存事件信息public void SaveEvent(string FromUserName, string ToUserName,string EventKey){SqlConnection conn = new SqlConnection(QinMingConfig.DatabaseConnStr);conn.Open();SqlCommand cmd = new SqlCommand();cmd.Connection = conn;cmd.CommandText = "insert into weixin_recv_event (msg_type,event_type,open_id,gh_id,recv_time,event_key) "+ "values ('event','CLICK','" + FromUserName + "','" + ToUserName + "',getdate(),'" + EventKey + "') ";//QinMingTools.WriteLog("sql语句:", cmd.CommandText);cmd.ExecuteScalar();if (conn.State == ConnectionState.Open){conn.Close();conn.Dispose();}}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
