

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.

# Solicitud VAST
<a name="monetization-functions-types-vast-request"></a>

## Cuándo se debe usar
<a name="monetization-functions-types-vast-request-when"></a>

`VAST_REQUEST`Utilízala cuando tu función necesite obtener anuncios de un punto final de una plantilla de publicación de anuncios de vídeo (VAST). MediaTailor envía la solicitud, analiza la respuesta como VAST con las redirecciones del contenedor resueltas y pone los anuncios analizados a disposición de tus expresiones de salida. Los casos de uso más comunes incluyen buscar anuncios de un servidor de anuncios secundario para complementar una respuesta principal breve y recuperar anuncios internos o promociones para utilizarlos en pausas publicitarias insuficientemente rellenadas.

`VAST_REQUEST`las funciones se admiten en los ganchos del `PRE_MANIFEST_INSERTION` ciclo de vida `POST_ADS_RESPONSE` y por separado o como etapas dentro de un ejecutor. Los anuncios analizados por una `VAST_REQUEST` función se integran con los resultados de esos ganchos con total fidelidad. Para obtener más información, consulte [Cómo se integran los anuncios analizados con las salidas de enlace](#monetization-functions-types-vast-request-store).

## Campos de configuración
<a name="monetization-functions-types-vast-request-fields"></a>

Una `VAST_REQUEST` función tiene los siguientes campos:
+ **Tiempo de ejecución**: el lenguaje de expresiones. Establézcalo en`JSONATA`.
+ **MethodType**— El método HTTP. Los valores admitidos son `GET` (el valor predeterminado) y`POST`.
+ **Url**: el punto final de VAST al que enviar la solicitud. Puede usar una URL estática o una expresión Jsonata que cree la URL de forma dinámica. Una URL estática debe usar el `https` esquema.
+ **Encabezados**: los encabezados HTTP que se van a incluir en la solicitud, especificados como pares de nombre y valor del encabezado. Utilice `{%...%}` la sintaxis de expresiones para los valores de encabezado dinámicos.
+ **Cuerpo**: el cuerpo de la solicitud que se va a enviar. Se usa con `POST` solicitudes, por ejemplo, para enviar una solicitud de oferta de OpenRTB. Puede usar una expresión JSonata para crear el cuerpo de forma dinámica.
+ **RequestTimeoutMilliseconds**(obligatorio): cuánto tiempo hay que esperar para recibir una respuesta.
+ **Salida**: define los valores que se generarán una vez finalizada la llamada. Cada entrada asigna una clave de salida a una expresión que puede hacer referencia al `response` objeto, incluso`response.parsedAds`.

Los límites de solicitud HTTP que se aplican a `HTTP_REQUEST` las funciones también se aplican aquí. Para obtener más información, consulte [Límites](monetization-functions-limits.md).

## Cómo se procesa la solicitud
<a name="monetization-functions-types-vast-request-phases"></a>

1. **Crea la solicitud**: MediaTailor evalúa las `Body` expresiones `Url``Headers`, y comparándolas con el estado actual de la sesión y, a continuación, envía la solicitud. `POST`las solicitudes se envían con el tipo de `application/json` contenido.

1. **Analiza la respuesta**: MediaTailor analiza el cuerpo de la respuesta como VAST. Si un anuncio es un contenedor VAST, MediaTailor sigue la cadena de redireccionamiento y la convierte en el último anuncio en línea. Las solicitudes de redireccionamiento del contenedor siempre se envían con él`GET`, tal y como exige la especificación VAST. Si su terminal devuelve un documento que contiene una URL de VAST en lugar de la propia VAST (como hacen algunos postores), encadene un `HTTP_REQUEST` paso que recupere la URL y, a continuación, otro `VAST_REQUEST` paso que la recupere.

1. **Procesa los anuncios analizados**: MediaTailor evalúa las expresiones del bloque de salida. Estas expresiones pueden hacer referencia al estado original de la sesión y al `response` objeto.

## Campos de respuesta
<a name="monetization-functions-types-vast-request-response"></a>

Una vez finalizada la llamada, puede hacer referencia a los siguientes campos en sus expresiones de salida:


| Campo | Tipo | Description (Descripción) | 
| --- | --- | --- | 
| response.parsedAds | Matriz | Se resolvieron los anuncios analizados, con los redireccionamientos del contenedor. Cada anuncio tiene la misma forma que las adsResponse.ads entradas siguientes:adId,,,,,durationSeconds,, adSystem adTitlecreativeId, sequence y. POST\_ADS\_RESPONSE mediaFiles trackingEvents Se establece en una matriz vacía cuando la llamada falle o la respuesta no sea válida como VAST. | 
| response.statusCode | Entero | El código de estado HTTP devuelto por el punto final. Establézcalo como null si no hubiera error de red. | 

Como los anuncios analizados utilizan la misma forma que`adsResponse.ads`, puede mover expresiones entre las dos superficies sin tener que volver a escribir las referencias a los campos.

## Cómo se integran los anuncios analizados con las salidas de enlace
<a name="monetization-functions-types-vast-request-store"></a>

Todos los anuncios que analiza una `VAST_REQUEST` función se retienen internamente MediaTailor, codificados con el ID de anuncio VAST del anuncio, mientras dure la invocación del enlace. De este modo, los anuncios analizados reciben un tratamiento de primera clase en los resultados de los enlaces:
+ Al añadir un anuncio analizado `adsResponse.ads` por su contenido`POST_ADS_RESPONSE`, se `adId` restauran todos los datos VAST analizados del anuncio, incluida la lista completa de archivos multimedia y los eventos de seguimiento.
+ En efecto`PRE_MANIFEST_INSERTION`, al insertar un anuncio solo con sus botones, se puede MediaTailor seleccionar `vastAdId` el mejor archivo multimedia y gestionar automáticamente el registro de transcodificación.

**importante**  
Los anuncios retenidos no se transfieren entre las invocaciones de enlaces. Una `VAST_REQUEST` llamada realizada a las no `POST_ADS_RESPONSE` está disponible para una `PRE_MANIFEST_INSERTION` invocación posterior. Llama `VAST_REQUEST` a la misma cadena de funciones del enlace en la que utilizas sus resultados.

## Comportamiento de error
<a name="monetization-functions-types-vast-request-failure"></a>

Si la llamada falla debido a un error de red o a que se ha agotado el tiempo de espera, si el punto final devuelve un error HTTP o si la respuesta no se puede analizar como VAST, `response.parsedAds` es una matriz vacía y la cadena de funciones continúa. Comprueba si hay `response.statusCode` un error de HTTP y una respuesta de VAST que realmente no contiene anuncios.

**sugerencia**  
Mantente `RequestTimeoutMilliseconds` firme. La resolución de un contenedor VAST puede implicar varios viajes de ida y vuelta a la red, y todos ellos se descontarán del tiempo de espera del enlace y del presupuesto del enlace compartido.

## Ejemplo: buscar anuncios de un servidor de anuncios secundario
<a name="monetization-functions-types-vast-request-example"></a>

La siguiente función obtiene los anuncios de un servidor de anuncios de respaldo y almacena los anuncios analizados en datos temporales. Un `CUSTOM_OUTPUT` paso más adelante en la misma secuencia puede añadirlos a. `adsResponse.ads` Está diseñado para el `POST_ADS_RESPONSE` ciclo de vida.

```
{
    "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%}"
        }
    }
}
```

En su lugar, para enviar una solicitud de oferta de OpenRTB, `MethodType` configúrela en `POST` e introdúzcala en. `Body` El postor debe devolver VAST en el cuerpo de respuesta.

Para ver un recorrido completo de un ejemplo similar, consulte. [Ejemplos de funciones](monetization-functions-examples.md)