

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 4: Recurso a un servidor de anuncios secundario
<a name="monetization-functions-examples-backup-ads"></a>

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

El ADS principal a veces muestra menos anuncios de los que puede contener la pausa publicitaria. Cuando eso suceda, querrás obtener anuncios adicionales de un servidor de anuncios secundario y añadirlos a la lista de anuncios para que los anuncios adicionales puedan ocupar el tiempo restante.

En este ejemplo, se utiliza el enlace del `POST_ADS_RESPONSE` ciclo de vida. Una `VAST_REQUEST` función obtiene los anuncios secundarios y `SEQUENTIAL_EXECUTOR` organiza el proceso. El bloque de resultados del ejecutor añade los anuncios obtenidos a la lista de anuncios y `RunCondition` omite por completo la búsqueda secundaria cuando la respuesta principal ya contiene suficientes anuncios.

## Configuración de funciones
<a name="monetization-functions-examples-backup-ads-config"></a>

**Función de búsqueda (`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%}"
        }
    }
}
```

**Secuencia (`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[]%}"
        }
    }
}
```

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

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

## Qué sucede en tiempo de ejecución
<a name="monetization-functions-examples-backup-ads-runtime"></a>

1. MediaTailor recibe y analiza la respuesta ADS principal y, a continuación, activa el enlace del `POST_ADS_RESPONSE` ciclo de vida.

1. Si la respuesta principal contiene menos de 3 anuncios, `RunCondition` se evalúa `true` y `fetchBackupAds` llama al servidor de anuncios secundario. MediaTailor luego analiza la respuesta como VAST, resuelve los redireccionamientos del contenedor y escribe los anuncios analizados en. `temp.backupAds`

1. Si la respuesta principal ya contiene 3 o más anuncios, la búsqueda se omite y no se establece. `temp.backupAds`

1. El bloque de salida de la secuencia escribe la lista de anuncios combinada en. `adsResponse.ads` Cuando se omite la búsqueda, la condición pasa a la `else` rama y devuelve los anuncios originales sin cambios. Como los anuncios secundarios los analizaba una `VAST_REQUEST` función que invocaba el mismo enlace, MediaTailor restaura los datos VAST completos de cada anuncio adjunto antes de la selección del anuncio.

1. La selección de anuncios continúa con la lista combinada. Si se produce un error en la búsqueda secundaria, `temp.backupAds` se trata de una matriz vacía y la lista de anuncios original se utiliza sin cambios.

**nota**  
El final de `[]` la expresión de salida es obligatorio. Sin la coerción de la matriz, una expresión que produce cero o uno y no produce una matriz, y el resultado se descarta o se aplica incorrectamente. Para obtener más información, consulte [Post-ads respuesta](monetization-functions-hooks-post-ads.md).

Para obtener más información sobre los campos utilizados en este ejemplo, consulte [Solicitud VAST](monetization-functions-types-vast-request.md) y. [Post-ads respuesta](monetization-functions-hooks-post-ads.md)