יצירת תגובה

אחרי שהאפליקציה מעבדת את בקשת הצעת המחיר מ-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 של הקליק של הצד השלישי היא http://my.adserver.com/some/path/handleclick?click=clk, אז אפשר להשתמש בקוד הבא עם הגרסה של כתובת ה-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 של הקליק על המודעה, אחרי ביטול בריחה. משתמשים בערך הזה במקום ב-CLICK_URL_UNESC אם צריך להעביר קודם את הערך דרך שרת אחר, שיחזיר הפניה אוטומטית.

לדוגמה, אפשר להשתמש בקוד הבא בקטע 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>

הקליק יירשם ב-my.adserver.com, שיהיה אחראי להפניה לכתובת ה-URL שמועברת בפרמטר google_click_url. ההנחה היא ש-my.adserver.com מבטל את ה-escape של הפרמטר google_click_url.

אפשר להוסיף כתובת URL עם בריחה כפולה אחרי %%CLICK_URL_ESC%%. אחרי ש-my.adserver.com מבצע את ההסרה של תווי הבריחה, נשארת גרסה אחת של כתובת ה-URL עם תווי בריחה, שמצורפת ל-google_click_url. כשמתבצעת אחזור של google_click_url, הוא עובר ביטול בריחה פעם נוספת ואז מתבצעת הפניה אוטומטית.

CLICK_URL_ESC_ESC

כתובת ה-URL של המודעה, עם תווי escape כפולים. משתמשים בערך הזה במקום בערך CLICK_URL_UNESC אם צריך להעביר קודם את הערך דרך שרת אחר, שיחזיר הפניה אוטומטית.

לדוגמה, אפשר להשתמש בקוד הבא בקטע 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

הערכים השונים של הקריאייטיב בסביבת הייצור ובזמן הסריקה שלו בצנרת האימות. הפורמט הוא: %%?VERIFICATION:true-val:false-val%% כאשר אפשר להשתמש בכל ערך מלבד פקודות מאקרו עבור true-val ו-false-val, כולל מחרוזות ריקות. בבידינג פתוח, אנחנו ממליצים לבורסות להשתמש בפקודת המאקרו הזו. אחרי שהן עושות את זה, פלטפורמות בצד הביקוש לא צריכות לבצע שינויים.

לדוגמה, אם נכס קריאייטיב כולל את המחרוזת %%?VERIFICATION:-1:5000%%, הטקסט שיוחלף יהיה 5000 בהצגת המודעה ו--1 בצינור האימות. כך אפשר להבדיל בין שני סוגי הפינגים האלה.

WINNING_PRICE

העלות המקודדת של החשיפה (כלומר, עלות לחשיפה ולא עלות לאלף חשיפות) במיקרו של מטבע החשבון. לדוגמה, עלות מנצחת לאלף חשיפות של 5 דולר ארה"ב שווה ל-5,000,000 מיקרו דולר לאלף חשיפות, או ל-5,000 מיקרו דולר לעלות לאלף חשיפות. הערך המפוענח של WINNING_PRICE במקרה הזה יהיה 5,000. המחיר הזוכה מצוין ב-CPI.

כדי לנתח את פקודת המאקרו הזו, צריך להטמיע אפליקציה שמפענחת אישורי מחיר. מידע נוסף זמין במאמר פענוח אישורי מחירים.

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_type
  • BidRequest.imp.secure
    • בפועל, הערך הזה תמיד יהיה true כי Google דורשת תמיכה ב-SSL בכל הקריאייטיבים.
  • BidRequest.imp.{audio/banner/native/video}
  • BidRequest.imp.{audio/banner/native/video}.api
  • BidRequest.imp.{audio/banner/native/video}.battr
  • BidRequest.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.

דוגמאות לתגובות לבקשות להצעת מחיר

בקטעים הבאים מוצגות דוגמאות לתשובות להצעות מחיר לסוגים שונים של מודעות.

באנר לקידום אפליקציה

OpenRTB Protobuf

‫JSON של OpenRTB

מודעת מעברון באפליקציה

OpenRTB Protobuf

‫JSON של OpenRTB

סרטון במודעת מעברון באפליקציה

OpenRTB Protobuf

‫JSON של OpenRTB

אפליקציית נייטיב

OpenRTB Protobuf

‫JSON של OpenRTB

סרטונים באינטרנט

OpenRTB Protobuf

‫JSON של OpenRTB

מודעת באנר לנייד באתרים שמוצגות בהם מודעות של משתתפים בבידינג בבורסה

OpenRTB Protobuf

‫JSON של OpenRTB