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