API DAI Early Ad Break Notification

Quando utilizzi la piattaforma Google DAI, può essere opportuno fornire dati di targeting per la prossima interruzione pubblicitaria dal vivo/lineare imminente di uno stream. L'API Early Ad Break Notification (EABN) consente di implementare il targeting specifico dell'interruzione utilizzando coppie chiave-valore, che forniscono scalabilità per il processo decisionale pubblicitario in flussi di volumi elevati.

Le chiamate effettuate all'API EABN devono includere la chiave asset da scegliere come target e la durata prevista dell'interruzione successiva. La durata deve essere il più simile possibile all'effettiva durata dell'interruzione pubblicitaria. Se la durata prevista dell'invio è più breve dell'interruzione pubblicitaria fornita, per il resto dell'interruzione viene utilizzato il tipo di riempimento interruzione pubblicitaria in caso di riempimento parziale (l'impostazione predefinita è slate vuoto). Se la durata prevista inviata è superiore all'interruzione pubblicitaria fornita, l'interruzione pubblicitaria potrebbe terminare prima che l'annuncio sia completo.

Oltre a questi campi obbligatori, puoi anche inviare parametri di targeting personalizzati, il nome di un modello di pod di annunci da applicare o dati SCTE35 Cue Out, se disponibili.

Prerequisiti

Creare un account di servizio

Per accedere all'API EABN devi avere un account di servizio Google.

  • Se hai un account Google Cloud, puoi utilizzare il modulo IAM per creare un account di servizio. Per ulteriori informazioni, consulta Creazione e gestione degli account di servizio.
  • Se non hai un account Google Cloud, puoi crearne uno dalla console API di Google seguendo questi passaggi:
    1. Crea un nuovo progetto o selezionane uno esistente.
    2. Nella pagina Credenziali, fai clic su Gestisci account di servizio.
    3. Nella pagina Account di servizio, fai clic su CREA ACCOUNT DI SERVIZIO.
    4. Nella pagina Crea account di servizio, inserisci i dettagli dell'account. Fai clic su CREA.

Dopo aver creato correttamente un account di servizio, copia la chiave JSON dell'account, che verrà utilizzata per l'autenticazione.

Abilita l'API EABN

Una volta creato l'account di servizio, chiedi all'account manager di abilitare l'API EABN per quell'account.

Attivare l'API DAI

Dopo aver abilitato l'API EABN per il tuo account di servizio, abilita l'API DAI nell'account:

  1. Nella libreria API di Google, cerca "API DAI".

  2. Seleziona e abilita l'API DAI.

Utilizzo dell'API EABN

Puoi chiamare l'API EABN utilizzando le richieste JSON/REST.

Autenticazione

Per effettuare chiamate autenticate all'API EABN, devi generare le credenziali dell'account di servizio OAuth2 utilizzando la chiave JSON dal tuo account di servizio e dall'ambito https://www.googleapis.com/auth/video-ads. Per ulteriori informazioni, consulta l'articolo sull'utilizzo di OAuth 2.0 per le applicazioni da server a server.

Deve includere il token di autenticazione risultante come intestazione di autenticazione per ogni chiamata all'API EABN.

Inviare una notifica di interruzione pubblicitaria anticipata

Per inviare una notifica di interruzione pubblicitaria anticipata, invia una richiesta POST utilizzando il seguente URL e il corpo della richiesta:

POST dai.googleapis.com/v1/adBreaks

Corpo della richiesta

Oggetto
adBreak Obbligatorie L'oggetto wrapper per le proprietà adBreak
assetKey Obbligatorie Un identificatore univoco dell'elemento LiveStreamEvent per il quale viene creata l'interruzione
expectedDuration Obbligatorie La durata di questa interruzione pubblicitaria, utilizzando il formato di durata standard di Google (xx.xxxs, dove xx.xxx è il numero di secondi)
scte35CueOut Facoltativo Dati con codifica Base64 a partire dal cue-out scte35. Può includere il comando splice_insert() o time_signal().
Esempi:
  • time_signal():
    /DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==
  • splice_insert(): /DAvAAAAAAAA///wFAVIAACPf+/+c2nALv4AUsz1AAAAAAAKAAhDVUVJAAABNWLbowo=
custParams Facoltativo Le coppie chiave-valore da includere nelle richieste di annunci per questa interruzione per il targeting dei criteri personalizzati in AM360, separate da = e unite da &.
Esempio:
key=value&key2=value2,value3
Per saperne di più sul targeting, consulta l'articolo Fornire parametri di targeting allo stream.
ptpln Facoltativo Il nome del modello di pod di annunci

Intestazione della risposta

HTTP/1.1 200 OK

Corpo della risposta

Il corpo della risposta contiene tutti i parametri inviati nell'oggetto adBreak, oltre a un campo daiBreakId aggiuntivo, che contiene l'identificatore DAI interno per l'interruzione pubblicitaria creata all'interno dello stream.

Esempio

Richiesta

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"
  }
}

Risposta

HTTP/1.1 200 OK

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

Implementazione di esempio (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)