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:
-
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. -
Análisis de JSON. La plantilla interpolada se analiza como JSON.
-
Extracción y validación de campos. MediaTailorextrae los campos obligatorios y arroja un
BidRequestConfigurationErrormensaje si falta alguno o está vacío. -
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.ida partir de la duración sinimp.video.maxdurationrellenar calculada). -
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{{ }}
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
-
Para obtener la referencia completa campo por campo, consulte. Referencia de campo ORTB
-
Para ver las plantillas de copiar y pegar, consulte. Plantillas de ejemplo