微信公众号开发(五)个性化菜单

微信公众号开发(五)个性化菜单


个性化菜单让公众号的不一样用户群体看到不同的自定义菜单。该接口开放给已认证订阅号和已认证服务号,个性化菜单要求用户的微信客户端版本在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和上面的不同是由于我删除了以前的个性化菜单,而后从新初始化了一次。


五、删除全部菜单

使用普通自定义菜单删除接口能够删除全部自定义菜单(包括默认菜单和所有个性化菜单),请参看上一章。
相关文章
相关标签/搜索