API DAI Early Ad Break Notification

Quando utilizzi la piattaforma DAI di Google, potrebbe essere opportuno fornire dati di targeting per alla prossima interruzione pubblicitaria dal vivo/lineare in uno stream. L'interruzione pubblicitaria iniziale L'API Notification (EABN) consente di implementare un targeting specifico per le interruzioni utilizzando coppie chiave-valore, che offrono scalabilità per il processo decisionale degli annunci in volumi elevati i flussi di dati.

Le chiamate effettuate all'API EABN devono includere la chiave asset da scegliere come target e della durata della prossima pausa. La durata deve essere il più simile possibile all'annuncio effettivo. la lunghezza delle interruzioni. Se la durata prevista inviata è più breve del l'interruzione pubblicitaria fornita, Tipo di riempimento interruzione pubblicitaria con riempimento parziale (il valore predefinito è slate vuoto) viene utilizzato per il resto dell'interruzione. Se la durata prevista inviata è superiore all'interruzione pubblicitaria fornita, l'interruzione pubblicitaria potrebbe prima che l'annuncio sia completo.

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

Prerequisiti

Crea 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 l'account di servizio. Per ulteriori informazioni, vedi Creazione e gestione degli account di servizio.
  • Se non hai un account Google Cloud, puoi creare un account di servizio. dalla console API di Google, procedendo nel seguente modo:
      .
    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. Poi fai clic su CREA.

Dopo aver creato un account di servizio, copia il codice 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 abilitarlo l'API EABN per l'account in questione.

Attiva 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 richieste JSON/REST.

Autenticazione

Per effettuare chiamate autenticate all'API EABN, devi generare il servizio OAuth2 utilizzando la chiave JSON del tuo account di servizio e l'ambito https://www.googleapis.com/auth/video-ads. Per ulteriori informazioni, vedi Utilizzo di OAuth 2.0 per applicazioni server-server.

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

Invio di una notifica di interruzione pubblicitaria anticipata

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

POST dai.googleapis.com/v1/adBreaks

Corpo della richiesta

Oggetto
adBreak Obbligatorio L'oggetto wrapper per le proprietà adBreak
assetKey Obbligatorio Un identificatore univoco del valore LiveStreamEvent per il quale interruzione creata
expectedDuration Obbligatorio La durata di questa interruzione pubblicitaria, utilizzando il formato di durata standard di Google (xx,xxx dove xx,xxx è il numero di secondi)
scte35CueOut Facoltativo Dati con codifica Base64 dal cue-out di scte35. Può includere il parametro 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 i criteri di targeting in AM360, separati da = e uniti da &.
Esempio:

key=value&key2=value2,value3 Per ulteriori informazioni sul targeting, consulta Targeting dell'offerta parametri al tuo stream.
ptpln Facoltativo Il nome del modello del 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, e un campo daiBreakId aggiuntivo, che contiene il DAI interno l'identificatore dell'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
}

Esempio di implementazione (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)