接口调用请求说明
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,操作更方便哦