לפני שמתחילים
המדריך הזה מתייחס רק להוראות ההפעלה בהיעדר IMA DAI SDK.
חשוב לוודא שכבר השלמתם את השלבים במאמר בנושא שילוב של Google Ad Manager (GAM) עם שידורים חיים.
אם IMA SDK לא זמין לפלטפורמה שבה אתם רוצים להשתמש, תצטרכו להגדיר שהאפליקציה שלכם תפעיל את ממשקי ה-API הנדרשים ותתחיל את החשיפות של המודעות בעצמה.
כדי לעשות את זה, תצטרכו את הפרטים הבאים:
| Location |
האזור ב-Google Cloud
שבו נוצר קובץ ההגדרות הפעיל:
LOCATION
|
| מספר הפרויקט |
מספר הפרויקט בענן של Google Cloud שבו נעשה שימוש ב-Video Stitcher API:
PROJECT_NUMBER
|
| טוקן OAuth |
אסימון OAuth לטווח קצר של חשבון שירות עם תפקיד המשתמש Video Stitcher:
OAUTH_TOKEN מידע נוסף על יצירת אסימוני OAuth לזמן קצר |
| הקוד של הרשת |
קוד הרשת ב-Ad Manager לשליחת בקשות להצגת מודעות:
NETWORK_CODE
|
| מזהה הגדרות בזמן אמת |
מזהה ההגדרה של השידור החי שציינתם כשיצרתם את האירוע בשידור חי:
LIVE_CONFIG_ID
|
| מפתח נכס בהתאמה אישית |
מפתח הנכס המותאם אישית של Ad Manager שנוצר במהלך התהליך של
יצירת הגדרה לאירוע בשידור חי
באמצעות Video Stitcher API:
CUSTOM_ASSET_KEY
|
שליחת בקשה לרישום סטרימינג ל-Ad Manager
שולחים בקשת POST לנקודת הקצה של רישום הסטרימינג. בתגובה, מקבלים קובץ JSON שמכיל את מזהה הסטרימינג שצריך לשלוח ל-API של שילוב הסרטונים.
נקודת קצה ל-API
POST: /ssai/pods/api/v1/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream
Host: dai.google.com
Content-Type: application/x-www-form-urlencoded
פרמטרים של נתיב
NETWORK_CODE |
קוד הרשת שלכם ב-Google Ad Manager 360:
NETWORK_CODE
|
CUSTOM_ASSET_KEY |
המזהה המותאם אישית שמשויך לאירוע הזה ב-Google Ad Manager:
CUSTOM_ASSET_KEY
|
פרמטרים של גוף הבקשה בקידוד טופס
קבוצה אופציונלית של פרמטרים לטירגוט בקידוד טופס.
תגובת JSON
media_verification_url |
כתובת ה-URL הבסיסית לשליחת פינג לאירועי מעקב אחר הפעלה. כתובת URL מלאה לאימות מדיה נוצרת על ידי הוספה של מזהה אירוע של מודעה לכתובת הבסיסית הזו.
MEDIA_VERIFICATION_URL
|
metadata_url |
כתובת ה-URL לבקשת מטא-נתונים של רצף מודעות.
METADATA_URL
|
polling_frequency |
התדירות המומלצת באלפיות השנייה לבדיקה של `metadata_url`.
POLLING_FREQUENCY
|
stream_id |
המחרוזת שמשמשת לזיהוי סשן הסטרימינג הנוכחי.
STREAM_ID
|
valid_for |
משך הזמן שנותר עד שתוקף הסשן הנוכחי של הסטרימינג יפוג, בפורמט
dhms (ימים, שעות, דקות, שניות). לדוגמה,
2h0m0.000s מייצג משך זמן של שעתיים.
|
valid_until |
השעה שבה יפוג התוקף של סשן הסטרימינג הנוכחי, כמחרוזת של תאריך ושעה בפורמט ISO 8601 yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm.
|
בקשה לדוגמה (cURL)
curl -X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "cust_params=\"section%3Dsports%26page%3Dgolf%2Ctennis\"" \
https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/ext-doc-ps-redirect-hls/streamדוגמה לתשובה
{
"stream_id":"9fe8fe4f-f12e-4fed-b509-0ca269bb1668:TUL",
"media_verification_url":"https://dai.google.com/.../media/",
"metadata_url":"https://dai.google.com/.../metadata",
"session_update_url":"https://dai.google.com/.../session",
"polling_frequency":10
}
במקרה של שגיאות, מוחזרים קודי שגיאה סטנדרטיים של HTTP ללא גוף תגובת JSON.
מנתחים את תגובת ה-JSON ומאחסנים את הערכים הרלוונטיים.
יצירת URI של הפעלה של פעילות
שולחים בקשת POST לנקודת הקצה (endpoint) /livesessions של video stitcher API כדי ליצור סשן חדש של שידור חי. בתגובה, תקבלו תגובת JSON שמכילה את מניפסט הסטרימינג לטעינה בנגן הווידאו.
נקודת קצה ל-API
POST: /v1/projects/PROJECT_NUMBER/locations/LOCATION/liveSessions
Host: videostitcher.googleapis.com
Authorization: Bearer OAUTH_TOKEN
Content-Type: application/json
פרמטרים של נתיב
PROJECT_NUMBER |
מספר הפרויקט בענן של Google Cloud שבו נעשה שימוש ב-Video Stitcher API:
PROJECT_NUMBER
|
LOCATION |
האזור ב-Google Cloud
שבו נוצר קובץ ההגדרות הפעיל:
LOCATION
|
פרמטר של כותרת הרשאה
OAUTH_TOKEN |
אסימון OAuth לטווח קצר של חשבון שירות עם תפקיד המשתמש Video Stitcher:
OAUTH_TOKEN |
פרמטרים של תוכן הבקשה בקידוד JSON
liveConfig |
מחרוזת שמכילה את מספר הפרויקט, המיקום ומזהה ההגדרה של השידור החי בפורמט הבא:
projects/PROJECT_NUMBER/locations/LOCATION/liveConfigs/LIVE_CONFIG_ID
|
adTracking |
מגדירים את הערך "CLIENT" כדי להפעיל מעקב בצד הלקוח. |
gamSettings |
אובייקט שמכיל את מזהה הסטרימינג בפורמט הבא:
{"streamId":"STREAM_ID"}
|
תגובת JSON
name |
השם של הסשן בשידור חי, שמכיל את מזהה הסשן. |
playUri |
ה-URI של מניפסט השידור המחובר, לטעינה בנגן הווידאו לצורך הפעלה.
PLAY_URI
|
liveConfig |
אותו מחרוזת liveConfig שנשלחה אל ה-API בגוף הבקשה.
|
gamSettings |
אותו אובייקט gamSettings שנשלח אל ה-API בגוף הבקשה.
|
בקשה לדוגמה (cURL)
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer OAUTH_TOKEN" \
-d '@request.json' \
https://videostitcher.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/liveSessionsrequest.json
{
"liveConfig": "projects/PROJECT_NUMBER/locations/LOCATION/liveConfigs/LIVE_CONFIG_ID",
"adTracking": "CLIENT",
"gamSettings": {
"streamId": "STREAM_ID"
}
}
דוגמה לתשובה
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/liveSessions/SESSION_ID",
"playUri": PLAY_URI,
"liveConfig": "projects/PROJECT_NUMBER/locations/LOCATION/liveConfigs/LIVE_CONFIG_ID"
"gamSettings": {
"streamId": STREAM_ID
}
}
אחרי קבלת התגובה, אפשר להפעיל את השידור החי עם המודעות המחוברות על ידי הפניה אל ה-URI של הפעלת הסשן מהשדה playUri של אובייקט התגובה.
Video Stitcher API יוצר מזהה סשן ייחודי לכל בקשה, שאפשר לאחזר מהקטע האחרון של השדה name של אובייקט התגובה.
התוקף של סשן לא פעיל יפוג אחרי 5 דקות. סשן נחשב כסשן לא פעיל אם לא בוצעו בו אחזורים של מניפסטים במשך פרק זמן מסוים.
בדיקה חוזרת של מטא-נתונים חדשים של הפסקות פרסום
האפליקציה אחראית לאחזור מטא-נתונים של כל הפסקה למודעה, כדי לדעת אילו חשיפות צריך להפעיל. כדי לעשות זאת, צריך להגדיר טיימר שיבצע בדיקה קבועה של ממשקי ה-API של DAI metadata_url כדי לקבל מידע חדש על מודעות. המרווח בין בדיקות הסטטוס מצוין בשדה polling_frequency בתגובה לרישום הסטרימינג.
בתמורה, מקבלים אובייקט JSON שמכיל את הפרמטרים הבאים:
tags |
קבוצה של צמדי מפתח/ערך שמתארים אירועים של מדיה בפרסומות שיתרחשו בסטרימינג. כל מפתח מורכב מ-17 התווים הראשונים של מזהה מדיה של מודעה שיופיע במטא-נתונים של ID3 של הסטרים, או, במקרה של אירועי progress, ממזהה המדיה המלא של המודעה. כל ערך הוא אובייקט עם המאפיינים הבאים:
|
ads |
קבוצה של צמדי מפתח/ערך שמתארים מודעות שיוצגו בתוך הסטרימינג. כל מפתח הוא מזהה מודעה. כל ערך הוא אובייקט עם המאפיינים הבאים:
|
ad_breaks |
קבוצה של צמדי מפתח/ערך שמתארים את ההפסקות לפרסומות שיוצגו בשידור. כל מפתח הוא מזהה של הפסקה למודעה. כל ערך הוא אובייקט עם המאפיינים הבאים:
|
אחרי כל סקר, שומרים את הערכים האלה כדי לשייך אירועי מטא-נתונים מתוזמנים בתוך זרם הווידאו.
בקשה לדוגמה (cURL)
curl https://dai.google.com/.../metadata/דוגמה לתשובה
{
"tags":{
"google_0492266569":{
"ad":"0000229836_ad1",
"ad_break_id":"0000229836",
"type":"firstquartile"
},
"google_1560331148":{
"ad":"0000229836_ad1",
"ad_break_id":"0000229836",
"type":"thirdquartile"
},
"google_1877686714378797835":{
"ad":"0000229836_slate",
"ad_break_id":"0000229836",
"type":"progress"
},
"google_1vRyQBYPw_7Gg3MrZ6S5EjmV9aLje-YpW8QHed1DSlU":{
"ad":"0000229835_ad1",
"ad_break_id":"0000229835",
"type":"progress"
},
"google_2032765498":{
"ad":"0000229835_ad1",
"ad_break_id":"0000229835",
"type":"midpoint"
},
...
"google_5646900623":{
"ad":"0000229837_ad1",
"ad_break_id":"0000229837",
"type":"complete"
}
},
"ads":{
"0000229834_ad1":{
"ad_break_id":"0000229834",
"position":1,
"duration":15.01,
"title":"truman-e2e-creativeset4",
"description":"truman-e2e-creativeset4 ad",
"ad_system":"GDFP",
"ad_id":"39066884",
"creative_id":"58092079124",
"clickthrough_url":"https://pubads.g.doubleclick.net/...",
"universal_ad_id":{
"id_value":"58092079124",
"id_registry":"GDFP"
}
},
"0000229834_slate":{
"ad_break_id":"0000229834",
"position":-1,
"duration":14.974977777,
"slate":true
},
...
},
"ad_breaks":{
"0000229834":{
"type":"mid",
"duration":15.01,
"expected_duration":29.984977776999997,
"ads":1
},
...
}
}
האזנה לאירועי ID3 ומעקב אחרי אירועי הפעלה
כדי לוודא שאירועים ספציפיים התרחשו בסטרימינג של סרטון, מבצעים את השלבים הבאים לטיפול באירועי ID3:
- אחסון אירועי המדיה בתור, ושמירת כל מזהה מדיה יחד עם חותמת הזמן שלו, אם הוא מוצג על ידי נגן המדיה.
- בכל עדכון זמן מהנגן או בתדירות מוגדרת (מומלץ 500 אלפיות השנייה), בודקים את תור אירועי המדיה כדי לראות אילו אירועים הושמעו לאחרונה על ידי השוואת חותמות הזמן של האירועים למיקום הנוכחי.
- לאירועי מדיה שאתם מאשרים שהם הופעלו, בודקים את הסוג על ידי חיפוש מזהה המדיה בתגי הפסקות הפרסום המאוחסנים. חשוב לזכור שאובייקט התגים של הפסקת הפרסום מכיל רק גרסה קטומה של מזהה המדיה, שמוגבלת ל-10 הספרות הראשונות אחרי הקידומת google_, ולכן אין התאמה ישירה בין מזהי אימות המדיה של ID3 לבין המפתחות באובייקט התגים. הסיבה לכך היא כדי למנוע שליחה של פינגים לאימות אירועים לפני שהאירוע ID3 מגיע. כדי ליצור את כתובת ה-URL המלאה לאימות מדיה של אירוע שקשור למודעה, מוסיפים את מזהה האירוע המלא שקשור למודעה לערך media_verification_url מהתגובה ליצירת הסטרימינג.
- משתמשים באירועי 'התקדמות' כדי לעקוב אחרי משתמשים שנמצאים בהפסקה למודעה. כדי להימנע מקוד שגיאת HTTP, אל תשלחו את האירועים האלה לנקודת הקצה של אימות המדיה. לסוגי אירועים אחרים, מוסיפים את מזהה המדיה לכתובת ה-URL של אימות המדיה ושולחים בקשת GET כדי לעקוב אחרי ההפעלה.
- מסירים את אירוע המדיה מהתור.
נקודת קצה ל-API
GET: MEDIA_VERIFICATION_URLAD_MEDIA_ID
Host: dai.google.com
פרמטרים של נתיב
MEDIA_VERIFICATION_URL |
הערך שמוחזר על ידי נקודת הקצה של רישום הזרם, בשדה media_verification_url:
MEDIA_VERIFICATION_URL
|
AD_MEDIA_ID |
המזהה המלא של מדיה המודעה, כפי שהוא מופיע במטא-נתונים של ID3 בסטרימינג:
AD_MEDIA_ID
|
ערכי החזרה צפויים
HTTP/1.1 204 No Content |
תגובה ריקה מוצלחת. |
HTTP/1.1 404 Not Found |
מזהה אימות המדיה לא זוהה. |
HTTP/1.1 409 Conflict |
מזהה אימות המדיה כבר נשלח. |
בקשה לדוגמה (cURL)
curl MEDIA_VERIFICATION_URLAD_MEDIA_IDדוגמה לתשובה
HTTP/1.1 204 No Content
מגבלות
אם משתמשים ב-API בתצוגות אינטרנט, ההגבלות הבאות חלות על טירגוט:
- UserAgent: פרמטר סוכן המשתמש מועבר כערך ספציפי לדפדפן במקום כפלטפורמה הבסיסית.
- rdid, idtype, is_lat: מזהה המכשיר לא מועבר בצורה תקינה, ולכן יש מגבלות על הפונקציונליות של התכונות הבאות:
- מכסת תדירות
- סבב מודעות ברצף
- פילוח קהל וטירגוט