1. 程式人生 > >微信公眾號開發-java版 騰訊課堂(自定義菜單 菜單點擊事件)

微信公眾號開發-java版 騰訊課堂(自定義菜單 菜單點擊事件)

文字 bubuko pid json格式 實體類 第三方接口 推送 sos 標題

接口調用請求說明

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,操作更方便哦

微信公眾號開發-java版 騰訊課堂(自定義菜單 菜單點擊事件)