Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明
上一篇《Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明》介绍了如何通过通用接口获取AccessToken,有了AccessToken,我们就可以来操作自定义菜单,以及其他的高级接口,这一篇单讲自定义菜单。
一、自定义菜单规则
- 自定义菜单分为一级菜单和二级菜单。
- 一级菜单数量为1-3个,即打开公众账号直接可以看到排列在最下方的最多3个按钮。一级菜单的文字最多不能超过16字节(相当于8个汉字)。
- 二级菜单从属于一级菜单,数量为1-5个。二级菜单的文字不最多不能超过40字节(相当于20个汉字)。
- 无论一级菜单还是二级菜单,都有两个触发事件可以选择,分别是:点击(click,值不能超过128字节)和打开网址(view,url不能超过256个字节)。
- 当一个一级菜单下有二级菜单存在的时候,这个一级菜单按钮被点击不会有任何事件发生。
二、创建菜单
使用Senparc.Weixin.MP SDK创建自定义菜单非常简单。只需三步:
第一步:获取AccessToken
var accessToken = AccessTokenContainer.TryGetToken(appId, appSecret).access_token;
PS:如果第三步中使用AppId取代AccessToken,则这一步可以省略。
第二步:组织菜单内容
ButtonGroup bg = new ButtonGroup(); //单击
bg.button.Add(new SingleClickButton()
{
name = "单击测试",
key = "OneClick",
type = ButtonType.click.ToString(),//默认已经设为此类型,这里只作为演示
}); //二级菜单
var subButton = new SubButton()
{
name = "二级菜单"
};
subButton.sub_button.Add(new SingleClickButton()
{
key = "SubClickRoot_Text",
name = "返回文本"
});
subButton.sub_button.Add(new SingleClickButton()
{
key = "SubClickRoot_News",
name = "返回图文"
});
subButton.sub_button.Add(new SingleClickButton()
{
key = "SubClickRoot_Music",
name = "返回音乐"
});
subButton.sub_button.Add(new SingleViewButton()
{
url = "http://weixin.senparc.com",
name = "Url跳转"
});
bg.button.Add(subButton);
第三步:提交到微信服务器
var result = CommonApi.CreateMenu(accessToken, bg);
上面SingleClickButton和SingleViewButton分别对应了click和view两种菜单响应方式。
三、菜单查询
查询菜单同样需要按照上面的方式获取AccessToken,然后只需要一行代码:
var result = CommonApi.GetMenu(accessToken);
得到的result.menu的结构即类似上述创建菜单时的ButtonGroup bg变量。
四、菜单删除
得到AccessToken后,删除菜单同样只需要一行代码:
var result = CommonApi.DeleteMenu(accessToken);
五、菜单响应事件
无论是click还是view,服务器都会收到不同的事件响应(见《Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler》,分别触发OnEvent_ClickRequest()和OnEvent_ViewRequest()。
不同的是,click之后客户端可以得到返回信息,而view在收到请求后,无论返回什么信息,客户端都无法收到(直接打开URL了)。
六、自定义菜单可视化编辑器
目前盛派网络在两个地方提供了免费的自定义菜单可视化编辑器,免去大家需要运行代码才能操作菜单的困境:
- 第一代:http://sdk.weixin.senparc.com/Menu

- 第二代:微微嗨(http://www.weiweihi.com),注册添加微信公众账号之后即可获得一系列强大的管理功能(下图为微微嗨第一版,现已更新,可同样在后台左侧菜单找到)。

七、个性化菜单
见:Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明
系列教程索引
地址:http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html
- Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者
- Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证
- Senparc.Weixin.MP SDK 微信公众平台开发教程(四):Hello World
- Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
- Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler
- Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题
- Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十九):MessageHandler 的未知类型消息处理
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十):使用菜单消息功能
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试
Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明的更多相关文章
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能
在Senparc.Weixin.dll v4.5.7版本开始,我们提供了Web代理功能,以方便在受限制的局域网内的应用可以顺利调用接口. 有关的修改都在Senparc.Weixin/Utilities ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明
前不久微信上线了个性化菜单接口,Senparc.Weixin SDK也已经同步更新. 本次更新升级Senparc.Weixin.MP版本到v13.5.2,依赖Senparc.Weixin版本4.5.4 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证
要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(四):Hello World
============= 以下写于2013-07-20 ============= 这一篇文章其实可以写在很前面,不过我还是希望开发者们尽多地了解清楚原理之后再下手. 通过上一篇Senparc.W ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
Senparc.Weixin.MP SDK已经涵盖了微信6.x的所有公共API. 整个项目的源代码以及已经编译好的程序集可以在这个项目中获取到:https://github.com/JeffreySu ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler
上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK>我们讲述了如何使用Senparc.Weixin.MP SDK ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题
从这篇文章中我们已经了解了微信公众平台消息传递的方式,这种方式有一个先天的缺陷:不同用户的请求都来自同一个微信服务器,这使得常规的Session无法使用(始终面对同一个请求对象,况且还有对方服务器Co ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明
一.基础说明 这里说的“通用接口(CommonAPIs)”是使用微信公众账号一系列高级功能的必备验证功能(应用于开发模式). 我们通过微信后台唯一的凭证,向通用接口发出请求,得到访问令牌(Access ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
微信官方的多客服接口原理是通过用户发送的信息,开发者服务器返回一条指定类型的响应信息,使用户的对话状态切换到官方的多客服状态(持续一段时间),这段时间内用户发送的所有信息都不会到达开发者的服务器,而是 ...
随机推荐
- R in a nutshell(连载)
data(cars)dim(cars)names(cars)summary(cars)plot(cars, xlab = "Speed (mph)", ylab = "S ...
- python基础第四天(1)
冒泡算法--算法 需求:请按照从小到大对列表 [13, 22, 6, 99, 11] 进行排序 思路:相邻两个值进行比较,将较大的值放在右侧,依次比较! 第一步 li = [13, 22, 6, 99 ...
- dom4j使用xpath报异常 Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/NamespaceContext
Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/NamespaceContext ...
- Win7 64位 VS2015环境编译cegui-0.8.5
首先是去官网下载源码与依赖库 http://cegui.org.uk/ 然后得提一下,编译DX11版本带Effects11框架的话会有问题,也就是默认情况编译有问题,这是因为VS2015升级后编译器对 ...
- Maven使用第三方jar文件的两种方法
转于http://blog.csdn.net/youhaodeyi/article/details/1729116 主要用于回查与标记 在Maven中,使用第三方库一般是通过pom.xml文件中定义的 ...
- SQL一致性错误修复SQL
USE master; ); SET @databasename = 'BenlaiTask'; ALTER DATABASE BenlaiTask SET SINGLE_USER WITH ROLL ...
- Head First 设计模式读书笔记
在网上学习了一段时间设计模式,总感觉不系统,很容易忘,最近买书,学习了<Head First设计模式>,受益匪浅,特做此记录,以便激励自己不断的向后学习. 原书JAVA版本,本次学习记录及 ...
- Java printf
- 通过uCGUIBulider4.0建立的ucGUI文件,控件汉字不能显示问题解决办法
由于uCGUIBulider4.0不能在64位操作系统中运行,于是在电脑上通过VMware Workstation Pro搭建虚拟的32位的win7环境,然后把win7中用uCGUIBulider4. ...
- iOS Developer:真机测试
如果出现ios development一项为灰色不可点击状态,苹果的说法是 如果您要为此电脑添加证书,请revoke以前的证书后添加,或者通过以前的mac导出证书 原文不记得了,大概这个意思,苹果不希 ...