API раннего уведомления о рекламной паузе DAI

При использовании платформы Google DAI вам может потребоваться предоставить данные таргетинга для следующей предстоящей прямой/линейной рекламной паузы в потоке. API раннего уведомления о рекламных паузах (EABN) позволяет реализовать таргетинг на конкретные паузы с использованием пар ключ-значение, что обеспечивает масштабируемость для принятия решений по рекламе в потоках большого объема.

Вызовы API EABN должны включать целевой ключ актива и ожидаемую продолжительность следующего перерыва. Продолжительность должна быть как можно ближе к фактической продолжительности рекламной паузы. Если ожидаемая продолжительность отправки короче предоставленной рекламной паузы, для оставшейся части рекламной паузы используется тип заполнения рекламной паузы « Неполное заполнение» (по умолчанию — «чистый лист»). Если ожидаемая продолжительность отправки превышает предоставленную рекламную паузу, ваша рекламная пауза может закончиться до того, как реклама будет завершена.

В дополнение к этим обязательным полям вы также можете отправить параметры пользовательского таргетинга, имя применяемого шаблона рекламного блока или данные SCTE35 Cue Out , если они доступны.

Предварительные условия

Создать учетную запись службы

Для доступа к API EABN вам понадобится учетная запись службы Google.

  • Если у вас есть учетная запись Google Cloud, вы можете использовать модуль IAM для создания учетной записи службы. Дополнительную информацию см. в разделе Создание учетных записей служб и управление ими .
  • Если у вас нет учетной записи Google Cloud, вы можете создать учетную запись службы из консоли Google API , выполнив следующие действия:
    1. Создайте новый проект или выберите существующий проект.
    2. На странице «Учетные данные» нажмите «Управление учетными записями служб» .
    3. На странице «Служебные учетные записи» нажмите «СОЗДАТЬ СЕРВИСНУЮ АККАУНТ» .
    4. На странице «Создать учетную запись службы» введите данные учетной записи. Затем нажмите СОЗДАТЬ .

После успешного создания учетной записи службы скопируйте ключ JSON учетной записи, который будет использоваться для аутентификации.

Включить API EABN

После создания учетной записи службы попросите своего менеджера по работе с клиентами включить API EABN для этой учетной записи.

Включить API DAI

После включения API EABN для вашей учетной записи службы включите API DAI в учетной записи:

  1. В библиотеке Google API найдите «DAI API».

  2. Выберите и включите DAI API.

Использование API ЕАБН

Вы можете вызвать API EABN, используя запросы JSON/REST.

Аутентификация

Чтобы выполнить аутентифицированные вызовы к API EABN, вам необходимо сгенерировать учетные данные учетной записи службы OAuth2, используя ключ JSON из вашей учетной записи службы и область действия https://www.googleapis.com/auth/video-ads . Дополнительные сведения см. в разделе Использование OAuth 2.0 для межсерверных приложений .

Полученный токен аутентификации необходимо включать в качестве заголовка Auth для каждого вызова API EABN.

Отправка раннего уведомления о рекламной паузе

Чтобы отправить раннее уведомление о рекламной паузе, отправьте запрос POST, используя следующий URL-адрес и тело запроса:

POST dai.googleapis.com/v1/adBreaks

Тело запроса

Объект
adBreak Необходимый Объект-оболочка для свойств adBreak
assetKey Необходимый Уникальный идентификатор LiveStreamEvent , для которого создается разрыв.
expectedDuration Необходимый Продолжительность рекламной паузы в стандартном формате Google (xx.xxxs, где xx.xxx — количество секунд).
scte35CueOut Необязательный Данные в кодировке Base-64 из сигнала scte35. Может включать команду splice_insert() или time_signal() .
Примеры:
  • time_signal() :
    /DA0AAAAAAAA///wBQb+cr0AUAAeAhxDVUVJSAAAjn/PAAGlmbAICAAAAAAsoKGKNAIAmsnRfg==
  • splice_insert() : /DAvAAAAAAAA///wFAVIAACPf+/+c2nALv4AUsz1AAAAAAAKAAhDVUVJAAABNWLbowo=
custParams Необязательный Пары «ключ-значение» будут включены в запросы объявлений в этот перерыв для таргетинга на специальные критерии в AM360, разделенные знаком = и соединенные знаком & .
Пример:
key=value&key2=value2,value3
Дополнительную информацию о таргетинге см. в разделе Добавление параметров таргетинга в ваш поток .
ptpln Необязательный Название шаблона рекламного пакета

Заголовок ответа

HTTP/1.1 200 OK

Тело ответа

Тело ответа содержит все параметры, отправленные в объекте adBreak , а также дополнительное поле daiBreakId , которое содержит внутренний идентификатор DAI для созданной рекламной паузы в потоке.

Пример

Запрос

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)