Saltar al contenido principal
Con el SDK de Rust de Kameleoon puede ejecutar experimentos y activar feature flags en sus servicios y back-ends web escritos en Rust. Primeros pasos: Para obtener ayuda para comenzar, consulte la guía del desarrollador. Changelog: Última versión del SDK de Rust: 0.9.3 Changelog. Métodos del SDK: Para la documentación de referencia completa del SDK de Rust, consulte la sección referencia.

Guía del desarrollador

Esta guía está diseñada para ayudarle a integrar rápidamente el SDK de Rust y empezar a evaluar feature flags en su aplicación Rust.

Primeros pasos

Instalar el cliente Rust

Si está trabajando en el workspace actual, añada el SDK como dependencia de ruta junto con tokio, ya que varios métodos del SDK son asíncronos:
Cargo.toml
[dependencies]
kameleoon-client = "0.9.3"

Configuración adicional

Cree un archivo de configuración client-rust.json para proporcionar las credenciales y personalizar el comportamiento del SDK. También puede descargar nuestro archivo de configuración de ejemplo. Recomendamos guardar este archivo en la ruta predeterminada, /etc/kameleoon/client-rust.json, pero puede guardarlo en cualquier lugar del classpath con el nombre client-rust.json. El SDK de Rust puede configurarse con un archivo JSON utilizado por create_with_path() o construyendo una instancia KameleoonClientConfig con create_with_config() directamente en el código. La siguiente tabla muestra las propiedades disponibles que puede establecer:
Clave (Código / Archivo de configuración)DescripciónValor predeterminado
client_id / clientId (obligatorio)Necesario para autenticarse en el servicio Kameleoon. Para encontrar su client_id, consulte la documentación de credenciales de API.
client_secret / clientSecret (obligatorio)Necesario para autenticarse en el servicio Kameleoon. Para encontrar su client_secret, consulte la documentación de credenciales de API.
session_duration / sessionDurationMinutes (opcional)Intervalo de tiempo, en minutos, durante el cual el SDK mantiene a un visitante y sus datos asociados en memoria.30 minutos
refresh_interval / refreshIntervalMinutes (opcional)Intervalo, en minutos, utilizado para actualizar la configuración de experimentos y feature flags activos.60 minutos
default_timeout / defaultTimeoutMillis (opcional)Tiempo de espera predeterminado, en milisegundos, para las solicitudes de red del SDK.10000 milisegundos
tracking_interval / trackingIntervalMillis (opcional)Intervalo, en milisegundos, utilizado para agrupar las solicitudes de seguimiento. Los valores se limitan al rango [1000, 5000].1000 milisegundos
environment / environment (opcional)Entorno desde el que debe utilizarse la configuración de feature flags. El valor puede ser production, staging o development.production
top_level_domain / topLevelDomain (opcional)El dominio de nivel superior actual de su sitio web. Utilice el formato example.com, sin protocolo ni subdominios.None
proxy_host / proxyHost (opcional)Host proxy para las llamadas salientes del SDK. Formatos admitidos: https://my.prox, https://my.prox:4545, socks5://192.168.1.1:9000.None
network_domain / networkDomain (opcional)Dominio personalizado utilizado por los SDKs para las solicitudes salientes, a menudo para hacer proxy. Debe ser un dominio válido (por ejemplo, example.com o sub.example.com). Los formatos no válidos se sustituyen por el valor por defecto de Kameleoon.None

Inicializar el cliente Kameleoon

Una vez que haya instalado el SDK y configurado sus credenciales, cree un KameleoonClient mediante KameleoonClientFactory.
use std::time::Duration;

use kameleoon_client::config::KameleoonClientConfigBuilder;
use kameleoon_client::factory::KameleoonClientFactory;

async fn create_client() -> Result<KameleoonClient, KameleoonError> {
    let site_code = "a8st4f59bj";

    let client = KameleoonClientFactory::create_with_path(site_code, "/etc/kameleoon/client-rust.json")?;
    client.initialize().await?;

    Ok(client)
}
Un KameleoonClient es el objeto principal utilizado para evaluar feature flags, añadir datos de visitantes y enviar solicitudes de seguimiento.
  • Se recomienda utilizar KameleoonClient como un objeto singleton, ya que actúa como puente entre su aplicación y la plataforma Kameleoon. Expone todos los métodos y propiedades necesarios para ejecutar experimentos de forma eficiente.
  • El SDK de Rust se inicializa de forma asíncrona. Debe llamar a initialize() antes de depender de la evaluación de funcionalidades en código de producción.

Activación de un feature flag

Asignar un ID único a un usuario
Para asignar un ID único a un usuario puede utilizar el método get_visitor_code(). Si no existe un código de visitante (en la cookie de las cabeceras de la solicitud), el método genera un ID único aleatorio o utiliza un default_visitor_code que usted haya generado. A continuación, el ID se establece en una cookie de cabeceras de respuesta. Si utiliza Kameleoon en modo híbrido, llamar al método get_visitor_code() garantiza que el ID único (código de visitante) se comparta entre el archivo de aplicación engine.js (anteriormente denominado kameleoon.js) y el SDK.
Recuperar la configuración de un flag
Para implementar un feature flag en su código, primero debe crear el feature flag en su cuenta Kameleoon. Para determinar el estado o la variación de un feature flag para un usuario específico, debe usar el método get_variation() o is_feature_active() para recuperar la configuración basada en feature_key. El método get_variation() gestiona tanto feature flags simples con estados ON/OFF como flags más complejos con varias variaciones. El método recupera la variación adecuada para el usuario comprobando las reglas de la funcionalidad, asignando la variación y devolviéndola según feature_key y visitor_code. El método is_feature_active() puede utilizarse si desea recuperar la configuración de un feature flag simple que solo tiene un estado ON u OFF, en contraposición a feature flags más complejos con varias variaciones u opciones de segmentación. Si su feature flag tiene variables asociadas (como comportamientos específicos vinculados a cada variación), get_variation() también le permite acceder al objeto Variation, que proporciona detalles sobre la variación asignada y su experimento asociado. Este método comprueba si el usuario está segmentado, encuentra la variación asignada al visitante y la guarda en el almacenamiento. Cuando track=true, el SDK enviará el evento de exposición al experimento especificado en la próxima solicitud de seguimiento, que se activa automáticamente según el tracking_interval del SDK. Por defecto, este intervalo está establecido en 1000 milisegundos (1 segundo). El método get_variation() le permite controlar si se realiza el seguimiento. Si track=false, el SDK no enviará eventos de exposición. Esto es útil si prefiere no rastrear datos a través del SDK y en su lugar utilizar el seguimiento del lado del cliente gestionado, por ejemplo, por el engine de Kameleoon. Además, establecer track=false es útil cuando se utiliza el método get_variations(), donde es posible que solo necesite las variaciones de todos los flags sin desencadenar ningún evento de seguimiento. Si desea saber más sobre cómo funciona el seguimiento, consulte este artículo
Añadir puntos de datos para segmentar a un usuario o filtrar / desglosar visitas en los informes
Para segmentar a un usuario, asegúrese de haber añadido los puntos de datos relevantes a su perfil antes de recuperar la variación de la funcionalidad o de comprobar si el flag está activo. Utilice el método add_data() para añadir estos puntos de datos al perfil del usuario. Para recuperar puntos de datos recopilados en otros dispositivos o para acceder a datos pasados del usuario (recopilados del lado del cliente cuando se utiliza Kameleoon en modo híbrido), use el método get_remote_visitor_data(). Este método obtiene datos del servidor de forma asíncrona. Es importante llamar a get_remote_visitor_data() antes de recuperar la variación o comprobar si el feature flag está activo, ya que estos datos pueden ser necesarios para asignar a un usuario a una variación determinada. Para obtener más información sobre las condiciones de segmentación disponibles, consulte el artículo detallado sobre el tema. Además, los puntos de datos que añada al perfil del visitante estarán disponibles al analizar sus experimentos, lo que le permitirá filtrar y desglosar los resultados por factores como el dispositivo y el navegador. El modo híbrido de Kameleoon recopila automáticamente una variedad de puntos de datos del lado del cliente, lo que facilita el desglose de los resultados según estos datos preexistentes. Consulte la lista completa aquí. Si necesita rastrear puntos de datos adicionales más allá de lo que se recopila automáticamente, puede usar la funcionalidad de Datos Personalizados de Kameleoon. Los datos personalizados le permiten capturar y analizar información específica relevante para sus experimentos. No olvide llamar al método flush() para enviar los datos recopilados a los servidores de Kameleoon para su análisis.
Para garantizar que sus resultados sean precisos, se recomienda filtrar los bots utilizando el tipo de datos UserAgent.
Seguimiento de conversiones de objetivos
Cuando un usuario completa una acción deseada (como realizar una compra), se registra como una conversión. Para rastrear conversiones, utilice el método track_conversion() y proporcione los parámetros obligatorios visitor_code y goal_id. La solicitud de seguimiento de la conversión se enviará junto con la siguiente solicitud de seguimiento programada, que el SDK envía a intervalos regulares (definidos por tracking_interval). Si prefiere enviar la solicitud inmediatamente, utilice el método flush_instant().
Enviar eventos a soluciones de analítica
Para rastrear conversiones y enviar eventos de exposición a su solución de analítica de cliente, primero debe implementar Kameleoon en modo híbrido. A continuación, utilice el método get_engine_tracking_code(). El método get_engine_tracking_code() recupera el código único de seguimiento necesario para enviar eventos de exposición a su solución de analítica. El uso de este método le permite registrar eventos y enviarlos a la plataforma de analítica que desee.

Uso de una clave de bucketing personalizada

