主要的原因是再不破坏公众号以前的菜单的基础上增加自定义菜单,主要步骤如下:

1.通过微信提供的微信公众平台接口调试工具获取公众号的所有自定义菜单

  网址:https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index

  

                          图一          

  结果如下:

   

                          图二

  需要选择接口类型为定义菜单,然后输入公众号的access_token这个怎么获取请自行百度吧。

2.获取公众号自定义菜单

一般返回的都是json数据,其中主要针对view和click两中类型:
    可以参考API文档,看具体描述:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141014
    因为我们通过微信公众平台接口调试工具只能获取view和click类型的其它的类型我们无法获取,比如图二中返回的信息第二个菜单没有显示信息:图片、图文这些都获取不到,那怎么办呢?
    我们可以另一个自定义菜单API(获取自定义菜单配置接口)获取所有信息:
      网址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1434698695
      然后我写了一个简单的程序直接获取,如下:

      

/**
* @Author: lxl
* @describe
* @Date: 2019/1/8 17:37
* @Version 1.0
*/
public class ce { public static void main(String[] args){
//获取获取自定义菜单配置接口
// String url ="https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=" +
// "17_5dzl2i-Xdnr_i-o4nOJLu2wCgzL46k0hgdHqHYa76yzStcX1BiTtdnWVWxXa4sfQfomLkEpoC4B1fq0FkbynayLnaeVlAFT1PV0u5qJK_v_iqIKsng_Pj7LmZVEznRrz4jMD_Z5jZj-bnvyHNZJeAJDTFP";
// String userInfoResultStr = HttpUtil.doGetSSL(url);
// System.out.println(userInfoResultStr); //获取永久素材
String urlccc="https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=" +
"17_5dzl2i-Xdnr_i-o4nOJLu2wCgzL46k0hgdHqHYa76yzStcX1BiTtdnWVWxXa4sfQfomLkEpoC4B1fq0FkbynayLnaeVlAFT1PV0u5qJK_v_iqIKsng_Pj7LmZVEznRrz4jMD_Z5jZj-bnvyHNZJeAJDTFP"; JSONObject jsonObject = new JSONObject();
jsonObject.put("type","news"); //图片(image)、视频(video)、语音 (voice)、图文(news)
jsonObject.put("offset",);
jsonObject.put("count",);
String result = HttpUtil.doPost(urlccc, jsonObject.toJSONString());
System.out.println(result);
}
} //我们这里有两个接口 userInfoResultStr是可以获取所有的菜单配置,可以找到所有的信息,我们通过信息就知道了
//result是得到所有的永久素材,图二中的信息我们获取不到,不过我可以知道它是一个永久素材,所以通过此接口获取公众号所有的永久素材的meida_id。

3.创建自定义菜单

                        图三

其中body中数据说明:

{
"button":[
{
"name":"据常优",
"sub_button":[
{
"type":"view",
"name":"子菜单名称",
"url":"http://baidu.com",
"sub_button":[ ]
},
{
"type":"click",
"name":"我的客服",
"key":"MY_NEWS"
}
]
},
{
"name":"咨询",
"sub_button":[
{
"type":"click",
"name":"客服测试",
"key":"Customer_Service_Click"
},
{
"type": "media_id",
"name": "图片",
"media_id": "2eq5gndU2iY0gygbpOfxb238Jaypw-jJfBcUTK5awEg"
}
]
}
]
}

说明:

据常优:是我们的一级菜单,点击会弹出子菜单"子菜单名称"、"我的客服",其中"我的客服"就是我新添加的菜单。
咨询:是我们的一级菜单,点击会弹出子菜单"客服测试"、"图片",其中"图片"就是通过2中获取的永久素材,然后添加上的。 注:因文采有限,写的可能不是很详细,大家可以联系我。

