Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明

    上一篇《Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明》介绍了如何通过通用接口获取AccessToken,有了AccessToken,我们就可以来操作自定义菜单,以及其他的高级接口,这一篇单讲自定义菜单。

 

一、自定义菜单规则

  1. 自定义菜单分为一级菜单和二级菜单。
  2. 一级菜单数量为1-3个,即打开公众账号直接可以看到排列在最下方的最多3个按钮。一级菜单的文字最多不能超过16字节(相当于8个汉字)。
  3. 二级菜单从属于一级菜单,数量为1-5个。二级菜单的文字不最多不能超过40字节(相当于20个汉字)。
  4. 无论一级菜单还是二级菜单,都有两个触发事件可以选择,分别是:点击(click,值不能超过128字节)和打开网址(view,url不能超过256个字节)。
  5. 当一个一级菜单下有二级菜单存在的时候,这个一级菜单按钮被点击不会有任何事件发生。

二、创建菜单

  使用Senparc.Weixin.MP SDK创建自定义菜单非常简单。只需三步:

  第一步:获取AccessToken

var accessToken = AccessTokenContainer.TryGetToken(appId, appSecret).access_token;

  第二步:组织菜单内容

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了)。 

六、自定义菜单可视化编辑器

  目前盛派网络在两个地方提供了免费的自定义菜单可视化编辑器,免去大家需要运行代码才能操作菜单的困境:

  1. 第一代:http://weixin.senparc.com/Menu
  2. 第二代:微微嗨(http://www.weiweihi.com),注册添加微信公众账号之后即可获得一系列强大的管理功能。

    系列教程索引:http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html

时间: 2024-09-20 03:23:00

Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明的相关文章

Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明 紧接上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>,这里专讲OAuth2.0. 理解OAuth2.0 首先我们通过一张图片来了解一下OAuth2.0的运作模式: 从上图我们可以看到,整个过程进行了2次"握手",最终利用授权的AccessToken进行一系列的请求,相关的过程说明如下: A:由客户端向服务器发出验证请求,请求中

Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明     这里所说的高级接口是指面向通过认证的服务号开通的高级功能.     高级功能大致可以分类为: 用户接口 分组接口 客服接口(有别于之前介绍的多客服) 群发接口 多媒体接口 二维码接口 模板消息接口(不是所有账号都可开通) OAuth2.0(相对比较复杂,后面会有专门介绍) 以上所有的接口都包含在Senparc.Weixin.MP.AdvancedAPIs命名空间下. 一些共同的操作 几乎所有的高

Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明 一.基础说明     这里说的"通用接口(CommonAPIs)"是使用微信公众账号一系列高级功能的必备验证功能(应用于开发模式).     我们通过微信后台唯一的凭证,向通用接口发出请求,得到访问令牌(AccessToken),然后使用访问令牌去使用各项需要身份验证的高级功能,例如自定义菜单.获取用户信息.单发消息.群发消息等等.     目前所有的服务号和通过认证的订阅号,都可以在微信公众账

Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册     微信公众平台(下面简称"公众平台")注册步骤和导航还是比较流畅的,因此这个教程对于上网经验丰富的朋友来说,有点多余.不过为了保持教程系列的完整性,这里还是认认真真把流程梳理一遍.   第一步:进入公众平台地址:https://mp.weixin.qq.com  第二步:如果还没有账号,点击右上角的立即注册按钮. 第三步:填写"1.基本信息",并点击[注册]: 第四

Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK     Senparc.Weixin.MP SDK已经涵盖了微信5.0的所有公共API,以及2013年10月29日升级之后大部分实用的接口.     整个项目的源代码以及已经编译好的程序集可以在这个项目中获取到:https://github.com/JeffreySu/WeiXinMPSDK       我们现在从无到有建立一个ASP.NET MVC项目,来看一下如何与微

Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者     这一篇主要讲作为一名使用公众平台接口的开发者,你需要知道的一些东西.其中也涉及到一些微信官方的规定或比较掩蔽的注意点.欢迎补充!     我觉得做好成为开发者的准备比稀里糊涂开通微信后台的"高级"功能更重要,所以这一节先放在前面说. 一.公众平台的通讯过程     作为开发者,我们需要面对的主要有两个对象:微信服务器和应用程序(网站)服务器.     当微信用户向你的公众平台发送一条消息,

Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证     要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方审核,审核通过之后,会在后台顶部出现"高级功能"菜单.     使用"高级功能">"开发模式"之前,必须有一个已经部署在Internet

Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明 为了方便大家开发LBS应用,SDK对常用计算公式,以及百度和谷歌的地图接口做了封装. 常用计算: 用于计算2个坐标点之间的直线距离:Senparc.Weixin.MP.Helpers.Distance(double n1, double e1, double n2, double e2) 根据距离获取维度差:Senparc.Weixin.MP.Helpers.GetLatitudeDifferenc

Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler     上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK>我们讲述了如何使用Senparc.Weixin.MP SDK对接微信最基础的验证API,这一篇我们将具体讲一下这个SDK处理微信消息的核心:MessageHandler.     有关MessageHandler的实现原理和说明,在这篇Wiki中已经

Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重 为了确保信息请求消息的到达率,微信服务器在没有及时收到响应消息(ResponseMessage)的情况下,会多次发送同一条请求消息(RequestMessage),包括MsgId等在内的所有文本内容都是一致的. 这种机制确保了在诸如网络状况不佳的情况下消息的回复成功率,但是有时候由于服务器负荷.本身请求过程就需要好几秒才能完成等情况,多次重复的消息反而成了服务器的负担,甚至对业务和数据也可能造成影响.