De forma predeterminada, Kameleoon utiliza un ID único y anónimo del visitante (visitor_code) para asignar a los usuarios a las variaciones de los feature flags. Este ID se genera y se almacena normalmente en el dispositivo del usuario (en una cookie del navegador para los SDKs cliente y servidor, en almacenamiento persistente para los SDKs móviles). Sin embargo, en determinados escenarios es posible que necesite garantizar que todos los usuarios de una misma organización vean la misma variante de un feature flag. La opción Clave de bucketing personalizada le permite anular este comportamiento predeterminado proporcionando su propio identificador personalizado para el bucketing. Esta anulación garantiza que la lógica de asignación de Kameleoon utilice la clave especificada en lugar del visitor_code predeterminado.

Casos de uso

Utilizar una clave de bucketing personalizada es esencial para mantener la coherencia y la precisión en las asignaciones de feature flags, especialmente en estas situaciones:
  • Experimentos a nivel de cuenta u organización: para productos B2B o escenarios en los que quiera asignar a todos los usuarios de la misma organización a la misma variación, puede usar un identificador como account_id. Las claves de bucketing personalizadas son cruciales para los tests A/B de funcionalidades que afectan a todo un equipo o empresa.
Al implementar una clave de bucketing personalizada, garantiza mayor coherencia y precisión en sus experimentos, lo que se traduce en resultados más fiables y en una mejor experiencia del usuario.

Detalles técnicos

Cuando configura una clave de bucketing personalizada para un feature flag, proporciona a Kameleoon un identificador específico de los datos de su aplicación:
use kameleoon_client::data::CustomData;

client.add_data(visitor_code, [CustomData::new(42, vec!["new_visitor_code".to_owned()])])?;
  • Proporcionar la clave personalizada: proporciona su identificador personalizado al SDK de Kameleoon mediante el método add_data(). En este método pasará la clave de bucketing personalizada elegida como objeto CustomData. Aquí, new_visitor_code se refiere al identificador que desea utilizar para su bucketing (por ejemplo, el nuevo user_id o account_id).
Para que la clave de bucketing personalizada funcione correctamente, también debe estar definida y configurada para el feature flag durante el proceso de creación o edición del flag. Sin esta configuración correspondiente, el bucketing del SDK no aplicará su clave personalizada. Para obtener instrucciones detalladas sobre cómo configurarlo en Kameleoon, consulte este artículo.
  • Lógica de bucketing: una vez proporcionada la clave de bucketing personalizada mediante el método add_data(), todos los cálculos de hash para asignar usuarios a variaciones utilizarán este new_visitor_code (su clave personalizada) en lugar del visitor_code predeterminado. El uso de new_visitor_code significa que la decisión de bucketing se vincula a su identificador personalizado, garantizando asignaciones coherentes en distintos contextos donde dicho identificador esté presente.
  • Seguimiento de datos y analítica: es crucial tener en cuenta que, aunque se utiliza new_visitor_code (su clave personalizada) para las decisiones de bucketing, todos los datos posteriores (eventos de seguimiento y conversiones, por ejemplo) se envían y se asocian con el visitor_code original. Esta separación garantiza que sus analíticas reflejen con precisión los recorridos e interacciones individuales de los usuarios dentro del contexto más amplio de su experimento, incluso cuando el bucketing se realiza a un nivel superior (como una cuenta) o a través de varios dispositivos/sesiones. Sus datos originales de visitante permanecen intactos para informes completos.

Requisitos técnicos

Para utilizar eficazmente una clave de bucketing personalizada:
  • La clave debe ser un &str.
  • Debe ser única para la entidad que tiene la intención de bucketizar (por ejemplo, si utiliza user_id, el ID de cada usuario debe ser único).
  • La clave debe estar disponible para el SDK en el momento exacto en el que se evalúa la decisión del feature flag para ese usuario o solicitud.

Condiciones de segmentación

Los SDKs de Kameleoon admiten una variedad de condiciones de segmentación predefinidas que puede utilizar para segmentar a los usuarios en sus campañas. Para conocer la lista de condiciones que admite este SDK, consulte usar el historial de visitas para segmentar usuarios. También puede utilizar sus propios datos externos para segmentar a los usuarios.

Experimentación cross-device

Para dar soporte a los visitantes que acceden a una aplicación desde varios dispositivos, Kameleoon permite sincronizar los datos del visitante recopilados previamente en cada uno de los dispositivos del visitante y reconciliar su historial de visitas entre dispositivos mediante la experimentación cross-device. Los casos de estudio e información detallada sobre cómo Kameleoon gestiona los datos entre dispositivos están disponibles en el artículo sobre experimentación cross-device.

Sincronizar custom data entre dispositivos

Aunque la sincronización de custom mapping se utiliza para alinear los datos del visitante entre dispositivos, no siempre es necesaria. A continuación se describen dos escenarios en los que no se requiere la sincronización de custom mapping: Mismo ID de usuario entre dispositivos Si el mismo ID de usuario se utiliza de forma coherente en todos los dispositivos, la sincronización se gestiona automáticamente sin necesidad de sincronización de custom mapping. Basta con llamar al método get_remote_visitor_data() cuando se desee sincronizar los datos recopilados entre varios dispositivos. Instancias multiservidor con IDs coherentes En configuraciones complejas con varios servidores (por ejemplo, instancias de servidor distribuidas), donde el mismo ID de usuario está disponible en los distintos servidores, la sincronización entre servidores (con get_remote_visitor_data()) es suficiente sin necesidad de una sincronización adicional de custom mapping. Los clientes que necesiten datos adicionales pueden consultar la descripción del método get_remote_visitor_data() para obtener más orientación. En el siguiente código, se asume que el mismo identificador único (en este caso, el visitor_code, que también puede denominarse userId) se utiliza de forma coherente entre los dos dispositivos para una recuperación de datos precisa.
Si desea sincronizar los datos recopilados en tiempo real, debe elegir el ámbito Visitor para sus custom data.
Dispositivo A
// In this example, a Custom data with index `90` was set to "Visitor" scope in Kameleoon.
use kameleoon_client::data::CustomData;

const VISITOR_SCOPE_CUSTOM_DATA_INDEX: u32 = 90;

client.add_data(visitor_code, [CustomData::new(VISITOR_SCOPE_CUSTOM_DATA_INDEX, vec!["your data".to_owned()])])?;

client.flush_instant(visitor_code).await?;
Dispositivo B
// Before working with the data, call the `get_remote_visitor_data` method.
client.get_remote_visitor_data(visitor_code, None).await?;

// After calling the method, the SDK on Device B will have access to CustomData of Visitor scope defined on Device A.
// So, "your data" will be available for targeting and tracking the visitor.

Uso de custom data para la fusión de sesiones

La experimentación cross-device permite combinar el historial de un visitante entre cada uno de sus dispositivos (reconciliación del historial). La reconciliación del historial permite fusionar distintas sesiones del visitante en una sola. Para reconciliar el historial de visitas, utilice CustomData para proporcionar un identificador único del visitante. Para más información, consulte la documentación específica. Una vez activada la reconciliación cross-device, llamar a get_remote_visitor_data() con el parámetro userId recupera todos los datos conocidos de un usuario determinado. A las sesiones con el mismo identificador siempre se les mostrará la misma variación en un experimento. En la vista de Visitante de las páginas de resultados de su experimento, estas sesiones aparecerán como un único visitante. La configuración del SDK garantiza que las sesiones asociadas siempre vean la misma variación del experimento. Sin embargo, existen algunas limitaciones respecto a la asignación de variaciones cross-device. Estas limitaciones se describen aquí. Siga la guía activación de la reconciliación cross-device del historial para configurar su custom data en la plataforma Kameleoon. Posteriormente, podrá utilizar el SDK con normalidad. Los siguientes métodos pueden resultar útiles en el contexto de la fusión de sesiones:
  • get_remote_visitor_data() con UniqueIdentifier(true) añadido: para recuperar datos de todos los visitantes vinculados.
  • track_conversion() o flush() con datos UniqueIdentifier(true) añadidos: para rastrear datos específicos de un visitante que está asociado a otro visitante.
Dado que el custom data que utilice como identificador debe configurarse en ámbito Visitor, debe utilizar la sincronización cross-device de custom data para recuperar el identificador con el método get_remote_visitor_data() en cada dispositivo.
Aquí tiene un ejemplo de cómo usar custom data para la fusión de sesiones.
// In this example, 91 represents the Custom Data's index configured as a unique identifier in Kameleoon.
use kameleoon_client::data::{CustomData, UniqueIdentifier};

const MAPPING_INDEX: u32 = 91;
const FEATURE_KEY: &str = "ff123";

let anonymous_visitor_code = "anonymous-visitor";
let user_id = "authenticated-user";

// 1. Before the visitor is authenticated

// Retrieve the variation for an unauthenticated visitor.
// Assume anonymousVisitorCode is the randomly generated ID for that visitor.
let anonymous_variation = client.get_variation(anonymous_visitor_code, FEATURE_KEY)?;

// 2. After the visitor is authenticated

// Assume `userId` is the visitor code of the authenticated visitor.
client.add_data(anonymous_visitor_code, [CustomData::new(MAPPING_INDEX, vec![user_id.to_owned()])])?;
client.flush_instant(anonymous_visitor_code).await?;

// Indicate that `userId` is a unique identifier.
client.add_data(user_id, [UniqueIdentifier::new(true)])?;

// 3. After the visitor was authorized

// Retrieve the variation for the `userId`, which will match the anonymous visitor code's variation.
let user_variation = client.get_variation(user_id, FEATURE_KEY)?;
let is_same_variation = user_variation.key == anonymous_variation.key; // True

