

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejemplo 2: división A/B del tráfico
<a name="monetization-functions-examples-ab"></a>

## Escenario
<a name="monetization-functions-examples-ab-scenario"></a>

Un servicio de streaming quiere usar una función CUSTOM\_OUTPUT para dividir aleatoriamente el tráfico de solicitudes de anuncios entre dos URL del servidor de decisiones publicitarias (ADS) con fines de prueba. A/B La mitad de las solicitudes de anuncios van al punto final de la versión 1 y la otra mitad al punto final de la versión 2.

## Configuración
<a name="monetization-functions-examples-ab-config"></a>

**A/B división de tráfico (CUSTOM\_OUTPUT):**

```
{
    "FunctionId": "abTestAdsUrl",
    "FunctionType": "CUSTOM_OUTPUT",
    "CustomOutputConfiguration": {
        "Runtime": "JSONATA",
        "Output": {
            "adsRequest.url": "{%$random() < 0.5 ? 'https://ads.example.com/v1/decision?session=' & session.id : 'https://ads.example.com/v2/decision?session=' & session.id%}"
        }
    }
}
```

En esta configuración:
+ `FunctionId`— Un nombre único para esta función.
+ `FunctionType`— `CUSTOM_OUTPUT` evalúa las expresiones sin realizar llamadas HTTP.
+ `Output`— Se asigna `adsRequest.url` a una expresión que selecciona aleatoriamente una de las dos URL de ADS.

## Mapeo de funciones
<a name="monetization-functions-examples-ab-mapping"></a>

```
{
    "FunctionMapping": {
        "PRE_ADS_REQUEST": "abTestAdsUrl"
    }
}
```

## ¿Qué ocurre cuando se ejecuta la función
<a name="monetization-functions-examples-ab-runtime"></a>

1. Se produce una pausa publicitaria durante la reproducción.

1. MediaTailor ejecuta el enlace `PRE_ADS_REQUEST` del ciclo de vida y se ejecuta`abTestAdsUrl`.

1. La `$random()` función devuelve un valor entre 0 y 1. Si el valor es inferior a 0,5, la función establece la URL de ADS en el punto final v1. De lo contrario, establece la URL en el punto final de la versión 2.

La `$random()` función se evalúa en cada pausa publicitaria, por lo que se divide por solicitud de anuncio, no por sesión.

**sugerencia**  
Para ajustar la proporción de reparto del tráfico, cambia el valor límite. Por ejemplo, `$random() < 0.8` envía el 80% del tráfico a la primera URL y el 20% a la segunda.

**nota**  
Al escribir para, se `adsRequest.url` anula la URL ADS predeterminada configurada en la configuración de reproducción de la pausa publicitaria actual.

Para obtener más información, consulte [SALIDA\_PERSONALIZADA](monetization-functions-types-custom-output.md), [PRE\_ADS\_REQUEST](monetization-functions-hooks-pre-ads.md) y [Referencia de expresión JSonata](monetization-functions-jsonata.md).