自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。
1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。
3、创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
自定义菜单接口可实现多种类型按钮总共有10种,最常见的有两种:
1、click:点击推事件用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
2、view:跳转URL用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。
至于构造curl请求函数和获取access_token这里就不用贴出来了,具体见
//自定义菜单栏
public function _createMenu(){
$curl = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$this->_getAccessToken();
$data = ' {
"button":[
{
"name":"常用服务",
"sub_button":[
{
"type":"view",
"name":"百度一下",
"url":"https://www.baidu.com/"
},
{
"type":"view",
"name":"腾讯视频",
"url":"http://v.qq.com/"
},
{
"type":"click",
"name":"创业杂谈",
"key":"TALK"
}]
},
{
"type":"click",
"name":"今日歌曲",
"key":"TODAY_MUSIC"
}]
}';
$result = $this->_request($curl,true,'POST',$data);
echo $result;
}
按钮类型为click类型的时候,在接收事件推送里边必须有与之对应的key值,否则得不到应有的响应。详见 微信消息管理之接收事件推送