// `userId` and `anonymousVisitorCode` are now linked and can be tracked as a single visitor.
client.track_conversion(user_id, 123)?;

// Additionally, the linked visitors share all fetched previously tracked remote data.
client.get_remote_visitor_data(user_id, None).await?;
En este ejemplo, la aplicación tiene una página de inicio de sesión. Como el ID de usuario es desconocido en el momento del login, se utiliza un identificador anónimo de visitante generado por el método get_visitor_code(). Tras iniciar sesión, el visitante anónimo se asocia con el ID de usuario y se utiliza como identificador único del visitante.

Logging

El SDK genera logs para reflejar diversos procesos e incidencias internos.

Niveles de log

El SDK admite la configuración del logging limitándolo por nivel de log.
use kameleoon_client::logging::{KameleoonLogger, LogLevel};

// The `None` log level does not allow logging.
KameleoonLogger::set_log_level(LogLevel::None);

// The `Error` log level only allows logging issues that may affect the SDK's primary behaviour.
KameleoonLogger::set_log_level(LogLevel::Error);

// The `Warning` log level allows logging issues which may require an attention.
// It extends the `ERROR` log level.
// The `WARNING` log level is a default log level.
KameleoonLogger::set_log_level(LogLevel::Warning);

// The `Info` log level allows logging general information on the SDK's internal processes.
// It extends the `WARNING` log level.
KameleoonLogger::set_log_level(LogLevel::Info);

// The `Debug` level logs additional details about the SDK’s internal processes and extends the `INFO` level
// with more granular. diagnostic output.
// This information is not intended for end-user interpretation but can be sent to our support team
// to assist with internal troubleshooting.
KameleoonLogger::set_log_level(LogLevel::Debug);

Gestión personalizada de los logs

De forma predeterminada, el SDK escribe sus logs en la salida de consola. Este comportamiento puede sobrescribirse.
La limitación del logging por nivel de log se realiza independientemente de la lógica de gestión de los logs.
use kameleoon_client::logging::{KameleoonLogger, LogLevel, Logger};
use log::{error, warn, info, debug};

pub struct CustomLogger;

impl Logger for CustomLogger {
    // `log` method accepts logs from the SDK
    fn log(&self, log_level: LogLevel, message: &str) {
        // Custom log handling logic here. For example:
        match log_level {
            LogLevel::Error   => error!("{}", message),
            LogLevel::Warning => warn!("{}", message),
            LogLevel::Info    => info!("{}", message),
            LogLevel::Debug   => debug!("{}", message),
        }
    }
}
// Log level filtering is applied separately from log handling logic.
// The custom logger will only accept logs that meet or exceed the specified log level.
// Ensure the log level is set correctly.
KameleoonLogger::set_log_level(LogLevel::Debug); // Optional; defaults to `LogLevel.WARNING`.
KameleoonLogger::set_logger(Box::new(CustomLogger));

Referencia

Esta es la documentación de referencia completa del SDK de Rust.

Inicialización

create()

Para utilizar el SDK, cree un KameleoonClient a partir de una instancia de KameleoonClientConfig con KameleoonClientFactory::create_with_config()/KameleoonClientFactory::create_with_file().
use std::time::Duration;

use kameleoon_client::config::KameleoonClientConfigBuilder;
use kameleoon_client::factory::KameleoonClientFactory;

let config = KameleoonClientConfigBuilder::default()
    .client_id("<client-id>".to_owned())                // mandatory
    .client_secret("<client-secret>".to_owned())        // mandatory
    .refresh_interval(Duration::from_mins(60))          // optional (60 minutes by default)
    .session_duration(Duration::from_mins(30))          // optional (30 minutes by default)
    .default_timeout(Duration::from_millis(10_000))     // optional (10000 ms by default)
    .tracking_interval(Duration::from_millis(1_000))    // optional (10000 ms by default)
    .environment("development".to_owned())              // optional
    .top_level_domain(".example.com")                   // mandatory if you use hybrid mode (engine or web experiments)
    .proxy_host("http://192.168.0.25:8080".to_owned())  // optional
    .network_domain("example.com".to_owned())           // optional
    .build()
    .unwrap();

let client = KameleoonClientFactory::create_with_config(site_code, config)?;
Argumentos
NombreTipoDescripción
site_code (obligatorio)&strClave única del proyecto Kameleoon utilizado por el SDK.
config (obligatorio)KameleoonClientConfigObjeto de configuración del SDK.
Valor devuelto
TipoDescripción
Result<KameleoonClient, KameleoonError>Una instancia de cliente en caso de éxito; en caso contrario, un error de inicialización.
Errores
TipoDescripción
ErrorCode::ConfigCredentialsInvalidFaltan las credenciales del SDK.
ErrorCode::SiteCodeIsEmptyEl código de sitio proporcionado está vacío.

initialize()

Espera a que el cliente Kameleoon se inicialice utilizando el default_timeout configurado o un timeout proporcionado. Este método garantiza que el cliente esté completamente inicializado antes de realizar cualquier otra operación.
use std::time::Duration;

// Initializes the client using the configured default timeout
client.initialize().await?;

// Initializes the client with a custom timeout of 5 seconds
client.initialize_with_timeout(Duration::from_secs(5)).await?;
Argumentos
NombreTipoDescripción
timeout (opcional)DurationTiempo máximo de espera para la inicialización.
Valor devuelto
TipoDescripción
Result<(), KameleoonError>Indica si la inicialización se completó correctamente o si se produjo un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.

is_ready()

Comprueba si el cliente ha sido inicializado.
if client.is_ready() {
    // The client is ready
}
Valor devuelto
TipoDescripción
booltrue si el cliente está listo para usarse; en caso contrario, false.

forget()

Elimina el cliente del SDK en caché asociado al site_code especificado.
use kameleoon_client::factory::KameleoonClientFactory;

// Removes the cached client for the given site code
KameleoonClientFactory::forget("a8st4f59bj")?;

// Removes the cached client for the given site code and environment
KameleoonClientFactory::forget_with_environment("a8st4f59bj", "production")?;
Argumentos
NombreTipoDescripción
site_code (obligatorio)&strIdentificador único del proyecto Kameleoon.
environment (opcional)&strClave de entorno asociada al cliente en caché.
Valor devuelto
TipoDescripción
Result<(), KameleoonError>Indica si el cliente en caché se eliminó correctamente o si se produjo un error.

Feature flags y variaciones

is_feature_active()

  • 📨 Envía datos de seguimiento a Kameleoon (según la opción track)
Determina si un feature flag está activo para un usuario determinado. Si el visitante aún no ha sido evaluado para este feature flag, el SDK evalúa las reglas de targeting y devuelve el resultado. Si el visitante ya tiene una evaluación almacenada para la funcionalidad, el SDK reutiliza el resultado existente para garantizar la coherencia.
Kameleoon utiliza el seguimiento para contabilizar sesiones y visitantes cuando llama a determinados métodos, como is_feature_active(), get_variation() o get_variations().Utilice el valor predeterminado true para el parámetro track cuando exponga a los visitantes a una variación y necesite contabilizarlos. Establezca el parámetro track en false solo si llama a estos métodos antes de exponer a los visitantes.Por ejemplo, si llama a get_variations() para recuperar todas las variaciones antes de exponer a los visitantes, establezca el parámetro track en false. Esta configuración evita que Kameleoon contabilice prematuramente una sesión. Posteriormente podrá activar el seguimiento cuando exponga explícitamente al visitante.Kameleoon envía los datos de seguimiento cada segundo por defecto. Puede configurar este intervalo hasta cinco segundos mediante la opción de configuración del intervalo de seguimiento. Kameleoon agrupa los eventos de seguimiento en una única sesión siempre que el intervalo entre eventos sea inferior a 30 minutos. Si transcurren más de 30 minutos entre eventos de seguimiento, Kameleoon los cuenta como sesiones separadas. Una visita aparece en sus informes 30 minutos después del último evento registrado en la sesión.
El método is_feature_active() evalúa la variante servida, no el estado del flag maestro. Si excluye reglas, el método utiliza el estado predeterminado Entonces, para todos los demás servir. Si selecciona Off para este estado predeterminado, el método siempre devolverá false incluso cuando el feature flag maestro esté On.
use kameleoon_client::client::IsFeatureActiveOpts;

let feature_key = "new_checkout";

// Evaluates the feature flag and sends tracking data (default behavior)
let active = client.is_feature_active(visitor_code, feature_key)?;

// Evaluates the feature flag without sending tracking data
let active_without_tracking = client.is_feature_active_with_opts(
    visitor_code,
    feature_key,
    IsFeatureActiveOpts::new().track(false),
)?;
Argumentos
NombreTipoDescripciónPor defecto
visitor_code (obligatorio)&strIdentificador único del usuario.
feature_key (obligatorio)&strClave de la funcionalidad que se va a evaluar para el usuario.
track (opcional)boolActiva o desactiva el seguimiento de la evaluación de la funcionalidad.true
Valor devuelto
TipoDescripción
Result<bool, KameleoonError>Indica si el feature flag está activo para el visitor_code especificado o devuelve un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::FeatureNotFoundExcepción que indica que la clave de funcionalidad solicitada no se encontró en la configuración interna del SDK. Esto suele significar que el feature flag no está activado en la aplicación Kameleoon (pero el código que implementa la funcionalidad ya está desplegado en la aplicación).
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.

get_variation()

  • 📨 Envía datos de seguimiento a Kameleoon (según el parámetro track)
