

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exemple 2 : répartition A/B du trafic
<a name="monetization-functions-examples-ab"></a>

## Scénario
<a name="monetization-functions-examples-ab-scenario"></a>

Un service de streaming souhaite utiliser une fonction CUSTOM\_OUTPUT pour répartir de manière aléatoire le trafic de demandes publicitaires entre deux URL de serveur de décision publicitaire (ADS) à des fins de test. A/B La moitié des demandes publicitaires sont destinées au point de terminaison v1 et l'autre moitié au point de terminaison v2.

## Configuration
<a name="monetization-functions-examples-ab-config"></a>

**A/B répartition du trafic (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%}"
        }
    }
}
```

Dans cette configuration :
+ `FunctionId`— Nom unique pour cette fonction.
+ `FunctionType`— `CUSTOM_OUTPUT` évalue les expressions sans effectuer d'appels HTTP.
+ `Output`— Correspond `adsRequest.url` à une expression qui sélectionne de manière aléatoire l'une des deux URL ADS.

## Cartographie des fonctions
<a name="monetization-functions-examples-ab-mapping"></a>

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

## Que se passe-t-il lorsque la fonction s'exécute
<a name="monetization-functions-examples-ab-runtime"></a>

1. Une interruption publicitaire se produit lors de la diffusion.

1. MediaTailor exécute le hook `PRE_ADS_REQUEST` du cycle de vie et s'exécute`abTestAdsUrl`.

1. La `$random()` fonction renvoie une valeur comprise entre 0 et 1. Si la valeur est inférieure à 0,5, la fonction définit l'URL ADS sur le point de terminaison v1. Sinon, il définit l'URL du point de terminaison v2.

La `$random()` fonction est évaluée à chaque pause publicitaire, de sorte que la répartition se fait par demande publicitaire, et non par session.

**Astuce**  
Pour ajuster le ratio de répartition du trafic, modifiez la valeur du seuil. Par exemple, `$random() < 0.8` envoie 80 % du trafic vers la première URL et 20 % vers la seconde.

**Note**  
L'écriture vers `adsRequest.url` remplace l'URL ADS par défaut configurée dans la configuration de diffusion pour la pause publicitaire en cours.

Pour plus d’informations, consultez [SORTIE\_PERSONNALISÉE](monetization-functions-types-custom-output.md), [DEMANDE PRÉALABLE AUX ANNONCES](monetization-functions-hooks-pre-ads.md) et [Référence d'expression JSonata](monetization-functions-jsonata.md).