בקטע הזה מתוארות הודעות Hint Request, הודעות Hint Response והודעות שאילתה שמבוססות על Google XML.
<Hint>
(הודעת רמז)
רכיב הבסיס של הודעת Hint Response. הודעות של Hint Response מציינות עבור אילו שילובים של מלון/תוכנית נסיעה צריך לתמחר מחדש. זו התגובה שלכם להודעה של Hint Request מ-Google.
הודעת Hint Response צריכה לציין רק את המלונות שהמחירים שלהם השתנו מאז הפעם האחרונה ש-Google קיבלה תגובה מוצלחת לרמז מהשרתים שלכם.
הודעות של Hint Response משתמשות באחת מהשיטות הבאות כדי לציין את המלונות ומסלולי הנסיעה ש-Google צריכה לשנות:
מסלולי נסיעה מדויקים: שילוב של תאריך הצ'ק-אין ומשך השהייה.
טווחי תאריכי צ'ק-אין: זהו טווח של תאריכי צ'ק-אין, שמתחיל בתאריך הצ'ק-אין הראשון ומסתיים בתאריך הצ'ק-אין האחרון.
שהיות מצולמות (או מסלולי נסיעה מאורגנים)
בכל אחת מהשיטות האלה נדרש תחביר שונה להודעה של Hint Response.
מידע נוסף זמין במאמר הודעות של Hint Response.
תחביר
הרכיב <Hint>
משתמש בתחביר שונה, בהתאם לסוג הודעת התגובה לרמז:
מסלולי נסיעה מדויקים
הדוגמה הבאה מציגה את התחביר למסלולי נסיעה מדויקים בהודעת Hint Response:
<!-- 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>
טווחי צ'ק אין
למטה מוצג התחביר של טווחי צ'ק-אין בהודעה של Hint Response:
<!-- 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:
<!-- 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> בתוכנית נסיעה מדויקת של Hint Response. כל <Item> יכול להכיל רק <Stay> אחד. |
<StaysIncludingRange> | Required | Object | מסלולי נסיעה שונים | קונטיינר לאלמנטים <FirstDate> ו-<LastDate> בהודעה של תגובת Hint Response בטווח. |
דוגמאות
מסלולי נסיעה מדויקים
הדוגמה הבאה מגדירה מסלולי נסיעה מרובים לנכס יחיד להודעת 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 ו-67,890:
<!-- 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>
רכיב הבסיס של הודעת Hint Request. Google שולחת לשרת שלכם הודעה של Hint Request, ומצפה לקבל תשובה שבה מפורטים המלונות ומסלולי הנסיעה שהמחירים שלהם השתנו מאז הפעם האחרונה ש-Google קיבלה תגובה מוצלחת לרמז מהשרת.
אם יהיו שינויים במחירים, Google תשלח לאחר מכן <Query>
עם נתוני המחירים המעודכנים של המלונות ומסלולי הנסיעה שצוינו.
מידע נוסף זמין במאמר הודעות על בקשה ל-Hint.
תחביר
הרכיב <HintRequest>
משתמש בתחביר הבא:
תחביר
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
מאפיינים
לרכיב <HintRequest>
אין מאפיינים.
אלמנטים צאצאים
הרכיב <HintRequest>
כולל את רכיבי הצאצא הבאים:
רכיב צאצא | סוג | תיאור |
---|---|---|
<LastFetchTime> | DateTime | הפעם האחרונה ש-Google הצליחה לקבל הודעת Hint Response אל הודעה של Hint Request.
אם פרק הזמן הזה חל לפני הפעם האחרונה שעדכנתם מחירים בשרת, צריך להשיב להודעה הזו באמצעות Hint Response שמציין אילו מלונות השתנו. אם לא בוצעה לאחרונה אחזור מוצלח, הערך הזה יוגדר לערך מרווח קבוע (כדי למנוע בעיות חמורות יותר עם עיכובים גדולים). הערך הנוכחי של המרווח הקבוע הוא 1,000 שניות, אבל כפוף לשינויים. מידע נוסף זמין במאמר הודעות Hint Response. |
דוגמאות
בדוגמה הבאה מוצגת הודעת Hint Request:
הודעת Hint Request
הדוגמה הבאה מציגה הודעת 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 לעדכוני תמחור ומטא-נתונים. אפשר להשתמש בהם גם במצבי משלוח – Pull וגם בתמחור עדכני.
יש שלושה סוגים של הודעות Query
:
תמחור בזמן אמת: Google מגיבה לבקשה ספציפית של משתמש ומבקשת עדכון של המחיר בזמן אמת. כשהשותפים מקבלים את ההודעה
Live pricing query
, השותפים צריכים להשיב עם הודעת<Transaction>
שכוללת את נתוני התמחור המבוקשים ברכיבי<Result>
.עם תמחור לפי הקשר: Google מעדכנת את המטמון של המחירים על סמך הקשרים פופולריים בעבר. כשאתם מקבלים את ההודעה
With context query
, עליכם להשיב להודעה<Transaction>
שמכילה את פרטי התמחור המבוקשים ברכיבי<Result>
.מטא-נתונים: Google מבקשת עדכונים של מטא-נתונים של חדרים ושל חבילות חדרים במלונות שצוינו. כשמקבלים את ההודעה
Metadata Query
, צריך לענות להודעה<Transaction>
שבה מפורטות הנתונים על החדרים ועל חבילות החדרים באלמנטים<PropertyDataSet>
.
למידע נוסף, ראו סקירה כללית על תמחור לשאילתות תמחור ומטא-נתונים של חבילת חדר לשאילתות של מטא-נתונים.
בהמשך מתואר התחביר של שלושת הסוגים השונים.
תחביר
הרכיב <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>