Recupera la Variation asignada a un visitante determinado para un feature flag específico. Este método toma visitor_code y feature_key como argumentos obligatorios. El argumento track es opcional y su valor predeterminado es true. Devuelve la Variation asignada al visitante. Si el visitante no está asociado a ninguna regla de feature flag, el método devuelve la Variation por defecto para el feature flag indicado. Asegúrese de que su código implementa un manejo de errores adecuado para gestionar las posibles excepciones.
La variación por defecto se refiere a la variación asignada a un visitante cuando este no coincide con ninguna regla de entrega predefinida para un feature flag. Dicho de otro modo, es la variación de respaldo que se aplica a todos los usuarios que no son segmentados por reglas específicas. Está representada por la variación de la sección “Entonces, para todos los demás…” en una interfaz de gestión.
use kameleoon_client::client::GetVariationOpts;

let feature_key = "new_checkout";

// Retrieves the variation assigned to the visitor (with tracking enabled by default)
let variation = client.get_variation(visitor_code, feature_key)?;

// Retrieves the variation without sending tracking data
let variation_without_tracking = client.get_variation_with_opts(
    visitor_code,
    feature_key,
    GetVariationOpts::new().track(false),
)?;
Argumentos
NombreTipoDescripciónPor defecto
visitor_code (obligatorio)&strIdentificador único del visitante.
feature_key (obligatorio)&strClave de la funcionalidad que desea exponer a un visitante.
track (opcional)boolUn parámetro opcional para activar o desactivar el seguimiento de la evaluación de la funcionalidad.true
Valor devuelto
TipoDescripción
Result<Variation, KameleoonError>Una Variation asignada a un visitante determinado para un feature flag específico en caso de éxito; en caso contrario, un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.
ErrorCode::FeatureNotFoundExcepción que indica que la clave de funcionalidad solicitada no se encontró en la configuración interna del SDK. Esto suele significar que el feature flag no está activado en la aplicación Kameleoon (pero el código que implementa la funcionalidad ya está desplegado en la aplicación).
ErrorCode::FeatureEnvironmentDisabledExcepción que indica que el feature flag está deshabilitado para el entorno actual del visitante (por ejemplo, producción, staging o desarrollo).
ErrorCode::FeatureEvaluationBlockedExcepción que indica que la evaluación de la funcionalidad está bloqueada. El motivo se describe en el mensaje de error. Esto suele producirse debido a restricciones del RGPD cuando el visitante no ha dado su consentimiento legal.

get_variations()

  • 📨 Envía datos de seguimiento a Kameleoon (según el parámetro track)
Recupera un mapa de objetos Variation asignados a un visitante determinado en todos los feature flags. Este método itera sobre todos los feature flags disponibles y devuelve la Variation asignada para cada flag asociado al visitante especificado. Toma visitor_code como argumento obligatorio, mientras que only_active y track son opcionales.
  • Si only_active se establece en true, el método get_variations() devolverá las variaciones de los feature flags siempre que el usuario no esté bucketizado en la variación off.
  • El parámetro track controla si el método rastrea o no las asignaciones de variaciones. Por defecto, está establecido en true. Si se establece en false, el seguimiento se desactivará.
El mapa devuelto consta de las claves de los feature flags como claves y su Variation correspondiente como valores. Si no hay variación asignada para un feature flag, el método devuelve la Variation por defecto para ese flag. Debe implementarse un manejo de errores adecuado para gestionar las posibles excepciones.
La variación por defecto se refiere a la variación asignada a un visitante cuando este no coincide con ninguna regla de entrega predefinida para un feature flag. Dicho de otro modo, es la variación de respaldo que se aplica a todos los usuarios que no son segmentados por reglas específicas. Está representada por la variación de la sección “Entonces, para todos los demás…” en una interfaz de gestión.
use kameleoon_client::client::GetVariationsOpts;

// Retrieves all variations assigned to the visitor (with default options)
let variations = client.get_variations(visitor_code)?;

// Retrieves only active variations for the visitor
let only_active_variations = client.get_variations_with_opts(
    visitor_code,
    GetVariationsOpts::new().only_active(true),
)?;

// Retrieves variations without sending tracking data
let variations_without_tracking = client.get_variations_with_opts(
    visitor_code,
    GetVariationsOpts::new().track(false),
)?;
Argumentos
NombreTipoDescripciónPor defecto
visitor_code (obligatorio)&strIdentificador único del visitante.
only_active (opcional)boolUn parámetro opcional que indica si devolver las variaciones para los feature flags activos (true) o para todos (false).false
track (opcional)boolUn parámetro opcional para activar o desactivar el seguimiento de la evaluación de la funcionalidad.true
Valor devuelto
TipoDescripción
Result<HashMap<String, Variation>, KameleoonError>Mapa que contiene los objetos Variation asignados de los feature flags utilizando las claves de las funcionalidades correspondientes en caso de éxito; en caso contrario, un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.

set_forced_variation()

El método le permite asignar de forma programática una Variation específica a un usuario, omitiendo el proceso de evaluación estándar. Esto resulta especialmente valioso en experimentos controlados en los que no se requiere la lógica habitual de evaluación o debe omitirse. También puede ser útil en escenarios como la depuración o las pruebas personalizadas. Cuando se establece una variación forzada, esta anula la lógica de evaluación en tiempo real de Kameleoon. Se omiten procesos como la segmentación, las condiciones de targeting y los cálculos algorítmicos. Para conservar la segmentación y las condiciones de targeting durante un experimento, establezca force_targeting=false en su lugar.
Las variaciones simuladas siempre tienen prioridad en el orden de ejecución. Si se activa el cálculo de una variación simulada, esta se procesará y completará primero por completo.
Una variación forzada se trata igual que una variación evaluada. Se rastrea en la analítica y se almacena en el contexto del usuario como cualquier variación estándar evaluada, garantizando la coherencia en los informes. El método puede lanzar excepciones en determinadas condiciones (por ejemplo, parámetros no válidos, contexto del usuario o problemas internos). Es esencial un manejo adecuado de las excepciones para garantizar que su aplicación siga siendo estable y resiliente.
Es importante distinguir las variaciones forzadas de las variaciones simuladas:
  • Variaciones forzadas: son específicas de un experimento individual.
  • Variaciones simuladas: afectan al resultado global del feature flag.
use kameleoon_client::client::SetForcedVariationOpts;

let experiment_id = 202387;

// Forces the visitor into "variation_2" for the given experiment
client.set_forced_variation(visitor_code, experiment_id, Some("variation_2"))?;

// Removes any previously forced variation for the visitor in this experiment
client.set_forced_variation(visitor_code, experiment_id, None)?;

// Forces the visitor into "variation_2" with custom options
// In this case, targeting rules are respected (force_targeting = false)
client.set_forced_variation_with_opts(
    visitor_code,
    experiment_id,
    Some("variation_2"),
    SetForcedVariationOpts::new().force_targeting(false),
)?;
Argumentos
NombreTipoDescripciónPor defecto
visitor_code (obligatorio)&strIdentificador único del visitante.
experiment_id (obligatorio)u32ID del experimento que será segmentado y seleccionado durante el proceso de evaluación.
variation_key (obligatorio)Option<&str>Clave de variación correspondiente a una Variation que debe forzarse como valor devuelto para el experimento. Si el valor es None, la variación forzada se restablecerá.
force_targeting (opcional)boolIndica si la segmentación del experimento debe forzarse y omitirse (true) o aplicarse como en el proceso de evaluación estándar (false).true
Valor devuelto
TipoDescripción
Result<(), KameleoonError>Indica si la variación forzada se estableció correctamente o si se produjo un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.
ErrorCode::FeatureExperimentNotFoundExcepción que indica que el ID del experimento solicitado no se ha encontrado en la configuración interna del SDK. Esto suele ser normal y significa que el experimento correspondiente a la regla aún no se ha activado en el lado de Kameleoon.
ErrorCode::FeatureVariationNotFoundExcepción que indica que la clave (id) de la variación solicitada no se ha encontrado en la configuración interna del SDK. Esto suele ser normal y significa que el experimento correspondiente a la variación aún no se ha activado en el lado de Kameleoon.

evaluate_audiences()

  • 📨 Envía datos de seguimiento a Kameleoon
Este método evalúa a los visitantes frente a todos los segmentos disponibles de Audiences Explorer y rastrea a aquellos que coinciden. evaluate_audiences() debe llamarse después de que se hayan establecido o actualizado todos los datos relevantes del visitante, y justo antes de obtener una variación de funcionalidad o comprobar un feature flag. Este enfoque garantiza que el visitante sea evaluado con los datos más actuales disponibles, lo que permite una asignación precisa de audiencias en función de todos los criterios. Tras llamar a este método, puede realizar un análisis detallado del rendimiento de los segmentos en Audiences Explorer.
client.evaluate_audiences(visitor_code)?;
Argumentos
NombreTipoDescripción
visitor_code (obligatorio)&strIdentificador único del visitante.
Valor devuelto
TipoDescripción
Result<(), KameleoonError>Indica si la evaluación de audiencias se realizó correctamente o si se produjo un error.
Errores
TipoDescripción
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.

get_datafile()

Para evaluar todos los feature flags, utilice get_variations(). Este método es más eficiente que llamar a DataFile e iterar sobre los flags con get_variation().
Devuelve la configuración actual del SDK como un objeto DataFile.
let datafile = client.get_datafile()?;
Valor devuelto
TipoDescripción
Result<Arc<DataFile>, KameleoonError>El DataFile que contiene la configuración del SDK en caso de éxito; en caso contrario, un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.

Datos del visitante

get_visitor_code()

