框架简介
更新日志
准备工作
安装使用
基础支持
接收消息
发送消息
用户管理
自定义菜单
实例演示
多客服功能
智能接口
推广支持
安全性
序
快速开始
接口
链接
定时器
协议
测试
建议
更新日志
1、类简介:添加自定义菜单。最多可以有三个一级菜单,每个一级菜单最多可以有五个菜单。一级菜单最多4个汉字,二级菜单最多7个汉字。创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
警告:设置菜单Menu::setMenu($menuList)参数结构和返回值重写,自1.4版本起不向下兼容。
注意:所有新增的菜单类型(除了click类型和view类型),仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户,旧版本微信用户点击后将没有回应,开发者也不能正常接收到事件推送。
摘自微信官方网站:目前自定义菜单接口可实现两种类型按钮,如下:
click:
用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者,并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
view:
用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值(即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。
总结一下哦,就是微信的菜单分两种,一种是view型,就是你设置一个网址,点了这个菜单之后就跳到你设置的网址去了。另一种就是click型,你设置一个key,然后用户点击的时候会通过本框架唯一入口wechat.php发送一个消息类型为event的请求,在wechatrequest.lib.php文件下的eventClick方法中可以使用。
1、新增“scancode_push:扫码推事件”类型菜单
用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。
2、新增“scancode_waitmsg:扫码推事件且弹出‘消息接收中’提示框”类型菜单
用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。
3、新增“pic_sysphoto:弹出系统拍照发图”类型菜单
用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。
4、新增“pic_photo_or_album:弹出拍照或者相册发图”类型菜单
用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。
5、新增“pic_weixin:弹出微信相册发图器”类型菜单
用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。
6、新增“location_select:弹出地理位置选择器”类型菜单
用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。
7、新增了以上6种菜单类型、view(点击跳转链接)的菜单类型的被动响应的支持。默认讲点击菜单的事件推送数据发送文本消息返回给用户。开发者请自行修改。
2、使用命名空间:use LaneWeChat\Core\Menu;
3、设置菜单:是所有的菜单数据全部发送一次,可不是每新增一个只发一个菜单。
Menu::setMenu($menuList);
$menuLis 是菜单列表,结构如下:
$menuList = array(
array('id'=>'1', 'pid'=>'0', 'name'=>'顶级分类一', 'type'=>'', 'code'=>''),
array('id'=>'2', 'pid'=>'1', 'name'=>'分类一子分类一', 'type'=>'click', 'code'=>'lane_wechat_menu_1_1'),
array('id'=>'3', 'pid'=>'1', 'name'=>'分类一子分类二', 'type'=>'1', 'code'=>'http://www.lanecn.com'),
array('id'=>'4', 'pid'=>'0', 'name'=>'顶级分类二', 'type'=>'1', 'code'=>'http://www.php.net/'),
array('id'=>'5', 'pid'=>'0', 'name'=>'顶级分类三', 'type'=>'2', 'code'=>'lane_wechat_menu_3'),
);
'id'是您的系统中对分类的唯一编号;
'pid'是该分类的上级分类,顶级分类则填写0;
'name'是分类名称;
'type'是菜单类型,如果该分类下有子分类请务必留空;
'type'的值从以下类型中选择:click、view、scancode_push、scancode_waitmsg、pic_sysphoto、pic_photo_or_album、pic_weixin、location_select。
'code'是view类型的URL或者其他类型的自定义key,如果该分类下有子分类请务必留空。
4、获取微信菜单:获取到的是已经设置过的菜单列表,格式为Json,是微信服务器返回的原始数据。
Menu::getMenu();
5、删除微信菜单:将会删除设置过的所有菜单(一键清空)。
Menu::delMenu();
Reply: Lane On 2015-06-16 10:09:52
View是填写url。点击跳转的。实例:http://lanewechat.lanecn.com/doc/main/aid-25
Reply: bbs On 2015-06-07 21:40:41
请问一下,如何在微信上面显示菜单?我在项目目录下建立一个index.php文件,代码如下: include 'wechatapi/lanewechat.php'; $menuList = array( array('id'=>'1', 'pid'=>'0', 'name'=>'菜单1', 'type'=>'', 'code'=>''), array('id'=>'2', 'pid'=>'0', 'name'=>'菜单2', 'type'=>'', 'code'=>''), ); $result = \LaneWeChat\Core\Menu::setMenu($menuList); echo $result; 为什么微信上面不显示菜单呢?好像执行不到我这个index.php文件一样。
Reply: Lane On 2015-06-16 10:34:38
你把http://lanewechat.lanecn.com/doc/main/aid-25这里面代码复制过去,试试就明白了
Reply: jianhua On 2015-11-06 16:59:49
菜单里面写中文的话微信接口会报错,如果将所有中文换成原文的话,工作正常。 下面是仅仅显示一个中文的报错,发现是"常规" 最后post的时候没有变成 %34%78之类。 是我这边的配置问题么? 谢谢指导。 string(612) "{"button":[{"name":"常规","sub_button":[{"name":"BB","type":"click","key":"key_2"},{"name":"CC","type":"view","url":"http://www.lanecn.com"},{"name":"MM","type":"location_select","key":"key_11","sub_button":[]}]},{"name":"DD","sub_button":[{"name":"EE","type":"scancode_waitmsg","key":"key_5","sub_button":[]},{"name":"FF","type":"scancode_push","key":"key_6","sub_button":[]}]},{"name":"GG","sub_button":[{"name":"HH","type":"pic_sysphoto","key":"key_8","sub_button":[]},{"name":"JJ","type":"pic_photo_or_album","key":"key_9","sub_button":[]},{"name":"KK","type":"pic_weixin","key":"key_10","sub_button":[]}]}]}" ---------------------- array(2) { ["errcode"]=> int(-1) ["errmsg"]=> string(35) "system error hint: [8KIxia0143vr19]" }
Reply: xiong On 2015-05-17 21:22:47
eventView方法无效,eventClick正常
回复