通过微信公众号API复制公众号自定义菜单同时增加子菜单方法的更多相关文章

  1. java版微信公众号支付(H5调微信内置API)

    最近需要做微信公众号支付,网上找了大堆的代码,大多都只说了个原理,自己踩了太多坑,所有的坑,都会再下面的文章中标注,代码我也贴上最全的(叫我雷锋)!!! 第一步:配置支付授权目录 你需要有将你公司的微 ...

  2. 微信程序开发系列教程(四)使用微信API创建公众号自定义菜单

    大家可能经常看到一些微信公众号具有功能强大的自定义菜单,点击之后可以访问很多有用的功能. 这篇教程就教大家如何动手做一做. 这个教程最后实现的效果是:创建一个一级菜单"UI5", ...

  3. 【原创分享·微信支付】 C# MVC 微信支付教程系列之公众号支付

    微信支付教程系列之公众号支付         今天,我们接着讲微信支付的系列教程,前面,我们讲了这个微信红包和扫码支付.现在,我们讲讲这个公众号支付.公众号支付的应用环境常见的用户通过公众号,然后再通 ...

  4. C#开发微信门户及应用(27)-公众号模板消息管理

    通过模板消息接口,公众号能向关注其账号的用户发送预设模板的消息.模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消 ...

  5. C#开发微信门户及应用(26)-公众号微信素材管理

    微信公众号最新修改了素材的管理模式,提供了两类素材的管理:临时素材和永久素材的管理,原先的素材管理就是临时素材管理,永久素材可以永久保留在微信服务器上,微信素材可以在上传后,进行图片文件或者图文消息的 ...

  6. .NET微信公众号开发-2.0创建自定义菜单

    一.前言 开发之前,我们需要阅读官方的接口说明文档,不得不吐槽一下,微信的这个官方文档真的很烂,但是,为了开发我们需要的功能,我们也不得不去看这些文档. 接口文档地址:http://mp.weixin ...

  7. C#微信公众号开发 -- (五)自定义菜单创建

    公众号中,底部都是有自己定义的功能按钮,通过点击某个按钮来实现指定的业务逻辑操作. 下面就来说说这些按钮是怎样放到微信公众平台的,还是先来看看微信的官方解释: 请注意: 1.自定义菜单最多包括3个一级 ...

  8. 2014-07-24 .NET实现微信公众号的消息回复与自定义菜单

    今天是在吾索实习的第12天.我们在这一天中,基本实现了微信公众号的消息回复与自定义菜单的创建. 首先,是实现消息回复,其关键点如下: 读取POST来的数据流:Stream 数据流变量 = HttpCo ...

  9. 玩玩微信公众号Java版之四:自定义公众号菜单

    序: 微信公众号基本的菜单很难满足个性化及多功能的实现,那么微信能否实现自定菜单呢,具体的功能又如何去实现么?下面就来学习一下微信自定义公众号菜单吧! 自定义菜单接口可实现多种类型按钮,如下: 1.c ...

随机推荐

  1. Javascript校验密码复杂度的正则表达式

    1.密码中必须包含大小字母.数字.特称字符,至少8个字符,最多30个字符. var regex = new RegExp('(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.* ...

  2. 【CentOS】自定义服务添加

    1.创建服务需要执行的脚本 cd /sb/scripts vi td-agent-testlog #!/bin/bash # # /etc/rc.d/init.d/td-agent-DC01 # # ...

  3. GNU make 汇总

    = 是最基本的赋值 := 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值 $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件 makefile获取 ...

  4. Elasticsearch-6.7.0系列(五)5044端口 logstash安装

    centos7环境 下载logstash wget https://artifacts.elastic.co/downloads/logstash/logstash-6.7.0.tar.gz      ...

  5. http协议和telnet指令讲解

    http协议: 1.http:是网络传输协议:全称为:超文本传输协议: 关系:客户端和服务器的关系: 协议:就是一种规范: 常见的http和https两种,https是http的升级版 http协议: ...

  6. catkin-make: command not found 错误解决

    参考网址:https://answers.ros.org/question/212492/catkin_make-command-not-found/ zc@ubuntu:~ $ source /op ...

  7. 2018-2019-2 20175311 实验一《Java开发环境的熟悉》实验报告

    2018-2019-20175311实验一<Java开发环境的熟悉>实验报告 一.实验内容及步骤 (一):使用简单的JDK编译.运行java程序 题目一比较简单也比较基础,主要就是考查我们 ...

  8. OpenCV模板匹配函数matchTemplate详解

    参考文档:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/template_matchin ...

  9. Windows下访问控制管理

    参考URL: https://blog.csdn.net/u011801161/article/details/45567289 http://blog.nsfocus.net/analysis-wi ...

  10. Struts S2-048 RCE漏洞分析

    应该是S2-048目前最详细的一篇了.. 漏洞影响 Struts 2.3.x系列中的Showcase应用 使用了struts1 插件,并在使用ActionMessages时将客户端可控的参数拼接传递给 ...