Utilice get_visitor_code() para obtener el visitor_code de Kameleoon del visitante actual. El método funciona con cualquier almacén de cookies que implemente el trait CookieAccessor. La lógica de implementación es la siguiente:
  1. El SDK comprueba si ya hay una cookie kameleoonVisitorCode disponible a través del accesor proporcionado.
  2. Si la cookie no está presente, el SDK utiliza default_visitor_code si lo proporciona.
  3. En caso contrario, el SDK genera un nuevo código de visitante y lo almacena a través del accesor.
Para más información, consulte Experimentación híbrida.
Si proporciona su propio visitor_code, su unicidad debe estar garantizada por su parte. Tenga en cuenta también que la longitud de visitor_code está limitada a 255 caracteres.
El método get_visitor_code() le permite establecer variaciones simuladas para un visitante. Cuando las cookies (de una request o document) contienen la clave kameleoonSimulationFFData, el proceso de evaluación estándar se omite. En su lugar, el método devuelve directamente una Variation basada en los datos proporcionados.Puede aplicar simulaciones de dos formas:
  • Automáticamente (recomendado): si utiliza Kameleoon Web Experimentation o el SDK en modo híbrido, la cookie se crea automáticamente al simular la visualización de una variante mediante el Panel de Simulación.
  • Manualmente: establezca la cookie kameleoonSimulationFFData manualmente.
Es importante distinguir las variaciones simuladas de las variaciones forzadas:
  • Variaciones simuladas: afectan al resultado global del feature flag.
  • Variaciones forzadas: son específicas de un experimento individual.
⚙️ Configuración manualAsegúrese de que la cookie kameleoonSimulationFFData sigue este formato:
  • kameleoonSimulationFFData={"featureKey":{"expId":10,"varId":20}}: simula la variación con varId del experimento expId para el featureKey indicado.
  • kameleoonSimulationFFData={"featureKey":{"expId":0}}: simula la variación por defecto (definida en la sección Entonces, para todos los demás en Producción, servir) para el featureKey indicado.
⚠️ Para garantizar el correcto funcionamiento, el valor de la cookie debe codificarse como componente URI mediante un método como encodeURIComponent.
use std::collections::HashMap;

use kameleoon_client::cookies::CookieAccessor;

// A simple in-memory cookie store, useful for testing or non-HTTP environments
struct MemoryCookies {
    values: HashMap<String, String>,
}

impl CookieAccessor for MemoryCookies {
    // Store the cookie value by key (max_age and top_level_domain are unused here)
    fn set<'a>(&mut self, key: &str, value: &str, _max_age: u32, _top_level_domain: Option<&'a str>) {
        self.values.insert(key.to_owned(), value.to_owned());
    }

    // Retrieve a cookie value by key
    fn get(&self, key: &str) -> Option<&str> {
        self.values.get(key).map(String::as_str)
    }
}

// Generate or retrieve a visitor code using auto-generated value
let visitor_code = client.get_visitor_code(&mut cookies, None)?;
// Generate or retrieve a visitor code using a predefined user ID
let visitor_code = client.get_visitor_code(&mut cookies, Some("user_id"))?;
Argumentos
NombreTipoDescripción
cookies (obligatorio)&mut impl CookieAccessorAccesor de cookies mutable utilizado para leer y almacenar la cookie del visitante.
default_visitor_code (opcional)Option<&str>Código de visitante a utilizar cuando no hay ninguna cookie presente.
Valor devuelto
TipoDescripción
Result<String, KameleoonError>Cadena que representa un código único de visitante utilizado en el SDK en caso de éxito; en caso contrario, un error.

add_data()

El método add_data() añade datos de targeting al almacenamiento para que otros métodos puedan usar los datos para decidir si segmentar o no al visitante actual. El método add_data() no devuelve ningún valor y no interactúa por sí solo con los servidores back-end de Kameleoon. En su lugar, todos los datos declarados se guardan para su transmisión futura mediante el método flush(). Este enfoque reduce el número de llamadas al servidor realizadas, ya que los datos se suelen agrupar en una única llamada al servidor que se desencadena con flush(). El método track_conversion() también envía cualquier dato previamente asociado, igual que flush(). Lo mismo ocurre con los métodos get_variation() y get_variations() si se activa una regla de experimentación.
Cada visitante solo puede tener una instancia de datos asociados para la mayoría de tipos de datos. Sin embargo, CustomData es una excepción. Los visitantes pueden tener una instancia de CustomData asociada por índice.
use kameleoon_client::data::{Browser, BrowserKind, PageView, UserAgent};

client.add_data(visitor_code, [Browser::new(BrowserKind::Chrome, Some(123.0))])?;

client.add_data(
    visitor_code,
    [
        PageView::new("https://example.com/pricing".to_owned(), Some("Pricing".to_owned()), vec![3]).into(),
        UserAgent::new("Mozilla/5.0".to_owned()).into(),
    ],
)?;

client.add_data_with_track(
    visitor_code,
    vec![PageView::new("https://example.com/checkout".to_owned(), Some("Checkout".to_owned()), vec![])],
    false,
)?;
Argumentos
NombreTipoDescripciónValor por defecto
visitor_code (obligatorio)&strIdentificador único del visitante.
data (obligatorio)impl IntoIterator<Item = impl Into<KameleoonData>>Colección de tipos de datos de Kameleoon.
track (opcional)boolEspecifica si los datos añadidos son elegibles para el seguimiento. Si se establece en false, los datos se almacenan localmente y solo se utilizan para la evaluación de la segmentación; no se envían a la API de datos de Kameleoon.true
Valor devuelto
TipoDescripción
Result<(), KameleoonError>Indica si los datos se añadieron correctamente o si se produjo un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.

flush()

  • 📨 Envía datos de seguimiento a Kameleoon
El método flush() agrega todos los datos Kameleoon asociados a un visitante y envía una solicitud de seguimiento al servidor. Esta solicitud incluye los datos añadidos previamente mediante el método add_data que aún no se hayan transmitido a través de otros mecanismos de seguimiento (consulte los métodos referenciados para más detalles). La operación flush() no es bloqueante, ya que la llamada al servidor se realiza de forma asíncrona. Este método proporciona control sobre cuándo se transmiten los datos vinculados a un visitor_code específico. Por ejemplo, si se llama a add_data() varias veces, enviar una solicitud tras cada invocación sería ineficiente. En su lugar, puede agrupar estas actualizaciones y llamar a flush() una vez para enviar todos los datos acumulados en una sola solicitud. El método flush() utiliza el visitor_code proporcionado como identificador único del visitante.
  • flush(): pone en cola una operación de flush según el intervalo de seguimiento configurado.
  • flush_instant(): envía los datos de seguimiento de inmediato sin esperar al intervalo.
// Queues a flush operation for the given visitor_code.
// Data will be sent according to the configured tracking interval (non-blocking).
client.flush(visitor_code)?;

// Immediately sends all pending tracking data for the given visitor_code.
// This is an async operation and must be awaited.
client.flush_instant(visitor_code).await?;
Argumentos
NombreTipoDescripción
visitor_code (obligatorio)&strIdentificador único del visitante.
Valor devuelto
TipoDescripción
Result<(), KameleoonError>Indica si la operación se programó o ejecutó correctamente, o si se produjo un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.

get_remote_data()

El método get_remote_data() le permite recuperar datos remotos almacenados en los servidores de Kameleoon para el key especificado. En la mayoría de las configuraciones, estos datos se escriben a través de la API de datos de Kameleoon y pueden recuperarse posteriormente por su servicio Rust cuando necesite contexto adicional de la aplicación. Este método es útil cuando desea mantener información estructurada en la infraestructura remota de Kameleoon y reutilizarla desde su back-end sin tener que mantener un mecanismo de recuperación independiente.
let data = client.get_remote_data("test-key").await?;
Argumentos
NombreTipoDescripción
key (obligatorio)&strClave asociada a los datos remotos que desea recuperar.
Valor devuelto
TipoDescripción
Result<String, KameleoonError>Carga útil (payload) asociada a la key especificada en caso de éxito; en caso contrario, un error. En la mayoría de los casos, el payload es JSON serializado como cadena.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::NetworkSe devuelve cuando la solicitud de datos remotos falla o el servidor responde con un código de estado no exitoso.

get_remote_visitor_data()

get_remote_visitor_data() es un método asíncrono para recuperar los datos de visita de Kameleoon del visitor_code proporcionado. El método añade los datos al almacenamiento local del visitante para que otros métodos del SDK puedan utilizarlos en decisiones de targeting. Los datos obtenidos con este método son especialmente útiles cuando se desea:
  • utilizar datos recopilados desde otros dispositivos.
  • acceder al historial de un visitante, como páginas vistas previamente en visitas anteriores.
  • utilizar datos que solo están disponibles del lado del cliente, como variables del datalayer y conversiones de objetivos del front-end.
Lea este artículo para comprender mejor los posibles casos de uso.
De forma predeterminada, get_remote_visitor_data() recupera automáticamente los datos personalizados almacenados más recientes con scope=Visitor y los adjunta al visitante sin necesidad de llamar a add_data(). Esto es especialmente útil para sincronizar datos personalizados entre varios dispositivos.
use kameleoon_client::types::RemoteVisitorDataFilter;

// Fetch remote visitor data without any filter
// This will return all available data for the given visitor
client.get_remote_visitor_data(visitor_code, None).await?;

// Create a filter to limit the returned data
let filter = RemoteVisitorDataFilter {
    // Include data from the last 5 visits
    previous_visit_amount: 5,
    // Include conversion events (e.g., goals, transactions)
    conversions: true,
    // Include page view history
    page_views: true,
    // Use default values for all other fields
    ..Default::default()
};

