此部分接口用于设置微信内公众号的界面
一、自定义菜单创建接口
自定义菜单指微信应用内公众号的菜单界面,由第三方服务器通过微信后台设置(json的形式),地址为post–https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
自定义菜单限制如下:
- 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
- 一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“…”代替。
- 创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
自定义菜单接口可实现多种按钮,这些按钮有不同的type类型,可以约定微信后台如何向第三方后台发送数据,这些type包括:
type | 描述 | 微信后台发送的数据 |
---|---|---|
click | 点击 | 发送按钮的key |
view | 打开开发者在按钮中填写的网页URL | |
scancode_push | 调起扫一扫,完成后显示结果,如果开发者在按钮中填入了URL,那么转入URL | 扫码结果 |
scancode_waitmsg | 与scancode_push不同的是会显示“消息接收中”提示框 | 扫码结果 |
pic_sysphoto | 调起相机 | 拍摄的照片 |
pic_photo_or_album | 弹出选择器供用户选择“拍照”或者“从手机相册选择” | 选择/拍摄的照片 |
pic_weixin | 调起微信相册 | 选择的照片 |
location_select | 调起地理位置选择工具 | 地理位置 |
media_id | 将开发者填写的永久素材id对应的素材下发给用户,永久素材类型可以是图片、音频、视频、图文消息 | |
view_limited | 打开开发者在按钮中填写的永久素材id对应的图文消息URL |
详细参数及示例请看微信公众平台-自定义菜单创建接口
二、自定义菜单查询接口
使用接口创建自定义菜单后,开发者还可使用接口查询自定义菜单的结构。另外请注意,在设置了个性化菜单后,使用本自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息。
地址为get–https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN
具体示例请看微信公众平台-自定义菜单查询接口
三、自定义菜单删除接口
使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。另请注意,在个性化菜单时,调用此接口会删除默认菜单及全部个性化菜单。
地址为get–https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN
四、自定义菜单事件推送
用户点击自定义菜单后,微信会把点击事件推送给开发者,请注意,点击菜单弹出子菜单,不会产生上报。
推送事件时包含很多信息,如开发者微信号、发送方账号、事件产生时间、消息类型等,其中重要的是事件类型(Event)、事件KEY(EventKey)等,下面介绍各类型按钮推送事件的重要域(完整域描述请看微信公众平台-自定义菜单事件推送)
点击菜单拉取消息时的事件推送
click返回参数 描述 Event 事件类型,CLICK EventKey 事件KEY值,与自定义菜单接口中KEY值对应 点击菜单跳转链接时的事件推送
view返回参数 描述 Event 事件类型,VIEW EventKey 事件KEY值,设置的跳转URL MenuID 指菜单ID,如果是个性化菜单,则可以通过这个字段,知道是哪个规则的菜单被点击了。 scancode_push:扫码事件的事件推送
参数 描述 Event 事件类型,scancode_push EventKey 事件KEY值,由开发者在创建菜单时设定 ScanCodeInfo 扫描信息 ScanType 扫描类型,一般是qrcode ScanResult 扫描结果,即二维码对应的字符串信息 scancode_waitmsg:扫码事件且弹出“消息接收中”提示框的事件推送
参数 描述 Event 事件类型,scancode_waitmsg EventKey 事件KEY值,由开发者在创建菜单时设定 ScanCodeInfo 扫描信息 ScanType 扫描类型,一般是qrcode ScanResult 扫描结果,即二维码对应的字符串信息 pic_sysphoto:弹出系统拍照发图的事件推送
参数 描述 Event 事件类型,pic_sysphoto EventKey 事件KEY值,由开发者在创建菜单时设定 SendPicsInfo 发送的图片信息 Count 发送的图片数量 PicList 图片列表 PicMd5Sum 图片的MD5值,开发者若需要,可用于验证接收到图片 pic_photo_or_album:弹出拍照或者相册发图的事件推送
参数 描述 Event 事件类型,pic_photo_or_album EventKey 事件KEY值,由开发者在创建菜单时设定 SendPicsInfo 发送的图片信息 Count 发送的图片数量 PicList 图片列表 PicMd5Sum 图片的MD5值,开发者若需要,可用于验证接收到图片 pic_weixin:弹出微信相册发图器的事件推送
参数 描述 Event 事件类型,pic_weixin EventKey 事件KEY值,由开发者在创建菜单时设定 SendPicsInfo 发送的图片信息 Count 发送的图片数量 PicList 图片列表 PicMd5Sum 图片的MD5值,开发者若需要,可用于验证接收到图片 location_select:弹出地理位置选择器的事件推送
参数 描述 Event 事件类型,location_select EventKey 事件KEY值,由开发者在创建菜单时设定 SendLocationInfo 发送的位置信息 Location_X X坐标信息 Location_Y Y坐标信息 Scale 精度,可理解为精度或者比例尺、越精细的话 scale越高 Label 地理位置的字符串信息 Poiname 朋友圈POI的名字,可能为空
五、个性化菜单接口
通过该接口,可以让公众号的不同用户群体看到不一样的自定义菜单。该接口开放给已认证订阅号和已认证服务号。
限制:
- 新增接口每日限制次数为2000次,删除接口也是2000次,测试个性化菜单匹配结果接口为20000次
- 最多只能设置为跳转到3个域名下的链接
- 创建个性化菜单之前必须先创建默认菜单
- 当用户身上的标签超过1个时,以最后打上的标签为匹配
- 个性化菜单的更新是会被覆盖的
个性化接口具体内容如下:
创建个性化菜单
地址:post–https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=ACCESS_TOKEN
创建个性化菜单与添加默认菜单一样,只是在后面加了matchrule字段,用于指定此个性化菜单适用于哪些群体。
添加的字段参数如下:参数 是否必须 说明 tag_id 否 用户标签的id,可通过用户标签管理接口获取 sex 否 性别:男(1)女(2),不填则不做匹配 client_platform_type 否 客户端版本,当前只具体到系统型号:IOS(1), Android(2),Others(3),不填则不做匹配 country 否 国家信息,是用户在微信中设置的地区,具体请参考地区信息表 province 否 省份信息,是用户在微信中设置的地区,具体请参考地区信息表 city 否 城市信息,是用户在微信中设置的地区,具体请参考地区信息表 language 否 语言信息,是用户在微信中设置的语言,具体请参考语言表 matchrule共六个字段,均可为空,但不能全部为空,至少要有一个匹配信息是不为空的。 country、province、city组成地区信息,将按照country、province、city的顺序进行验证,要符合地区信息表的内容。
添加成功后微信后台返回menuid删除个性化菜单
地址为:post–https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token=ACCESS_TOKEN
post信息为{“menuid”:”208379533”}
其根据menuid删除菜单测试个性化菜单匹配结果
地址为:post–https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token=ACCESS_TOKEN
post信息为{“user_id”:”weixin”}
其根据用户id查询此用户匹配的菜单内容
–
六、获取自定义菜单配置接口
本接口将会提供公众号当前使用的自定义菜单的配置,如果公众号是通过API调用设置的菜单,则返回菜单的开发配置,而如果公众号是在公众平台官网通过网站功能发布菜单,则本接口返回运营者设置的菜单配置。
此接口与自定义菜单查询接口的不同之处在于,此接口无论公众号的接口是如何设置的,都能查询到接口,而自定义菜单查询接口则仅能查询到使用API设置的菜单配置。
地址:get–https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=ACCESS_TOKEN