בקטע הזה יש הפניה אל מודל XML של Google Hint Request messages, הודעות רמז לתגובה, והודעות שאילתות.
<Hint>
(הודעת רמז לתשובה)
רכיב הבסיס של הודעת Hint Response. הודעות רמזור לציין אילו שילובים של מלונות/פעילויות צריך לתמחר מחדש. אלה הם תגובה להודעה לבקשת רמז מ-Google.
הודעת Hint Response צריכה לציין רק את המלונות שהמחירים שלהם השתנה מאז הפעם האחרונה ש-Google קיבלה תגובת Hint Response מוצלחת מאת השרתים שלך.
בהודעות תגובה לרמז נעשה שימוש באחת מהשיטות הבאות כדי לציין מלונות ותוכניות נסיעה ש-Google צריכה לתמחר מחדש:
מסלולי נסיעה מדויקים: שילוב של תאריך צ'ק-אין משך השהייה.
טווחי תאריכים של צ'ק-אין: מציין טווח של צ'ק-אין תאריכים, החל בתאריך הצ'ק אין הראשון ומסתיים ביום האחרון תאריך הצ'ק אין.
שהיות בטווח מסוים (או מסלולי נסיעה בטווח טווח)
כל אחת מהשיטות האלו דורשת תחביר שונה לתגובת הרמז. הודעה.
מידע נוסף זמין במאמר בנושא הודעות Hint Response.
תחביר
לרכיב <Hint>
יש תחביר שונה, בהתאם לסוג הרמז
הודעת תשובה:
מסלולי נסיעה מדויקים
התחביר הבא מציג את מסלולי הנסיעה המדויקים בתגובת רמז message:
<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>hotel_ID</Property>
...
<Stay>
<CheckInDate>checkin_date</CheckInDate>
<LengthOfStay>number_of_nights</LengthOfStay>
</Stay>
</Item>
...
</Hint>
טווחי צ'ק-אין
התחביר הבא מציג את התחביר לטווחי הצ'ק-אין בתשובה ברמז message:
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<!-- Can be > 1 if MultipleItineraries is "checkin_range" in your
QueryControl message -->
<Property>hotel_ID</Property>
[...]
<!-- Required -->
<FirstDate>first_checkin_date</FirstDate>
<!-- Required -->
<LastDate>last_checkin_date</LastDate>
</Item>
...
</Hint>
שהיות לטווח ארוך
התחביר הבא מציג את התחביר של השהיות בטווח מסוים ב- Hint Response message:
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<!-- Can be > 1 if MultipleItineraries is "affected_dates" in your
QueryControl message -->
<Property>hotel_ID</Property>
[...]
<StaysIncludingRange>
<!-- Required -->
<FirstDate>first_date</FirstDate>
<!-- Optional -->
<LastDate>last_date</LastDate>
</StaysIncludingRange>
</Item>
...
</Hint>
מאפיינים
הרכיב <Hint>
מכיל מאפיין אופציונלי: id
. מתי
צוין, הוא כלול בתור המאפיין hintId
ב-<Query>
הודעות שנשלחו על סמך ה<Hint>
הזה.
רכיבי צאצא
הרכיב <Hint>
כולל את רכיבי הצאצא הבאים:
רכיב צאצא | חובה? | סוג | סוג התגובה לרמז | תיאור |
---|---|---|---|---|
<CheckInDate> | Required | Date | מסלולי נסיעה מדויקים | תאריך הצ'ק אין של מסלול הנסיעה. |
<FirstDate> | Required | Date | טווחי צ'ק-אין ומסלולי נסיעה | התאריך הראשון של טווח התאריכים של טווח הצ'ק-אין או של טווח התאריכים נשארים עם הודעת Hint Response. התאריכים כוללים את הזמן. |
<Item> | Required | Object | הכול | מאגר לעדכון המלון/כרטיס הנסיעה. |
<LastDate> | Required* | Date | טווחי צ'ק-אין ומסלולי נסיעה | התאריך האחרון של טווח התאריכים של טווח התאריכים לצ'ק אין או של טווח נשארים עם הודעת Hint Response. התאריכים כוללים את הזמן. * הרכיב הזה הוא אופציונלי לשהיות בטווח זמן. |
<LengthOfStay> | Required | integer | מועדי נסיעה מדויקים | מספר הלילות במסלול הנסיעה, מבוטא כחיובי מספר שלם. |
<Property> | Required | string | הכול | המזהה של מלון, עם אותו מזהה כמו ברשימת המלונות. המספר
של
|
<Stay> | Required | Object | מסלולי נסיעה מדויקים | קונטיינר של <CheckinDate> ו
<LengthOfStay> רכיבים במסלול נסיעה מדויק
הודעת תשובה. כל <Item> יכול להכיל רק ערך אחד
<Stay> |
<StaysIncludingRange> | Required | Object | מסלולי נסיעה | קונטיינר של <FirstDate> ו
<LastDate> רכיבים ברמז לשהייה בטווח
הודעה. |
דוגמאות
מסלולי נסיעה מדויקים
בדוגמה הבאה מוגדרים כמה מסלולי נסיעה לנכס יחיד הודעת Hint Response:
<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>12345</Property>
<Stay>
<CheckInDate>2018-07-03</CheckInDate>
<LengthOfStay>3</LengthOfStay>
</Stay>
</Item>
<Item>
<Property>12345</Property>
<Stay>
<CheckInDate>2018-07-03</CheckInDate>
<LengthOfStay>4</LengthOfStay>
</Stay>
</Item>
</Hint>
טווחי צ'ק-אין
בדוגמה הבאה מופיעים שני מלונות שהתמחור שלהם השתנה צריך לאחזר שוב. Google מקבלת את כל מסלולי הנסיעה בין 3 ביולי ליולי 6 לנכסים 12345 ו-67890:
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>12345</Property>
<Property>67890</Property>
<FirstDate>2018-07-03</FirstDate>
<LastDate>2018-07-06</LastDate>
</Item>
</Hint>
חשוב לזכור שבהודעה של טווח הצ'ק-אין אפשר לציין כמה
הנכסים ב-<Item>
יחיד, הערך של
יש להגדיר את הערך <MultipleItineraries>
ב-<QueryControl>
לערך
"checkin_range"
.
שהיות לטווח ארוך
בדוגמה הבאה מוצגים שני שימושים שונים לשהיות בטווח מסוים, אחד עבור טווח לילות אחד והשני ללילה אחד:
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<!-- Google fetches prices for all itineraries (first and last date are set) -->
<Item>
<Property>12345</Property>
<StaysIncludingRange>
<FirstDate>2018-07-03</FirstDate>
<LastDate>2018-07-06</LastDate>
</StaysIncludingRange>
</Item>
<!-- Google fetches prices for a single night (first date only) -->
<Item>
<Property>67890</Property>
<StaysIncludingRange>
<FirstDate>2018-07-03</FirstDate>
</StaysIncludingRange>
</Item>
</Hint>
חשוב לזכור שבמקרה של הודעה לשהייה בטווח מסוים, אפשר לציין כמה
הנכסים ב-<Item>
יחיד, הערך של
יש להגדיר את הערך <MultipleItineraries>
ב-<QueryControl>
לערך
"affected_dates"
.
לכל אחת מהדוגמאות האלה, Google מחזירה <Query>
, וצריך להשתמש
ואז להשיב <Transaction>
שכולל עדכוני מחירים עבור
מלונות/תוכניות נסיעה שצוינו.
<HintRequest>
רכיב הבסיס של הודעת בקשה לרמז. Google שולחת בקשת רמז לשרת שלכם ומצפה לתגובה שמציינת את המלונות מסלולי נסיעה שהמחירים שלהם השתנו מאז הפעם האחרונה ש-Google קיבלה תגובה מוצלחת לרמז מהשרת שלך.
אם יהיו שינויים במחיר, Google תשלח <Query>
מאחזרת את נתוני התמחור המעודכנים של המלונות ומסלולי הנסיעה שצוינו.
למידע נוסף, אפשר לעיין ב-Hint Request Messages.
תחביר
הרכיב <HintRequest>
משתמש בתחביר הבא:
תחביר
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
מאפיינים
לרכיב <HintRequest>
אין מאפיינים.
רכיבי צאצא
הרכיב <HintRequest>
כולל את רכיבי הצאצא הבאים:
רכיב צאצא | סוג | תיאור |
---|---|---|
<LastFetchTime> | DateTime | הפעם האחרונה שבה Google הצליחה לקבל הודעת Hint Response.
להודעת Hint Request.
אם השעה מוקדמת יותר מהפעם האחרונה מעדכנים את המחירים בשרת שלכם, ולכן עליכם להגיב עם רמז. הודעת תשובה שמציינת אילו מלונות השתנו. אם לא הייתה שליפה מוצלחת לאחרונה, הערך יוגדר בטווח זמן קבוע (כדי להימנע מבעיות חמורות יותר במקרה של עיכובים). הערך הנוכחי של המרווח הקבוע הוא 1,000 שניות, אבל הוא עשוי להשתנות. לקבלת מידע נוסף, לעיין ב-Hint Response Messages. |
דוגמאות
בדוגמה הבאה מוצגת הודעת בקשה לרמז:
הודעת בקשה לרמז
הדוגמה הבאה מציגה הודעת Hint Request:
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest id="ABCDEF" timestamp="2018-06-07T16:20:00Z">
<LastFetchTime>2018-03-25T00:04:09Z</LastFetchTime>
</HintRequest>
<Query>
הרכיב הבסיסי של הודעת Query
. Query
הודעות הן בקשות
מ-Google כדי לעדכן את התמחור או את המטא-נתונים. משתמשים בהם עם לחצן המשיכה
ואפשרויות משלוח שונות במחיר.
יש שלושה סוגים של הודעות מסוג Query
:
תמחור בזמן אמת: Google מגיבה לבקשה ספציפית של משתמש ומבקשת עדכון מחיר בזמן אמת. כששותפים מקבלים
Live pricing query
השותפים צריכים לשלוח הודעה ב-<Transaction>
מכיל את פרטי התמחור המבוקשים ברכיבי<Result>
.עם תמחור לפי הקשר: Google מעדכנת את מטמון המחירים שלה לפי הקשרים שפופולריים מבחינה היסטורית. כשמקבלים
With context query
עליך להשיב עם הודעה ב-<Transaction>
שמכילה את בקשה לפרטי תמחור ברכיבים של<Result>
.מטא-נתונים: Google מבקשת עדכונים במטא-נתונים של החדרים וחבילות החדרים למלונות שצוינו. כשמקבלים הודעת
Metadata Query
, התשובה צריכה לכלול הודעת<Transaction>
שמציינת נתונים על חדרים וחבילות חדרים ברכיבי<PropertyDataSet>
.
מידע נוסף זמין במאמר סקירה כללית בנושא תמחור לשאילתות תמחור ולמטא-נתונים של חבילת Room לשאילתות של מטא-נתונים.
התחביר של שלושת הסוגים השונים מתואר בהמשך.
תחביר
הרכיב <Query>
משתמש בתחביר הבא:
תמחור בזמן אמת
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
<FirstDate>YYYY-MM-DD</FirstDate>
<LastDate>YYYY-MM-DD</LastDate>
<!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
<AffectedNights>number_of_nights</AffectedNights>
<PropertyList>
<Property>hotel_id</Property>
...
</PropertyList>
<!-- See documentation below for <Context> -->
<Context>
...
</Context>
</Query>
עם הקשר
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
<FirstDate>YYYY-MM-DD</FirstDate>
<LastDate>YYYY-MM-DD</LastDate>
<!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
<AffectedNights>number_of_nights</AffectedNights>
<PropertyContextList>
<PropertyContext>
<Property>hotel_id</Property>
...
<!-- See documentation below for <Context> -->
<Context>
...
</Context>
</PropertyContext>
</PropertyContextList>
</Query>
מטא-נתונים
<HotelInfoProperties>
<Property>property_ID</Property>
...
</HotelInfoProperties>
מאפיינים
הרכיב <Query>
יכול להכיל מאפיין אחד: latencySensitive
.
המאפיין latencySensitive
הוא אופציונלי. אם היא סופקה ומוגדרת ל-
true
, מציין שהשאילתה היא Live Pricing Query
. כדי ש-Google תשלח
שאילתות עם המאפיין latencySensitive
, צריך לשאול את החשבון הטכני
מנהל (TAM).
רכיבי צאצא
הרכיב <Query>
כולל את רכיבי הצאצא הבאים:
רכיב צאצא | סוג השאילתה | סוג | תיאור |
---|---|---|---|
<AffectedNights> | Pricing | integer | מספר לילות לשהייה בטווח מסוים. הרכיב הזה נמצא בשימוש רק לשאילתות תמחור של שהייה לטווח ארוך שנעשה בהן שימוש במחיר שינוי. |
<Checkin> | Pricing | Date | התאריכים שבהם בוצעו שינויים במחיר ספציפי. |
<Context> | Pricing (Live Pricing Queries only) | <Context> | עבור שאילתות תמחור בזמן אמת, מציין פרמטרים מסוימים שבהם
נשלחת השאילתה. רכיבי צאצא כוללים:
הרכיב |
<FirstDate> | Pricing | Date | תאריך ההתחלה של טווח מסלולי הנסיעה שבהם המחיר חל. הרכיב הזה משמש רק לתמחור של טווח תאריכי צ'ק-אין שאילתות שכוללות שינוי במחיר. |
<HotelInfoProperties> | Metadata | string | נכס אחד או יותר שבהם Google רוצה לעדכן
המטא-נתונים של חדר וחבילת חדרים בהודעה של המטא-נתונים Query . הרכיב הזה
יכול להכיל רכיב <Property> אחד או יותר
לציין מזהים של נכסי מלונות. |
<LastDate> | Pricing | Date | תאריך הסיום של מגוון מסלולי הנסיעה שבהם המחיר חל. הרכיב הזה משמש רק לתמחור של טווח תאריכי צ'ק-אין בשאילתות של Pull + Hints. |
<Nights> | Pricing | integer | מספר הלילות בתוכנית נסיעה ספציפית, עד 30. |
<PropertyList> | Pricing | Object | אחד או יותר מהמזהים של המלון שצריך לעדכן את המחירים שלו. מגדירים כל מלון ברכיב <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> |
דוגמאות
שאילתת תמחור
בדוגמה הבאה מוצגת הודעת שאילתת תמחור שמבקשת מחיר עדכונים לקבוצת מלונות, שזמינים ל-3 לילות, והחל מ-10 ביוני 2018:
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>3</Nights>
<PropertyList>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</PropertyList>
</Query>
שאילתת תמחור בזמן אמת
בדוגמה הבאה מוצגת שאילתת תמחור בזמן אמת עם זמן תגובה מוגבל ל-500 אלפיות השנייה:
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>5</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>8675309</Property>
</PropertyList>
<Context>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="8"/>
<Child age="5"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
עם שאילתת הקשר
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>2</Nights>
<PropertyContextList>
<PropertyContext>
<Property>8675309</Property>
<!-- In the future, occupancy and device might be specified -->
<Context><UserCountry>US</UserCountry></Context>
<Context><UserCountry>GB</UserCountry></Context>
</PropertyContext>
<PropertyContext>
<Property>8675310</Property>
<Property>8675311</Property>
<Context><UserCountry>CA</UserCountry></Context>
</PropertyContext>
</PropertyContextList>
</Query>
שאילתת מטא-נתונים
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<HotelInfoProperties>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</HotelInfoProperties>
</Query>
דוגמאות נוספות, כולל שהייה בטווח תאריכים וטווח תאריכים של צ'ק-אין
שאילתות תמחור, בדקו את Query
דוגמאות להודעות.
<Context>
הרכיב <Context>
מתאר מידע עבור Live pricing query
,
כולל מספר האורחים והסוג שלהם, המדינה של המשתמש ומכשיר המשתמש.
כמה סוגים של <Context>
אף פעם לא ישמשו עם מדינות שונות של משתמשים, או
במכשירי המשתמש. כשכמה <Context>
משמשים לשאילתה על כמה
מספר אורחים. יש לציין מחיר לכל תפוסה כחבילת חדר נוספת
של הנכס או תוכנית הנסיעה המתאימים. לכל נכס/מסלול צריך להיות
גוש <Result>
יחיד עם המחירים לכמה יחידות
כולל תפוסה.
לפרטי התגובה לשאילתה <Context>
: <OccupancyDetails>
.
תחביר
הרכיב <Context>
משתמש בתחביר הבא:
תחביר
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<Checkin>date</Checkin>
<Nights>number_of_nights</Nights>
<DeadlineMs>number_of_milliseconds</DeadlineMs>
<PropertyList>
<Property>property_ID</Property>
</PropertyList>
<Context>
<Occupancy>total_number_of_guests</Occupancy>
<OccupancyDetails>
<NumAdults>number_of_adults</NumAdults>
<Children>
<Child age=age_of_one_child_guest/>
<Child age=age_of_one_child_guest/>
</Children>
</OccupancyDetails>
<UserCountry>end_user_country</UserCountry>
<UserDevice>user_device_type</UserDevice>
</Context>
</Query>
רכיבי צאצא
הרכיב <Context>
כולל את רכיבי הצאצא הבאים:
רכיב צאצא | סוג השאילתה | סוג | תיאור |
---|---|---|---|
<Occupancy> | Pricing | integer | מציין את מספר האורחים הכולל. אמנם לא חובה, אבל שאילתות עם הערה: יכול להיות שה |
<OccupancyDetails> | Pricing | Object | לפני <Occupancy> . ההגדרה קובעת את רשימת המשתתפים לפי סוג.
כולל:
לא חובה, אבל שאילתות עם הערה: בחלק מהמקרים |
<UserCountry> | Pricing | string | סינון התעריפים לפי המדינה שבה המשתמש נמצא. הערך הוא
קוד מדינה בן 2 אותיות, כמו שאילתות עם הגדרת |
<UserDevice> | Pricing | string | מסנן התעריפים לפי סוג המכשיר שממנו המשתמש מבצע את החיפוש. ערכים אפשריים:
שאילתות עם הגדרה של |
דוגמאות
תפוסה
בדוגמה הבאה מוצגת שאילתה לתמחור בזמן אמת לגבי <Occupancy>
בתוך <Context>
. שאילתת התמחור בזמן אמת מיועדת ל-3 מבוגרים
אורחים.
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>4</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>45617</Property>
</PropertyList>
<Context>
<Occupancy>3</Occupancy>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
פרטי האורחים
בדוגמה הבאה מוצגת שאילתה של תמחור בזמן אמת עם
<OccupancyDetails>
בתוך <Context>
.
השאילתה בנושא התמחור בזמן אמת מיועדת ל-4 אורחים, 2 מהם
הם ילדים, ומעוניינים בתעריף שחל על הזמנה של אורח בארה"ב
מכשיר נייד:
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>5</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>8675309</Property>
</PropertyList>
<Context>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="4"/>
<Child age="12"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
הקשרים מרובים
בדוגמה הבאה אפשר לראות את השימוש ברכיב <Context>
נוסף
בשאילתה של תמחור בזמן אמת.
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>4</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>45617</Property>
</PropertyList>
<Context>
<Occupancy>3</Occupancy>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
<Context>
<Occupancy>6</Occupancy>
<OccupancyDetails>
<NumAdults>4</NumAdults>
<Children>
<Child age="6"/>
<Child age="10"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>