為了幫助公眾號(hào)實(shí)現(xiàn)靈活的業(yè)務(wù)運(yùn)營(yíng),微信公眾平臺(tái)新增了個(gè)性化菜單接口,開(kāi)發(fā)者可以通過(guò)該接口,讓公眾號(hào)的不同用戶群體看到不一樣的自定義菜單。該接口開(kāi)放給已認(rèn)證訂閱號(hào)和已認(rèn)證服務(wù)號(hào)。
開(kāi)發(fā)者可以通過(guò)以下條件來(lái)設(shè)置用戶看到的菜單:
- 用戶標(biāo)簽(開(kāi)發(fā)者的業(yè)務(wù)需求可以借助用戶標(biāo)簽來(lái)完成)
性別- 手機(jī)操作系統(tǒng)
地區(qū)(用戶在微信客戶端設(shè)置的地區(qū))語(yǔ)言(用戶在微信客戶端設(shè)置的語(yǔ)言)
注意:為保護(hù)個(gè)人隱私,公眾號(hào)個(gè)性化菜單將不再支持對(duì)性別、地區(qū)、語(yǔ)言這類涉及個(gè)人隱私數(shù)據(jù)的信息進(jìn)行篩選的功能,具體調(diào)整如下:
- 創(chuàng)建時(shí),只要匹配條件中包含隱私信息的,將被拒絕,并返回錯(cuò)誤碼 65320;
- 已經(jīng)創(chuàng)建的,如包含隱私信息的則自動(dòng)失效,不包含的則正常匹配;
- 開(kāi)發(fā)者仍然可以正常通過(guò)測(cè)試接口,獲取到粉絲看到的菜單;
- 查詢個(gè)性化菜單時(shí),所有規(guī)則正常顯示。
個(gè)性化菜單接口說(shuō)明:
- 個(gè)性化菜單要求用戶的微信客戶端版本在iPhone6.2.2,Android 6.2.4以上,暫時(shí)不支持其他版本微信
- 菜單的刷新策略是,在用戶進(jìn)入公眾號(hào)會(huì)話頁(yè)或公眾號(hào)profile頁(yè)時(shí),如果發(fā)現(xiàn)上一次拉取菜單的請(qǐng)求在5分鐘以前,就會(huì)拉取一下菜單,如果菜單有更新,就會(huì)刷新客戶端的菜單。測(cè)試時(shí)可以嘗試取消關(guān)注公眾賬號(hào)后再次關(guān)注,則可以看到創(chuàng)建后的效果
- 普通公眾號(hào)的個(gè)性化菜單的新增接口每日限制次數(shù)為2000次,刪除接口也是2000次,測(cè)試個(gè)性化菜單匹配結(jié)果接口為20000次
- 出于安全考慮,一個(gè)公眾號(hào)的所有個(gè)性化菜單,最多只能設(shè)置為跳轉(zhuǎn)到3個(gè)域名下的鏈接
- 創(chuàng)建個(gè)性化菜單之前必須先創(chuàng)建默認(rèn)菜單(默認(rèn)菜單是指使用普通自定義菜單創(chuàng)建接口創(chuàng)建的菜單)。如果刪除默認(rèn)菜單,個(gè)性化菜單也會(huì)全部刪除
- 個(gè)性化菜單接口支持用戶標(biāo)簽,請(qǐng)開(kāi)發(fā)者注意,當(dāng)用戶身上的標(biāo)簽超過(guò)1個(gè)時(shí),以最后打上的標(biāo)簽為匹配
個(gè)性化菜單匹配規(guī)則說(shuō)明:
個(gè)性化菜單的更新是會(huì)被覆蓋的。 例如公眾號(hào)先后發(fā)布了默認(rèn)菜單,個(gè)性化菜單1,個(gè)性化菜單2,個(gè)性化菜單3。那么當(dāng)用戶進(jìn)入公眾號(hào)頁(yè)面時(shí),將從個(gè)性化菜單3開(kāi)始匹配,如果個(gè)性化菜單3匹配成功,則直接返回個(gè)性化菜單3,否則繼續(xù)嘗試匹配個(gè)性化菜單2,直到成功匹配到一個(gè)菜單。 根據(jù)上述匹配規(guī)則,為了避免菜單生效時(shí)間的混淆,決定不予提供個(gè)性化菜單編輯API,開(kāi)發(fā)者需要更新菜單時(shí),需將完整配置重新發(fā)布一輪。
目錄
創(chuàng)建個(gè)性化菜單
http請(qǐng)求方式:POST(請(qǐng)使用https協(xié)議)
https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=ACCESS_TOKEN
請(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"
}
]
}
],
"matchrule": {
"tag_id": "2",
"sex": "1",
"country": "中國(guó)",
"province": "廣東",
"city": "廣州",
"client_platform_type": "2",
"language": "zh_CN"
}
}
參數(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)作類型,view表示網(wǎng)頁(yè)類型,click表示點(diǎn)擊類型,miniprogram表示小程序類型 |
name | 是 | 菜單標(biāo)題,不超過(guò)16個(gè)字節(jié),子菜單不超過(guò)40個(gè)字節(jié) |
key | click等點(diǎn)擊類型必須 | 菜單KEY值,用于消息接口推送,不超過(guò)128字節(jié) |
url | view、miniprogram類型必須 | 網(wǎng)頁(yè)鏈接,用戶點(diǎn)擊菜單可打開(kāi)鏈接,不超過(guò)1024字節(jié)。當(dāng)type為miniprogram時(shí),不支持小程序的老版本客戶端將打開(kāi)本url |
media_id | media_id類型 | 調(diào)用新增永久素材接口返回的合法media_id |
article_id | article_id類型和article_view_limited類型必須 | 發(fā)布后獲得的合法 article_id |
appid | miniprogram類型必須 | 小程序的appid |
pagepath | miniprogram類型必須 | 小程序的頁(yè)面路徑 |
matchrule | 是 | 菜單匹配規(guī)則 |
tag_id | 否 | 用戶標(biāo)簽的id,可通過(guò)用戶標(biāo)簽管理接口獲取 |
sex | 已廢除 | 性別:男(1)女(2),不填則不做匹配 |
client_platform_type | 否 | 客戶端版本,當(dāng)前只具體到系統(tǒng)型號(hào):IOS(1), Android(2),Others(3),不填則不做匹配 |
country | 已廢除 | 國(guó)家信息,是用戶在微信中設(shè)置的地區(qū),具體請(qǐng)參考地區(qū)信息表 |
province | 已廢除 | 省份信息,是用戶在微信中設(shè)置的地區(qū),具體請(qǐng)參考地區(qū)信息表 |
city | 已廢除 | 城市信息,是用戶在微信中設(shè)置的地區(qū),具體請(qǐng)參考地區(qū)信息表 |
language | 已廢除 | 語(yǔ)言信息,是用戶在微信中設(shè)置的語(yǔ)言,具體請(qǐng)參考語(yǔ)言表: 1、簡(jiǎn)體中文 "zh_CN" 2、繁體中文TW "zh_TW" 3、繁體中文HK "zh_HK" 4、英文 "en" 5、印尼 "id" 6、馬來(lái) "ms" 7、西班牙 "es" 8、韓國(guó) "ko" 9、意大利 "it" 10、日本 "ja" 11、波蘭 "pl" 12、葡萄牙 "pt" 13、俄國(guó) "ru" 14、泰文 "th" 15、越南 "vi" 16、阿拉伯語(yǔ) "ar" 17、北印度 "hi" 18、希伯來(lái) "he" 19、土耳其 "tr" 20、德語(yǔ) "de" 21、法語(yǔ) "fr" |
button中將不再支持圖文(news)類型永久素材的 media_id
,請(qǐng)使用 article_id
代替 matchrule共七個(gè)字段,均可為空,但不能全部為空,至少要有一個(gè)匹配信息是不為空的。 country、province、city組成地區(qū)信息,將按照country、province、city的順序進(jìn)行驗(yàn)證,要符合地區(qū)信息表的內(nèi)容。地區(qū)信息從大到小驗(yàn)證,小的可以不填,即若填寫(xiě)了省份信息,則國(guó)家信息也必填并且匹配,城市信息可以不填。 例如 “中國(guó) 廣東省 廣州市”、“中國(guó) 廣東省”都是合法的地域信息,而“中國(guó) 廣州市”則不合法,因?yàn)樘顚?xiě)了城市信息但沒(méi)有填寫(xiě)省份信息。 地區(qū)信息表請(qǐng) 點(diǎn)擊下載。
返回結(jié)果
正確時(shí)的返回JSON數(shù)據(jù)包如下,錯(cuò)誤時(shí)的返回碼請(qǐng)見(jiàn)接口返回碼說(shuō)明。
{"menuid":"208379533"}
注意
請(qǐng)留意參數(shù)說(shuō)明表中已廢止的字段,這些字段涉及公民個(gè)人隱私,如填寫(xiě)這些字段,接口將返回以下結(jié)果:
{"errcode":65320,"errmsg":"match rule violates privacy"}
至于其他返回碼,請(qǐng)見(jiàn)接口返回碼說(shuō)明。
刪除個(gè)性化菜單
http請(qǐng)求方式:POST(請(qǐng)使用https協(xié)議)
https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token=ACCESS_TOKEN
請(qǐng)求示例
{"menuid":"208379533"}
menuid為菜單id,可以通過(guò)自定義菜單查詢接口獲取。
正確時(shí)的返回JSON數(shù)據(jù)包如下,錯(cuò)誤時(shí)的返回碼請(qǐng)見(jiàn)接口返回碼說(shuō)明。:
{"errcode":0,"errmsg":"ok"}
測(cè)試個(gè)性化菜單匹配結(jié)果
http請(qǐng)求方式:POST(請(qǐng)使用https協(xié)議)
https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token=ACCESS_TOKEN
請(qǐng)求示例
{"user_id":"weixin"}
user_id可以是粉絲的OpenID,也可以是粉絲的微信號(hào)。
返回結(jié)果 該接口將返回菜單配置,示例如下:
{
"button": [
{
"type": "view",
"name": "tx",
"url": "http://www.qq.com/",
"sub_button": [ ]
},
{
"type": "view",
"name": "tx",
"url": "http://www.qq.com/",
"sub_button": [ ]
},
{
"type": "view",
"name": "tx",
"url": "http://www.qq.com/",
"sub_button": [ ]
}
]
}
注意 包含 已廢除字段 的菜單也將自動(dòng)失效,不再被匹配。這一點(diǎn)也將體現(xiàn)在本測(cè)試接口中。
另外,錯(cuò)誤時(shí)的返回碼請(qǐng)見(jiàn)接口返回碼說(shuō)明。
查詢個(gè)性化菜單
使用普通自定義菜單查詢接口可以獲取默認(rèn)菜單和全部個(gè)性化菜單信息,請(qǐng)見(jiàn)自定義菜單查詢接口的說(shuō)明。
注意 查詢時(shí),包含 已廢除字段 的菜單雖然會(huì)照常返回,但不再有效。
刪除所有菜單
使用普通自定義菜單刪除接口可以刪除所有自定義菜單(包括默認(rèn)菜單和全部個(gè)性化菜單),請(qǐng)見(jiàn)自定義菜單刪除接口的說(shuō)明。