API DAI Early Ad Break Notification

Lorsque vous utilisez la plate-forme d'insertion dynamique d'annonce de Google, vous pouvez fournir des données de ciblage pour la prochaine coupure publicitaire en direct/linéaire dans un flux. L'API EABN (Early Ad Break Notification) vous permet d'implémenter un ciblage spécifique aux coupures à l'aide de paires clé/valeur, ce qui permet une prise de décision évolutive dans les flux volumineux.

Les appels effectués à l'API EABN doivent inclure la clé d'élément à cibler et la durée prévue de la prochaine coupure publicitaire. Cette durée doit être aussi proche que possible de la durée réelle de la coupure publicitaire. Si la durée prévue envoyée est plus courte que la coupure publicitaire fournie, le type de remplissage de la coupure publicitaire en cas de remplissage partiel (par défaut, il est vide) est utilisé pour le reste de la coupure. Si la durée prévue est plus longue que celle indiquée pour la coupure publicitaire, celle-ci peut se terminer avant la fin de l'annonce.

En plus de ces champs obligatoires, vous pouvez également envoyer des paramètres de ciblage personnalisés, le nom d'un modèle de série d'annonces à appliquer ou des données SCTE35 Cue Out, le cas échéant.

Conditions préalables

Créer un compte de service

Pour accéder à l'API EABN, vous avez besoin d'un compte de service Google.

  • Si vous possédez un compte Google Cloud, vous pouvez utiliser le module IAM pour créer un compte de service. Pour en savoir plus, consultez la page Créer et gérer des comptes de service.
  • Si vous ne possédez pas de compte Google Cloud, vous pouvez en créer un depuis la console Google APIs en procédant comme suit :
    1. Créez un projet ou sélectionnez un projet existant.
    2. Sur la page Identifiants, cliquez sur Gérer les comptes de service.
    3. Sur la page Comptes de service, cliquez sur CRÉER UN COMPTE DE SERVICE.
    4. Sur la page Créer un compte de service, saisissez les détails du compte. Cliquez ensuite sur CRÉER.

Une fois que vous avez créé un compte de service, copiez la clé JSON du compte, qui sera utilisée pour l'authentification.

Activer l'API EABN

Une fois votre compte de service créé, demandez à votre responsable de compte d'activer l'API EABN pour ce compte.

Activer l'API d'insertion dynamique d'annonce

Une fois l'API EABN activée pour votre compte de service, activez-la sur le compte:

  1. Dans la bibliothèque d'API Google, recherchez "API d'insertion dynamique d'annonce".

  2. Sélectionnez et activez l'API d'insertion dynamique d'annonce.

Utiliser l'API EABN

Vous pouvez appeler l'API EABN à l'aide de requêtes JSON/REST.

Authentification

Pour effectuer des appels authentifiés à l'API EABN, vous devez générer des identifiants de compte de service OAuth2 à l'aide de la clé JSON de votre compte de service et du champ d'application https://www.googleapis.com/auth/video-ads. Pour en savoir plus, consultez la page Utiliser OAuth 2.0 pour l'authentification serveur à serveur.

Il doit inclure le jeton d'authentification obtenu sous la forme d'un en-tête d'authentification pour chaque appel à l'API EABN.

Envoyer une notification anticipée de coupure publicitaire

Pour envoyer une notification anticipée de coupure publicitaire, envoyez une requête POST à l'aide de l'URL et du corps de requête suivants:

POST dai.googleapis.com/v1/adBreaks

Corps de la requête

Objet
adBreak Obligatoire Objet wrapper pour les propriétés adBreak
assetKey Obligatoire Identifiant unique de la LiveStreamEvent pour laquelle la coupure est créée
expectedDuration Obligatoire Durée de cette coupure publicitaire, au format de durée standard de Google (xx,xxx s, où xx,xxx correspond au nombre de secondes)
scte35CueOut Facultatif Données encodées en base64 à partir du point de sortie scte35. Peut inclure la commande splice_insert() ou time_signal().
Exemples :
  • time_signal():
    /DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==
  • splice_insert() : /DAvAAAAAAAA///wFAVIAACPf+/+c2nALv4AUsz1AAAAAAAKAAhDVUVJAAABNWLbowo=
custParams Facultatif Paires clé-valeur à inclure dans les demandes d'annonces pour cette coupure pour le ciblage par critères personnalisés dans AM360, séparées par = et jointes par &.
Exemple:
key=value&key2=value2,value3
Pour en savoir plus sur le ciblage, consultez Indiquer les paramètres de ciblage dans votre flux.
ptpln Facultatif Nom du modèle de série d'annonces

En-tête de réponse

HTTP/1.1 200 OK

Corps de la réponse

Le corps de la réponse contient tous les paramètres envoyés dans l'objet adBreak, ainsi qu'un champ daiBreakId supplémentaire, qui comporte l'identifiant interne d'insertion dynamique d'annonce pour la coupure publicitaire créée dans le flux.

Exemple

Requête

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

Réponse

HTTP/1.1 200 OK

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

Exemple d'implémentation (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)