Сообщения Hint Response

Когда Google отправляет сообщение Hint Request, ваши серверы должны ответить сообщением Hint Response, в котором указаны гостиницы, цены которых изменились с момента последнего получения Google успешного ответа Hint Response от тех же серверов. Если цены изменились, Google отправляет запрос <Query>, чтобы получить обновленные данные о ценах для указанных гостиниц и маршрутов.

Общие сведения о пересчете цен приведены в этой статье.

В сообщениях Hint Response используются следующие методы для пересчета цен в выбранных гостиницах и маршрутах:

Корневой элемент сообщения Hint Response – <Hint>. Чтобы запросить обновление гостиницы или маршрута, используйте один или несколько элементов <Item>. В одном сообщении Hint Response может быть любое количество элементов <Item>.

В каждом сообщении Hint Response должен быть указан хотя бы один элемент <Property> для каждого элемента <Item>. <Property> идентифицирует гостиницу по тем же идентификаторам, что и список гостиниц. По умолчанию для каждого блока <Item> указывается один идентификатор гостиницы. Однако вы можете разрешить Google добавлять в блок несколько гостиниц, если вы используете диапазоны дат заезда или диапазоны продолжительности проживания для пересчета цен.

Точный запрос маршрута и поток ответов

Сообщения с подсказками могут быть основаны на отдельных маршрутах, например на сочетании даты заезда и продолжительности пребывания. В этом случае вы указываете дату заезда и длительность пребывания в гостинице, а Google получает новые данные о ценах только для этого маршрута.

Ответ партнера

В следующем сообщении Hint Response определены одна гостиница и один маршрут:

<Hint>
  <Item>
    <Property>12345</Property>
    <Stay>
      <CheckInDate>2023-05-20</CheckInDate>
      <LengthOfStay>3</LengthOfStay>
    </Stay>
  </Item>
</Hint>

Ответ Google

В ответ на сообщение Hint Response Google отправляет сообщение <Query>, похожее на следующее:

<Query>
  <Checkin>2023-05-20</Checkin>
  <Nights>3</Nights>
  <PropertyList>
    <Property>12345</Property>
  </PropertyList>
</Query>

Создать <Transaction>

Затем вы должны создать сообщение <Transaction> с обновленными ценами для гостиницы на следующий период проживания:

5/20/23 - 5/23/23

Процесс обработки запросов и ответов, связанных с диапазонами дат заезда

В сообщении Hint Response можно указать диапазон дат заезда, начиная с первой и заканчивая последней. Когда Google получает новые данные о ценах, он извлекает маршруты для каждой даты заезда в отель, начиная с этих дат и заканчивая указанной вами длительностью пребывания.

Диапазоны дат партнера

В следующем примере сообщения Hint Response определяется одна гостиница с диапазоном дат заезда:

<Hint>
  <Item>
    <Property>12345</Property>
    <FirstDate>2023-05-20</FirstDate>
    <LastDate>2023-05-23</LastDate>
  </Item>
</Hint>

Ответ Google

Google отвечает на это сообщение Hint Response сообщением <Query>, похожим на следующее:

<Query>
  <FirstDate>2023-05-20</FirstDate>
  <LastDate>2023-05-23</LastDate>
  <Nights>5</Nights>
  <PropertyList>
    <Property>12345</Property>
  </PropertyList>
</Query>

Создать <Transaction>

Затем вы должны создать <Transaction> с обновленными ценами для следующих вариантов проживания в этой гостинице:

5/20/23 - 5/21/23
5/20/23 - 5/22/23
5/20/23 - 5/23/23
5/20/23 - 5/24/23
5/20/23 - 5/25/23

5/21/23 - 5/22/23
5/21/23 - 5/23/23
5/21/23 - 5/24/23
5/21/23 - 5/25/23
5/21/23 - 5/26/23

5/22/23 - 5/23/23
5/22/23 - 5/24/23
5/22/23 - 5/25/23
5/22/23 - 5/26/23
5/22/23 - 5/27/23

В этом примере длительность пребывания составляет 5 ночей. По умолчанию длительность пребывания составляет 30 дней.

Процесс запроса и ответа для диапазона дат проживания

