Dynamic Ad Insertion API ช่วยให้คุณขอและติดตามสตรีมวิดีโอออนดีมานด์ (VOD) ของการแทรกโฆษณาแบบไดนามิกได้ ระบบรองรับสตรีม HLS และ DASH
บริการ: dai.google.com
เส้นทางของเมธอด stream จะสัมพันธ์กับ https://dai.google.com
วิธีการ: สตรีม
| เมธอด | |
|---|---|
stream |
POST /ondemand/v1/hls/content/{content-source}/vid/{video-id}/stream
สร้างสตรีม DAI ของ HLS สำหรับแหล่งที่มาของเนื้อหาและรหัสวิดีโอที่ระบุ
สร้างสตรีม DAI ของ DASH สำหรับแหล่งที่มาของเนื้อหาและรหัสวิดีโอที่ระบุ |
คำขอ HTTP
POST https://dai.google.com/ondemand/v1/hls/content/{content-source}/vid/{video-id}/stream
POST https://dai.google.com/ondemand/v1/dash/content/{content-source}/vid/{video-id}/stream
ส่วนหัวของคำขอ
| พารามิเตอร์ | |
|---|---|
api‑key |
stringคีย์ API ที่ระบุเมื่อสร้างสตรีม ต้องใช้ได้กับเครือข่ายของผู้เผยแพร่โฆษณา คุณสามารถส่งคีย์ API ในส่วนหัวการให้สิทธิ์ HTTP ในรูปแบบต่อไปนี้แทนการระบุในส่วนเนื้อหาของคำขอ Authorization: DCLKDAI key="<api-key>" |
พารามิเตอร์เส้นทาง
| พารามิเตอร์ | |
|---|---|
content-source |
stringรหัส CMS ของสตรีม |
video-id |
stringรหัสวิดีโอของสตรีม |
เนื้อความของคำขอ
เนื้อความของคำขอมีประเภท application/x-www-form-urlencoded และมีพารามิเตอร์ต่อไปนี้
| พารามิเตอร์ | ||
|---|---|---|
dai-ssb |
ไม่บังคับ | ตั้งค่าเป็น |
| พารามิเตอร์การกำหนดเป้าหมาย DFP | ไม่บังคับ | พารามิเตอร์การกำหนดเป้าหมายเพิ่มเติม |
| ลบล้างพารามิเตอร์ของสตรีม | ไม่บังคับ | ลบล้างค่าเริ่มต้นของพารามิเตอร์การสร้างสตรีม |
| การตรวจสอบสิทธิ์ HMAC | ไม่บังคับ | ตรวจสอบสิทธิ์โดยใช้โทเค็นที่ใช้ HMAC |
เนื้อหาการตอบกลับ
หากทำสำเร็จ เนื้อหาการตอบกลับจะมี
Stream ใหม่ สำหรับสตรีมที่ใช้บีคอนฝั่งเซิร์ฟเวอร์ Stream
จะมีเฉพาะฟิลด์ stream_id และ stream_manifest
Open Measurement
ฟิลด์ Verifications มีข้อมูลสำหรับการยืนยัน Open
Measurement สำหรับสตรีมที่ไม่ใช่การรายงานผล Conversion ฝั่งเซิร์ฟเวอร์
Verifications มีองค์ประกอบ Verification อย่างน้อย 1 รายการที่แสดงรายการ
ทรัพยากรและข้อมูลเมตาที่คุณต้องใช้เพื่อยืนยันการเล่นครีเอทีฟโฆษณาด้วยโค้ดการวัดผลของบุคคลที่สาม
รองรับ JavaScriptResource เท่านั้น ดูข้อมูลเพิ่มเติมได้ที่ IAB Tech Lab
และข้อกำหนด VAST 4.1
วิธีการ: การยืนยันสื่อ
หลังจากพบตัวระบุสื่อโฆษณาระหว่างการเล่น ให้ส่งคำขอโดยใช้ media_verification_url จากปลายทาง stream
ทันที media_verification_url คือเส้นทางที่สมบูรณ์
ไม่จำเป็นต้องส่งคำขอการยืนยันสื่อสำหรับสตรีมที่ใช้การรายงานบีคอนฝั่งเซิร์ฟเวอร์
ซึ่งเซิร์ฟเวอร์เป็นผู้เริ่มการยืนยันสื่อ
คำขอไปยังปลายทาง media verification เป็นแบบ Idempotent
| เมธอด | |
|---|---|
media verification |
GET {media_verification_url}/{ad_media_id}
แจ้ง API เกี่ยวกับเหตุการณ์การยืนยันสื่อ |
คำขอ HTTP
GET {media-verification-url}/{ad-media-id}
เนื้อหาการตอบกลับ
media verification
จะแสดงการตอบกลับต่อไปนี้
HTTP/1.1 204 No Contentหากการยืนยันสื่อสำเร็จและส่งการปิงทั้งหมดแล้วHTTP/1.1 404 Not Foundหากคำขอไม่สามารถยืนยันสื่อเนื่องจากการจัดรูปแบบ URL ไม่ถูกต้องหรือหมดอายุHTTP/1.1 404 Not Foundหากคำขอยืนยันก่อนหน้านี้สำหรับบัตรประจำตัวนี้สำเร็จHTTP/1.1 409 Conflictหากคำขออื่นส่งการปิงอยู่แล้วในขณะนี้
รหัสสื่อโฆษณา (HLS)
ระบบจะเข้ารหัสตัวระบุสื่อโฆษณาในข้อมูลเมตาที่มีการจับเวลาของ HLS โดยใช้คีย์ TXXX,
ที่สงวนไว้สำหรับเฟรม "ข้อมูลข้อความที่ผู้ใช้กำหนด" เนื้อหาของเฟรม
จะไม่มีการเข้ารหัสและจะเริ่มต้นด้วยข้อความ "google_" เสมอ
ระบบควรต่อท้ายเนื้อหาข้อความทั้งหมดของเฟรมไปยัง media_verification_url สำหรับคำขอยืนยันโฆษณาแต่ละรายการ
รหัสสื่อโฆษณา (DASH)
ระบบจะแทรกตัวระบุสื่อโฆษณาลงในไฟล์ Manifest ผ่านการใช้
องค์ประกอบ EventStream ของ DASH
แต่ละ EventStream จะมี URI ของรหัสสคีมาเป็น urn:google:dai:2018
โดยจะมีเหตุการณ์ที่มีแอตทริบิวต์ messageData ซึ่งมีรหัสสื่อโฆษณาที่ขึ้นต้นด้วย "google_" ระบบควรต่อท้ายเนื้อหาทั้งหมดของแอตทริบิวต์ messageData
ไปยัง media_verification_url สำหรับคำขอการยืนยันโฆษณาแต่ละรายการ
ข้อมูลการตอบกลับ
สตรีม
Stream ใช้เพื่อแสดงรายการทรัพยากรทั้งหมดสำหรับสตรีมที่สร้างขึ้นใหม่ในรูปแบบ JSON| การแสดง JSON |
|---|
{
"stream_id": string,
"total_duration": number,
"content_duration": number,
"valid_for": string,
"valid_until": string,
"subtitles": [object(Subtitle)],
"hls_master_playlist": string,
"stream_manifest": string,
"media_verification_url": string,
"apple_tv": object(AppleTV),
"ad_breaks": [object(AdBreak)],
} |
| ช่อง | |
|---|---|
stream_id |
stringตัวระบุสตรีม |
total_duration |
numberระยะเวลาของสตรีมเป็นวินาที |
content_duration |
numberระยะเวลาของเนื้อหาที่ไม่มีโฆษณาเป็นวินาที |
valid_for |
stringระยะเวลาของสตรีมที่ถูกต้องในรูปแบบ "00h00m00s" |
valid_until |
stringวันที่สตรีมมีผลจนถึง ในรูปแบบ RFC 3339 |
subtitles |
[object(Subtitle)]รายการคำบรรยาย เว้นว่างไว้หากไม่มีข้อมูล HLS เท่านั้น |
hls_master_playlist |
string(เลิกใช้งานแล้ว) URL เพลย์ลิสต์หลักของ HLS ใช้ stream_manifest HLS เท่านั้น |
stream_manifest |
stringไฟล์ Manifest ของสตรีม สอดคล้องกับเพลย์ลิสต์หลักใน HLS และ MPD ใน DASH นี่เป็นฟิลด์เดียวที่นอกเหนือจาก "stream_id" ที่มีอยู่ในการตอบกลับเมื่อสร้างสตรีมการรายงานบีคอนฝั่งเซิร์ฟเวอร์ |
media_verification_url |
stringURL การยืนยันสื่อ |
apple_tv |
object(AppleTV)ข้อมูลที่ไม่บังคับสำหรับอุปกรณ์ AppleTV โดยเฉพาะ HLS เท่านั้น |
ad_breaks |
[object(AdBreak)]รายการช่วงพักโฆษณา เว้นว่างไว้หากไม่มี |
AppleTV
AppleTV มีข้อมูลเฉพาะสำหรับอุปกรณ์ Apple TV| การแสดง JSON |
|---|
{
"interstitials_url": string,
} |
| ช่อง | |
|---|---|
interstitials_url |
stringURL ของโฆษณาคั่นระหว่างหน้า |
AdBreak
AdBreak อธิบายช่วงพักโฆษณาเดียวในสตรีม ประกอบด้วยตำแหน่ง ระยะเวลา ประเภท (กลาง/ต้น/ท้าย) และรายการโฆษณา| การแสดง JSON |
|---|
{ "type": string, "start": number, "duration": number, "ads": [object(Ad)], } |
| ช่อง | |
|---|---|
type |
stringประเภทการหยุดพักที่ใช้ได้ ได้แก่ กลาง ก่อน และหลัง |
start |
numberตำแหน่งในสตรีมที่เริ่มพักโฆษณาเป็นวินาที |
duration |
numberระยะเวลาของช่วงพักโฆษณา หน่วยเป็นวินาที |
ads |
[object(Ad)]รายการโฆษณา เว้นว่างไว้หากไม่มี |
โฆษณา
Ad อธิบายโฆษณาในสตรีม ซึ่งประกอบด้วยตำแหน่งของโฆษณาใน ช่วงพักโฆษณา ระยะเวลาของโฆษณา และข้อมูลเมตาที่ไม่บังคับบางอย่าง| การแสดง JSON |
|---|
{
"seq": number,
"start": number,
"duration": number,
"title": string,
"description": string,
"advertiser": string,
"ad_system": string,
"ad_id": string,
"creative_id": string,
"creative_ad_id": string,
"deal_id": string,
"clickthrough_url": string,
"icons": [object(Icon)],
"wrappers": [object(Wrapper)],
"events": [object(Event)],
"verifications": [object(Verification)],
"universal_ad_id": object(UniversalAdID),
"companions": [object(Companion)],
"interactive_file": object(InteractiveFile),
"skip_metadata": object(SkipMetadata),
"extensions": [],
} |
| ช่อง | |
|---|---|
seq |
numberตำแหน่งของโฆษณาในช่วงพัก |
start |
numberตำแหน่งในสตรีมที่โฆษณาเริ่ม หน่วยเป็นวินาที |
duration |
numberระยะเวลาของโฆษณาเป็นวินาที |
title |
stringชื่อโฆษณาที่ไม่บังคับ |
description |
stringคำอธิบายเพิ่มเติมของโฆษณา |
advertiser |
stringตัวระบุผู้ลงโฆษณาที่ไม่บังคับ |
ad_system |
stringระบบโฆษณาที่ไม่บังคับ |
ad_id |
stringรหัสโฆษณาที่ไม่บังคับ |
creative_id |
stringรหัสครีเอทีฟโฆษณาที่ไม่บังคับ |
creative_ad_id |
stringรหัสโฆษณาของครีเอทีฟโฆษณาที่ไม่บังคับ |
deal_id |
stringรหัสดีลที่ไม่บังคับ |
clickthrough_url |
stringURL การคลิกผ่านที่ไม่บังคับ |
icons |
[object(Icon)]รายการไอคอน เว้นว่างไว้หากไม่มี |
wrappers |
[object(Wrapper)]รายการ Wrapper เว้นว่างไว้หากไม่มี |
events |
[object(Event)]รายการเหตุการณ์ในโฆษณา |
verifications |
[object(Verification)]รายการการยืนยัน Open Measurement ที่ไม่บังคับซึ่งแสดงรายการทรัพยากร และข้อมูลเมตาที่จำเป็นในการเรียกใช้โค้ดการวัดผลโดยบุคคลที่สามเพื่อยืนยัน การเล่นครีเอทีฟโฆษณา |
universal_ad_id |
object(UniversalAdID)รหัสโฆษณาสากลที่ไม่บังคับ |
companions |
[object(Companion)]ครีเอทีฟโฆษณาที่แสดงร่วมที่ไม่บังคับซึ่งอาจแสดงพร้อมกับโฆษณานี้ |
interactive_file |
object(InteractiveFile)ครีเอทีฟโฆษณาแบบอินเทอร์แอกทีฟที่ไม่บังคับ (SIMID) ซึ่งควรแสดงระหว่างการเล่นโฆษณา |
skip_metadata |
object(SkipMetadata)ข้อมูลเมตาที่ไม่บังคับสำหรับโฆษณาแบบข้ามได้ หากตั้งค่าไว้ แสดงว่าโฆษณา ข้ามได้ และมีวิธีการจัดการ UI การข้าม และเหตุการณ์การติดตาม |
extensions |
stringรายการโหนด <Extension> ทั้งหมดใน VAST (ไม่บังคับ) |
กิจกรรม
เหตุการณ์ประกอบด้วยประเภทเหตุการณ์และเวลาที่นำเสนอของเหตุการณ์| การแสดง JSON |
|---|
{ "time": number, "type": string, } |
| ช่อง | |
|---|---|
time |
numberเวลาที่นำเสนอกิจกรรมนี้ |
type |
stringประเภทของเหตุการณ์นี้ |
คำบรรยาย
คำบรรยายอธิบายแทร็กคำบรรยายแทนเสียงแบบ Sidecar สำหรับสตรีมวิดีโอ โดยจะจัดเก็บ คำบรรยาย 2 รูปแบบ ได้แก่ TTML และ WebVTT แอตทริบิวต์ TTMLPath มี URL ไปยังไฟล์ TTML Sidecar และแอตทริบิวต์ WebVTTPath มี URL ไปยังไฟล์ WebVTT Sidecar ในลักษณะเดียวกัน| การแสดง JSON |
|---|
{
"language": string,
"language_name": string,
"ttml": string,
"webvtt": string,
} |
| ช่อง | |
|---|---|
language |
stringรหัสภาษา เช่น "en" หรือ "de" |
language_name |
stringชื่อที่สื่อความหมายของภาษา โดยจะแยกความแตกต่างของชุดคำบรรยายแทนเสียงที่เฉพาะเจาะจงหากมีหลายชุดสำหรับภาษาเดียวกัน |
ttml |
stringURL ของไฟล์ TTML Sidecar (ไม่บังคับ) |
webvtt |
stringURL ของไฟล์ WebVTT Sidecar (ไม่บังคับ) |
SkipMetadata
SkipMetadata ให้ข้อมูลที่จำเป็นสำหรับไคลเอ็นต์ในการจัดการเหตุการณ์ข้ามสำหรับโฆษณาที่ข้ามได้| การแสดง JSON |
|---|
{
"offset": number,
"tracking_url": string,
} |
| ช่อง | |
|---|---|
offset |
numberออฟเซ็ตระบุระยะเวลาเป็นวินาทีที่เพลเยอร์ควรรอ เพื่อแสดงปุ่มข้ามในโฆษณา ข้ามหากไม่ได้ระบุไว้ใน VAST |
tracking_url |
stringTrackingURL มี URL ที่ควรใช้คำสั่ง ping ในเหตุการณ์ข้าม |
ไอคอน
Icon มีข้อมูลเกี่ยวกับไอคอน VAST| การแสดง JSON |
|---|
{ "click_data": object(ClickData), "creative_type": string, "click_fallback_images": [object(FallbackImage)], "height": int32, "width": int32, "resource": string, "type": string, "x_position": string, "y_position": string, "program": string, "alt_text": string, } |
| ช่อง | |
|---|---|
click_data |
object(ClickData) |
creative_type |
string |
click_fallback_images |
[object(FallbackImage)] |
height |
int32 |
width |
int32 |
resource |
string |
type |
string |
x_position |
string |
y_position |
string |
program |
string |
alt_text |
string |
ClickData
ClickData มีข้อมูลเกี่ยวกับการคลิกผ่านไอคอน| การแสดง JSON |
|---|
{
"url": string,
} |
| ช่อง | |
|---|---|
url |
string |
FallbackImage
FallbackImage มีข้อมูลเกี่ยวกับรูปภาพสำรองของ VAST| การแสดง JSON |
|---|
{ "creative_type": string, "height": int32, "width": int32, "resource": string, "alt_text": string, } |
| ช่อง | |
|---|---|
creative_type |
string |
height |
int32 |
width |
int32 |
resource |
string |
alt_text |
string |
Wrapper
Wrapper มีข้อมูลเกี่ยวกับโฆษณา Wrapper โดยจะไม่รวมรหัสดีลหากไม่มี| การแสดง JSON |
|---|
{
"system": string,
"ad_id": string,
"creative_id": string,
"creative_ad_id": string,
"deal_id": string,
} |
| ช่อง | |
|---|---|
system |
stringตัวระบุระบบโฆษณา |
ad_id |
stringรหัสโฆษณาที่ใช้สำหรับโฆษณา Wrapper |
creative_id |
stringรหัสครีเอทีฟโฆษณาที่ใช้สำหรับโฆษณา Wrapper |
creative_ad_id |
stringรหัสโฆษณาของครีเอทีฟโฆษณาที่ใช้สำหรับโฆษณา Wrapper |
deal_id |
stringรหัสดีลที่ไม่บังคับสำหรับโฆษณา Wrapper |
การยืนยัน
การยืนยันมีข้อมูลสำหรับ Open Measurement ซึ่งช่วยให้ การวัดการมองเห็นโฆษณาและการยืนยันโดยบุคคลที่สามเป็นไปได้ ปัจจุบันรองรับเฉพาะทรัพยากร JavaScript ดู https://iabtechlab.com/standards/open-measurement-sdk/| การแสดง JSON |
|---|
{
"vendor": string,
"java_script_resources": [object(JavaScriptResource)],
"tracking_events": [object(TrackingEvent)],
"parameters": string,
} |
| ช่อง | |
|---|---|
vendor |
stringผู้ให้บริการการยืนยัน |
java_script_resources |
[object(JavaScriptResource)]รายการแหล่งข้อมูล JavaScript สำหรับการยืนยัน |
tracking_events |
[object(TrackingEvent)]รายการเหตุการณ์การติดตามสำหรับการยืนยัน |
parameters |
stringสตริงทึบแสงที่ส่งไปยังรหัสยืนยันการเริ่มต้นระบบ |
JavaScriptResource
JavaScriptResource มีข้อมูลสำหรับการยืนยันผ่าน JavaScript| การแสดง JSON |
|---|
{
"script_url": string,
"api_framework": string,
"browser_optional": boolean,
} |
| ช่อง | |
|---|---|
script_url |
stringURI ไปยังเพย์โหลด JavaScript |
api_framework |
stringAPIFramework คือชื่อของเฟรมเวิร์กวิดีโอที่ใช้รหัสยืนยัน |
browser_optional |
booleanสคริปต์นี้เรียกใช้ภายนอกเบราว์เซอร์ได้หรือไม่ |
TrackingEvent
TrackingEvent มี URL ที่ไคลเอ็นต์ควรปิงในบางสถานการณ์| การแสดง JSON |
|---|
{
"event": string,
"uri": string,
} |
| ช่อง | |
|---|---|
event |
stringประเภทของเหตุการณ์การติดตาม |
uri |
stringเหตุการณ์การติดตามที่จะปิง |
UniversalAdID
UniversalAdID ใช้เพื่อให้ตัวระบุครีเอทีฟโฆษณาที่ไม่ซ้ำกันซึ่งดูแลในระบบโฆษณา| การแสดง JSON |
|---|
{ "id_value": string, "id_registry": string, } |
| ช่อง | |
|---|---|
id_value |
stringรหัสโฆษณาสากลของครีเอทีฟโฆษณาที่เลือกสำหรับโฆษณา |
id_registry |
stringสตริงที่ใช้ระบุ URL สำหรับเว็บไซต์รีจิสทรีที่มีการจัดแคตตาล็อก Universal Ad ID ของครีเอทีฟโฆษณาที่เลือก |
Companion
ครีเอทีฟโฆษณาที่แสดงร่วมมีข้อมูลสำหรับโฆษณาที่แสดงร่วมซึ่งอาจแสดง พร้อมกับโฆษณา| การแสดง JSON |
|---|
{ "click_data": object(ClickData), "creative_type": string, "height": int32, "width": int32, "resource": string, "type": string, "ad_slot_id": string, "api_framework": string, "tracking_events": [object(TrackingEvent)], } |
| ช่อง | |
|---|---|
click_data |
object(ClickData)ข้อมูลการคลิกของครีเอทีฟโฆษณาที่แสดงร่วมนี้ |
creative_type |
stringแอตทริบิวต์ CreativeType ในโหนด <StaticResource> ใน VAST หากเป็นโฆษณาที่แสดงร่วมประเภทคงที่ |
height |
int32ความสูงเป็นพิกเซลของโฆษณาที่แสดงร่วมนี้ |
width |
int32ความกว้างเป็นพิกเซลของโฆษณาที่แสดงร่วมนี้ |
resource |
stringสำหรับโฆษณาที่แสดงร่วมแบบคงที่และแบบ iframe นี่จะเป็น URL ที่จะโหลดและ แสดง สำหรับโฆษณาที่แสดงร่วม HTML นี่จะเป็นข้อมูลโค้ด HTML ที่ควร แสดงเป็นโฆษณาที่แสดงร่วม |
type |
stringประเภทของอุปกรณ์ที่ใช้ร่วมกันนี้ ซึ่งอาจเป็นแบบคงที่ iframe หรือ HTML |
ad_slot_id |
stringรหัสช่องสำหรับโฆษณาที่แสดงร่วมนี้ |
api_framework |
stringเฟรมเวิร์ก API สำหรับอุปกรณ์เสริมนี้ |
tracking_events |
[object(TrackingEvent)]รายการเหตุการณ์การติดตามสำหรับโฆษณาที่แสดงร่วมนี้ |
InteractiveFile
InteractiveFile มีข้อมูลสำหรับครีเอทีฟโฆษณาแบบอินเทอร์แอกทีฟ (เช่น SIMID) ที่ควรแสดงระหว่างการเล่นโฆษณา| การแสดง JSON |
|---|
{ "resource": string, "type": string, "variable_duration": boolean, "ad_parameters": string, } |
| ช่อง | |
|---|---|
resource |
stringURL ของครีเอทีฟโฆษณาแบบอินเทอร์แอกทีฟ |
type |
stringประเภท MIME ของไฟล์ที่ระบุเป็นทรัพยากร |
variable_duration |
booleanครีเอทีฟโฆษณานี้ขอขยายระยะเวลาได้หรือไม่ |
ad_parameters |
stringค่าของโหนด <AdParameters> ใน VAST |