optimizely - 如何让 isFeatureEnabled 为同一组织中的所有用户返回相同的值?
问题描述
假设我有一个向组织销售的小型企业产品。如何确保同一组织中的所有用户获得相同的体验?
例如,假设我有以下两个用户(id 为 123 的用户和 id 为 456 的用户)属于同一个组织(id 为 789 的组织)。
调用isFeatureEnabled('my_feature', userId)
会为不同的用户返回不同的值。
我如何确保用户 123 和 456 获得相同的体验,因为他们属于同一个组织?
解决方案
根据用例,有几种方法可以做到这一点。的完整 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 测试。
推荐阅读
- mongodb - 跳过绑定 ID,但将其作为响应返回
- python - 在 For 循环中向后循环而不反转数组的 Python 最佳实践
- heatmap - MapBox 热图隐藏在边界之外
- ios - UISearchController 未出现在 iOS 12 中
- java - 如何将大整数转换为连续两位整数的数组?
- python - os.join.path 确实改变了目录
- c# - 即使超时配置为 2 分钟,AWS Lambda 也会在 30 秒内超时
- java - 井字棋阵列检查游戏结束
- javascript - 修改对象和数组的数组。根据数组中的匹配值对对象进行排序
- javascript - 得到错误resolveBackend不是一个函数