

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Exemplo 2: divisão A/B de tráfego
<a name="monetization-functions-examples-ab"></a>

## Cenário
<a name="monetization-functions-examples-ab-scenario"></a>

Um serviço de streaming quer usar uma função CUSTOM\_OUTPUT para dividir aleatoriamente o tráfego de solicitações de anúncios entre dois URLs do servidor de decisão de anúncios (ADS) para testes. A/B Metade das solicitações de anúncios vai para o endpoint v1 e metade vai para o endpoint v2.

## Configuração
<a name="monetization-functions-examples-ab-config"></a>

**A/B divisão de tráfego (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%}"
        }
    }
}
```

Nesta configuração:
+ `FunctionId`— Um nome exclusivo para essa função.
+ `FunctionType`— `CUSTOM_OUTPUT` avalia expressões sem fazer chamadas HTTP.
+ `Output`— Mapeia `adsRequest.url` para uma expressão que seleciona aleatoriamente um dos dois URLs do ADS.

## Mapeamento de funções
<a name="monetization-functions-examples-ab-mapping"></a>

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

## O que acontece quando a função é executada
<a name="monetization-functions-examples-ab-runtime"></a>

1. Um intervalo publicitário é encontrado durante a reprodução.

1. MediaTailor executa o gancho do `PRE_ADS_REQUEST` ciclo de vida e funciona. `abTestAdsUrl`

1. A `$random()` função retorna um valor entre 0 e 1. Se o valor for menor que 0,5, a função define o URL do ADS como o endpoint v1. Caso contrário, ele define o URL para o endpoint v2.

A `$random()` função é avaliada em cada intervalo de anúncio, portanto, a divisão é por solicitação de anúncio, não por sessão.

**dica**  
Para ajustar a taxa de divisão de tráfego, altere o valor limite. Por exemplo, `$random() < 0.8` envia 80% do tráfego para o primeiro URL e 20% para o segundo.

**nota**  
Escrever em `adsRequest.url` substitui o URL padrão do ADS configurado na configuração de reprodução do intervalo publicitário atual.

Para obter mais informações, consulte [SAÍDA\_PERSONALIZADA](monetization-functions-types-custom-output.md), [SOLICITAÇÃO PRÉVIA DE ANÚNCIOS](monetization-functions-hooks-pre-ads.md) e [Referência de expressão JSonata](monetization-functions-jsonata.md).