// Fetch remote visitor data using the specified filter
// This will return only the data matching the filter criteria
client.get_remote_visitor_data(visitor_code, Some(filter)).await?;
Argumentos
NombreTipoDescripciónPor defecto
visitor_code (obligatorio)&strCódigo de visitante cuyos datos deben recuperarse.
filter (opcional)Option<RemoteVisitorDataFilter>Filtro que describe qué datos remotos del visitante deben recuperarse.RemoteVisitorDataFilter::default()
Valor devuelto
TipoDescripción
Result<(), KameleoonError>Se devuelve correctamente cuando los datos se recuperan y se añaden localmente; en caso contrario, un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.
ErrorCode::NetworkSe devuelve cuando la solicitud de datos remotos del visitante falla, no puede analizarse o el servidor responde con un código de estado no exitoso.
Uso de parámetros en get_remote_visitor_data()
El método get_remote_visitor_data() le permite controlar qué datos se recuperan de un visitante. El mismo enfoque de filtrado funciona para objetivos, experimentos, variaciones y otros datos del visitante. Por ejemplo, si desea segmentar a los usuarios que convirtieron en un objetivo durante sus últimas cinco visitas, puede establecer previous_visit_amount en 5 y conversions en true. La flexibilidad mostrada en este ejemplo no se limita a los datos de objetivos. Puede usar el filtro para recuperar muchos comportamientos diferentes del visitante y ponerlos a disposición de la lógica de targeting y de informes en su aplicación Rust.
Campos de RemoteVisitorDataFilter
NombreTipoDescripciónPor defecto
previous_visit_amounti32Número de visitas anteriores de las que se recuperan datos.1
current_visitboolSi es true, se recuperarán los datos de la visita actual.true
custom_databoolSi es true, se recuperarán los datos personalizados.true
visitor_codeboolSi es true, se reutilizará el código de visitante más reciente.true
page_viewsboolSi es true, se recuperarán los datos de páginas vistas.false
geolocationboolSi es true, se recuperarán los datos de geolocalización.false
deviceboolSi es true, se recuperarán los datos del dispositivo.false
browserboolSi es true, se recuperarán los datos del navegador.false
operating_systemboolSi es true, se recuperarán los datos del sistema operativo.false
conversionsboolSi es true, se recuperarán los datos de conversiones.false
experimentsboolSi es true, se recuperarán los datos de experimentos.false
kcsboolSi es true, se recuperarán los datos del Kameleoon Conversion Score.false
personalizationsboolSi es true, se recuperarán los datos de personalización.false
cbsboolSi es true, se recuperarán los datos de la puntuación Contextual Bandit.false

get_visitor_warehouse_audience()

Este método recupera los datos de audiencia asociados a un visitante en su integración de warehouse utilizando el visitor_code especificado y, opcionalmente, una warehouse_key. La warehouse_key suele ser su ID de usuario interno. El parámetro custom_data_index corresponde al custom data de Kameleoon que Kameleoon utiliza para segmentar a sus visitantes. Cuando la llamada tiene éxito, el SDK convierte la lista de audiencias devuelta en CustomData, la añade al visitante localmente y la pone disponible para fines de targeting. Para más información, consulte la documentación sobre targeting de warehouse.
// Fetch audience data for a visitor using only the visitor_code.
client.get_visitor_warehouse_audience(visitor_code, None, 98).await?;

// Fetch audience data for a visitor using both visitor_code and warehouse_key.
// Useful when your warehouse uses a different identifier than visitor_code.
client.get_visitor_warehouse_audience(visitor_code, Some("internal-user-id"), 98).await?;
Argumentos
NombreTipoDescripciónPor defecto
visitor_code (obligatorio)&strVisitante cuyas audiencias del warehouse deben recuperarse.
warehouse_key (opcional)Option<&str>Clave externa del warehouse, normalmente su ID de usuario interno.visitor_code
custom_data_index (obligatorio)u32Índice del custom data configurado en Kameleoon para el targeting de audiencias del warehouse.
Valor devuelto
TipoDescripción
Result<(), KameleoonError>Éxito cuando los datos de audiencia del warehouse se recuperan y se almacenan localmente como CustomData.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.
ErrorCode::NetworkSe devuelve cuando la solicitud de audiencia del warehouse falla, no puede analizarse o el servidor responde con un código de estado no exitoso.
Debe utilizar este método para especificar si el visitante ha dado su consentimiento legal para utilizar datos personales. Establecer legal_consent en false limita los tipos de datos que pueden incluirse en las solicitudes de seguimiento. Esto le ayuda a cumplir los requisitos legales y normativos al tiempo que gestiona los datos del visitante de forma responsable. Para más información, consulte la política de gestión del consentimiento. Si proporciona un accesor de cookies, el SDK también actualiza las cookies del visitante según el estado del consentimiento.
// Set consent and update cookies
client.set_legal_consent(visitor_code, true, Some(&mut cookies))?;

// Set consent without updating cookies
client.set_legal_consent(visitor_code, true, None)?;
Argumentos
NombreTipoDescripciónPor defecto
visitor_code (obligatorio)&strIdentificador único del usuario.
legal_consent (obligatorio)booltrue indica que el visitante ha dado su consentimiento legal; false indica que el visitante nunca ha proporcionado o ha retirado el consentimiento legal.
cookies (opcional)Option<&mut impl CookieAccessor>Accesor de cookies opcional utilizado para actualizar las cookies.None
Valor devuelto
TipoDescripción
Result<(), KameleoonError>Indica si el estado de consentimiento del visitante se actualizó correctamente o, en caso contrario, un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.
Comportamiento de la revocación del consentimiento
Cuando llama a set_legal_consent() con legal_consent=false, el SDK no elimina la cookie kameleoonVisitorCode. En su lugar, deja de prolongar la fecha de expiración de la cookie, permitiendo que persista hasta que expire de forma natural. Si sus requisitos de cumplimiento exigen la eliminación inmediata del archivo de cookie tras la exclusión, debe eliminarlo manualmente utilizando los métodos nativos de gestión de cookies de su framework. El SDK no eliminará el archivo automáticamente.

Objetivos y analítica de terceros

track_conversion()

  • 📨 Envía datos de seguimiento a Kameleoon
Utilice este método para rastrear una conversión para un objetivo y usuario específicos. Este método requiere visitor_code y goal_id. Además, este método también acepta los argumentos opcionales revenue, negative y metadata. El visitor_code suele ser idéntico al que se utilizó al activar el experimento.
Este método no es bloqueante, ya que la llamada al servidor se realiza de forma asíncrona.
use kameleoon_client::client::TrackConversionOpts;
use kameleoon_client::data::CustomData;

// Track a goal
client.track_conversion(visitor_code, goal_id)?;

// Track a goal with revenue
client.track_conversion_with_opts(visitor_code, goal_id, TrackConversionOpts::new().revenue(100.0))?;

// Track a goal with negative revenue
client.track_conversion_with_opts(
    visitor_code,
    goal_id,
    TrackConversionOpts::new().revenue(100.0).negative(true)
)?;

// Track a goal with custom metadata
client.track_conversion_with_opts(
    visitor_code,
    goal_id,
    TrackConversionOpts::new().metadata(vec![CustomData::new(4, vec!["true".to_owned()])]),
)?;
Argumentos
NombreTipoDescripciónPor defecto
visitor_code (obligatorio)&strIdentificador único del visitante.
goal_id (obligatorio)u32ID del objetivo.
negative (opcional)boolDefine si los ingresos son positivos o negativos.false
revenue (opcional)f32Ingresos de la conversión.0
metadata (opcional)Vec<CustomData>Metadatos de la conversión. Deben definirse previamente en la aplicación Kameleoon.vec![]
Los valores de los metadatos son accesibles a través de las exportaciones de datos sin procesar y de la página de resultados.Si se proporciona el parámetro metadata, Kameleoon utilizará estos valores especificados para la conversión actual en lugar de lo que se haya recopilado previamente con el método add_data(). Si se omite el parámetro, Kameleoon utilizará los últimos valores rastreados para esos CustomData antes de la conversión y dentro de la misma visita.Kameleoon solo considerará los valores de metadatos que se pasen explícitamente como parámetros al método track_conversion().En el ejemplo siguiente, Kameleoon asociará la conversión únicamente con el valor del custom data proporcionado explícitamente como parámetro (aquí: índice 5 con el valor ‘Amex Credit Card’).
client.add_data(
    visitor_code,
    [
        CustomData::new(5, vec!["Credit Card".to_owned()]),
        CustomData::new(9, vec!["Express Delivery".to_owned()])
    ]
)?;

client.track_conversion_with_opts(
    visitor_code,
    goal_id,
    TrackConversionOpts::new().metadata(vec![CustomData::new(5, vec!["Amex Credit Card".to_owned()])]),
)?
Valor devuelto
TipoDescripción
Result<(), KameleoonError>Indica si la conversión se encoló correctamente para seguimiento asíncrono o, en caso contrario, un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.

get_engine_tracking_code()

Kameleoon se integra con varias soluciones de analítica, incluidas Mixpanel, Google Analytics 4 y Segment. Para rastrear correctamente los experimentos del lado del servidor, llame al método get_engine_tracking_code() después de que el visitante active un experimento. El SDK devuelve comandos de cola JavaScript para los experimentos que el visitante activó durante los cinco segundos anteriores. Cuando inserta este código en la página, Engine.js procesa los comandos y envía los eventos de exposición a través de la integración de analítica activa. Consulte la experimentación híbrida para más información sobre cómo implementar este método.
let tracking_code = client.get_engine_tracking_code(visitor_code)?;
  • Para utilizar esta funcionalidad, implemente tanto el SDK de Rust como Engine.js de Kameleoon. Como Engine.js solo se utiliza para el seguimiento en este flujo, puede instalar el tag asíncrono antes de la etiqueta de cierre </body>.
  • Si solo quiere rastrear experimentos en Kameleoon y no necesita enviar eventos de exposición a herramientas de analítica de terceros, utilice el SDK de JavaScript / TypeScript. Esta opción funciona bien para plataformas de cómputo edge serverless. El SDK de JavaScript / TypeScript rastrea automáticamente las variaciones cuando se llama a getVisitorCode, siempre que se añadan las asignaciones de experimentos correspondientes a window.kameleoonQueue..
  • Puede insertar el código de seguimiento devuelto directamente en una etiqueta <script> HTML.
