Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自定义菜单 - 个性化菜单接口 #31

Open
drodata opened this issue Mar 19, 2016 · 0 comments
Open

自定义菜单 - 个性化菜单接口 #31

drodata opened this issue Mar 19, 2016 · 0 comments

Comments

@drodata
Copy link
Owner

drodata commented Mar 19, 2016

📖 http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html

让公众号的不同用户群体看到不一样的自定义菜单。

判断标准包括:

  • 用户分组(开发者的业务需求可以借助用户分组来完成)
  • 性别
  • 手机操作系统
  • 地区(用户在微信客户端设置的地区)
  • 语言(用户在微信客户端设置的语言)

对应的值:

"matchrule":{
    "group_id": "2",
    "sex": "1",
    "country": "中国",
    "province": "广东",
    "city": "广州",
    "client_platform_type": "2"
    "language": "zh_CN"
}

注意,这 7 个值都是可选的,但至少设置一个。

注意事项:

  • 客户端版本要求:iPhone6.2.2,Android 6.2.4以上。
  • 菜单的刷新策略:在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。 📌 测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
  • 接口调用频率限制:普通公众号的个性化菜单的新增接口每日限制次数为2000次,删除接口也是2000次,测试个性化菜单匹配结果接口为20000次
  • 出于安全考虑,一个公众号的所有个性化菜单,最多只能设置为跳转到3个域名下的链接
  • 创建个性化菜单之前必须先创建默认菜单(默认菜单是指使用普通自定义菜单创建接口创建的菜单)。如果删除默认菜单,个性化菜单也会全部删除

0.1 匹配规则说明

当公众号创建多个个性化菜单时,将按照发布顺序,由新到旧逐一匹配,直到用户信息与 matchrule 相符合。如果全部个性化菜单都没有匹配成功,则返回默认菜单。

📝 此处和 Yii2 的 url manager 匹配规则很像,区别是,个性化菜单按照发布顺序,由新到旧匹配;Yii2 url manager 则按照声明顺序,从前往后匹配。

例如公众号先后发布了默认菜单,个性化菜单1,个性化菜单2,个性化菜单3。那么当用户进入公众号页面时,将从个性化菜单3开始匹配,如果个性化菜单3匹配成功,则直接返回个性化菜单3,否则继续尝试匹配个性化菜单2,直到成功匹配到一个菜单。

根据上述匹配规则,为了避免菜单生效时间的混淆,决定不予提供个性化菜单编辑API,开发者需要更新菜单时,需将完整配置重新发布一轮。

2.1 创建个性化菜单

例如,新建一个针对女性用户的个性化菜单:

$menu = [
    'button' => [
        [
            'type' => 'click',
            "name" => "个性化菜单(女)",
            'key' => 'key01',
        ],
        [
            'name' => '自助服务',
            'sub_button' => [
                // ...
            ],
        ],
    ],
    'matchrule' => [
        'sex' => 2,
    ],
];

如果提交成功,将返回类似

{
    "menuid":"208379533"
}

的 JSON 数据。

2.2 删除

POST 数据格式:

{
    "menuid":"208379533"
}

menuid 为菜单id,可以通过自定义菜单查询接口(#29)获取。

正确时的返回JSON数据包如下:

{"errcode":0,"errmsg":"ok"}

2.3 测试匹配结果

POST 数据格式:

{
    "user_id":"drodata"
}

user_id 既可以是粉丝的OpenID,也可以是粉丝的微信号。

该接口将返回菜单的配置信息。

2.4 查询

同自定义菜单,#29

2.5 删除

同自定义菜单

@drodata drodata mentioned this issue Mar 19, 2016
12 tasks
@drodata drodata changed the title 个性化菜单接口 自定义菜单 - 个性化菜单接口 Mar 19, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant