เมื่อใช้แพลตฟอร์ม Google DAI คุณอาจต้องการให้ข้อมูลการกำหนดเป้าหมายสำหรับช่วงพักโฆษณาแบบสด/เชิงเส้นถัดไปที่กำลังจะมีขึ้นในสตรีม API การแจ้งเตือนช่วงพักโฆษณาตอนต้น (EABN) ช่วยให้คุณใช้การกำหนดเป้าหมายที่เจาะจงช่วงพักโฆษณาได้โดยใช้คู่คีย์-ค่า ซึ่งให้ความสามารถในการปรับขนาดสำหรับการตัดสินใจเกี่ยวกับโฆษณาในสตรีมปริมาณมาก
การเรียกใช้ EABN API ต้องมีคีย์เนื้อหาเพื่อกำหนดเป้าหมายและระยะเวลาที่คาดไว้ของช่วงพักถัดไป โดยระยะเวลาดังกล่าวต้องใกล้เคียงกับความยาวของช่วงพักโฆษณาจริงมากที่สุดเท่าที่จะเป็นไปได้ หากระยะเวลาที่คาดไว้ที่ส่งสั้นกว่าช่วงพักโฆษณาที่ระบุ ระบบจะใช้ประเภทการส่งช่วงพักโฆษณาน้อยกว่าปกติ (ค่าเริ่มต้นเป็นแถบสเลทว่าง) สำหรับช่วงพักที่เหลือ หากระยะเวลาที่คาดไว้ที่ส่งนานกว่าช่วงพักโฆษณาที่ระบุ ช่วงพักโฆษณาอาจสิ้นสุดลงก่อนที่โฆษณาจะเสร็จสมบูรณ์
นอกเหนือจากช่องที่ต้องกรอกเหล่านี้แล้ว คุณยังส่งพารามิเตอร์การกำหนดเป้าหมายเอง ชื่อเทมเพลตพ็อดโฆษณาที่จะใช้ หรือข้อมูล SCTE35 Cue Out ได้ด้วย (หากมี)
ข้อกำหนดเบื้องต้น
สร้างบัญชีบริการ
คุณต้องมีบัญชีบริการของ Google จึงจะเข้าถึง EABN API ได้
- หากมีบัญชี Google Cloud คุณจะใช้โมดูล IAM เพื่อสร้างบัญชีบริการได้ ดูข้อมูลเพิ่มเติมได้ที่การสร้างและจัดการบัญชีบริการ
- หากไม่มีบัญชี Google Cloud คุณสร้างบัญชีบริการได้จากคอนโซล Google API โดยทำตามขั้นตอนต่อไปนี้
- สร้างโปรเจ็กต์ใหม่หรือเลือกโปรเจ็กต์ที่มีอยู่
- ในหน้าข้อมูลเข้าสู่ระบบ ให้คลิกจัดการบัญชีบริการ
- ในหน้าบัญชีบริการ ให้คลิกสร้างบัญชีบริการ
- กรอกรายละเอียดบัญชีในหน้าสร้างบัญชีบริการ จากนั้นคลิกสร้าง
เมื่อสร้างบัญชีบริการเรียบร้อยแล้ว ให้คัดลอกคีย์ JSON ของบัญชีที่จะใช้สำหรับการตรวจสอบสิทธิ์
เปิดใช้ EABN API
เมื่อสร้างบัญชีบริการแล้ว โปรดขอให้ผู้จัดการฝ่ายดูแลลูกค้าเปิดใช้ EABN API ให้กับบัญชีดังกล่าว
เปิดใช้ DAI API
เมื่อเปิดใช้ EABN API ให้กับบัญชีบริการของคุณแล้ว ให้เปิดใช้ DAI API ในบัญชี โดยทำดังนี้
ค้นหา "DAI API" ในไลบรารี Google API
เลือกและเปิดใช้ DAI API
การใช้ EABN API
คุณสามารถเรียกใช้ EABN API โดยใช้คําขอ JSON/REST
การตรวจสอบสิทธิ์
หากต้องการเรียกใช้ EABN API ผ่านการตรวจสอบสิทธิ์ คุณต้องสร้างข้อมูลเข้าสู่ระบบบัญชีบริการ OAuth2 โดยใช้คีย์ JSON จากบัญชีบริการและขอบเขต https://www.googleapis.com/auth/video-ads
ดูข้อมูลเพิ่มเติมได้ที่การใช้ OAuth 2.0 สำหรับแอปพลิเคชันระหว่างเซิร์ฟเวอร์กับเซิร์ฟเวอร์
ซึ่งต้องมีโทเค็นการตรวจสอบสิทธิ์ที่ได้เป็นส่วนหัวการตรวจสอบสิทธิ์สำหรับการเรียก EABN API แต่ละครั้ง
ส่งการแจ้งเตือนช่วงพักโฆษณาล่วงหน้า
หากต้องการส่งการแจ้งเตือนช่วงพักโฆษณาล่วงหน้า ให้ส่งคำขอ POST โดยใช้ URL และเนื้อหาคำขอต่อไปนี้
POST dai.googleapis.com/v1/adBreaks
เนื้อหาของคำขอ
ออบเจ็กต์ | ||
---|---|---|
adBreak |
จำเป็น | ออบเจ็กต์ Wrapper ของพร็อพเพอร์ตี้ adBreak |
assetKey |
จำเป็น | ตัวระบุที่ไม่ซ้ำกันสำหรับ LiveStreamEvent ที่มีการสร้างช่วงพัก |
expectedDuration |
จำเป็น | ระยะเวลาของช่วงพักโฆษณานี้โดยใช้รูปแบบระยะเวลามาตรฐานของ Google (xx.xxxs โดยที่ xx.xxx คือจำนวนวินาที) |
scte35CueOut |
ไม่บังคับ | ข้อมูลที่มีการเข้ารหัสแบบ 64 จากข้อความสุดท้าย SCTE-35 อาจรวมคำสั่ง splice_insert() หรือ time_signal() ก็ได้
ตัวอย่างเช่น
|
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¶m2=value2",
"ptpln": "podtemplate"
}
}
คำตอบ
HTTP/1.1 200 OK
{
"assetKey": "asset1",
"expectedDuration": "30s",
"custParams": "param1=value1¶m2=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¶m2=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)