接口調用請求說明
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,操作更方便哦