自定義菜單能夠幫助公眾號(hào)豐富界面,讓用戶(hù)更好更快地理解公眾號(hào)的功能。開(kāi)啟自定義菜單后,公眾號(hào)界面如圖所示:
請(qǐng)注意:
- 自定義菜單最多包括3個(gè)一級(jí)菜單,每個(gè)一級(jí)菜單最多包含5個(gè)二級(jí)菜單。
- 一級(jí)菜單最多4個(gè)漢字,二級(jí)菜單最多8個(gè)漢字,多出來(lái)的部分將會(huì)以“...”代替。
- 創(chuàng)建自定義菜單后,菜單的刷新策略是,在用戶(hù)進(jìn)入公眾號(hào)會(huì)話(huà)頁(yè)或公眾號(hào)profile頁(yè)時(shí),如果發(fā)現(xiàn)上一次拉取菜單的請(qǐng)求在5分鐘以前,就會(huì)拉取一下菜單,如果菜單有更新,就會(huì)刷新客戶(hù)端的菜單。測(cè)試時(shí)可以嘗試取消關(guān)注公眾賬號(hào)后再次關(guān)注,則可以看到創(chuàng)建后的效果。?
自定義菜單接口可實(shí)現(xiàn)多種類(lèi)型按鈕,如下:
- click:點(diǎn)擊推事件用戶(hù)點(diǎn)擊click類(lèi)型按鈕后,微信服務(wù)器會(huì)通過(guò)消息接口推送消息類(lèi)型為event的結(jié)構(gòu)給開(kāi)發(fā)者(參考消息接口指南),并且?guī)习粹o中開(kāi)發(fā)者填寫(xiě)的key值,開(kāi)發(fā)者可以通過(guò)自定義的key值與用戶(hù)進(jìn)行交互;
- view:跳轉(zhuǎn)URL用戶(hù)點(diǎn)擊view類(lèi)型按鈕后,微信客戶(hù)端將會(huì)打開(kāi)開(kāi)發(fā)者在按鈕中填寫(xiě)的網(wǎng)頁(yè)URL,可與網(wǎng)頁(yè)授權(quán)獲取用戶(hù)基本信息接口結(jié)合,獲得用戶(hù)基本信息。
- scancode_push:掃碼推事件用戶(hù)點(diǎn)擊按鈕后,微信客戶(hù)端將調(diào)起掃一掃工具,完成掃碼操作后顯示掃描結(jié)果(如果是URL,將進(jìn)入U(xiǎn)RL),且會(huì)將掃碼的結(jié)果傳給開(kāi)發(fā)者,開(kāi)發(fā)者可以下發(fā)消息。
- scancode_waitmsg:掃碼推事件且彈出“消息接收中”提示框用戶(hù)點(diǎn)擊按鈕后,微信客戶(hù)端將調(diào)起掃一掃工具,完成掃碼操作后,將掃碼的結(jié)果傳給開(kāi)發(fā)者,同時(shí)收起掃一掃工具,然后彈出“消息接收中”提示框,隨后可能會(huì)收到開(kāi)發(fā)者下發(fā)的消息。
- pic_sysphoto:彈出系統(tǒng)拍照發(fā)圖用戶(hù)點(diǎn)擊按鈕后,微信客戶(hù)端將調(diào)起系統(tǒng)相機(jī),完成拍照操作后,會(huì)將拍攝的相片發(fā)送給開(kāi)發(fā)者,并推送事件給開(kāi)發(fā)者,同時(shí)收起系統(tǒng)相機(jī),隨后可能會(huì)收到開(kāi)發(fā)者下發(fā)的消息。
- pic_photo_or_album:彈出拍照或者相冊(cè)發(fā)圖用戶(hù)點(diǎn)擊按鈕后,微信客戶(hù)端將彈出選擇器供用戶(hù)選擇“拍照”或者“從手機(jī)相冊(cè)選擇”。用戶(hù)選擇后即走其他兩種流程。
- pic_weixin:彈出微信相冊(cè)發(fā)圖器用戶(hù)點(diǎn)擊按鈕后,微信客戶(hù)端將調(diào)起微信相冊(cè),完成選擇操作后,將選擇的相片發(fā)送給開(kāi)發(fā)者的服務(wù)器,并推送事件給開(kāi)發(fā)者,同時(shí)收起相冊(cè),隨后可能會(huì)收到開(kāi)發(fā)者下發(fā)的消息。
- location_select:彈出地理位置選擇器用戶(hù)點(diǎn)擊按鈕后,微信客戶(hù)端將調(diào)起地理位置選擇工具,完成選擇操作后,將選擇的地理位置發(fā)送給開(kāi)發(fā)者的服務(wù)器,同時(shí)收起位置選擇工具,隨后可能會(huì)收到開(kāi)發(fā)者下發(fā)的消息。
- media_id:下發(fā)消息(除文本消息)用戶(hù)點(diǎn)擊media_id類(lèi)型按鈕后,微信服務(wù)器會(huì)將開(kāi)發(fā)者填寫(xiě)的永久素材id對(duì)應(yīng)的素材下發(fā)給用戶(hù),永久素材類(lèi)型可以是圖片、音頻、視頻
、圖文消息。請(qǐng)注意:永久素材id必須是在“素材管理/新增永久素材”接口上傳后獲得的合法id。 view_limited:跳轉(zhuǎn)圖文消息URL用戶(hù)點(diǎn)擊view_limited類(lèi)型按鈕后,微信客戶(hù)端將打開(kāi)開(kāi)發(fā)者在按鈕中填寫(xiě)的永久素材id對(duì)應(yīng)的圖文消息URL,永久素材類(lèi)型只支持圖文消息。請(qǐng)注意:永久素材id必須是在“素材管理/新增永久素材”接口上傳后獲得的合法id。- article_id:用戶(hù)點(diǎn)擊 article_id 類(lèi)型按鈕后,微信客戶(hù)端將會(huì)以卡片形式,下發(fā)開(kāi)發(fā)者在按鈕中填寫(xiě)的圖文消息
- article_view_limited:類(lèi)似 view_limited,但不使用 media_id 而使用 article_id
注意: 草稿接口灰度完成后,將不再支持圖文信息類(lèi)型的 media_id 和 view_limited,有需要的,請(qǐng)使用 article_id 和 article_view_limited 代替
請(qǐng)注意,3到8的所有事件,僅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用戶(hù),舊版本微信用戶(hù)點(diǎn)擊后將沒(méi)有回應(yīng),開(kāi)發(fā)者也不能正常接收到事件推送。9~12,是專(zhuān)門(mén)給第三方平臺(tái)旗下未微信認(rèn)證(具體而言,是資質(zhì)認(rèn)證未通過(guò))的訂閱號(hào)準(zhǔn)備的事件類(lèi)型,它們是沒(méi)有事件推送的,能力相對(duì)受限,其他類(lèi)型的公眾號(hào)不必使用。
接口調(diào)用請(qǐng)求說(shuō)明
http請(qǐng)求方式:POST(請(qǐng)使用https協(xié)議) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
click和view的請(qǐng)求示例
{
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
},
{
"name":"菜單",
"sub_button":[
{
"type":"view",
"name":"搜索",
"url":"http://www.soso.com/"
},
{
"type":"miniprogram",
"name":"wxa",
"url":"http://mp.weixin.qq.com",
"appid":"wx286b93c14bbf93aa",
"pagepath":"pages/lunar/index"
},
{
"type":"click",
"name":"贊一下我們",
"key":"V1001_GOOD"
}]
}]
}
其他新增按鈕類(lèi)型的請(qǐng)求示例
{
"button": [
{
"name": "掃碼",
"sub_button": [
{
"type": "scancode_waitmsg",
"name": "掃碼帶提示",
"key": "rselfmenu_0_0",
"sub_button": [ ]
},
{
"type": "scancode_push",
"name": "掃碼推事件",
"key": "rselfmenu_0_1",
"sub_button": [ ]
}
]
},
{
"name": "發(fā)圖",
"sub_button": [
{
"type": "pic_sysphoto",
"name": "系統(tǒng)拍照發(fā)圖",
"key": "rselfmenu_1_0",
"sub_button": [ ]
},
{
"type": "pic_photo_or_album",
"name": "拍照或者相冊(cè)發(fā)圖",
"key": "rselfmenu_1_1",
"sub_button": [ ]
},
{
"type": "pic_weixin",
"name": "微信相冊(cè)發(fā)圖",
"key": "rselfmenu_1_2",
"sub_button": [ ]
}
]
},
{
"name": "發(fā)送位置",
"type": "location_select",
"key": "rselfmenu_2_0"
},
{
"type": "media_id",
"name": "圖片",
"media_id": "MEDIA_ID1"
},
{
"type": "view_limited",
"name": "圖文消息",
"media_id": "MEDIA_ID2"
},
{
"type": "article_id",
"name": "發(fā)布后的圖文消息",
"article_id": "ARTICLE_ID1"
},
{
"type": "article_view_limited",
"name": "發(fā)布后的圖文消息",
"article_id": "ARTICLE_ID2"
}
]
}
參數(shù)說(shuō)明
參數(shù) | 是否必須 | 說(shuō)明 |
---|---|---|
button | 是 | 一級(jí)菜單數(shù)組,個(gè)數(shù)應(yīng)為1~3個(gè) |
sub_button | 否 | 二級(jí)菜單數(shù)組,個(gè)數(shù)應(yīng)為1~5個(gè) |
type | 是 | 菜單的響應(yīng)動(dòng)作類(lèi)型,view表示網(wǎng)頁(yè)類(lèi)型,click表示點(diǎn)擊類(lèi)型,miniprogram表示小程序類(lèi)型 |
name | 是 | 菜單標(biāo)題,不超過(guò)16個(gè)字節(jié),子菜單不超過(guò)60個(gè)字節(jié) |
key | click等點(diǎn)擊類(lèi)型必須 | 菜單KEY值,用于消息接口推送,不超過(guò)128字節(jié) |
url | view、miniprogram類(lèi)型必須 | 網(wǎng)頁(yè) 鏈接,用戶(hù)點(diǎn)擊菜單可打開(kāi)鏈接,不超過(guò)1024字節(jié)。 type為miniprogram時(shí),不支持小程序的老版本客戶(hù)端將打開(kāi)本url。 |
media_id | media_id類(lèi)型和view_limited類(lèi)型必須 | 調(diào)用新增永久素材接口返回的合法media_id |
appid | miniprogram類(lèi)型必須 | 小程序的appid(僅認(rèn)證公眾號(hào)可配置) |
pagepath | miniprogram類(lèi)型必須 | 小程序的頁(yè)面路徑 |
article_id | article_id類(lèi)型和article_view_limited類(lèi)型必須 | 發(fā)布后獲得的合法 article_id |
返回結(jié)果
正確時(shí)的返回JSON數(shù)據(jù)包如下:
{"errcode":0,"errmsg":"ok"}
錯(cuò)誤時(shí)的返回JSON數(shù)據(jù)包如下(示例為無(wú)效菜單名長(zhǎng)度):
{"errcode":40018,"errmsg":"invalid button name size"}
使用網(wǎng)頁(yè)調(diào)試工具調(diào)試該接口
開(kāi)發(fā)過(guò)程中如遇問(wèn)題,可前往微信開(kāi)放社區(qū) #公眾號(hào) 專(zhuān)區(qū)發(fā)帖交流。