zoukankan      html  css  js  c++  java
  • 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事件的应用就完成了,点击"今日歌曲"看看会有怎样的效果吧  ~(≧▽≦)/~

  • 相关阅读:
    spring框架学习(八)spring管理事务方式之注解配置
    spring框架学习(七)spring管理事务方式之xml配置
    spring框架学习(六)AOP事务及spring管理事务方式之Template模板
    laravel--基础知识
    关于JDBC访问存储过程的问题
    SQlite数据库框架:LitePal
    SpringBoot+Mybatis 自动创建数据表(适用mysql)
    MySQL(四)DQL语言——条件查询
    SpringBoot整合Druid数据源
    MySQL数据表查询操作
  • 原文地址:https://www.cnblogs.com/HappyAnt/p/5276226.html
Copyright © 2011-2022 走看看