<html lang="en">
  <body>
    <script>
      const engineTrackingCode = `
        window.kameleoonQueue = window.kameleoonQueue || [];
        window.kameleoonQueue.push(['Experiments.assignVariation', 123456, 7890, true]);
        window.kameleoonQueue.push(['Experiments.trigger', 123456, true]);
        window.kameleoonQueue.push(['Experiments.assignVariation', 234567, 8901, true]);
        window.kameleoonQueue.push(['Experiments.trigger', 234567, true]);
      `;
      const script = document.createElement('script');

      script.textContent = engineTrackingCode;
      document.body.appendChild(script);
    </script>

  </body>
</html>
En este ejemplo, 123456 y 234567 son IDs de experimento, y 7890 y 8901 son IDs de variación. En su implementación, el SDK genera estos valores en el código de seguimiento devuelto.
Argumentos
NombreTipoDescripción
visitor_code (obligatorio)&strIdentificador único del visitante.
Valor devuelto
TipoDescripción
Result<String, KameleoonError>Código JavaScript que debe insertarse en la página en caso de éxito; en caso contrario, un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.
ErrorCode::VisitorCodeInvalidExcepción que indica que el código de visitante proporcionado no es válido. Está vacío o tiene más de 255 caracteres.

Eventos

on_datafile_update()

El método on_datafile_update() le permite gestionar los eventos de actualización del datafile. Acepta un único parámetro, handler, que se llama cada vez que se actualiza la configuración a través de eventos de actualización del datafile mediante polling o streaming.
// Register a callback that is invoked whenever the configuration
// is updated through a polling or streaming datafile update event.
client.on_datafile_update(Some(Box::new(|| {
    // Custom logic to execute after the datafile has been updated.
    println!("Kameleoon datafile updated");
})));

// Unregister the datafile update callback.
// No callback will be invoked for future datafile updates.
client.on_datafile_update(None);
Argumentos
NombreTipoDescripción
handlerOption<Box<dyn Fn() + Send + Sync>>El handler que se llamará cuando se actualice la configuración mediante un evento de configuración en tiempo real.

Tipos de datos

Esta sección enumera los tipos de datos Rust reexportados por el SDK en kameleoon_client::data.

ApplicationVersion

ApplicationVersion representa el número de versión semántica de su aplicación.
Un visitante solo puede tener un ApplicationVersion. Añadir una segunda instancia sobrescribirá la primera.
NombreTipoDescripción
version (opcional)&strLa versión de la aplicación móvil. Este campo debe seguir el versionado semántico. Los formatos aceptados son major, major.minor o major.minor.patch.
use kameleoon_client::data::ApplicationVersion;

// major
client.add_data(visitor_code, [ApplicationVersion::new("10")])?;
// major.minor
client.add_data(visitor_code, [ApplicationVersion::new("10.20")])?;
// major.minor.patch
client.add_data(visitor_code, [ApplicationVersion::new("10.20.30")])?;

Browser

El conjunto de datos Browser aquí almacenado puede utilizarse para filtrar los informes de experimentos y personalización por cualquier valor asociado a él.
NombreTipoDescripción
kind (obligatorio)BrowserKindLista de navegadores: BrowserKind::Chrome, BrowserKind::InternetExplorer, BrowserKind::Firefox, BrowserKind::Safari, BrowserKind::Opera, BrowserKind::Other.
version (opcional)Option<f32>Versión del navegador, un número de punto flotante que representa la versión mayor y menor del navegador
use kameleoon_client::data::{Browser, BrowserKind};

// Browser data with a version
client.add_data(visitor_code, [Browser::new(BrowserKind::Safari, 26.4)])?;
// Browser data without a version
client.add_data(visitor_code, [Browser::new(BrowserKind::Chrome, None)])?;

Conversion

El conjunto de datos Conversion aquí almacenado puede utilizarse para filtrar los informes de experimentos y personalización por cualquier objetivo asociado a él.
  • Cada visitante puede tener varios objetos Conversion.
  • Puede encontrar el goal_id en la aplicación Kameleoon.
NombreTipoDescripciónPor defecto
goal_id (obligatorio)u32ID del objetivo.
revenue (opcional)f32Ingresos de la conversión0
negative (opcional)boolDefine si los ingresos son positivos o negativos.false
metadata (opcional)Vec<CustomData>Metadatos de la conversión.vec![]
use kameleoon_client::data::{Conversion, ConversionOpts, CustomData};

// Add a simple conversion with ID 32
client.add_data(visitor_code, [Conversion::new(32)])?;

// Add conversion with ID 33 including revenue and marked as negative
client.add_data(visitor_code, [Conversion::new_with_opts(33, ConversionOpts::new().revenue(10.0).negative(true))])?;

// Add conversion with ID 34 including revenue, negative flag, and custom metadata
client.add_data(
    visitor_code,
    [
        Conversion::new_with_opts(
            34,
            ConversionOpts::new().revenue(10.0).negative(true).metadata(vec![
                CustomData::new(3, vec!["metadata1".to_owned(), "md2".to_owned()]),
                CustomData::new(5, vec!["md3".to_owned()]),
            ]),
        )
    ],
)?;
Cookie contiene información sobre las cookies almacenadas en el dispositivo del visitante.
NombreTipoDescripción
cookiesHashMap<String, String>Un mapa de cadenas que contiene claves y valores de cookies.
Cada visitante solo puede tener una Cookie. Añadir una segunda Cookie sobrescribirá la primera.
use std::collections::HashMap;
use kameleoon_client::data::Cookie;

client.add_data(visitor_code, [Cookie::new(HashMap::from([("segment".to_owned(), "vip".to_owned())]))])?;

CustomData

CustomData permite la asociación de cualquier tipo de datos con cada visitante, lo que la convierte en una herramienta eficaz para condiciones de targeting en segmentos. Además, puede utilizarse como filtro o desglose en los informes de experimentos. Para más información sobre los datos personalizados, consulte este artículo. Defina los tipos de custom data en la aplicación Kameleoon o en la API de datos y úselos desde el SDK.
NombreTipoDescripciónPor defecto
index/name (obligatorio)u32/StringÍndice o nombre del custom data. Debe proporcionarse index o name para identificar los datos.
values (obligatorio)Vec<String>Valores del custom data que se almacenarán.
overwrite (opcional)boolFlag para controlar explícitamente cómo se almacenan los valores y cómo aparecen en los informes. Ver mástrue
  • Cada visitante solo puede tener un CustomData para cada index (name) único. Añadir otro CustomData con el mismo index (name) sustituirá al existente.
  • El index del custom data se puede encontrar en el panel de Custom Data en la columna “INDEX”.
  • Para evitar que el SDK envíe datos con el índice seleccionado a los servidores de Kameleoon por motivos de privacidad, active la opción: Usar estos datos solo localmente con fines de segmentación al crear el custom data.
  • Añadir una instancia de CustomData creada con un nombre cuando la instancia del SDK no está inicializada o el nombre no está registrado, hará que los datos se ignoren.
use kameleoon_client::data::{CustomData, CustomDataOpts};

client.add_data(visitor_code, [CustomData::new_with_index(1, vec!["value".to_owned()])])?;

// With several values
client.add_data(
    visitor_code,
    [CustomData::new_with_index(
        1,
        vec!["value1".to_owned(), "value2".to_owned()],
    )],
)?;

// To set the `overwrite` flag to false
client.add_data(
    visitor_code,
    [CustomData::new_with_index_opts(
        1,
        vec!["value".to_owned()],
        CustomDataOpts::new().overwrite(false),
    )],
)?;

// To use a name instead of the index
client.add_data(
    visitor_code,
    [CustomData::new_with_name(
        "my-custom-data".to_owned(),
        vec!["value".to_owned()],
    )],
)?;

// To use a name instead of the index and set the `overwrite` flag to false
client.add_data(
    visitor_code,
    [CustomData::new_with_name_opts(
        "my-custom-data",
        vec!["value".to_owned()],
        CustomDataOpts::new().overwrite(false),
    )],
)?;

Device

Puede utilizar los datos del dispositivo para filtrar los informes de experimentos y personalización por cualquier valor asociado.
NombreTipoDescripción
kindDeviceKindTipo de dispositivo. Los valores posibles son Phone, Tablet y Desktop.
use kameleoon_client::data::{Device, DeviceKind};

client.add_data(visitor_code, [Device::new(DeviceKind::Desktop)])?;

Geolocation

Geolocation contiene los detalles de geolocalización del visitante.
NombreTipoDescripción
country (obligatorio)&strEl país del visitante.
region (opcional)Option<String>La región del visitante.
city (opcional)Option<String>La ciudad del visitante.
postal_code (opcional)Option<String>El código postal del visitante.
latitude (opcional)Option<f32>La coordenada de latitud que representa la ubicación del visitante. El número de la coordenada representa grados decimales.
longitude (opcional)Option<f32>La coordenada de longitud que representa la ubicación del visitante. El número de la coordenada representa grados decimales.
  • Cada visitante solo puede tener una Geolocation. Añadir una segunda Geolocation sobrescribirá la primera.
