微信公眾號生成個性化選單
微信公眾號後來新增的介面,可以生成個性化選單,可以先看下個性化選單與自定義選單的資料格式有哪些不同。
在原有的資料格式基礎上,增加了以下部分:
"matchrule":{ "group_id":"2", "sex":"1", "country":"中國", "province":"廣東", "city":"廣州", "client_platform_type":"2" "language":"zh_CN" }也就是匹配規則,這個匹配是完全匹配,即當符合所有的匹配條件的時候才會出發定義的個性化選單。另一點,必須得先定義自定義選單的基礎上才可以再實現個性化選單。
解釋一下:group_id就是分組的名稱,不同的分組有不同的id號,這個可以做一個二次開發,比如說不同分組的使用者可以看到的是不同的選單,那麼問題來了,如何讓使用者自動進入不同的分組呢,這裡就有一個點,即使用者在關注的時候,掃描帶引數二維碼實現自動分組、掃描不同二維碼實現自動分組,在此請參考我的另2篇文章,掃描帶引數二維碼實現自動分組的功能,http://blog.csdn.net/naruto668/article/details/52374082。
sex是根據使用者性別區分;country,province,city這個說句心裡話可能不太準確,具體可根據地理位置的不同來做大致的劃分,不要太當真。畢竟是使用者自己設定的,對吧~
client_platform_type客戶端版本,當前只具體到系統型號:IOS(1), Android(2),Others(3),不填則不做匹配
最後一欄代表著語言,這個其實沒什麼太大的區分度。
好了看程式碼實現。
<?php
$jsonmenu='{
"button":[
{
"type":"view",
"name":"點",
"url":"http://url.cn/420hqFb"
},
{
"name":"掃",
"sub_button":[
{
"type":"click",
"name":"解碼手冊",
"key":"V201"
},
{
"type":"view",
"name":"掃一掃",
"url":"http://g-cat.me/platform/weixin/scanCode.do?code=dksj&share_voucher=voucher"
}]
},
{
"name":"挖",
"sub_button":[
{
"type":"view",
"name":"品牌故事",
"url":"http://mp.weixin.qq.com/s?__biz=MzA3OTQ3Mzc2Mw==&mid=210864245&idx=1&sn=243961660f7eb8ad7f4e2410b4a354af&scene=18#wechat_redirect"
},
{
"type":"view",
"name":"門店資訊",
"url":"http://mp.weixin.qq.com/s?__biz=MzA3OTQ3Mzc2Mw==&mid=442478945&idx=1&sn=49722ea5e9b293fcff6ca819c4b0b26d&scene=0#rd"
},
{
"type":"view",
"name":"往期文章",
"url":"http://mp.weixin.qq.com/s?__biz=MzA3OTQ3Mzc2Mw==&mid=206509356&idx=1&sn=9daa46ba7a65e6b7daca01f43503a763&scene=0#rd"
}]
}],
"matchrule":{
"group_id":"140"
}
}';
//獲取accesstoken的實現我在前面已經講過了
require('Accesstoken.php');
$access_token=get_token();
$url = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=".$access_token;
$result = https_request($url, $jsonmenu);
var_dump($result);
function https_request($url,$data = null){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
?>