API de DAI para Early Ad Break Notification

Cuando uses la plataforma de la DAI de Google, te recomendamos que proporciones datos de segmentación para la próxima pausa publicitaria lineal o en vivo de una transmisión. La API de Early Ad Break Notification (EABN) te permite implementar la segmentación específica de pausas mediante pares clave-valor, lo que proporciona escalabilidad para tomar decisiones sobre anuncios en transmisiones de gran volumen.

Las llamadas realizadas a la API de EABN deben incluir la clave del recurso que se debe segmentar y la duración esperada de la siguiente pausa. La duración debe ser lo más cercana posible a la duración real de la pausa publicitaria. Si la duración esperada enviada es más corta que la pausa publicitaria proporcionada, se usa el tipo de relleno de pausa publicitaria sin completar (de forma predeterminada, es una cortinilla de video en blanco) para el resto de la pausa. Si la duración esperada enviada es mayor que la pausa publicitaria proporcionada, esta puede finalizar antes de que se complete el anuncio.

Además de estos campos obligatorios, también puedes enviar parámetros de segmentación personalizados, el nombre de una plantilla de grupo de anuncios para aplicar o datos del desplazamiento de SCTE35, si están disponibles.

Requisitos previos

Crea una cuenta de servicio

Para acceder a la API de EABN, necesitas una cuenta de servicio de Google.

  • Si tienes una cuenta de Google Cloud, puedes usar el módulo de IAM para crear una cuenta de servicio. Para obtener más información, consulta Crea y administra cuentas de servicio.
  • Si no tienes una cuenta de Google Cloud, puedes crear una en la Consola de API de Google. Para ello, sigue estos pasos:
    1. Crea un proyecto nuevo o selecciona uno existente.
    2. En la página Credenciales, haz clic en Administrar cuentas de servicio.
    3. En la página Cuentas de servicio, haz clic en CREAR CUENTA DE SERVICIO.
    4. En la página Crear cuenta de servicio, ingresa los detalles de la cuenta. Luego, haz clic en CREAR.

Una vez que hayas creado correctamente una cuenta de servicio, copia la clave JSON de la cuenta, que se usará para la autenticación.

Habilita la API de EABN

Una vez que se haya creado la cuenta de servicio, pídele a tu administrador de cuentas que habilite la API de EABN para esa cuenta.

Cómo habilitar la API de DAI

Una vez que se haya habilitado la API de EABN en tu cuenta de servicio, habilita la API de DAI en la cuenta:

  1. En la biblioteca de la API de Google, busca "API de DAI".

  2. Seleccione y habilite la API de DAI.

Usa la API de EABN

Puedes llamar a la API de EABN mediante solicitudes JSON/REST.

Autenticación

Para realizar llamadas autenticadas a la API de EABN, debes generar credenciales de cuenta de servicio de OAuth2 con la clave JSON de tu cuenta de servicio y el permiso https://www.googleapis.com/auth/video-ads. Si quieres obtener más información, consulta Usa OAuth 2.0 para aplicaciones de servidor a servidor.

Se debe incluir el token de autenticación resultante como un encabezado de Auth para cada llamada a la API de EABN.

Envío de una notificación anticipada de pausa publicitaria

Para enviar una notificación de pausa publicitaria antes de lo planificado, envía una solicitud POST mediante la siguiente URL y el cuerpo de la solicitud:

POST dai.googleapis.com/v1/adBreaks

Cuerpo de la solicitud

Objeto
adBreak Obligatorias El objeto wrapper para las propiedades adBreak
assetKey Obligatorias Un identificador único para el LiveStreamEvent para el que se crea la pausa
expectedDuration Obligatorias Es la duración de esta pausa publicitaria con el formato de duración estándar de Google (xx.xxxs en el que xx.xxx es la cantidad de segundos).
scte35CueOut Opcional Datos codificados en Base-64 a partir del indicador de scte35. Puede incluir el comando splice_insert() o time_signal().
Ejemplos:
  • time_signal():
    /DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==
  • splice_insert(): /DAvAAAAAAAA///wFAVIAACPf+/+c2nALv4AUsz1AAAAAAAKAAhDVUVJAAABNWLbowo=
custParams Opcional Pares clave-valor que se incluirán en las solicitudes de anuncios de esta pausa para la segmentación de criterios personalizados en AM360, separados por = y unidos por &.
Ejemplo:
key=value&key2=value2,value3
Si deseas obtener más información sobre la segmentación, consulta Cómo proporcionar parámetros de segmentación a tu transmisión.
ptpln Opcional El nombre de la plantilla del grupo de anuncios

Encabezado de respuesta

HTTP/1.1 200 OK

Cuerpo de la respuesta

El cuerpo de la respuesta contiene todos los parámetros enviados en el objeto adBreak, así como un campo daiBreakId adicional, que contiene el identificador de DAI interno para la pausa publicitaria creada dentro de la transmisión.

Ejemplo

Solicitud

POST /v1/adBreaks HTTP/1.1
Content-Type: application/json

{
  "adBreak": {
    "assetKey": "asset1",
    "expectedDuration": "30s",
    "scte35CueOut": "/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==",
    "custParams": "param1=value1&param2=value2",
    "ptpln": "podtemplate"
  }
}

Respuesta

HTTP/1.1 200 OK

{
  "assetKey": "asset1",
  "expectedDuration": "30s",
  "custParams": "param1=value1&param2=value2",
  "scte35CueOut": "/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==",
  "ptpln": "podtemplate",
  "daiBreakId": 1
}

Implementación de muestra (Python)

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

from absl import app

from google.auth.transport.requests import AuthorizedSession
from google.oauth2 import service_account

SERVICE_ACCOUNT_KEY_FILE = "~/eabn_key.json"
ASSET_KEY = "asset1"

SCOPES = ['https://www.googleapis.com/auth/video-ads']
EABN_API_URL = 'https://dai.googleapis.com/v1/adBreaks'


def main():
  credentials = service_account.Credentials.from_service_account_file(
      SERVICE_ACCOUNT_KEY_FILE, scopes=SCOPES)

  authed_session = AuthorizedSession(credentials)

  data = {
      'assetKey': ASSET_KEY,
      'expectedDuration': '120s',
      'custParams': 'param1=value1&param2=value2',
      'scte35CueOut': '/DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==',
  }

  r = authed_session.post(EABN_API_URL, json={'adBreak': data})
  print(r.status_code)
  print(r.headers)
  print(r.text)

if __name__ == '__main__':
  app.run(main)