use kameleoon_client::data::GeolocationBuilder;

let geolocation = GeolocationBuilder::default()
    .country("France")
    .region("Ile-de-France".to_owned())
    .city("Paris".to_owned())
    .postal_code("75009".to_owned())
    .latitude(48.8720171)
    .longitude(2.3338352)
    .build()
    .unwrap();

client.add_data(visitor_code, [geolocation])?;

OperatingSystem

OperatingSystem contiene información sobre el sistema operativo del dispositivo del visitante.
NombreTipoDescripción
kindOperatingSystemKindFamilia del sistema operativo. Los valores posibles son Windows, Mac, IOS, Linux, Android y WindowsPhone.
Cada visitante solo puede tener un OperatingSystem. Añadir un segundo OperatingSystem sobrescribirá el primero.
use kameleoon_client::data::{OperatingSystem, OperatingSystemKind};

client.add_data(visitor_code, [OperatingSystem::new(OperatingSystemKind::Windows)])?;

PageView

Almacena eventos de visualización de páginas.
NombreTipoDescripciónPor defecto
urlStringURL de la página vista.
titleOption<String>Título de la página vista.None
referrersVec<u32>Índices de referrers de páginas vistas previamente.vec![]
El índice del referrer está disponible en la aplicación Kameleoon en la página de configuración del canal de adquisición. Tenga cuidado: el índice empieza en 0, por lo que el primer canal de adquisición que cree tendrá el ID 0, no 1.
use kameleoon_client::data::{PageView, PageViewOpts};

// new() - full constructor with url, optional title, and referrers
client.add_data(visitor_code, [PageView::new("https://example.com", Some("Homepage"), vec![3])])?;

// new_with_url() - minimal constructor, only requires a URL
client.add_data(visitor_code, [PageView::new_with_url("https://example.com")])?;

// new_with_opts() - constructor using PageViewOpts builder for optional fields
let opts = PageViewOpts::builder().title("Homepage").referrers(vec![3]).build();
client.add_data(visitor_code, [PageView::new_with_opts("https://example.com", opts)])?;

UniqueIdentifier

Si no añade UniqueIdentifier para un visitante, se utiliza visitor_code como identificador único del visitante, lo que resulta útil para la experimentación cross-device. Cuando añade UniqueIdentifier(true), el SDK vincula los datos volcados con el visitante asociado al identificador especificado. Esto puede resultar útil en situaciones en las que no puede acceder al visitor_code anónimo asignado originalmente a un visitante, pero sí dispone de un identificador interno conectado a ese visitante mediante la fusión de sesiones.
NombreTipoDescripción
valueboolSi el visitor_code actual debe tratarse como un identificador único.
use kameleoon_client::data::UniqueIdentifier;

client.add_data(visitor_code, [UniqueIdentifier::new(true)])?;

UserAgent

Los experimentos del lado del servidor son más propensos a verse afectados por el tráfico de bots que los del lado del cliente. Kameleoon utiliza la lista IAB/ABC International Spiders and Bots List para reconocer bots y arañas conocidos, y también utiliza el campo UserAgent para filtrar otro tráfico no deseado que podría distorsionar sus métricas de conversión. Para más información, consulte el artículo de ayuda sobre filtrado de bots. Si utiliza bots internos, le recomendamos enviar el valor de user-agent curl/8.0 para excluirlos de la analítica.
NombreTipoDescripción
valueStringValor de User-Agent enviado con las solicitudes de seguimiento.
use kameleoon_client::data::UserAgent;

client.add_data(visitor_code, [UserAgent::new("Mozilla/5.0")])?;

Tipos devueltos

DataFile

El DataFile contiene los detalles de configuración del SDK. Puede ampliarse con información adicional si los clientes lo requieren. Si necesita más detalles, póngase en contacto con su Customer Success Manager.
NombreTipoDescripción
feature_flagsHashMap<String, FeatureFlag>Un mapa de objetos FeatureFlag, indexado por las claves de feature flag.
date_modifiedi64La marca de tiempo (en milisegundos) que indica cuándo se modificó por última vez el DataFile.
// Retrieves the map of feature flags from the DataFile.
// The map is keyed by feature flag identifiers, with each value being a FeatureFlag object.
let feature_flags: &HashMap<String, FeatureFlag> = &datafile.feature_flags;

// Retrieves the last modification timestamp of the DataFile.
// The value is an i64 representing milliseconds since the Unix epoch.
let date_modified: i64 = datafile.date_modified;

FeatureFlag

FeatureFlag representa un conjunto de propiedades que definen un feature flag en sí mismo, por ejemplo, sus Variations, Rules, estado del entorno y otros detalles relacionados. Puede ampliarse con información adicional si los clientes lo requieren. Si necesita más detalles, póngase en contacto con su Customer Success Manager.
NombreTipoDescripción
environment_enabledboolIndica si el feature flag está habilitado en el entorno actual.
default_variation_key&strLa clave de la variación por defecto asociada al feature flag.
variationsHashMap<String, Variation>Un mapa de objetos Variation, indexado por las claves de variación.
rulesVec<Rule>Una lista de objetos Rule

// Check whether the feature flag is enabled in the current environment.
let environment_enabled: bool = feature_flag.environment_enabled;

// Retrieve the key of the default variation.
let default_variation_key: &String = &feature_flag.default_variation_key;

// Retrieve the default variation object.
let default_variation: &Variation = feature_flag.default_variation();

// Retrieve all variations of the feature flag as a map (key = variation key, value = Variation object).
let variations: &HashMap<String, Variation> = &feature_flag.variations;

// Retrieve all targeting rules associated with the feature flag.
let rules: &Vec<Rule> = &feature_flag.rules;

Rule

Rule representa un conjunto de propiedades que definen una regla en sí misma, por ejemplo, sus Variations. Puede ampliarse con información adicional si los clientes lo requieren. Si necesita más detalles, póngase en contacto con su Customer Success Manager.
NombreTipoDescripción
variationsHashMap<String, Variation>Un mapa de objetos Variation, indexado por las claves de variación.
// Retrieve all variations of the rule as a map (key = variation key, value = Variation object)
let variations = &rule.variations;

Variation

Variation contiene información sobre la variación asignada al visitante o la variación por defecto cuando no existe una asignación específica.
NombreTipoDescripción
nameStringEl nombre de la variación.
keyStringLa clave única que identifica la variación.
idOption<u32>El ID de la variación asignada o None para una variación por defecto.
experiment_idOption<u32>El ID del experimento asociado a la variación o None para una variación por defecto.
variablesVec<Variable>Variables asociadas a la variación. Esta colección puede estar vacía cuando no hay variables adjuntas.
  • Variation describe la variación asignada o por defecto, mientras que Variable contiene los detalles de cada variable individual.
  • id y experiment_id pueden ser None, lo que indica una variación por defecto que no está ligada a una asignación específica de experimento.
Métodos auxiliares adicionales:
MétodoTipo devueltoDescripción
is_active()boolDevuelve false para la variación off.
get_variable(key)Option<&Variable>Devuelve una variable de la variación por clave.
// Retrieving the variation name
let variation_name = &variation.name;

// Retrieving the variation key
let variation_key = &variation.key;

// Retrieving the variation id
let variation_id = variation.id;

// Retrieving the experiment id
let experiment_id = variation.experiment_id;

// Retrieving the variables `Vec`
let variables = &variation.variables;

// Checking if the variation is active (i.e., currently being served to visitors)
let is_active = variation.is_active();

// Retrieving a variable by its key, returning `None` if not found
let variable = variation.get_variable("title")?;

Variable

Variable contiene información sobre una variable asociada a la variación asignada.
NombreTipoDescripción
keyStringLa clave única que identifica la variable.
kindStringEl tipo de variable. Los valores posibles incluyen BOOLEAN, NUMBER, STRING, JSON, JS y CSS.
valueJsonValueEl valor de la variable. Dependiendo de kind, puede contener un booleano, un número, una cadena, una cadena JSON, un fragmento JavaScript o un fragmento CSS.
use kameleoon_client::types::JsonValue;

// Retrieve the list of variables associated with the variation
let variables = &variation.variables;

// Access the variable type (kind) for conditional handling
let kind = &variable.kind;

// Extract the value as a number (returns `None` if not a number)
let number: Option<f64> = variable.value.as_number();

// Extract the value as a boolean (returns `None` if not a boolean)
let apply_discount: Option<bool> = variable.value.as_bool();

// Extract the value as a string slice (returns `None` if not a string)
let title: Option<&str> = variable.value.as_str();
JsonValue
JsonValue representa el valor de una variable de variación en Rust.
ValorDescripción
JsonValue::Boolean(bool)Representa un valor booleano.
JsonValue::Number(f64)Representa un valor numérico.
JsonValue::String(String)Representa un valor de cadena.
JsonValue::Json(String)Representa un valor codificado en JSON.
JsonValue::Js(String)Representa un fragmento de código JavaScript.
JsonValue::Css(String)Representa un fragmento de código CSS.

Métodos obsoletos

Estos métodos están obsoletos y se eliminarán en la versión 1.0.0 del SDK.

get_feature_keys()

Si desea iterar sobre todos los feature flags y llamar a get_variation() en cada uno, utilice el método get_variations() en su lugar.
Devuelve una lista de claves de feature flags actualmente disponibles para el SDK.
let feature_keys = client.get_feature_keys()?;
Valor devuelto
TipoDescripción
Result<Vec<String>, KameleoonError>Lista de claves de feature flags en caso de éxito; en caso contrario, un error.
Errores
TipoDescripción
ErrorCode::InitializationIndica que el SDK aún no está completamente inicializado.