和小猪一起搞微信公众号开发—创建自定义菜单

摘要:
前言前段时间,微信开通了一个非常棒的界面,即服务号码可以创建自定义菜单。本文主要介绍如何使用开发者模式定制菜单,以完成每个用户的个性化内容回复。打开自定义菜单后,公众号界面如下:当前自定义菜单最多可包含三个主菜单,每个主菜单最多可包括五个副菜单。请注意,创建自定义菜单后,由于微信客户端缓存,微信客户端需要24小时才能显示。
前言

前段时间,微信开放了一个非常牛逼的接口,那就是服务号可以创建自定义菜单了。有了这个接口之后,使用微信与公众号交流倒更像是一个与微信内部的一个app交流,大大的强化了公众号的灵活性。

在编辑模式下,公众号管理者可以直接编辑自定义菜单并设定用户点击菜单之后的回复内容或者跳转的指定链接。本文主要介绍使用开发者模式来自定义菜单完成每个用户的个性化内容回复。

介绍

自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示:

和小猪一起搞微信公众号开发—创建自定义菜单第1张

目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。

目前自定义菜单接口可实现两种类型按钮,如下:

  1. click: 用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event 的结构给开发者,并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
  2. view: 用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。

由第一点的click类型按钮可以延伸出很多的拓展功能,例如目前比较火的微信公众号:招商银行信用卡中心!利用用户点击的这个事件自定义生成一个链接,该链接加上用户的微信信息参数(例如openid)。用户点击链接进去之后可以进行相关的绑定信用卡的操作。这个操作过程如果不使用用户先进行操作而直接绑定是无法实现的。

而第二个view按钮则跟编辑模式类似,点击过后微信会使用其自带的浏览器打开一个链接。

实现

第一步:获取access_token

具体请参照 和小猪一起搞微信公众号开发—获取Access_token

第二步:设计好您的菜单列表并写出对应的json数据

小猪弄了个示例json数据

Postdata = "{'button':[{'type':'click','name':'只有一级C','key':'V1001_TODAY_MUSIC'},"
                 + "{'type':'view','name':'只有一级V','key':'www.ruiyuedigi.com'},"
                 + "{ 'name':'二菜单','sub_button':[{'type':'view','name':'二级view','url':'http://www.soso.com/'},"
                 + " {'type':'view','name':'二级view','url':'http://v.qq.com/'},"
                 + "{'type':'click','name':'二级Click','key':'V1001_111111'},"
                 + "{'type':'click','name':'菜单最多7个字','key':'V1001_22222'},"
                 + "{'type':'click','name':'最多5个菜单','key':'V1001_444444'}]}]"
                 + "}",

参数说明

参数是否必须说明
button一级菜单数组,个数应为1~3个
sub_button二级菜单数组,个数应为1~5个
type菜单的响应动作类型,目前有click、view两种类型
name菜单标题,不超过16个字节,子菜单不超过40个字节
keyclick类型必须菜单KEY值,用于消息接口推送,不超过128字节
urlview类型必须 网页链接,用户点击菜单可打开链接,不超过256字节
 

第三步:创建http请求微信接口

同样,小猪把示例代码帖出来

            #region https 请求
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ruiyue.zhuqi.test",//URL     必需项    
                Method = "post",//URL     可选项 默认为Get   
                Postdata = "{'button':[{'type':'click','name':'只有一级C','key':'V1001_TODAY_MUSIC'},"
                 + "{'type':'view','name':'只有一级V','key':'www.ruiyuedigi.com'},"
                 + "{ 'name':'二菜单','sub_button':[{'type':'view','name':'二级view','url':'http://www.soso.com/'},"
                 + " {'type':'view','name':'二级view','url':'http://v.qq.com/'},"
                 + "{'type':'click','name':'二级Click','key':'V1001_111111'},"
                 + "{'type':'click','name':'菜单最多7个字','key':'V1001_22222'},"
                 + "{'type':'click','name':'最多5个菜单','key':'V1001_444444'}]}]"
                 + "}",//Post数据     可选项GET时不需要写   
                Timeout = 100000,//连接超时时间     可选项默认为100000    
                ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000
                ContentType = "*",//返回类型    可选项有默认值   
                Allowautoredirect = false,//是否根据301跳转
            };
            HttpResult result = http.GetHtml(item);
            string html = result.Html;

