微信公众号中当用户手动点击了按钮,微信公众号会被动的向用户发送文字消息或者图文消息。
通过C#微信公众号开发 -- (五)自定义菜单创建 我们知道了如何将CLICK类型的按钮添加到自己的微信公众平台上面
通过C#微信公众号开发 -- (三)用户关注之后自动回复 我们知道了通过用户触发事件来被动向用户发送消息
那么自定义菜单的CLICK事件点击触发也就是这两者的完美结合,以点击今日歌曲为例
首先我们在WXOpera() 方法下添加一个CLICK事件的判断:
else if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "CLICK") { string key = wx.EventKey; switch (key) { case "V1001_TODAY_MUSIC": res = TodayMusic(wx); HttpContext.Current.Response.Write(res); HttpContext.Current.Response.End(); break; } }
这里的V1001_TODAY_MUSIC 其实就是自定义菜单中CLICK按钮的key
添加TodayMusic() 方法:
/// <summary> /// 加载今日歌曲 /// </summary> /// <param name="wx"></param> /// <returns></returns> private string TodayMusic(wxmessage wx) { //获取推送的今日歌曲 return sendPicTextMessage(wx, "今日歌曲推荐", "今天点击率最高,播放次数最高的歌曲!", "http://musicdata.baidu.com/data2/pic/a5c79cf978eb5302edca415cabf744f1/260983581/260983581.jpg", "http://www.cnblogs.com/HappyAnt/"); //?openid= + wx.FromUserName }
这里要说明的是sendPicTextMessage其实是将微信提供的发送消息代码的封装,其中五个参数分别表示:wxmessage对象,图文消息的标题,图文消息的内容,图文消息的图片,点击图文消息将要跳转的页面(这里依我的主页为例)。特别需要注意的是第五个参数,如果想要在跳转到的页面上获取微信用户的openid信息,只需要在链接地址后面加上:?openid= + wx.FromUserName 就可以了。
sendPicTextMessage 封装微信提供的发送图文消息代码:
/// <summary> /// 发送图文消息 /// </summary> /// <param name="_mode">微信发送用户信息包</param> /// <param name="title">标题</param> /// <param name="description">内容</param> /// <param name="picurl">图片地址</param> /// <param name="url">跳转地址</param> /// <returns></returns> private string sendPicTextMessage(wxmessage _mode, string title, string description, string picurl, string url) { string res = string.Format(Message_PicText, _mode.FromUserName, _mode.ToUserName, DateTime.Now, title, description, picurl, url); return res; } /// <summary> /// 图文消息 /// </summary> private static string Message_PicText { get { return @"<xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[{3}]]></Title> <Description><![CDATA[{4}]]></Description> <PicUrl><![CDATA[{5}]]></PicUrl> <Url><![CDATA[{6}]]></Url> </item> </Articles> </xml>"; } }
到这里一个简单的CLICK事件的应用就完成了,点击"今日歌曲"看看会有怎样的效果吧 ~(≧▽≦)/~