

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 4: fallback do servidor de anúncios secundário
<a name="monetization-functions-examples-backup-ads"></a>

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

Às vezes, seu ADS principal retorna menos anúncios do que o intervalo publicitário pode conter. Quando isso acontece, você quer buscar anúncios adicionais de um servidor de anúncios secundário e anexá-los à lista de anúncios, para que os anúncios extras possam preencher o tempo restante.

Este exemplo usa o gancho do `POST_ADS_RESPONSE` ciclo de vida. Uma `VAST_REQUEST` função busca os anúncios secundários e `SEQUENTIAL_EXECUTOR` orquestra o processo. O bloco de saída do executor anexa os anúncios buscados à lista de anúncios e `RunCondition` ignora completamente a busca secundária quando a resposta primária já tem anúncios suficientes.

## Configuração da função
<a name="monetization-functions-examples-backup-ads-config"></a>

**Função de busca (`fetchBackupAds`): **

```
{
    "FunctionId": "fetchBackupAds",
    "FunctionType": "VAST_REQUEST",
    "VastRequestConfiguration": {
        "Runtime": "JSONATA",
        "MethodType": "GET",
        "Url": "{%'https://backup-ads.example.com/vast?sid=' & session.uuid%}",
        "Headers": {
            "Accept": "application/xml"
        },
        "RequestTimeoutMilliseconds": 1000,
        "Output": {
            "temp.backupAds": "{%response.parsedAds%}"
        }
    }
}
```

**Sequência (`backupAdsFallback`): **

```
{
    "FunctionId": "backupAdsFallback",
    "FunctionType": "SEQUENTIAL_EXECUTOR",
    "SequentialExecutorConfiguration": {
        "Runtime": "JSONATA",
        "TimeoutMilliseconds": 2000,
        "FunctionList": [
            { "FunctionId": "fetchBackupAds", "RunCondition": "{%$count(adsResponse.ads) < 3%}" }
        ],
        "Output": {
            "adsResponse.ads": "{%$count(adsResponse.ads) < 3 ? $append(adsResponse.ads, temp.backupAds)[] : adsResponse.ads[]%}"
        }
    }
}
```

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

```
{
    "FunctionMapping": {
        "POST_ADS_RESPONSE": "backupAdsFallback"
    }
}
```

## O que acontece no runtime
<a name="monetization-functions-examples-backup-ads-runtime"></a>

1. MediaTailor recebe e analisa a resposta primária do ADS e, em seguida, dispara o gancho do `POST_ADS_RESPONSE` ciclo de vida.

1. Se a resposta primária contiver menos de 3 anúncios, ela `RunCondition` avalia `true` e `fetchBackupAds` liga para o servidor de anúncios secundário. MediaTailor em seguida, analisa a resposta como VAST, resolve os redirecionamentos do wrapper e grava os anúncios analisados em. `temp.backupAds`

1. Se a resposta principal já tiver 3 ou mais anúncios, a busca será ignorada e não `temp.backupAds` será definida.

1. O bloco de saída da sequência grava a lista de anúncios combinada em`adsResponse.ads`. Quando a busca foi ignorada, a condição se `else` ramifica e retorna os anúncios originais inalterados. Como os anúncios secundários foram analisados por uma `VAST_REQUEST` função na mesma invocação de gancho, MediaTailor restaura os dados VAST completos de cada anúncio anexado antes da seleção do anúncio.

1. A seleção de anúncios prossegue com a lista combinada. Se a busca secundária falhar, `temp.backupAds` será uma matriz vazia e a lista de anúncios original será usada inalterada.

**nota**  
O final `[]` na expressão de saída é obrigatório. Sem coerção de matriz, uma expressão que produz zero ou um anúncio não produz uma matriz e a saída é descartada ou aplicada incorretamente. Para obter mais informações, consulte [Post-ads resposta](monetization-functions-hooks-post-ads.md).

Para obter mais informações sobre os campos usados neste exemplo, consulte [Solicitação VAST](monetization-functions-types-vast-request.md) [Post-ads resposta](monetization-functions-hooks-post-ads.md) e.