אחרי שהאפליקציה מעבדת את בקשת הצעת המחיר מ-Google, היא צריכה ליצור ולשלוח תגובה. במדריך הזה מוסבר איך לכתוב את הקוד של האפליקציה כדי ליצור את התגובה.
יצירת הודעה מסוג BidResponse
כדי לשלוח הצעת מחיר, אפליקציית הבידינג צריכה להגיב לבקשה להצעת מחיר עם BidResponse שמכיל Bid בפורמט שהגדרתם. אם משתמשים בפורמט JSON, התגובה צריכה להגדיר את הכותרת Content-Type לערך application/json; charset=utf-8 ולכלול את ה-JSON BidResponse בגוף התגובה. אם אתם משתמשים בפורמט Protobuf, האפליקציה צריכה להגדיר את הכותרת Content-Type לערך application/octet-stream ולכלול את ה-BidResponse שסודר בגוף.
כדי ליצור סריאליזציה של BidResponse בפורמט Protobuf, צריך ליצור ולהשתמש בספריות Protobuf שמבוססות על openrtb.proto ועל openrtb-adx.proto, שמטמיעות את השדות הרגילים של OpenRTB BidResponse ואת התוספים של Google ב-Protobuf, בהתאמה. אפשר למצוא אותם בפרוטוקולים ונתוני עזר.
אם אתם לא רוצים להגיש הצעת מחיר על חשיפה, אתם צריכים להחזיר תגובה ריקה מסוג HTTP 204. האפליקציה חייבת להחזיר תגובה לכל BidRequest. פסק זמן ותשובות שלא ניתן לנתח נחשבים לשגיאות, ו-Google מגבילה את מספר הבקשות של מגישי הצעות מחיר עם שיעורי שגיאה גבוהים.
מזהה הקריאייטיב
בBidResponse מצוין קריאייטיב באמצעות השדה BidResponse.seatbid.bid.crid (מגבלה של 128 בייט). גם אם מדובר בנכסי קריאייטיב דומים, צריך להזין ערכים ייחודיים בשדה הזה אם יש הבדלים משמעותיים בין נכסי הקריאייטיב, כולל, בין היתר: גודל, כתובת URL מוצהרת, מאפייני קריאייטיב וסוגי ספקים. במילים אחרות, אתם צריכים להקצות מזהים שונים של קריאייטיב לכל שתי מודעות:
- נראים או מתנהגים בצורה שונה.
- רינדור לתמונות שונות.
- הצגה באמצעים שונים (לדוגמה, מודעה אחת מורכבת מתמונה ומודעה אחרת היא סרטון).
כשמעצבים את האפליקציה, צריך להחליט על דרך שיטתית ליצירת מזהים שמתאימה לסוגי הקריאייטיבים שמתכננים לשלוח.
מאפייני מודעה
Google ממליצה להצהיר על מאפייני קריאייטיב כדי לתאר את המאפיינים של המודעה ואת הטירגוט שלה באמצעות שילוב של BidResponse.seatbid.bid.apis ו-BidResponse.seatbid.bid.attr, או באמצעות התוסף BidResponse.seatbid.bid.ext.attribute. בהמשך מוסבר איך אפשר להצהיר על מאפיינים:
VPAIDמגדירים אתBidResponse.seatbid.bid.apisלערךVPAID_1אוVPAID_2. בפורמט JSON, אפשר להגדיר את הערך הזה ל-1או ל-2, בהתאמה.MRAIDמגדירים אתBidResponse.seatbid.bid.apisל-MRAID_1או ל-3לפורמט JSON.SIZELESSמגדירים אתBidResponse.seatbid.bid.attrל-RESPONSIVEאו ל-18לפורמט JSON.PLAYABLEכדי לציין את זה, מגדירים אתBidResponse.seatbid.bid.attrלערךUSER_INTERACTIVEאו13בפורמט JSON.
במשאב בנושא קריאייטיב מוסבר איך לקבל משוב על המאפיינים שזוהו בקריאייטיב.
שדות Open Bidding
תגובות להצעות מחיר שנשלחות על ידי משתתפים בבידינג בבורסות ובמכירות פומביות פתוחות דומות לתגובות שנשלחות על ידי משתתפים בבידינג בזמן אמת רגיל ב-Authorized Buyers. לקוחות שמשתמשים בבידינג פתוח יכולים לציין מספר קטן של שדות נוספים, ולחלק מהשדות הקיימים יש שימושים חלופיים. למשל:
| שדה | פרטים |
|---|---|
BidResponse.imp.pmp.deals.id |
מזהה העסקה ממרחב השמות של הבורסה שמשויך להצעת המחיר הזו ומדווח לבעלי האתרים. |
BidResponse.seatbid.bid.ext.exchange_deal_type |
סוג העסקה שמדווח לבעלי האתרים, שמשפיע על האופן שבו העסקה מטופלת במכרז. |
BidResponse.seatbid.bid.ext.third_party_buyer_token |
אסימון שמשמש לזיהוי פרטי הקונה הסופי מצד שלישי אם הפלטפורמה היא מתווכת ב-Open Bidding. הערך הזה מתקבל מהקונה מצד שלישי, וחובה להעביר אותו ל-Google ללא שינוי בתגובה להצעת המחיר. |
המלצות
- מפעילים בשרתים חיבורי HTTPS מתמשכים (שנקראים גם keep-alive או שימוש חוזר בחיבור). מגדירים את הזמן הקצוב לתפוגה ל-10 שניות לפחות. במקרים רבים, ערכים גבוהים יותר מועילים. Google מאמתת את זה במהלך בדיקות ההשהיה הראשוניות של האפליקציה, כי Authorized Buyers שולח בקשות בקצב גבוה וצריך להימנע מהשהיה שנובעת מהקמת חיבור TCP נפרד לכל בקשה.
כדי לעקוב אחרי מועד העיבוד של החשיפה ולא אחרי מועד הזכייה של הצעת המחיר, צריך לכלול את כתובת ה-URL האופציונלית למעקב אחרי חשיפות. בגלל הירידה במספרים בין הזכיות לבין ההצגות, הנתונים הסטטיסטיים של המעקב מדויקים יותר.
- חשוב לוודא שקוד הבידינג לא תלוי בשדות שהוצאו משימוש, כי זה עלול לגרום לכך שהצעות המחיר ייכשלו עם שגיאות.
- כוללים את
BidResponse.seatbid.bid.wואתBidResponse.seatbid.bid.hב-BidResponse. תגובהBidResponseלבקשה שכוללת כמה גדלים של מודעות צריכה לכלול את השדות האלה, אחרת היא תיפסל במכרז. - הגודל של התשובה צריך להיות פחות מ-8K. תשובות גדולות מאוד עלולות להגדיל את זמן האחזור ברשת ולגרום לפסק זמן.
- פועלים לפי ההנחיות בנושא הצעות מחיר למלאי שטחי פרסום ב-iOS שנדרש להם שיוך ב-SKAdNetwork.
דוגמה לתגובה לבקשה להצעת מחיר
בדוגמאות הבאות מוצגות דוגמאות קריאות של בקשות Protobuf ו-JSON.
OpenRTB Protobuf
JSON של OpenRTB
חשוב: הודעות ה-Protobuf שמוצגות בדוגמאות מיוצגות כאן כטקסט שניתן לקריאה על ידי בני אדם. אבל זה לא האופן שבו ההודעות נשלחות. כשמשתמשים בפורמט OpenRTB Protobuf, המערכת תקבל רק הודעות BidResponse שעברו סריאליזציה.
אפשר ליצור ולסדר הודעת BidResponse באמצעות קוד C++ הבא:
BidResponse bid_response;
// fill in bid response with bid information
string post_response;
if (bid_response.SerializeToString(&post_response)) {
// respond to the POST with post_response as the content
} else {
// return an error to the POST
}ציון קריאייטיב
תגובת הבידינג מציינת את הקריאייטיב שיוצג אם הבידינג יזכה. הצעת המחיר שלכם צריכה לכלול אחד מהפורמטים הנתמכים של מודעות (AMP, וידאו, מותאמות). בדוגמה הזו, אנחנו מציינים את הקריאייטיב באמצעות השדה html_snippet.
אפשרות אחרת היא לציין את הקריאייטיב באמצעות אחד מהשדות הבאים, בהתאם לפורמט המודעה:
- מודעה שמוצגת באמצעות SDK
BidResponse.seatbid.bid.ext.sdk_rendered_ad
- AMP
BidResponse.seatbid.bid.amp_ad_url
- סרטון
BidResponse.seatbid.bid.adm
- מודעות מותאמות
BidResponse.seatbid.bid.adm_native
מציינים מודעה שמארחים בשרתים שלכם באמצעות קטע קוד HTML בשדה BidResponse.seatbid.bid.adm. הקוד של התקציר מוכנס למסגרת iframe שמוטמעת בדף האינטרנט, וכתוצאה מכך המודעה מאוחזרת ומוצגת כשהדף נטען. צריך ליצור את קטע ה-HTML כך שהמודעה (באנר או מעברון) תוצג בצורה תקינה בתוך iFrame, ובגודל מתאים למיקום המודעה שמוגשת עליו הצעת מחיר.
בנוסף, גודל המודעה שמוצהר בתגובה לבקשה להצעת מחיר חייב להתאים בדיוק לאחד משילובי הגדלים בבקשה להצעת מחיר במקרים הבאים:
- מודעה רגילה מסוג באנר (לא מודעת וידאו, לא מודעה מותאמת ולא מודעת מעברון).
- מגיש הצעת המחיר הצהיר על הגודל בתגובה להצעת המחיר. חובה להצהיר על גודל אם בבקשה מופיעים כמה גדלים.
- יש חריג למודעות מעברון. במודעות מעברון, הרוחב צריך להיות לפחות 50% מרוחב המסך והגובה לפחות 40% מגובה המסך.
אפשר לציין קריאייטיב של קטע קוד HTML באמצעות כל קוד HTML תקין שעובר עיבוד בצורה תקינה, אבל חשוב לזכור את ההגבלות על ציון השדה crid בקטע יצירת הודעת BidResponse.
אפשר להשתמש בזה כדי להוסיף מידע לארגומנטים של כתובות ה-URL שמאוחזרות מהשרתים שלכם כחלק מהעיבוד של המודעה. כך אפשר להעביר נתונים שרירותיים על החשיפה בחזרה לשרתים שלכם.
רוב כללי המדיניות לגבי קטעי HTML שמוחזרים בתגובות להצעות מחיר זהים לאלה שחלים על מודעות של צד שלישי. מידע נוסף זמין במאמרים הנחיות לתוכנית Authorized Buyers, דרישות להצגת מודעות של צד שלישי והצהרה על כתובות URL למעקב המרות במודעות.
ציון פקודות מאקרו
פקודות מאקרו הן טקסט מעוצב שמוטמע בחלק מהשדות של תגובות להצעות מחיר, ומכיל כתובות URL שמוחלפות בערך רלוונטי בזמן הצגת המודעה. לדוגמה, אם הצעת המחיר הזוכה שלכם כללה את פקודת המאקרו AUCTION_PRICE בקטע ה-HTML של הקריאייטיב שצורף להצעת המחיר, פקודת המאקרו תוחלף בערך שתוכלו לפענח כדי לדעת כמה שילמתם על החשיפה במכרז.
אפשר לכלול פקודות מאקרו בשדות הבאים:
-
BidResponse.seatbid.bid.admיש תמיכה בפקודות מאקרו בקטעי HTML, בפורמטים מקוריים, בכתובות URL של סרטונים ובפורמטים של XML של סרטוני VAST.
-
BidResponse.seatbid.bid.adm_native.eventtrackers.url -
BidResponse.seatbid.bid.adm_native.imptrackers -
BidResponse.seatbid.bid.ext.amp_ad_urlרק פקודות המאקרו
WINNING_PRICEו-WINNING_PRICE_ESCהספציפיות ל-Google נתמכות בנכסי קריאייטיב ב-AMP. -
BidResponse.seatbid.bid.burl -
BidResponse.seatbid.bid.ext.impression_tracking_urlמשתמשים בשיטה הזו במקום בשיטה
BidResponse.seatbid.bid.burlאם נדרשת יותר מכתובת URL אחת לחיוב.
לדוגמה, אפשר לכלול פקודת מאקרו כחלק מקטע HTML על ידי הטמעה של ${MACRO} בכתובת ה-URL שמשמשת לאחזור הקריאייטיב, כאשר MACRO היא אחת מפקודות המאקרו הנתמכות שמתוארות במפרט OpenRTB.
פקודות מאקרו של Google
Google תומכת בפקודות מאקרו נוספות מעבר לאלה שמופיעות במפרט OpenRTB. הפורמט שלהן שונה, והן יופיעו כ-%%MACRO%% אם הן מוטמעות בכתובת URL. בטבלה הבאה מתוארות פקודות המאקרו האלה:
| מאקרו | תיאור |
|---|---|
ADVERTISING_IDENTIFIER |
מאפשר לקונים לקבל את מזהה ה-IDFA ב-iOS או את מזהה הפרסום ב-Android בזמן העיבוד של החשיפה. פרטים נוספים מופיעים במאמר בנושא פענוח מזהים של מפרסמים. |
CACHEBUSTER |
ייצוג מחרוזת של מספר שלם אקראי, לא חתום, באורך ארבעה בייטים. |
CLICK_URL_UNESC |
כתובת ה-URL של הקליק על המודעה, ללא תו בריחה (escape). בקטע הקוד, גרסה עם תווי escape של כתובת ה-URL של הקליק של הצד השלישי צריכה להופיע מיד אחרי פקודת המאקרו. לדוגמה, אם כתובת ה-URL של הקליק של הצד השלישי היא
<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> בזמן הצגת המודעה, ההגדרה הזו מורחבת ל: <a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> קודם המערכת תרשום את הקליק ב-Google, ואז תפנה לכתובת ה-URL של הקליק של הצד השלישי. |
CLICK_URL_ESC |
כתובת ה-URL של הקליק על המודעה, אחרי ביטול בריחה. משתמשים בערך הזה במקום ב- לדוגמה, אפשר להשתמש בקוד הבא בקטע HTML: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a> בזמן הצגת המודעה, ההגדרה הזו מורחבת ל: <a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a> הקליק יירשם ב- אפשר להוסיף כתובת URL עם בריחה כפולה אחרי
|
CLICK_URL_ESC_ESC |
כתובת ה-URL של המודעה, עם תווי escape כפולים. משתמשים בערך הזה במקום בערך לדוגמה, אפשר להשתמש בקוד הבא בקטע HTML: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a> בזמן הצגת המודעה, ההגדרה הזו מורחבת ל: <a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a> |
SCHEME |
הערך הוא http: אם בקשת הצעת המחיר לא דורשת SSL, או https: אם בקשת הצעת המחיר דורשת SSL. |
SITE |
הדומיין עם תווי escape של כתובת ה-URL של התוכן או המזהה האנונימי של מלאי שטחי פרסום אנונימי. |
SITE_URL |
הוצא משימוש. הוחלף בפקודת מאקרו SITE שמספקת פונקציונליות זהה. |
TZ_OFFSET |
ההסטה מאזור הזמן. |
VERIFICATION |
הערכים השונים של הקריאייטיב בסביבת הייצור ובזמן הסריקה שלו בצנרת האימות. הפורמט הוא:
לדוגמה, אם נכס קריאייטיב כולל את המחרוזת
|
WINNING_PRICE |
העלות המקודדת של החשיפה (כלומר, עלות לחשיפה ולא עלות לאלף חשיפות) במיקרו של מטבע החשבון. לדוגמה, עלות מנצחת לאלף חשיפות של 5 דולר ארה"ב
שווה ל-5,000,000 מיקרו דולר לאלף חשיפות, או ל-5,000 מיקרו דולר לעלות לאלף חשיפות. הערך המפוענח של כדי לנתח את פקודת המאקרו הזו, צריך להטמיע אפליקציה שמפענחת אישורי מחיר. מידע נוסף זמין במאמר פענוח אישורי מחירים. |
WINNING_PRICE_ESC |
הערך WINNING_PRICE עם escape של כתובת ה-URL. |
Google דורשת להשתמש בפקודת המאקרו CLICK_URL_UNESC או CLICK_URL_ESC בנכס הקריאייטיב של המודעה שמוצגת על ידי צד שלישי. Google משתמשת בפקודות מאקרו CLICK_URL למעקב אחרי קליקים.
הסכימה הבאה משמשת להסרת תווים מיוחדים מכתובות URL בפקודות מאקרו:
- תו הרווח מוחלף בסימן פלוס (
+). - תווים אלפאנומריים (0-9, a-z, A-Z) ותווים מהקבוצה !()*,-./:_~ נשארים ללא שינוי.
- כל שאר התווים מוחלפים ב-
%XX, כאשר%XXהוא המספר ההקסדצימלי שמייצג את התו.XX
הגבלות ודרישות לבעלי תוכן דיגיטלי
בקשת הצעת המחיר כוללת מידע על סוגי ההגבלות והדרישות שבעלי האתרים מטילים על נכסי קריאייטיב במכרז.
BidRequest.bcat- אתם יכולים להשוות בין הקטגוריות החסומות שצוינו בשדה הזה לבין הקטגוריות שזוהו בנכסי הקריאייטיב ששלחתם באמצעות שדה
detectedCategoriesשל Real-time Bidding API.
- אתם יכולים להשוות בין הקטגוריות החסומות שצוינו בשדה הזה לבין הקטגוריות שזוהו בנכסי הקריאייטיב ששלחתם באמצעות שדה
BidRequest.imp.ext.allowed_vendor_typeBidRequest.imp.secure- בפועל, הערך הזה תמיד יהיה
trueכי Google דורשת תמיכה ב-SSL בכל הקריאייטיבים.
- בפועל, הערך הזה תמיד יהיה
BidRequest.imp.{audio/banner/native/video}BidRequest.imp.{audio/banner/native/video}.apiBidRequest.imp.{audio/banner/native/video}.battrBidRequest.imp.{audio/banner/video}.mimes
אל תגישו הצעות מחיר על מודעות שמכילות תכונה מוגבלת. לגבי תכונות מותרות, כמו סוג הספק, מחזירים מודעה רק אם סוג הספק שלה מופיע ברשימה allowed_vendor_type ב-BidRequest. הצעת המחיר שלכם צריכה לכלול רק פורמטים של מודעות שצוינו בבקשת הצעת המחיר על ידי מילוי שדות כמו BidRequest.imp.banner. פרטים נוספים על השדות האלה מופיעים בהערות בהגדרה של BidRequest protocol buffer.
אם מודעה מוחזרת ב-BidResponse, צריך להגדיר בצורה מדויקת את השדות BidResponse.seatbid.bid.attr, BidResponse.seatbid.bid.cat ואת השדה BidResponse.seatbid.bid.adomain או BidResponse.seatbid.bid.adm_native.link.url ב-BidResponse. אם למודעה יש כמה ערכים רלוונטיים בשדות האלה, צריך לכלול את כל הערכים. פרטים נוספים על השדות האלה מופיעים בהערות בBidResponseהגדרת מאגר הפרוטוקולים.
תשובות שלא מוגדרים בהן השדות האלה נפסלות.
מדידה פתוחה
התכונה 'מדידה פתוחה' מאפשרת לכם לציין ספקים של צד שלישי שמספקים שירותי מדידה ואימות עצמאיים למודעות שמוצגות בסביבות של אפליקציות לנייד.
הפורמטים הנתמכים של מודעות כוללים מודעות וידאו, מודעות באנר ומודעות מעברון. מידע נוסף על השימוש ב-Open Measurement בתגובה להצעת מחיר שמכילה את הפורמטים האלה זמין במאמר במרכז העזרה בנושא Open Measurement SDK.
דוגמאות לתגובות לבקשות להצעת מחיר
בקטעים הבאים מוצגות דוגמאות לתשובות להצעות מחיר לסוגים שונים של מודעות.