View a markdown version of this page

Construcción y creación de plantillas de ofertas - 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.

Construcción y creación de plantillas de ofertas

En esta página, se explica cómo crear MediaTailor una solicitud de oferta de OpenRTB a partir de tu plantilla, cómo funciona la interpolación de variables y qué valores se establecen automáticamente. MediaTailor

Campos de configuración

Al activar la optimización del rendimiento en una configuración de reproducción, se proporcionan cuatro campos:

Campo Description (Descripción) Obligatorio
PublisherId Su ID de editor de APS (obtenido del registro de APS). Se incluye app.publisher.id en cada solicitud de oferta. Sí
Region Región APS:AMERICAS,EUROPE, oASIA_PACIFIC. Determina el punto final del APS. Sí
MinimumUnfilledDuration Es necesario un mínimo de segundos sin rellenar antes de que se MediaTailor active una solicitud de oferta. También se usa comoimp.video.minduration. Sí
OpenRtbTemplate Tu plantilla JSON de ORTB (máximo 100 KB). Define el cuerpo de la solicitud de oferta. Sí

Cómo se construye la solicitud de oferta

Cuando a una pausa publicitaria le queda tiempo sin cubrir, elabora MediaTailor la solicitud de oferta siguiendo estos pasos:

  1. Interpolación de plantillas. MediaTailor resuelve{{session.*}},, {{player_params.*}} {{avail.*}} {{request.*}}{{asset.*}}, y los {{scte.*}} marcadores de posición de la plantilla mediante la sintaxis estándar de creación de plantillas de Mustache. Moustache utiliza corchetes dobles{{ }}, que difieren de los corchetes que se [ ] utilizan en la sustitución de variables URL de ADS.

  2. Análisis de JSON. La plantilla interpolada se analiza como JSON.

  3. Extracción y validación de campos. MediaTailorextrae los campos obligatorios y arroja un BidRequestConfigurationError mensaje si falta alguno o está vacío.

  4. Inyección de campos codificados. MediaTailor anula o inyecta los campos que administra automáticamente utilizando los valores de la configuración de la consola y del contexto disponible actual (por ejemplo, a partir del ID de editor que configuró, app.publisher.id a partir de la duración sin imp.video.maxduration rellenar calculada).

  5. Serialización y envío. El final BidRequest se serializa en JSON y se envía como HTTP POST al punto final de APS.

importante

Si falta algún campo obligatorio o está vacío después de la interpolación, la solicitud de oferta falla con un BidRequestConfigurationError y no se envía ninguna solicitud a APS. El error se registra, pero la reproducción continúa con normalidad (se abre por error).

Plantilla predeterminada de la consola

Al activar la optimización del rendimiento en la MediaTailor consola, se proporciona la siguiente plantilla precumplimentada como punto de partida. Debe personalizar los valores de su aplicación:

{ "imp": [ { "bidfloor": 5 } ], "app": { "id": "{{player_params.app_id}}", "name": "{{player_params.app_name}}", "bundle": "{{player_params.bundle}}", "storeurl": "{{player_params.storeurl}}", "domain": "{{player_params.domain}}", "content": { "genre": "{{asset.genre}}", "contentrating": "{{asset.content_rating}}" } }, "device": { "dnt": "{{player_params.dnt}}", "ua": "{{session.user_agent}}", "ip": "{{session.client_ip}}", "ifa": "{{player_params.device_ifa}}", "w": "{{player_params.device_width}}", "h": "{{player_params.device_height}}", "language": "{{player_params.language}}", "model": "{{player_params.model}}", "os": "{{player_params.os}}", "osv": "{{player_params.osv}}", "devicetype": "{{player_params.devicetype}}", "make": "{{player_params.make}}" }, "user": { "consent": "{{player_params.consent}}" }, "regs": { "gdpr": "{{player_params.gdpr}}", "us_privacy": "{{player_params.us_privacy}}", "gpp": "{{player_params.gpp_consent}}", "gpp_sid": "{{player_params.gpp_sid}}" } }

Field-by-field explicación:

