API de DAI para Early Ad Break Notification

Cuando utilice la plataforma de DAI de Google, es posible que desee proporcionar datos de segmentación para la próxima pausa publicitaria lineal o en vivo de una transmisión. La pausa publicitaria anticipada La API de Notification (EABN) permite implementar una segmentación específica de la pausa mediante pares clave-valor, que proporcionan escalabilidad para la toma de decisiones sobre anuncios en grandes volúmenes transmisiones continuas.

Las llamadas realizadas a la API de EABN deben incluir la clave del recurso que se debe orientar y la la duración de la próxima pausa. La duración debe ser lo más cercana a la del anuncio real de corte. Si la duración prevista que se envía es menor que la de la pausa publicitaria, Tipo de relleno de pausa publicitaria sin completar (El valor predeterminado es una lista en blanco) se usa durante el resto de la pausa. Si el botón que la duración esperada enviada sea mayor que la de la pausa publicitaria proporcionada, es posible que finalizan antes de que se complete el anuncio.

Además de estos campos obligatorios, también puedes enviar segmentaciones personalizadas parámetros, el nombre de una plantilla de grupo de anuncios que se aplicará o datos de salida SCTE35, si 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 desde la Consola de APIs de Google, siguiendo 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. Después Haz clic en CREAR.

Una vez que hayas creado correctamente una cuenta de servicio, copia el 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 la habilite la API de EABN para esa cuenta.

Habilite la API de DAI

Una vez que se haya habilitado la API de EABN para su cuenta de servicio, habilite la API de DAI en la cuenta:

  1. En la biblioteca de APIs 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 con solicitudes JSON/REST.

Autenticación

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

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

Cómo enviar una notificación de pausa publicitaria antes de lo planificado

Para enviar una notificación de pausa publicitaria anticipada, envía una solicitud POST mediante los siguientes parámetros: URL y cuerpo de la solicitud:

POST dai.googleapis.com/v1/adBreaks

Cuerpo de la solicitud

Objeto
adBreak Obligatorio El objeto wrapper para las propiedades adBreak
assetKey Obligatorio Un identificador único para el LiveStreamEvent para el cual el se crea una pausa
expectedDuration Obligatorio Es la duración de esta pausa publicitaria con el formato de duración estándar de Google. (xx.xxx donde xx.xxx es el número 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 las opciones personalizadas segmentación por criterios en AM360, separada por = y unida por &.
Ejemplo:
key=value&key2=value2,value3
Para obtener más información sobre la segmentación, consulta Orientación por suministro parámetros 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 la DAI interna identificador de 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)