微信开发第十五章 自定义菜单开发
二、自定义菜单创建、查询和删除
还有一些关于这个特定结构体字段的说明:
参数 | 是否必须 | 说明 |
---|---|---|
button | 是 | 按钮数组,按钮个数应为2~3个 |
sub_button | 否 | 子按钮数组,按钮个数应为2~5个 |
type | 是 | 按钮类型,目前有click类型 |
name | 是 | 按钮描述,既按钮名字,不超过16个字节,子菜单不超过40个字节 |
key | 类型为click必须 | 按钮KEY值,用于消息接口(event类型)推送,不超过128字节 |
我估计有不少朋友会看的头晕,一是这个特定结构体传输过去时应该赋值给那个变量?二是这个结构体如何生成?首先传输过去不需要任何变量参数,其次这就是一个json格式数据,我们可以用数组来转换生成。
本来想做些JS效果的,但是这个菜单结构本来就很简单,就不多事了,上图三个区块分别对应三个底栏的主菜单,每个区块都有主菜单名、关键字和子菜单。
在说上面的菜单前先讲下自定义菜单的规则,无论是主菜单还是子菜单目前都是由最多三个属性组成的,即名称、关键字、类型(目前只有click,进行点击操作时会将关键字发送给微信后台),其中主菜单如果有子菜单的话,属性就两个,即名称、子菜单(点击操作时显示子菜单)。
如上所述我设计的这个简易版生成器忽略了类型选择,如果主菜单有子菜单时主菜单关键字其实是不记录的,子菜单没什么可变化的就两个属性名称和关键字,类型默认为click。
当然未来会有新的菜单类型出来,比如地理位置,在这个基础改动下也非常方便就能使用。下面详细说下这个菜单的输入框要填写什么。
主菜单名称:底栏显示的名字,建议4-5个中文字或者8-10个英文字符,否则会名称显示会出现省略号;
主菜单关键字:主菜单向后台发送的关键字,如果该菜单有子菜单则关键字失效。
子菜单:子菜单我使用了textarea,每个子菜单格式为“菜单名,关键字”,用换行来区分多个子菜单项。
进行三次循环,每次都会读取一个区块的菜单,如果该区块主菜单名称不为空,则判断是否有子菜单,没有子菜单则直接生成主菜单,否则读取子菜单,同时判断子菜单是否超过5个。
这里使用urlencode是因为中文在数组转json时会被编码为unicode,微信接口无法识别,所以得在json_encode前先来个编码,等转换后再用urldecode转回来,这样传输给接口的就是正常的中文了。
另外特定结构体的数组结构其实是[button]-》[main_menu]-》[sub_menu],所以三个主菜单最后是赋值给button这个数组的一个元素。
当特定结构体生成后分别执行新建make_menu类,删除旧菜单,创建新菜单,即:
$mk_menu=new make_menu(); $mk_menu->del_menu(); $mk_menu->create_new_menu($menu);
查询、删除菜单的代码非常简单大家可以自己看,分别是get_menu()和del_menu()两个函数。
三、接收自定义菜单关键字
自定义菜单生成后最重要的还是要和用户互动,那么如何进行互动呢?首先要理解自定义菜单到底是个什么玩意,其实点击菜单跟向微信公众平台发送一个文字是一样的,也就是用户输入文字公众平台自动回复可以做的事情理论上自定义菜单都可以完成!
但是有一点不同的是,用户输入文字时我们接收的消息类型是文字消息,但是自定义菜单的消息是事件推送,也就是它的类型是event,如果有看过我之前教程的朋友应该知道,可以通过这个类型的两个事件subscribe和unsubscribe来统计关注和取消关注的人数,菜单点击则是第三个类型“CLICK”。
也就是当后台捕捉到“CLICK”这个操作时就表示这是用户点击了自定义菜单,然后可以获取到EventKey(事件关键字),就是在创建菜单时设置的菜单关键字,后面的就不用我再详细说了吧。
相关文章
- 微信开发第一章 微信公众号的注册、设置与登陆
- 微信开发第二章 公众平台后台介绍
- 微信开发第三章 公众平台群发消息
- 微信开发第四章 公众平台编辑模式(上)
- 微信开发第五章 公众平台编辑模式(下)
- 微信开发第六章 公众账号自动回复
- 微信开发第七章 公众平台开发模式
- 微信开发第八章 新浪云计算平台注册和使用
- 微信开发第九章 用微信开发模式做欢迎词
- 微信开发第十章 公众账号发送欢迎图文消息
- 微信开发第十一章 公众账号自定义回复功能
- 微信开发第十二章 公众账号接收非文字消息
- 微信开发第十三章 公众账号接收非文字消息
- 微信开发第十四章 公司通讯录开发(一)
- 微信开发第十四章 公司通讯录开发(二)
- 微信开发第十四章 公司通讯录开发(三)
- 微信开发第十四章 公司通讯录开发(四)
- 微信开发教程 微信问答系统
- 微信开发第十五章 自定义菜单开发
- 微信开发第十六章 微信音乐播放器(一)
- 微信开发第十六章 微信音乐播放器(二)
- 微信开发第十六章 微信音乐播放器(三)