这时候如果您接收到的html字符串为

{"errcode":0,"errmsg":"ok"}

那么恭喜你,你的自定义菜单创建成功了,

第四步:关注微信账号查看效果

wp_ss_20131207_0002

附上完整的Controller=》Action代码
        public ActionResult CreateMenu()
        {

            #region https 请求
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ruiyue.zhuqi.test",//URL     必需项    
                Method = "post",//URL     可选项 默认为Get   
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写   
                Cookie = "",//字符串Cookie     可选项   
                Referer = "",//来源URL     可选项   
                Postdata = "{'button':[{'type':'click','name':'只有一级C','key':'V1001_TODAY_MUSIC'},"
                 + "{'type':'view','name':'只有一级V','key':'www.ruiyuedigi.com'},"
                 + "{ 'name':'二菜单','sub_button':[{'type':'view','name':'二级view','url':'http://www.soso.com/'},"
                 + " {'type':'view','name':'二级view','url':'http://v.qq.com/'},"
                 + "{'type':'click','name':'二级Click','key':'V1001_111111'},"
                 + "{'type':'click','name':'菜单最多7个字','key':'V1001_22222'},"
                 + "{'type':'click','name':'最多5个菜单','key':'V1001_444444'}]}]"
                 + "}",//Post数据     可选项GET时不需要写   
                Timeout = 100000,//连接超时时间     可选项默认为100000    
                ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000  
                ContentType = "*",//返回类型    可选项有默认值   
                Allowautoredirect = false,//是否根据301跳转
            };
            HttpResult result = http.GetHtml(item);
            string html = result.Html;
            string cookie = result.Cookie;


            #endregion

            return Content(html);
        }

免责声明:文章转载自《和小猪一起搞微信公众号开发—创建自定义菜单》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇windows版本Sublime Text安装使用说明windows下react-native搭建环境下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

兰州大学2020年数学分析考研试题参考解答

251120兰州大学2020年数学分析考研试题参考解答 张祖锦1、 计算题 (每小题 10 分, 共 50 分) 张祖锦(1)、 对 , 试证: 跟锦数学跟锦考研小锦教学微信公众号有参考解答哦欢迎关注 张祖锦(2)、 计算曲面积分 其中 为椭球面 ( ). 跟锦数学跟锦考研小锦教学微信公众号有参考解答哦欢迎关注 张祖锦(3)、 计算曲线积分...

理解BPDU Guard的意义(BPDU Guard在全局配置与接口配置上的区别)

理解BPDU Guard的意义(BPDU Guard在全局配置与接口配置上的区别)     本文截自于博主CCNP交换技术稿件内容     BPDU Guard(BPDU保护),简单的讲它的意义就是一个不该接收BPDU的端口,比如被启动了portfast的端口,一旦收到BPDU报文,那么BPDU保护功能将会立即关闭该端口,并将端口状态置为error-dis...

WebApi:使用方法名或者控制器名作为接口地址

  今天遇到一个问题:新建的WebApi的项目生成的接口的地址都是以控制器的名字命名的,这样的话,在方法前添加ActionName就不起作用了,但之前一个项目是可以的。   接口代码: public class ValuesController : ApiController { /// <summary>...

自定义JS控件-简单示例

1、  业务需求: 制作 一个按钮对象,然后 像 winfrom  那样调用 就可以了: 首先 我们新建一个 MyControls的 JS文件:(插入如下代码) //这里运用的面向对象的思想 ,新建了一个按钮对象 var button = function (ClientId) { this.control = null;...

测试用例设计-电梯的测试用例

两部电梯的测试用例 界面测试: 外观(里面、外面)美观性 电梯空间尺寸是否和设计尺寸一致 按钮是否清晰和易懂 显示楼层的显示屏是否安装 是否联系外界的电话、紧急电话 设备检测说明书 安全规范说明书 灯 标识的承重和人数 扶手 镜子 仅提供可到达楼层的按钮 电梯制作的材料 空调 摄像头 功能测试: 测试电梯能否实现正常...

怎么获得当前点击的按钮的id名?

<body> <input id="t1" type="button" value='fff'> <input id="t2" type="button" value='fff'> <input id="t3" type="button" value='f...