Сообщения-запросы – это запросы от Google на обновление цен или метаданных. Они используются как для извлекаемых, так и для измененных цен.
Корневой элемент сообщений-запросов – <Query>.
Структура сообщения-запроса зависит от его типа:
Цены. Google отправляет сообщение-запрос, в котором запрашивает обновленные цены для указанных гостиниц.
Метаданные. Google отправляет сообщение-запрос, чтобы получить информацию о номерах и пакетах услуг в указанных гостиницах.
Конечную точку, которую Google использует для сообщений-запросов и запросов цен в режиме реального времени, вы определяете во время первоначальной настройки. За дополнительной информацией обращайтесь к техническому менеджеру аккаунта.
Google отправляет сообщение-запрос в виде HTTP-запроса POST с заголовком Content-Type, для которого задано значение application/xml, и заголовком User-Agent со значением Google-HotelAdsPrices. Исключение из этого правила – ручное тестирование интеграции конечной точки цены через Google-TravelAds-Live. Эти примеры запросов могут содержать или не содержать заголовок User-Agent.
Подробные сведения о форматировании сообщений-запросов можно найти в справочнике по XML-запросам.
Сообщения-запросы цен
В сообщениях-запросах цен указываются комбинации гостиниц и маршрутов, для которых вы предоставляете цены.
Когда ваш сервер получает сообщение-запрос pricing, он должен ответить сообщением <Transaction>, содержащим запрошенную информацию о ценах.
Подробнее о ценах…
Существует три специальных типа сообщений-запросов:
Цены в режиме реального времени. Если эта функция включена, запросы отправляются, когда пользователь просматривает цены для определенной гостиницы или маршрута. Ответ должен быть отправлен в течение заданного периода времени.
С контекстом. Если этот вариант включен, рекомендации по контексту пользователя включаются в каждый запрос, который Google отправляет вам. Рекомендации отражают наиболее распространенные типы пользователей, которые ищут определенные комбинации объектов или маршрутов. Следуя этим рекомендациям, вы сможете повысить эффективность своих ответов.
Метаданные. Запрос сведений о номерах и пакетах для указанных объектов.
Запросы цен в режиме реального времени
Запросы цен в режиме реального времени – это запросы от Google на обновление цен в реальном времени в ответ на поисковые запросы пользователей. Google получает от пользователя поисковый запрос, связанный с гостиницей или маршрутом. Поскольку данные о ценах недоступны или устарели, Google запрашивает у вас актуальную цену. При использовании запросов цен в режиме реального времени Google пытается получить цену и показать ее в результатах поиска.
Для всех запросов цен в режиме реального времени установлено ограничение на время ответа, которое обычно составляет до 4000 миллисекунд. Этот лимит указывается в запросе цен в режиме реального времени. Если ответ не будет получен в течение этого времени, возможность будет упущена. Однако мы рекомендуем указывать цену в любом случае, чтобы она могла быть кеширована и использована в будущем. Подключение для ответа остается открытым в течение 10 минут или в течение времени, указанного в конфигурации партнера.
Запросы цен в режиме реального времени также являются контекстными и могут получать цены для следующих параметров: страна пользователя, тип устройства, количество гостей и их возраст (взрослые или дети). Запросы цен в режиме реального времени позволяют показывать более актуальные цены, соответствующие поисковому запросу клиента.
Запросы цен в режиме реального времени – это дополнительный механизм обновления цен. Основной механизм пересчета цен по-прежнему работает по запросу или по измененным ценам. Запросы цен в режиме реального времени помогают заполнить пробелы, когда у Google нет цен для определенных гостиниц или программ пребывания.
Правила использования запросов цен в режиме реального времени
Для указанной программы пребывания нет кешированных данных, поскольку она нетипична (например, даты относятся к слишком отдаленному будущему или гостиницу ищут очень редко).
Запрошена дата, отличная от даты по умолчанию.
Примечание. Даты по умолчанию не подходят для запросов цен в режиме реального времени. Запросы цен в режиме реального времени отправляются только для дат, не заданных по умолчанию.
Обычно Google кеширует результаты запросов цен в режиме реального времени, чтобы не запрашивать данные об одной и той же гостинице или программе пребывания повторно. Запрос может содержать как одну гостиницу или комбинацию маршрутов, так и несколько гостиниц или одну комбинацию маршрутов.
Функция Цены в режиме реального времени с контекстом позволяет Google отправлять запросы цен в режиме реального времени с учетом типа устройства пользователя, страны, из которой он выполняет поиск, и количества гостей, включая детей. В сообщения-запросы и сообщения-транзакции добавляется элемент <Context>, который определяет параметры запроса. Цены, полученные в ответ на запросы цен в режиме реального времени с контекстом, могут кешироваться как пакет услуг, если это цена для определенного количества гостей, и как специальная цена, если это цена для пользователей из определенной страны или с определенным типом устройства.
Запросы с контекстом
Запросы с контекстом – это обычные запросы на обновление нашей базы данных для указанных комбинаций гостиниц и маршрутов. Они содержат список контекстов пользователей, которые популярны для этих комбинаций. Если используются специальные цены, то отправка цен для всех возможных контекстов пользователей может быть дорогостоящей, поэтому вы можете использовать этот список контекстов пользователей, чтобы ограничить свой ответ. Возврат цен только для указанных контекстов пользователей охватывает подавляющее большинство релевантных запросов пользователей.
Если вы хотите получать запросы с контекстом, обратитесь к своему техническому менеджеру аккаунта. Они могут подтвердить, что вы готовы получать такие сообщения, а затем изменить настройки, чтобы начать отправлять вам контексты пользователей в запросах.
Сообщения-запросы метаданных
Сообщения-запросы метаданных содержат информацию о номерах и пакетах услуг для указанных гостиниц.
Получив сообщение-запрос metadata, вы должны отправить ответное сообщение <Transaction>, в котором в элементах <Result> будут указаны цены для запрашиваемых объектов.
Подробнее об определении метаданных номеров и пакетов…
Примеры сообщений-запросов
В этом разделе приведено несколько примеров сообщений-запросов цен и метаданных. Дополнительные примеры можно найти в справочнике по XML-запросам.
Пример программы пребывания
В примере ниже показан запрос цен <Query>, в котором запрашиваются обновленные цены для четырех гостиниц на три ночи с заездом 23 мая 2023 г.:
<?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>
В этом примере запрашивается обновление цен для каждой гостиницы:
5/23/18 - 6/26/18
Пример запроса цен в режиме реального времени
В примере ниже показан запрос цен в режиме реального времени с ограничением времени ответа в 500 миллисекунд:
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<!-- Note that the latencySensitive attribute is not present by default but can
be configured to be displayed, on request, by Google. This attribute is only
displayed for a Live Pricing Query request -->
<Checkin>2023-05-23</Checkin>
<Nights>2</Nights>
<DeadlineMs>500</DeadlineMs>
<!-- The deadline represents the timeframe by which a response will need to be
received by. This element is only displayed for a Live Pricing Query request -->
<PropertyList>
<Property>6781291</Property>
</PropertyList>
<!-- Note that Context tags are potentially repeatable -->
<Context>
<!-- The total number of guests occupying the room (adults+children) -->
<Occupancy>3</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<!-- In this example one of the 3 guests is a 5yr old child -->
<Children>
<Child age="5"/>
</Children>
</OccupancyDetails>
<!-- The user was located in the US when this search was made -->
<UserCountry>US</UserCountry>
<!-- The user was searching from a mobile device at the time of search -->
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Пример запроса цены для одной гостиницы:
6/23/23 - 6/25/23
Пример ответа на такой запрос можно найти в справочнике по XML-фидам с ценами и наличием номеров (сообщениям-транзакциям).
Примеры запросов с контекстом
Ниже приведены примеры запросов с контекстом.
Простой запрос с контекстом
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>2</Nights>
<PropertyContextList>
<PropertyContext>
<Property>8675309</Property>
<!-- In the future, 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>
<Checkin>2025-07-10</Checkin>
<Nights>2</Nights>
<PropertyContextList>
<PropertyContext>
<Property>8675309</Property>
<Context>
<UserCountry>US</UserCountry>
</Context>
<Occupancy>3</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="7"/>
</Children>
</OccupancyDetails>
</PropertyContext>
<PropertyContext>
<Property>8675310</Property>
<Context>
<UserCountry>GB</UserCountry>
</Context>
<Occupancy>1</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
</OccupancyDetails>
</PropertyContext>
</PropertyContextList>
</Query>
При использовании контекстных запросов указывается только страна пользователя. В будущем в таких запросах также может указываться устройство пользователя.
Диапазоны дат заезда
Если вы используете измененные цены, то структура сообщения-запроса зависит от типа подсказки, который вы используете для диапазонов дат заезда, точных маршрутов или маршрутов с диапазоном дат. Подробную информацию о каждом из этих типов подсказок можно найти в статье Сообщения Hint Response.
Ниже приведен пример сообщения <Query> с ценами для диапазонов дат заезда.
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<FirstDate>2023-05-23</FirstDate>
<LastDate>2023-05-26</LastDate>
<Nights>3</Nights>
<PropertyList>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</PropertyList>
</Query>
В этом примере запрашивается обновление цен для следующих периодов проживания (для каждой гостиницы):
5/23/23 - 5/24/23
5/23/23 - 5/25/23
5/23/23 - 5/26/23
5/24/23 - 5/25/23
5/24/23 - 5/26/23
5/24/23 - 5/27/23
5/25/23 - 5/26/23
5/25/23 - 5/27/23
5/25/23 - 5/28/23
Проживание в течение определенного периода
Ниже приведен пример сообщения <Query> с ценами для проживания в течение определенного периода.
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<FirstDate>2023-05-23</FirstDate>
<LastDate>2023-05-26</LastDate>
<AffectedNights>3</AffectedNights>
<PropertyList>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</PropertyList>
</Query>
В этом примере запрашивается обновление цен для каждой гостиницы:
5/23/23 - 5/24/23
5/23/23 - 5/25/23
5/23/23 - 5/26/23
5/24/23 - 5/25/23
5/24/23 - 5/26/23
5/24/23 - 5/27/23
5/25/23 - 5/26/23
5/25/23 - 5/27/23
5/25/23 - 5/28/23
а также проживание, которое началось до указанной ночи (но включает ее):
5/20/23 - 5/23/23
5/21/23 - 5/23/23
5/21/23 - 5/24/23
5/22/23 - 5/23/23
5/22/23 - 5/24/23
5/22/23 - 5/25/23
Сообщение-запрос метаданных
В примере ниже показано сообщение <Query>, которое запрашивает обновление метаданных о номерах и пакетах для нескольких объектов:
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<HotelInfoProperties>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</HotelInfoProperties>
</Query>
В ответ на такое сообщение-запрос вы должны отправить сообщение-транзакцию с метаданными номеров и пакетов. Подробнее о том, как задать метаданные номеров и пакетов…