Сообщение Hint Response может содержать диапазон дат, для которых изменились цены. Это сообщает Google, что нужно получить все маршруты, затронутые любой из этих дат. Фактический набор полученных маршрутов зависит как от набора дат с изменениями, так и от максимальной продолжительности пребывания.

Проживание в течение определенного периода

В следующем примере сообщения Hint Response используется диапазон дат проживания:

<Hint>
  <Item>
    <Property>12345</Property>
    <StaysIncludingRange>
      <FirstDate>2023-05-20</FirstDate>
      <LastDate>2023-05-23</LastDate>
    </StaysIncludingRange>
  </Item>
</Hint>

Ответ Google

В ответ на сообщение Hint Response Google отправляет сообщение <Query>, похожее на следующее:

<Query>
  <FirstDate>2023-05-20</FirstDate>
  <LastDate>2023-05-23</LastDate>
  <AffectedNights>3</AffectedNights>
  <PropertyList>
    <Property>12345</Property>
    <Property>67891</Property>
  </PropertyList>
</Query>

Создать <Transaction>

Затем вы должны создать <Transaction> с обновленными ценами для гостиницы на следующие периоды проживания:

5/17/23 - 5/20/23

5/18/23 - 5/20/23
5/18/23 - 5/21/23

5/19/23 - 5/20/23
5/19/23 - 5/21/23
5/19/23 - 5/22/23

5/20/23 - 5/21/23
5/20/23 - 5/22/23
5/20/23 - 5/23/23

5/21/23 - 5/22/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

5/23/23 - 5/24/23
5/23/23 - 5/25/23
5/23/23 - 5/26/23

Диапазоны дат: ограничения на пакетные запросы и разделение запросов

Google ограничивает каждый запрос на извлечение максимум 10 000 комбинаций пар "гостиница – маршрут" (гостиница, дата заезда и длительность пребывания). Для подсказки Ranged Stay количество комбинаций рассчитывается по формуле трапеции, которая позволяет определить количество комбинаций пар "гостиница – маршрут" для запросов Ranged Stay:

$$ \text{Total Items} = \left( \text{Date Span} \times \text{LOS} + \frac{\text{LOS} \times (\text{LOS} + 1)}{2} \right) \times N_{\text{hotel_batch_size}} $$

Где:

  • Date Span – количество дней между <FirstDate> и <LastDate> включительно (диапазон дат = LastDate – FirstDate + 1).
  • LOS – максимальная длительность пребывания, указанная в подсказке (например, <AffectedNights>14</AffectedNights>).
  • \(N_{\text{hotel_batch_size}}\) – количество ресурсов, включенных в пакет запросов (настраивается с помощью hotel_batch_size).

Что произойдет,если в подсказке будет больше 10 000 элементов?

Если количество объектов превышает 10 000, Google автоматически разделяет рабочую нагрузку запроса:

  1. Первая попытка (диапазон дат). С помощью <AffectedNights> отправляется меньший диапазон дат, охватывающий начало вашего диапазона.
  2. Первый резервный вариант (если поддерживается – диапазон дат заезда). Мы попытаемся отправить меньшие остатки вашего диапазона дат в виде запросов диапазона дат заезда, используя <Nights> (запрос ниже).
  3. Последний резервный вариант (точные маршруты): мы расширим набор запросов до отдельных точных маршрутов.
<!-- Example: Remainder batch dispatched after a split -->
<Query>
  <FirstDate>2026-10-01</FirstDate>
  <LastDate>2026-10-31</LastDate>
  <Nights>14</Nights>
  <PropertyList>
    <Property>12345</Property>
  </PropertyList>
</Query>
  • Следите за размером пакетов. Если вы обновляете данные за большие периоды (например, от 180 до 365 дней) с продолжительностью проживания от 14 ночей, попросите технического менеджера аккаунта Google уменьшить значение hotel_batch_size, чтобы подсказки не вызывали разделения.
  • Указывайте точные диапазоны дат. При уведомлении Google об изменении цен ограничивайте диапазоны <FirstDate> и <LastDate> конкретными интервалами дат, в которые действительно изменились цены, а не отправляйте данные за весь календарный год.
  • Если подсказки охватывают большие диапазоны дат, убедитесь, что синтаксический анализатор принимает или внутри блоков , содержащих <FirstDate> и <LastDate>. Это позволит использовать несколько типов запросов с диапазонами для выполнения pull-запросов.