DAI Early Ad Break Notification API

Wenn Sie die Plattform für die dynamische Anzeigenbereitstellung von Google verwenden, können Sie Targeting-Daten für die nächste Live-/lineare Werbeunterbrechung in einem Stream bereitstellen. Mit der EABN API (Early Ad Break Notification) können Sie werbepausenspezifisches Targeting mithilfe von Schlüssel/Wert-Paaren implementieren, das Skalierbarkeit für die Entscheidungsfindung in großen Streams bietet.

Aufrufe an die EABN API müssen den anzusteuernden Assetschlüssel und die erwartete Dauer der nächsten Unterbrechung enthalten. Die Dauer muss der tatsächlichen Dauer der Werbeunterbrechung möglichst nahe kommen. Wenn die erwartete Sendedauer kürzer als die bereitgestellte Werbeunterbrechung ist, wird für die verbleibende Werbeunterbrechung der Fülltyp der Werbeunterbrechung – unvollständig verwendet. Standardmäßig wird dabei leeres Slate angezeigt. Wenn die gesendete erwartete Dauer länger ist als die Werbeunterbrechung, wird die Werbeunterbrechung unter Umständen vor Ende der Werbeunterbrechung beendet.

Zusätzlich zu diesen Pflichtfeldern können Sie auch benutzerdefinierte Targeting-Parameter, den Namen einer anzuwendenden Anzeigen-Pod-Vorlage oder SCTE35-Cue-out-Daten (falls verfügbar) senden.

Voraussetzungen

Dienstkonto erstellen

Für den Zugriff auf die EABN API benötigen Sie ein Google-Dienstkonto.

  • Wenn Sie ein Google Cloud-Konto haben, können Sie mit dem IAM-Modul ein Dienstkonto erstellen. Weitere Informationen finden Sie unter Dienstkonten erstellen und verwalten.
  • Wenn Sie kein Google Cloud-Konto haben, können Sie über die Google API Console ein Dienstkonto erstellen. Gehen Sie dazu so vor:
    1. Erstellen Sie ein neues Projekt oder wählen Sie ein vorhandenes Projekt aus.
    2. Klicken Sie auf der Seite Anmeldedaten auf Dienstkonten verwalten.
    3. Klicken Sie auf der Seite Dienstkonten auf DIENSTKONTO ERSTELLEN.
    4. Geben Sie auf der Seite Dienstkonto erstellen die Kontodetails ein. Klicken Sie dann auf ERSTELLEN.

Nachdem Sie ein Dienstkonto erstellt haben, kopieren Sie den JSON-Schlüssel des Kontos. Dieser wird für die Authentifizierung verwendet.

EABN API aktivieren

Bitten Sie nach der Erstellung des Dienstkontos Ihren Account Manager, die EABN API für dieses Konto zu aktivieren.

DAI API aktivieren

Sobald die EABN API für Ihr Dienstkonto aktiviert wurde, aktivieren Sie die DAI API im Konto:

  1. Suchen Sie in der Google API-Bibliothek nach „DAI API“.

  2. Wählen Sie die DAI API aus und aktivieren Sie sie.

EABN API verwenden

Sie können die EABN API mit JSON/REST-Anfragen aufrufen.

Authentifizierung

Für authentifizierte Aufrufe an die EABN API müssen Sie mit dem JSON-Schlüssel Ihres Dienstkontos und dem Bereich https://www.googleapis.com/auth/video-ads OAuth2-Dienstkontoanmeldedaten generieren. Weitere Informationen finden Sie unter OAuth 2.0 für Server-zu-Server-Anwendungen verwenden.

Der muss das resultierende Authentifizierungstoken als Auth-Header für jeden Aufruf der EABN API enthalten.

Frühzeitige Benachrichtigung zur Werbeunterbrechung senden

Wenn du eine frühzeitige Benachrichtigung zur Werbeunterbrechung senden möchtest, sende eine POST-Anfrage mit der folgenden URL und dem Anfragetext:

POST dai.googleapis.com/v1/adBreaks

Anfragetext

Objekt
adBreak Erforderlich Das Wrapper-Objekt für adBreak-Properties
assetKey Erforderlich Eine eindeutige Kennung für die LiveStreamEvent, für die die Unterbrechung erstellt wird
expectedDuration Erforderlich Die Dauer dieser Werbeunterbrechung im Standardformat von Google (xx.xxxs, wobei xx.xxx die Anzahl der Sekunden ist)
scte35CueOut Optional Base-64-codierte Daten aus dem scte35-Cue-out-Ereignis. Kann den Befehl splice_insert() oder time_signal() enthalten.
Beispiele:
  • time_signal():
    /DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==
  • splice_insert(): /DAvAAAAAAAA///wFAVIAACPf+/+c2nALv4AUsz1AAAAAAAKAAhDVUVJAAABNWLbowo=
custParams Optional Schlüssel/Wert-Paare, die in Anzeigenanfragen für diese Unterbrechung für das Targeting mit benutzerdefinierten Kriterien in AM360 eingeschlossen werden sollen, getrennt durch = und verknüpft mit &.
Beispiel:
key=value&key2=value2,value3
Weitere Informationen zum Targeting finden Sie unter Targeting-Parameter an einen Stream übergeben.
ptpln Optional Der Name der Vorlage für den Anzeigen-Pod

Antwortheader

HTTP/1.1 200 OK

Antworttext

Der Antworttext enthält alle im Objekt adBreak gesendeten Parameter sowie ein zusätzliches Feld daiBreakId, das die interne ID der dynamischen Anzeigenbereitstellung für die erstellte Werbeunterbrechung im Stream enthält.

Beispiel

Anfragen

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

Antwort

HTTP/1.1 200 OK

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

Beispielimplementierung (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)