این بخش مرجعی برای پیامهای درخواست راهنمایی مبتنی بر XML، پیامهای پاسخ راهنمایی و پیامهای درخواست ارائه میکند.
<Hint>
(پیام پاسخ راهنمایی)
عنصر ریشه پیام Hint Response. پیامهای پاسخ راهنمایی مشخص میکنند که کدام هتل یا برنامه سفر باید دوباره قیمتگذاری شود. آنها پاسخ شما به یک پیام درخواست راهنمایی از طرف Google هستند.
پیام راهنمایی باید فقط هتلهایی را مشخص کند که قیمتشان از آخرین باری که Google یک پاسخ راهنمایی موفقیتآمیز از سرورهای شما دریافت کرده است، تغییر کرده است.
پیامهای پاسخ راهنمایی از یکی از روشهای زیر برای تعیین هتلها و برنامههای سفر Google استفاده میکنند:
برنامه های سفر دقیق : ترکیبی از تاریخ ورود و مدت اقامت.
محدودههای تاریخ ورود : محدودهای از تاریخهای ورود را مشخص میکند که از اولین تاریخ ورود شروع میشود و به آخرین تاریخ ورود ختم میشود.
اقامت در محدوده (یا برنامه های سفر در محدوده )
هر یک از این روش ها برای پیام Hint Response به نحو متفاوتی نیاز دارند.
برای اطلاعات بیشتر، به پیامهای پاسخ راهنمایی مراجعه کنید.
نحو
عنصر <Hint>
بسته به نوع پیام Hint Response از نحو متفاوتی استفاده می کند:
برنامه های سفر دقیق
شکل زیر دستور سفرهای دقیق را در پیام 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>
محدوده های ورود
شکل زیر سینتکس محدودههای ورود را در یک پیام پاسخ راهنمایی نشان میدهد:
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<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 -->
<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 | محدوده اعلام حضور و برنامه های سفر در محدوده | اولین تاریخ محدوده تاریخ برای یک محدوده اعلام حضور یا اقامت در محدوده پیام راهنمایی پاسخ. تاریخ ها شامل می شود. |
<Item> | Required | Object | همه | ظرفی برای هتل/برنامه سفر که باید به روز شود. |
<LastDate> | Required* | Date | محدوده اعلام حضور و برنامه های سفر در محدوده | آخرین تاریخ محدوده تاریخ برای یک محدوده اعلام حضور یا اقامت در محدوده پیام راهنمایی پاسخ. تاریخ ها شامل می شود. * این عنصر برای اقامت در محدوده اختیاری است. |
<LengthOfStay> | Required | integer | برنامه های سفر دقیق | تعداد شب های برنامه سفر، به عنوان یک عدد صحیح مثبت بیان می شود. |
<Property> | Required | string | همه | شناسه یک هتل، با استفاده از همان شناسه فهرست هتل . تعداد عناصر
|
<Stay> | Required | Object | برنامه های سفر دقیق | محفظهای برای عناصر <CheckinDate> و <LengthOfStay> در یک پیام راهنمایی دقیق برنامه سفر. هر <Item> می تواند فقط یک <Stay> داشته باشد. |
<StaysIncludingRange> | Required | Object | برنامه های سفر با محدوده | محفظهای برای عناصر <FirstDate> و <LastDate> در پیام Response Hint Stay در محدوده. |
نمونه ها
برنامه های سفر دقیق
مثال زیر چندین برنامه سفر را برای یک ویژگی واحد یک پیام 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>
محدوده می ماند
مثال زیر دو کاربرد متفاوت از اقامت های محدوده ای را نشان می دهد، یکی برای چند شب و دیگری برای یک شب:
<!-- 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>
برای هر یک از این مثالها، Google با یک <Query>
پاسخ میدهد، و سپس باید با یک <Transaction>
که شامل بهروزرسانیهای قیمت برای هتلها/برنامههای سفر مشخص شده است، پاسخ دهید.
<HintRequest>
عنصر اصلی یک پیام درخواست راهنمایی. Google یک پیام درخواست راهنمایی به سرور شما میفرستد و انتظار پاسخی را دارد که هتلها و برنامههای سفری را که قیمتهای آنها از آخرین باری که Google یک پاسخ راهنمایی موفقیتآمیز از سرور شما دریافت کرده است را مشخص میکند.
اگر تغییراتی در قیمت وجود داشته باشد، Google یک <Query>
ارسال میکند که دادههای قیمتگذاری بهروز شده را برای هتلها و برنامههای سفر مشخص شده واکشی میکند.
برای اطلاعات بیشتر، به پیامهای درخواست راهنمایی مراجعه کنید.
نحو
عنصر <HintRequest>
از نحو زیر استفاده می کند:
نحو
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
صفات
عنصر <HintRequest>
هیچ ویژگی ندارد.
عناصر کودک
عنصر <HintRequest>
دارای عناصر فرزند زیر است:
عنصر کودک | تایپ کنید | توضیحات |
---|---|---|
<LastFetchTime> | DateTime | آخرین باری که گوگل موفق به دریافت پیام راهنمایی به یک پیام درخواست راهنمایی شد. اگر این زمان از آخرین باری که قیمتها را روی سرور خود بهروزرسانی کردید، قدیمیتر است، باید با یک پیام پاسخ راهنمایی که مشخص میکند کدام هتلها تغییر کردهاند، پاسخ دهید. اگر اخیراً واکشی موفقیتآمیز صورت نگرفته باشد، این مقدار روی یک مقدار بازه ثابت تنظیم میشود (برای جلوگیری از مشکلات جدیتر با عقب ماندگیهای بزرگ). مقدار فاصله ثابت فعلی 1000 ثانیه است، اما ممکن است تغییر کند. برای اطلاعات بیشتر، به پیامهای پاسخ راهنمایی مراجعه کنید. |
نمونه ها
مثال زیر یک پیام درخواست راهنمایی را نشان می دهد:
پیام درخواست راهنمایی
مثال زیر یک پیام درخواست راهنمایی را نشان می دهد:
<?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 برای قیمتگذاری یا بهروزرسانی فراداده هستند. آنها با هر دو حالت تحویل قیمت کششی و تغییر قیمت استفاده می شوند.
پیام های استعلام قیمت
پیامهای استعلام قیمت، ترکیبهای دارایی و برنامه سفری را که قیمتها را برای آنها ارائه میکنید، مشخص میکند.
هنگامی که سرور شما یک پیام پرس و جو قیمت را دریافت می کند، باید با یک پیام <Transaction>
که حاوی اطلاعات قیمت درخواستی است پاسخ دهد.
برای اطلاعات بیشتر، به نمای کلی قیمتگذاری مراجعه کنید.
سه نوع خاص از پیام های 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>
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<PropertyList>
<Property>hotel_id</Property>
...
</PropertyList>
</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 | تعداد شب های اقامت در محدوده. این عنصر فقط برای جستارهای قیمت گذاری Ranged Stay استفاده می شود که با Changed Pricing استفاده می شود. |
<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> |
نمونه ها
استعلام قیمت
مثال زیر یک پیام درخواست قیمت را نشان میدهد که درخواست بهروزرسانی قیمت برای مجموعهای از هتلها را میدهد که برای ۳ شب در دسترس هستند و از ۲۳ مه ۲۰۲۳ شروع میشوند:
<?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>
برای پرس و جو برای چند اشغال استفاده می شود، قیمت هر اشغال را به عنوان یک Room Bundle اضافی برای ملک یا برنامه سفر مربوطه ارائه دهید. هر ملک یا برنامه سفر باید دارای یک بلوک <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>