Campo Categoría Solución
imp[0].bidfloor Opcional (predeterminado: 1.0) Establezca su CPM mínimo. El valor predeterminado de la consola es de 5$. Baje para obtener mejores tasas de llenado durante las pruebas.
app.id Se recomienda APS El identificador de tu aplicación. El jugador debe enviarplayerParams.app_id.
app.name Se recomienda APS El nombre de tu aplicación. El jugador debe enviarplayerParams.app_name.
app.bundle Obligatorio Tu ID de paquete de aplicaciones. El jugador debe enviar playerParams.bundle o reemplazar por un valor estático (recomendado).
app.storeurl Obligatorio La URL de tu tienda de aplicaciones. El jugador debe enviar playerParams.storeurl o reemplazar por un valor estático (recomendado).
app.domain Se recomienda APS El dominio de tu aplicación. El jugador debe enviarplayerParams.domain.
app.content.genre Se recomienda APS Se completa a partir de los metadatos del activo de la fuente de contenido.
app.content.contentrating Se recomienda APS Se completa a partir de los metadatos del activo de la fuente de contenido.
device.dnt Se recomienda APS Bandera de no rastrear. El jugador debe enviarplayerParams.dnt.
device.ua Obligatorio Se rellena automáticamente desde el User-Agent encabezado del usuario hasta el final{{session.user_agent}}. No se necesita ningún parámetro de jugador.
device.ip Obligatorio Se rellena automáticamente desde la IP del espectador hasta{{session.client_ip}}. No se necesita ningún parámetro de jugador.
device.ifa Se recomienda APS ID de publicidad. El jugador debe enviarplayerParams.device_ifa.
device.w / device.h Se recomienda APS Dimensiones de la pantalla. El jugador debe enviarplayerParams.device_width/device_height.
device.language Se recomienda APS Idioma del dispositivo. El jugador debe enviarplayerParams.language.
device.model Se recomienda APS Modelo de dispositivo. El jugador debe enviarplayerParams.model.
device.os / device.osv Se recomienda APS Sistema operativo y versión. El jugador debe enviarplayerParams.os/osv.
device.devicetype Anulable (predeterminado: 3) Tipo de dispositivo IAB. El jugador debe enviarplayerParams.devicetype. El valor predeterminado es 3 (CTV) si está vacío.
device.make Se recomienda APS Fabricante del dispositivo. El jugador debe enviarplayerParams.make.
user.consent Se recomienda APS (UE) Cadena de consentimiento (TCF) del RGPD. El jugador debe enviarplayerParams.consent.
regs.gdpr Se recomienda APS (UE) Indicador de GDPR (0 o 1). El jugador debe enviarplayerParams.gdpr.
regs.us_privacy Se recomienda APS (EE. UU.) Cadena CCPA (por ejemplo,1YNY). El jugador debe enviarplayerParams.us_privacy.
regs.gpp Se recomienda APS Cadena de consentimiento de Global Privacy Platform. El jugador debe enviarplayerParams.gpp_consent. Preferido en lugar us_privacy de para obtener mejores tasas de llenado.
regs.gpp_sid Se recomienda APS Identificadores de sección GPP (por ejemplo, [7] para los nacionales de EE. UU.). El jugador debe enviarplayerParams.gpp_sid.
importante

La consola usa {{player_params.*}} por defecto campos obligatorios como app.bundle yapp.storeurl. Si tu reproductor no envía estos parámetros, la solicitud de oferta fallaráBidRequestConfigurationError. En el caso de los campos que son los mismos para todas las sesiones (normalmente app.bundleapp.storeurl,app.name, y otros identificadores a nivel de aplicación), considera reemplazar el marcador de posición por un valor estático (por ejemplo,). "bundle": "com.yourcompany.app" No codifique campos que varíen según el usuario, como las cadenas de consentimiento del RGPD y el GPP device.ua device.ipdevice.ifa, ni ningún campo de registro o objeto de usuario. Estos deben provenir de o. {{session.*}} {{player_params.*}}

nota

El valor predeterminado de la consola no incluye video.mimes ni video.protocols en la plantilla. MediaTailor utiliza valores alternativos codificados (["video/mp4"]para mimos y protocolos) cuando no se proporcionan. [1,2,3,4,5,6,7,8] Puede añadirlos a la plantilla si desea restringir los formatos admitidos.

Interpolación de plantillas (creación de plantillas en forma de bigote)

La plantilla ORTB utiliza la sintaxis de plantillas de Mustache para la sustitución dinámica de valores. Los marcadores de posición utilizan corchetes dobles. {{ }}

Variables de plantilla disponibles

La plantilla de ORTB puede usar las mismas variables dinámicas disponibles en las plantillas de URL de ADS. Entre ellas se incluyen las variables de sesión (por ejemplo,{{session.user_agent}},{{session.client_ip}}), los parámetros del reproductor ({{player_params.*}}), los metadatos de los activos ({{asset.*}}), el contexto de avail ({{avail.*}}) y los datos de señal SCTE (). {{scte.*}}

Para obtener la lista completa de las variables disponibles y sus descripciones, consulte. MediaTailor variables de anuncios dinámicos para solicitudes de ADS Para saber cómo MediaTailor URL-decodes valoran los parámetros del jugador antes de sustituirlos en la plantilla, consulte Comportamiento de codificación y decodificación más adelante en esta página.

Las variables que se utilizan con más frecuencia en las plantillas de ORTB son:

  • {{session.user_agent}}: User-Agent Encabezado del visor (se usa paradevice.ua).

  • {{session.client_ip}}: Dirección IP del espectador (se usa paradevice.ip).

  • {{player_params.*}}: valores personalizados transmitidos por el jugador durante la inicialización de la sesión.

  • {{asset.*}}: Metadatos de contenido del origen (por ejemploasset.genre,asset.content_rating).

