微信公衆號開發(五)個性化菜單

微信公衆號開發(五)個性化菜單


個性化菜單讓公衆號的不一樣用戶羣體看到不同的自定義菜單。該接口開放給已認證訂閱號和已認證服務號,個性化菜單要求用戶的微信客戶端版本在iPhone6.2.2,Android 6.2.4以上,暫時不支持其餘版本微信,另外定義個性化菜單以前必須先定義默認菜單。
開發者能夠經過如下條件來設置用戶看到的菜單:
  1. 用戶標籤(開發者的業務需求能夠藉助用戶標籤來完成)
  2. 性別
  3. 手機操做系統
  4. 地區(用戶在微信客戶端設置的地區)
  5. 語言(用戶在微信客戶端設置的語言)
個性化菜單匹配規則說明:
個性化菜單的更新是會被覆蓋的。
例如公衆號前後發佈了默認菜單,個性化菜單1,個性化菜單2,個性化菜單3。那麼當用戶進入公衆號頁面時,將從個性化菜單3開始匹配,若是個性化菜單3匹配成功,則直接返回個性化菜單3,不然繼續嘗試匹配個性化菜單2,直到成功匹配到一個菜單。
根據上述匹配規則,爲了不菜單生效時間的混淆,決定不予提供個性化菜單編輯API,開發者須要更新菜單時,需將完整配置從新發布一輪。

本例的項目結構以下,除了上一章的文件以外,還增長了三個處理個性化菜單的文件。


addconditional_menu.php:建立個性化菜單
trymatch.php: 測試匹配個性化菜單
delconditional_menu.php:刪除個性化菜單

一、建立個性化菜單

建立個性化菜單的接口是https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=ACCESS_TOKEN,以post方式發送菜單字符串。
addconditional_menu.php
<?php
require_once('./Utils.php');
//個性化菜單字符串
$menujson = '{
	"button":[
 	{
    	"type":"click",
    	"name":"單擊",
     	"key":"V1001_TODAY_MUSIC"
	},
	{
		"name":"搜素",
		"sub_button":[
            {
                "type":"view",
                "name":"百度",
                "url":"http://www.baidu.com/"
            }
        ]
 }],
 "matchrule":{
  "sex":"1"
  }
}';
$url = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=".Utils::get_access_token();
//建立個性化菜單
$result = Utils::https_request($url, $menujson);
//返回返回menuid表示成功
echo $result;
返回結果以下:
查看菜單發現從默認菜單變成了個性化菜單,以下所示


這裏只設置了性別過濾,1表示男性,有關其餘的條件設置請參看 個性化菜單接口


二、測試個性化菜單匹配結果

測試接口是https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token=ACCESS_TOKEN,須要post "user_id"過去。
trymatch.php
<?php
@header('Content-type: text/plain;charset=UTF-8');
require_once('./Utils.php');
$url = "https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token=".Utils::get_access_token();
//user_id能夠是粉絲的OpenID,也能夠是粉絲的微信號
$userID = '{"user_id":"o4WmZ0h-4huBUVQUczx2ezaxIL9c"}';
$result = Utils::https_request($url, $userID);
echo $result;

返回結果以下:php


三、刪除個性化菜單

刪除個性化菜單接口是https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token=ACCESS_TOKEN,須要post「menuid」過去。
delconditional_menu.php
<?php
@header('Content-type: text/plain;charset=UTF-8');
require_once('./Utils.php');
$url = "https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token=".Utils::get_access_token();
//menuid,個性化菜單的menuid
$menuID = '{"menuid":414784577}';
$result = Utils::https_request($url, $menuID);
echo $result;
返回結果以下表示成功:

四、查詢個性化菜單

使用普通自定義菜單查詢接口能夠獲取默認菜單和所有個性化菜單信息,請參看上一章。

查詢以後結果以下:

這裏的menuid和上面的不同是由於我刪除了以前的個性化菜單,而後從新初始化了一次。


五、刪除全部菜單

使用普通自定義菜單刪除接口能夠刪除全部自定義菜單(包括默認菜單和所有個性化菜單),請參看上一章。
相關文章
相關標籤/搜索