首页 > 解决方案 > 如何让 isFeatureEnabled 为同一组织中的所有用户返回相同的值?

问题描述

假设我有一个向组织销售的小型企业产品。如何确保同一组织中的所有用户获得相同的体验?

例如,假设我有以下两个用户(id 为 123 的用户和 id 为 456 的用户)属于同一个组织(id 为 789 的组织)。

调用isFeatureEnabled('my_feature', userId)会为不同的用户返回不同的值。

我如何确保用户 123 和 456 获得相同的体验,因为他们属于同一个组织?

标签: optimizely

解决方案


根据用例,有几种方法可以做到这一点。的完整 API 签名isFeatureEnabled如下:

isFeatureEnabled(feature_key, userId, attributes)

一般来说:

isFeatureEnabled(
  'my_feature',               // feature key identifier linking feature to Optimizely UI
  '123',                      // userId parameter used as input to random bucketing
  { 'organizationId': '789' } // attributes used for non-random targeting
)

--

用例 1:如果您想手动选择启用该功能的组织,您应该通过属性使用受众定位。

您可以将 organizationId 作为属性传递,并设置受众以定位该组织中的所有访问者。

isFeatureEnabled('my_feature', '123', { organizationId: '789' } ); // User 123
isFeatureEnabled('my_feature', '456', { organizationId: '789' } ); // User 456

有关如何在 Optimizely UI 中为此用例设置属性和受众的说明,请遵循此文档文章

使用属性和受众,您可以为特定组织逐一启用或禁用功能。但是,这种方法不允许您随机推出一定百分比的可能组织 ID 或对组织 ID 的随机抽样进行 A/B 测试。

--

用例 2:如果您想对组织 ID 的随机抽样运行部署或运行​​ A/B 测试,其中一组随机组织获得特定体验,您应该将组织 ID 作为 userId 参数传递给 isFeatureEnabled API:

isFeatureEnabled('my_feature', '789'); // User 123
isFeatureEnabled('my_feature', '789'); // User 456

userId 参数isFeatureEnabled用于随机分桶用户。由于 userId 可以接受任何字符串,因此在这种情况下使用 organizationId 可确保用户 123 和 456 都将获得相同的体验。

--

用例 3:如果您既希望能够跨组织运行 A/B 测试,又希望能够仅针对某些组织,则应结合上述两种用途的方法,如下所示:

isFeatureEnabled('my_feature', '789', { companyId: '789' } ); // User 123
isFeatureEnabled('my_feature', '789', { companyId: '789' } ); // User 456

通过这种方式,您可以手动(而不是随机)逐一选择哪些客户应该看到体验或有资格进行实验,同时还允许您跨组织随机推出或跨组织运行 A/B 测试。


推荐阅读