功能实验的实时区段Ruby 开发工具包的区段限定方法
功能实验的实时区段Ruby 开发工具包的区段限定方法
使用fetch_qualified_segments
方法从 Eyeofcloud Data Platform (ODP) 服务器检索用户的外部受众映射。使用qualified_for?
方法检查用户是否符合指定区段的条件。
先决条件
在获取合格的区段并检查用户是否符合给定受众区段的条件之前,您必须启用并配置用于功能实验的实时区段。
fetch_qualified_segments
最低 SDK 版本
5.0.0
描述
您可以使用fetch_qualified_segments
方法从 Eyeofcloud Data Platform (ODP) 服务器检索特定用户的外部受众映射。Eyeofcloud 功能实验 Ruby SDK 允许您以同步或异步方式调用 ODP,具体取决于 block 参数。
- 如果未提供块,则调用方将被阻止,直到同步获取完成。
- 如果提供了块,则不会阻止调用方。
fetch_qualified_segments
是EyeofcloudUserContext
对象的一个方法。有关详细信息,请参阅 EyeofcloudUserContext。
参数
fetch_qualified_segments
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
options (可选) | 字符串 | 用于从 ODP 获取合格区段的一组选项。 |
block (可选) | 回调函数 | 要使用 fetch 结果调用的完成处理程序。 |
返回 – 同步调用
如果 SDK 没有数据块,则fetch_qualified_segments
方法将返回true
,若用户上下文中的限定 segments 数组已更新。
Returns (返回) – 异步调用
如果 SDK 有一个块,fetch_qualified_segments
方法将获取新线程上的段并返回线程句柄。
- 如果提取成功完成,Ruby SDK 会更新用户上下文中的限定 segments 数组,然后调用状态为 success 的块。
- 如果提取失败,SDK 将调用状态为 failure 的块。
如果 Ruby SDK 在数据文件中找不到 ODP 受众,它将返回一个空的合格区段数组,而不会向 ODP 服务器发送请求。
📘
注意
您可以直接读取和写入限定的 segments 数组,而不是调用
fetch_qualified_segments
。这样,您就可以绕过 ODP 的远程提取过程或使用您自己的提取服务。这在测试或调试时可能很有帮助。
示例 调用fetch_qualified_segments
该代码通过实例化具有用户 ID“user123”和一组属性(其中包括值为“1.3.2”的“app_version”属性)来创建用户上下文。
代码的下一部分显示了如何使用fetch_qualified_segments
方法获取所有带和不带 segment 选项的合格区段。
之后,代码使用decide
方法决定是否向用户显示键为 “flag1” 的功能标志。最后,SDK 调用track_event
跟踪名为 “myEvent” 的自定义事件的方法。
如果提供了回调,则 fetch 将在生成的线程上运行,并在完成时运行回调。如果未提供 callback,则 fetch 是同步的。
attributes = { 'app_version' => '1.3.2' }
user = eyeofcloud.create_user_context('user123', attributes)
# spawned thread is returned
fetch_thread = user.fetch_qualified_segments do |success|
puts success
return unless success
decision = user.decide('flag1')
user.track_event('purchase_event')
end
# thread must eventually be joined to ensure callback is run to completion
fetch_thread.join
attributes = { "app_version"=> "1.3.2" }
user = eyeofcloud.create_user_context("user123", attributes)
# Without segment option
success = user.fetch_qualified_segments
# With segment options
odp_segment_options = [Eyeofcloud::EyeofcloudOdpOption.IGNORE_CACHE, Eyeofcloud::EyeofcloudOdpOption.RESET_CACHE]
success = user.fetch_qualified_segments(options: odp_segment_options)
if success
decision = user.decide("flag1")
user.track_event("myevent")
end
下图显示了调用fetch_qualified_segments
时应用程序、Ruby SDK 和 ODP 服务器之间的网络调用:
- 调用
fetch_qualified_segments
方法。 - Ruby SDK 对 ODP 进行 GraphQL 调用以获取分段。
- ODP 使用区段进行响应。
- 将缓存将用户 ID 映射到区段的已获取区段。
- 为用户返回适当的变体。
SDK 获取区段,然后缓存它们。这意味着,如果同一用户再次请求区段(创建新用户上下文时),您可以从缓存中检索受众区段信息,而不是从远程 ODP 服务器中检索。
缓存用于调用fetch_qualified_segments
。此方法在用户上下文上调用(用户上下文是固定的,包括用户有资格使用的实时区段)。
缓存_仅在_调用fetch_qualified_segments
时适用。如果将缓存超时设置为 0,则禁用缓存。Eyeofcloud 使用 LRU 算法,因此当达到最大大小时,最早的记录会被撞出。如果在方法调用时出现缓存未命中,则 Eyeofcloud 会发出网络请求。
您可以向EyeofcloudOdpOption
数组添加以下选项以绕过缓存:
- IGNORE_CACHE – 绕过分段缓存进行查找和保存。
- RESET_CACHE – 重置所有分段缓存。
qualified_for?
最低 SDK 版本
5.0.0
描述
检查用户是否符合给定受众细分的条件。
参数
qualified_for?
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
段 | 字符串 | ODP 受众区段名称,用于检查用户是否符合条件。 |
返回
如果用户是合格的,true
。
例子
以下是用户是否符合 ODP 分段条件的示例:
Ruby
attributes = {'laptop_os' => 'mac'}
user = eyeofcloud.create_user_context('fs-id-12', attributes)
success = user.fetch_qualified_segments
qualified = user.qualified_for?('segment1');