微信公众号开发-java版 腾讯课堂(自定义菜单 菜单点击事件)

接口调用请求说明

http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

click和view的请求示例

 {
     "button":[
     {    
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
      },
      {
           "name":"菜单",
           "sub_button":[
           {    
               "type":"view",
               "name":"搜索",
               "url":"http://www.soso.com/"
            },
            {
                 "type":"miniprogram",
                 "name":"wxa",
                 "url":"http://mp.weixin.qq.com",
                 "appid":"wx286b93c14bbf93aa",
                 "pagepath":"pages/lunar/index"
             },
            {
               "type":"click",
               "name":"赞一下我们",
               "key":"V1001_GOOD"
            }]
       }]
 }

参数说明

参数 是否必须 说明
button 一级菜单数组,个数应为1~3个
sub_button 二级菜单数组,个数应为1~5个
type 菜单的响应动作类型,view表示网页类型,click表示点击类型,miniprogram表示小程序类型
name 菜单标题,不超过16个字节,子菜单不超过60个字节
key click等点击类型必须 菜单KEY值,用于消息接口推送,不超过128字节
url view、miniprogram类型必须 网页 链接,用户点击菜单可打开链接,不超过1024字节。 type为miniprogram时,不支持小程序的老版本客户端将打开本url。
media_id media_id类型和view_limited类型必须 调用新增永久素材接口返回的合法media_id
appid miniprogram类型必须 小程序的appid(仅认证公众号可配置)
pagepath miniprogram类型必须 小程序的页面路径

菜单构建比较简单主要是实体类的封装和https post json格式请求就会自已生成菜单

菜单事件 例如

click类型点击 返回一条xml解析成map格式 与发送消息差不多 

{CreateTime=1552903454, EventKey=V1001_TODAY_MUSIC, Event=CLICK, ToUserName=gh_eb3a1258e5e0, FromUserName=orSqw0Wo12_jzKMLfW1VRu_WdiAM, MsgType=event}


这里的msgtype 为event  EventKey=V1001_TODAY_MUSIC  Event=CLICK

/**
     * 给用户发送消息 处理菜单事件
     * @param map
     * @return
     */
    public static String getResponse(Map<String, String> map) {
        BaseMessage msg = null;
        String msgType = map.get("MsgType");
        switch (msgType) {
            case "text":
                msg = dealTextMessage(map);
                break;
            case "image":

                break;
            case "voice":

                break;
            case "video":

                break;
            case "shortvideo":

                break;
            case "location":

                break;
            case "link":

                break;
            case "event":
                msg = dealEventMessage(map);
                break;
            default:
                break;
        }
        if (msg != null) {
            //xml解析对象
            XStream stream = new XStream();
            //启用xml注释
            stream.processAnnotations(TextMessage.class);
            stream.processAnnotations(NewsMessage.class);
            String s = stream.toXML(msg);
            return s;
        }
        return null;
    }
    /**
     * 菜单事件
     * @param map
     * @return
     */
    private static BaseMessage dealEventMessage(Map<String, String> map) {
        String event = map.get("Event");
        BaseMessage msg = null;
        switch (event) {
            case "CLICK":
                msg = switchClick(map);
                break;
            case "VIEW":
                break;


        }
        return msg;
    }
  /**
     * 处理click事件
     * @param map
     * @return
     */
    private static BaseMessage switchClick(Map<String, String> map) {
        BaseMessage msg = null;
        switch (map.get("EventKey")) {
            case "V1001_TODAY_MUSIC":
                msg = new TextMessage(map, "<<七友>>\n已记不起我也有权利爱人\n" +
                        "谁人曾照顾过我的感受\n" +
                        "待我温柔吻过我伤口\n" +
                        "能得到的安慰是失恋者得救后\n" +
                        "很感激忠诚的狗\n" +
                        "谁人曾介意我也不好受\n" +
                        "为我出头碰过我的手");
                break;
            case "V1001_GOOD":
                msg = new TextMessage(map, "感谢你的鼓励");
                break;
            case "V1001_TODAY_ZIXUN":
                msg = new TextMessage(map, "还没有哦");
                break;
        }
        return msg;
    }

还是由上一篇的给用户发送消息 延伸一下 视频中有整合提取图片文字功能,我没有做是第三方接口与聊天机器人 大同小异

效果图:

 百度云源码:

链接:https://pan.baidu.com/s/1gH3dn1GptN-aWfDyOBgP4g
提取码:xdv4
复制这段内容后打开百度网盘手机App,操作更方便哦

猜你喜欢

转载自www.cnblogs.com/cuinima/p/10553923.html