aviso

Escriba siempre los marcadores de posición entre comillas, incluso para campos numéricos como dnt o. devicetype Si un marcador de posición se convierte en una cadena vacía y no está entre comillas (por ejemplo,"dnt": {{player_params.dnt}}), el resultado es un JSON no válido y toda la solicitud de oferta falla con un. BidRequestConfigurationError En su lugar, use "dnt": "{{player_params.dnt}}". APS acepta los campos numéricos pasados como cadenas. Este comportamiento está diseñado porque la sustitución automática de cadenas vacías entre comillas entraría en conflicto con el modo RAW-JSON utilizado en otras partes del interpolador. La restricción se documenta en lugar de aplicarse. Consulta también cómo se Comportamiento de codificación y decodificación gestionan los valores de MediaTailor los parámetros del reproductor antes de la interpolación.

¿Cómo pasar los parámetros del jugador

Hay dos maneras de transferir los parámetros del jugador durante la inicialización de la sesión.

Método 1: solicitud POST con cuerpo JSON (recomendado)

POST https://<mediatailor-endpoint>/v1/session/<config-hash>/<origin-id>/master.m3u8 Content-Type: application/json { "playerParams": { "app_id": "558775_example", "slot_id": "608109df-2378-4bc5-8da5-24bc355f01a4", "os": "Tizen", "make": "Samsung", "model": "Tizen TV", "language": "en", "us_privacy": "1YNY" } }

Se prefiere este método porque evita URL-encoding problemas con valores complejos, como las cadenas de agentes de usuario.

Método 2: parámetros de consulta de URL

GET https://<mediatailor-endpoint>/v1/session/<config-hash>/<origin-id>/master.m3u8 ?playerParams.app_id=558775_example

Con este método, los valores deben ser URL-encoded. MediaTailor URL-decodes ellos antes de la interpolación.

Comportamiento de codificación y decodificación

MediaTailor realiza un nivel de decodificación de URL en los valores de los parámetros del reproductor antes de interpolarlos en la plantilla. Esto se aplica independientemente de cómo se transfieran los parámetros (parámetros de consulta URL o del cuerpo del POST).

Ejemplos de valores decodificados:

Valor enviado Valor después de la decodificación (usado en la plantilla)
Test%20Os Test Os
https%3A%2F%2Flocalhost https://localhost
foo%20bar foo bar
Mozilla%2F5.0%20(SMART-TV) Mozilla/5.0 (SMART-TV)

Puntos clave:

  • MediaTailor decodifica en un solo nivel. Double-encoded los valores (por ejemplo,%2520) se decodificarán en%20, no en un espacio.

  • Los valores del cuerpo POST también se decodifican. Si el cuerpo del POST contiene URL-encoded valores, se decodificarán antes de la interpolación.

  • Los valores de texto plano (sin codificación) se transmiten sin cambios.

  • Tras la decodificación y la interpolación, toda la plantilla se analiza como JSON. Los caracteres especiales de los valores interpolados (como las comillas sin escapes o las barras invertidas) pueden interrumpir el análisis de JSON.

sugerencia

Si tu reproductor envía valores que ya están en texto plano (no URL-encoded), funcionan tal cual. Solo tienes que saber decodificar los URL-encodes valores de tu reproductor antes de enviarlos.

¿Qué ocurre cuando falta una variable

Si el reproductor no envía un parámetro al que se hace referencia en tu plantilla (por ejemplo, {{player_params.app_name}} pero no app_name en los parámetros del reproductor), el marcador de posición se convierte en una cadena vacía. ""

Impacto: si la cadena vacía está en un campo obligatorio (por ejemploapp.bundle), la solicitud de oferta no se realiza correctamente. BidRequestConfigurationError Si está en un campo opcional, APS recibe un valor vacío que puede provocar una respuesta sin oferta (HTTP 204).

¿Qué se MediaTailor establece automáticamente

Los siguientes campos siempre se configuran MediaTailor con valores de la configuración de la consola y del contexto disponible actual. Si los incluye en la plantilla, sus valores se anulan:

Campo origen
id Auto-generated: {sessionId}_{availId} formato (por ejemplo,abc123-def456_78901). Útil para correlacionar las solicitudes de oferta con los registros de sesión.
app.publisher.id Eres PublisherId de la configuración de la consola.
imp[0].video.minduration Eres MinimumUnfilledDuration de la configuración de la consola.
imp[0].video.maxduration Calculado: segundos reales sin rellenar para este uso.
imp[0].video.maxseq Calculado:. floor(unfilled_duration / 6)
imp[0].video.poddur Calculado: segundos reales sin rellenar para este uso.
ext.integrationType Siempre configurado en. "EMT"

Siguientes pasos