约束:
1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。
3、创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
内容:
自定义菜单接口可实现多种类型按钮:
1、click:点击推事件用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者,并且带上按钮中开发者填写的key值;
2、view:跳转URL用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。
3、scancode_push:扫码推事件用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者。
4、scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框,用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。
5、pic_sysphoto:弹出系统拍照发图,用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。
6、pic_photo_or_album:弹出拍照或者相册发图,用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。
7、pic_weixin:弹出微信相册发图器,用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。
8、location_select:弹出地理位置选择器,用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。
9、media_id:下发消息(除文本消息)用户点击media_id类型按钮后,微信服务器会将开发者填写的永久素材id对应的素材下发给用户,永久素材类型可以是图片、音频、视频、图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。
10、view_limited:跳转图文消息URL,用户点击view_limited类型按钮后,微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL,永久素材类型只支持图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。
创建菜单接口
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
自定义菜单查询接口:
http请求方式:GET
https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN
自定义菜单删除接口:
http请求方式:GET
https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN
click点击后微信服务器推送XML数据:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[CLICK]]></Event>
<EventKey><![CDATA[EVENTKEY]]></EventKey>
</xml>
| 参数 | 描述 |
| ToUserName |
开发者微信号 |
| FromUserName |
发送方帐号(一个OpenID) |
| CreateTime |
消息创建时间 (整型) |
| MsgType |
消息类型,event |
| Event |
事件类型,CLICK |
| EventKey |
事件KEY值,与自定义菜单接口中KEY值对应 |
view点击后微信服务器推送XML数据:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[VIEW]]></Event>
<EventKey><![CDATA[www.qq.com]]></EventKey>
<MenuId>MENUID</MenuId>
</xml>
| 参数 | 描述 |
| ToUserName |
开发者微信号 |
| FromUserName |
发送方帐号(一个OpenID) |
| CreateTime |
消息创建时间 (整型) |
| MsgType |
消息类型,event |
| Event |
事件类型,VIEW |
| EventKey |
事件KEY值,设置的跳转URL |
| MenuID |
指菜单ID,如果是个性化菜单,则可以通过这个字段,知道是哪个规则的菜单被点击了。 |
scancode_push:
<xml><ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName>
<FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName>
<CreateTime>1408090502</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[scancode_push]]></Event>
<EventKey><![CDATA[6]]></EventKey>
<ScanCodeInfo><ScanType><![CDATA[qrcode]]></ScanType>
<ScanResult><![CDATA[1]]></ScanResult>
</ScanCodeInfo>
</xml>
| 参数 | 描述 |
| ToUserName |
开发者微信号 |
| FromUserName |
发送方帐号(一个OpenID) |
| CreateTime |
消息创建时间(整型) |
| MsgType |
消息类型,event |
| Event |
事件类型,scancode_push |
| EventKey |
事件KEY值,由开发者在创建菜单时设定 |
| ScanCodeInfo |
扫描信息 |
| ScanType |
扫描类型,一般是qrcode |
| ScanResult |
扫描结果,即二维码对应的字符串信息 |
scancode_waitmsg:
<xml><ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName>
<FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName>
<CreateTime>1408090606</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[scancode_waitmsg]]></Event>
<EventKey><![CDATA[6]]></EventKey>
<ScanCodeInfo><ScanType><![CDATA[qrcode]]></ScanType>
<ScanResult><![CDATA[2]]></ScanResult>
</ScanCodeInfo>
</xml>
| 参数 | 描述 |
| ToUserName |
开发者微信号 |
| FromUserName |
发送方帐号(一个OpenID) |
| CreateTime |
消息创建时间 (整型) |
| MsgType |
消息类型,event |
| Event |
事件类型,scancode_waitmsg |
| EventKey |
事件KEY值,由开发者在创建菜单时设定 |
| ScanCodeInfo |
扫描信息 |
| ScanType |
扫描类型,一般是qrcode |
| ScanResult |
扫描结果,即二维码对应的字符串信息 |
pic_sysphoto:
<xml><ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName>
<FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName>
<CreateTime>1408090651</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[pic_sysphoto]]></Event>
<EventKey><![CDATA[6]]></EventKey>
<SendPicsInfo><Count>1</Count>
<PicList><item><PicMd5Sum><![CDATA[1b5f7c23b5bf75682a53e7b6d163e185]]></PicMd5Sum>
</item>
</PicList>
</SendPicsInfo>
</xml>
| 参数 | 描述 |
| ToUserName |
开发者微信号 |
| FromUserName |
发送方帐号(一个OpenID) |
| CreateTime |
消息创建时间 (整型) |
| MsgType |
消息类型,event |
| Event |
事件类型,pic_sysphoto |
| EventKey |
事件KEY值,由开发者在创建菜单时设定 |
| SendPicsInfo |
发送的图片信息 |
| Count |
发送的图片数量 |
| PicList |
图片列表 |
| PicMd5Sum |
图片的MD5值,开发者若需要,可用于验证接收到图片 |
pic_photo_or_album:
<xml><ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName>
<FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName>
<CreateTime>1408090816</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[pic_photo_or_album]]></Event>
<EventKey><![CDATA[6]]></EventKey>
<SendPicsInfo><Count>1</Count>
<PicList><item><PicMd5Sum><![CDATA[5a75aaca956d97be686719218f275c6b]]></PicMd5Sum>
</item>
</PicList>
</SendPicsInfo>
</xml>
| 参数 | 描述 |
| ToUserName |
开发者微信号 |
| FromUserName |
发送方帐号(一个OpenID) |
| CreateTime |
消息创建时间 (整型) |
| MsgType |
消息类型,event |
| Event |
事件类型,pic_photo_or_album |
| EventKey |
事件KEY值,由开发者在创建菜单时设定 |
| SendPicsInfo |
发送的图片信息 |
| Count |
发送的图片数量 |
| PicList |
图片列表 |
| PicMd5Sum |
图片的MD5值,开发者若需要,可用于验证接收到图片 |
pic_weixin:
<xml><ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName>
<FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName>
<CreateTime>1408090816</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[pic_weixin]]></Event>
<EventKey><![CDATA[6]]></EventKey>
<SendPicsInfo><Count>1</Count>
<PicList><item><PicMd5Sum><![CDATA[5a75aaca956d97be686719218f275c6b]]></PicMd5Sum>
</item>
</PicList>
</SendPicsInfo>
</xml>
| 参数 | 描述 |
| ToUserName |
开发者微信号 |
| FromUserName |
发送方帐号(一个OpenID) |
| CreateTime |
消息创建时间 (整型) |
| MsgType |
消息类型,event |
| Event |
事件类型,pic_weixin |
| EventKey |
事件KEY值,由开发者在创建菜单时设定 |
| SendPicsInfo |
发送的图片信息 |
| Count |
发送的图片数量 |
| PicList |
图片列表 |
| PicMd5Sum |
图片的MD5值,开发者若需要,可用于验证接收到图片 |
location_select:
<xml><ToUserName><![CDATA[gh_e136c6e50636]]></ToUserName>
<FromUserName><![CDATA[oMgHVjngRipVsoxg6TuX3vz6glDg]]></FromUserName>
<CreateTime>1408091189</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[location_select]]></Event>
<EventKey><![CDATA[6]]></EventKey>
<SendLocationInfo><Location_X><![CDATA[23]]></Location_X>
<Location_Y><![CDATA[113]]></Location_Y>
<Scale><![CDATA[15]]></Scale>
<Label><![CDATA[ 广州市海珠区客村艺苑路 106号]]></Label>
<Poiname><![CDATA[]]></Poiname>
</SendLocationInfo>
</xml>
| 参数 | 描述 |
| ToUserName |
开发者微信号 |
| FromUserName |
发送方帐号(一个OpenID) |
| CreateTime |
消息创建时间 (整型) |
| MsgType |
消息类型,event |
| Event |
事件类型,location_select |
| EventKey |
事件KEY值,由开发者在创建菜单时设定 |
| SendLocationInfo |
发送的位置信息 |
| Location_X |
X坐标信息 |
| Location_Y |
Y坐标信息 |
| Scale |
精度,可理解为精度或者比例尺、越精细的话 scale越高 |
| Label |
地理位置的字符串信息 |
| Poiname |
朋友圈POI的名字,可能为空
|