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 la prochaine coupure publicitaire en direct/linéaire dans un flux. Première coupure publicitaire L'API Notification (EABN) vous permet d'implémenter un ciblage spécifique aux coupures à l'aide de ce qui permet une évolutivité pour la prise de décisions concernant des annonces à volume élevé flux.

Les appels adressés à l'API EABN doivent inclure la clé de l'élément à cibler et la valeur attendue la durée de la prochaine coupure. La durée doit être aussi proche de celle de l'annonce réelle la longueur de coupure la plus longue possible. Si la durée d'envoi prévue est inférieure au a fourni une coupure publicitaire, la Type de remplissage de la coupure publicitaire en cas de remplissage partiel (l'écran est vide par défaut) est utilisé pour le reste de la coupure publicitaire. Si le la durée d'envoi prévue est plus longue que la coupure publicitaire fournie, il est possible que la coupure publicitaire avant la fin de l'annonce.

En plus de ces champs obligatoires, vous pouvez envoyer le nom d'un modèle de série d'annonces à appliquer, ou Données SCTE35 point de sortie, si disponibles.

Prérequis

Créer un compte de service

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

  • Si vous possédez un compte Google Cloud, vous pouvez utiliser le module IAM pour créer de service géré. 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: <ph type="x-smartling-placeholder">
      </ph>
    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. Ensuite, cliquez sur CRÉER.

Une fois le compte de service créé, copiez le fichier 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 l'API d'insertion dynamique d'annonce. sur le compte:

  1. Dans la bibliothèque d'API Google, procédez comme suit : 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 vers l'API EABN, vous devez générer un 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 Utiliser OAuth 2.0 pour l'authentification serveur à serveur

L'API doit inclure le jeton d'authentification obtenu en tant qu'en-tête Auth pour chaque à 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 la commande suivante : URL et corps de la requête:

POST dai.googleapis.com/v1/adBreaks

Corps de la requête

Objet
adBreak Obligatoire L'objet wrapper pour les propriétés adBreak
assetKey Obligatoire Identifiant unique du LiveStreamEvent pour lequel le pause est créée
expectedDuration Obligatoire Durée de cette coupure publicitaire, au format de durée standard de Google (xx,xxxs, où xx,xxx est le nombre de secondes)
scte35CueOut Facultatif Données encodées en base64 à partir du point de sortie scte35. Peut inclure les splice_insert() ou time_signal().
Exemples: <ph type="x-smartling-placeholder">
    </ph>
  • 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 publicitaire pour les de critères de ciblage dans AM360, séparés par = et reliés par &.
Exemple:
key=value&key2=value2,value3
Pour en savoir plus sur le ciblage, consultez Ciblage de l'offre à 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 contient l'insertion dynamique d'annonces internes identifiant de 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)