DAI Early Ad Break Notification API

Google DAI プラットフォームを使用する際には、 ストリーム内の次のライブ/リニア広告ブレーク。早期のミッドロール挿入点 Notification(EABN)API を使用すると、 Key-Value ペア: 大規模な広告決定のためのスケーラビリティを実現 使用できます。

EABN API の呼び出しには、ターゲットとするアセットキーと、想定される 次の休憩時間。再生時間は実際の広告とほぼ同じにする必要があります できるだけ短くしましょう。送信される予想時間が 場合、 「掲載不足」広告ブレーク フィルタイプ 残りの部分には空白のスレートが使用されます(デフォルトは白紙)。もし 送信された予想時間が、指定したミッドロール挿入点より長い場合、ミッドロール挿入点が発生する可能性があります 広告が終了する前に広告が終了することがあります。

これらの必須フィールドの他に、カスタム ターゲティングを パラメータ、適用する連続配信広告テンプレートの名前、 SCTE35 キューアウトデータ(次の場合) できます。

前提条件

サービス アカウントを作成する

EABN API にアクセスするには、Google サービス アカウントが必要です。

  • Google Cloud アカウントをお持ちの場合は、IAM モジュールを使用して できます。詳細については、サービス アカウントの作成と管理をご覧ください。
  • Google Cloud アカウントをお持ちでない場合は、サービス アカウントを作成できます Google API Console 手順は次のとおりです。 <ph type="x-smartling-placeholder">
      </ph>
    1. 新しいプロジェクトを作成するか、既存のプロジェクトを選択します。
    2. [認証情報] ページで、[サービス アカウントの管理] をクリックします。
    3. [サービス アカウント] ページで、[サービス アカウントを作成] をクリックします。
    4. [サービス アカウントの作成] ページで、アカウントの詳細を入力します。その後 [作成] をクリックします。

サービス アカウントが正常に作成されたら、アカウントの JSON を 鍵を作成します。

EABN API を有効にする

サービス アカウントを作成したら、アカウント マネージャーに そのアカウントに対応する EABN API を作成します。

DAI API を有効にする

サービス アカウントで EABN API が有効になったら、DAI API を有効にします 対象アカウント:

  1. Google API ライブラリ: 「DAI API」を検索します

  2. DAI API を選択して有効にします。

EABN API の使用

JSON/REST リクエストを使用して EABN API を呼び出すことができます。

認証

EABN API に対して認証済み呼び出しを行うには、OAuth2 サービスを生成する必要がある そのサービス アカウントの JSON キーとスコープを使用して、 https://www.googleapis.com/auth/video-ads。詳細については、次をご覧ください: サーバー間アプリケーションに OAuth 2.0 を使用する

には、結果の認証トークンをそれぞれの Auth ヘッダーとして含める必要があります。 EABN API を呼び出します

早期広告ブレーク通知の送信

早期広告ブレーク通知を送信するには、以下を使用して POST リクエストを送信します URL とリクエスト本文:

POST dai.googleapis.com/v1/adBreaks

リクエスト本文

オブジェクト
adBreak 必須 adBreak プロパティのラッパー オブジェクト
assetKey 必須 LiveStreamEvent の一意の識別子。 休憩が作成される
expectedDuration 必須 この広告ブレークの長さ(Google の標準の再生時間形式を使用) (xx.xxxs。xx.xxx は秒数)
scte35CueOut 省略可 scte35 キューアウトからの Base-64 エンコード データ。以下を含めることができます。 splice_insert() または time_signal() コマンドを使用します。
例: <ph type="x-smartling-placeholder">
    </ph>
  • time_signal():
    /DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==
  • splice_insert(): /DAvAAAAAAAA///wFAVIAACPf+/+c2nALv4AUsz1AAAAAAAKAAhDVUVJAAABNWLbowo=
custParams 省略可 カスタム広告ブレークの広告リクエストに含める Key-Value ペア AM360 の条件ターゲティング。= で区切られ、 &.
例:
key=value&key2=value2,value3
ターゲティングについて詳しくは、このモジュールの 商品ターゲティング パラメータを追加する
ptpln 省略可 連続配信広告テンプレート名

レスポンス ヘッダー

HTTP/1.1 200 OK

レスポンスの本文

レスポンスの本文には、adBreak オブジェクトで送信されるすべてのパラメータが含まれます。 および内部 DAI を含む追加の daiBreakId フィールド ストリーム内に作成された広告ブレークの識別子。

リクエスト

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

レスポンス

HTTP/1.1 200 OK

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

実装例(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)