View a markdown version of this page

HTTP_REQUEST - AWS Elemental MediaTailor

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.

HTTP_REQUEST

Cuándo se debe usar

Úselo HTTP_REQUEST cuando su función necesite llamar a un servicio externo. Los casos de uso más comunes incluyen la obtención de datos de identidad de un proveedor de resolución, la recuperación de segmentos de audiencia de una plataforma de administración de datos y el envío de la información de la sesión a un punto final de registro.

Campos de configuración

Una HTTP_REQUEST función tiene los siguientes campos:

  • Tiempo de ejecución: el lenguaje de expresión. Establézcalo enJSONATA.

  • MethodType— El método HTTP. Los valores admitidos son GET y POST.

  • Url: la URL a la que se va a enviar la solicitud. Puede utilizar una URL estática o una expresión JSonata que genere la URL de forma dinámica.

  • 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 expresión para los valores de los encabezados dinámicos. Los valores estáticos se pueden especificar directamente como cadenas.

  • Cuerpo: el cuerpo de la solicitud que se va a enviar. Se usa con POST las solicitudes. Puede usar una expresión JSonata para construir el cuerpo de forma dinámica.

  • RequestTimeoutMilliseconds(obligatorio): cuánto tiempo se debe esperar para recibir una respuesta.

  • Salida: define los valores que se generarán una vez finalizada la llamada HTTP. Cada entrada asigna una clave de salida (por ejemploplayer_params.envelope_id) a una expresión que puede hacer referencia al response objeto.

Para conocer los límites y restricciones de tamaño que se aplican a estos campos, consulteLímites.

Cómo se procesa la solicitud

MediaTailor procesa una HTTP_REQUEST función en dos pasos:

  1. Crea la solicitud: MediaTailor evalúa las Body expresiones UrlHeaders, y comparándolas con el estado de la sesión actual. Estos valores evaluados forman la solicitud HTTP saliente.

  2. Procesa la respuesta: una vez finalizada la llamada HTTP, MediaTailor evalúa las expresiones del bloque de salida. Estas expresiones pueden hacer referencia tanto al estado de la sesión original como al response objeto devuelto por la llamada.

Campos de respuesta

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

Campo Tipo Description (Descripción)
response.body Objeto o matriz El cuerpo de la respuesta se analizó como JSON. Se establece en null si el cuerpo tiene más de 20 000 caracteres o no es un JSON válido.
response.statusCode Entero El código de estado HTTP devuelto por el servicio externo. Se establece null en caso de fallo de red.
response.text Cadena El cuerpo de la respuesta sin procesar en forma de cadena, truncado a 20 000 caracteres. Se establece "Internal Error" en caso de fallo de red.
importante

El response.body campo es null cuando la respuesta supera los 20 000 caracteres, incluso si la respuesta es un JSON válido.

nota

El objeto de respuesta solo está disponible en el bloque de salida de una HTTP_REQUEST función. No puede hacer referencia a los campos de respuesta en los campos URL, encabezados o cuerpo. En aSEQUENTIAL_EXECUTOR, cada HTTP_REQUEST función solo puede acceder a su propia respuesta.

Un valor de null significa que los datos no están disponibles. Esto ocurre cuando la llamada HTTP falla (error de red o tiempo de espera) o cuando el cuerpo de la respuesta supera los 20 000 caracteres o no es un JSON válido.

Comportamiento de fallo de red

Si la llamada HTTP falla debido a un error de red o a un tiempo de espera, response.statusCode y response.body están configurados en y response.text están configurados en. null "Internal Error" Las expresiones de salida siguen ejecutándose, así que compruébelas siempre response.statusCode antes de usar los datos de respuesta.

sugerencia

Usa una expresión condicional para gestionar los errores correctamente: {%response.statusCode = 200 ? response.body.value : 'default'%}

Ejemplo: obtener datos de identidad

La siguiente función llama a una API de resolución de identidad al inicio de la sesión y almacena el resultado en los parámetros del reproductor. Está diseñada para el PRE_SESSION_INITIALIZATION ciclo de vida útil.

{ "FunctionId": "fetchIdentityEnvelope", "FunctionType": "HTTP_REQUEST", "HttpRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://identity.example.com/v1/resolve?ip=' & $encodeUrlComponent(session.client_ip)%}", "Headers": { "Authorization": "{%'Bearer my_api_token'%}", "Accept": "application/json" }, "RequestTimeoutMilliseconds": 2000, "Output": { "player_params.identity_envelope": "{%response.statusCode = 200 ? response.body.envelope : ''%}" } } }

Para ver un recorrido completo de un ejemplo similar, consulteEjemplos de funciones.