C#微信公众号开发 -- (六)自定义菜单事件之CLICK

微信公众号中当用户手动点击了按钮,微信公众号会被动的向用户发送文字消息或者图文消息。

通过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事件的应用就完成了,点击"今日歌曲"看看会有怎样的效果吧  ~\(≧▽≦)/~

 

posted @ 2016-03-14 16:41  搬山的蚂蚁  阅读(2857)  评论(2编辑  收藏  举报