提示响应消息

当 Google 发送 Hint 请求消息时,您的服务器应使用 Hint 回应消息进行响应,该消息应指定自 Google 上次从这些服务器收到成功的 Hint 回应以来价格发生变化的酒店。如果价格有任何变化,Google 随后 会发送一个 <Query>,用于提取所指示 酒店和行程的更新后的定价数据。

如需大致了解重新定价流程,请参阅 定价概览

提示响应消息使用以下方法来重新定价所选酒店及其行程:

Hint 回应消息的根元素是 <Hint>。您可以使用一个或多个 <Item> 元素请求更新酒店或 行程。单个提示 响应消息可以定义任意数量的<Item>元素。

每条 Hint 回应消息都必须为 每个 <Item> 指定至少一个 <Property> 元素。<Property> 使用与 酒店列表相同的 ID 来标识酒店。默认情况下,您为每个 <Item> 代码块指定一个酒店 ID。不过,如果您使用入住日期范围或住宿晚数范围进行重新定价,则可以指示 Google 允许在项代码块中使用多家酒店。

确切行程请求和响应流程

提示消息可以基于单个行程,例如入住日期和住宿晚数的组合。在这种情况下,您可以为酒店指定入住日期和住宿晚数,Google 会提取该行程的新定价数据。

合作伙伴的响应

以下 Hint 回应消息定义了单个房源和单个行程:

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

Google 的响应

Google 会使用类似于以下内容的 <Query> 响应您的 Hint 回应消息:

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

创建 <Transaction>

然后,您需要为 酒店创建 <Transaction>,其中包含以下住宿晚数的价格更新:

5/20/23 - 5/23/23

入住日期范围请求和响应流程

Hint 回应消息可以指定一系列入住日期,从第一个入住日期开始,到最后一个入住日期结束。当 Google 提取新的定价数据时,Google 会提取酒店的每个入住日期的行程,从这些日期开始,一直到您指示的住宿晚数。

合作伙伴的日期范围

以下 Hint 回应消息示例定义了单个房源,其中包含入住日期范围:

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

Google 的响应

Google 会使用类似于以下内容的 <Query> 响应此 Hint 回应消息:

<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 回应消息可以包含一系列已更改的日期。这会告知 Google,它应提取受任何这些日期影响的任何行程。提取的实际行程集是更改日期集和最长住宿晚数的函数。

合作伙伴的住宿晚数范围

以下 Hint 回应消息示例使用了住宿晚数范围:

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

Google 的响应

Google 会使用类似于以下内容的 <Query> 响应您的 Hint 回应消息:

<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 个酒店-行程对(酒店、入住日期和住宿晚数)组合。 对于住宿晚数范围提示,组合数使用梯形公式计算,以计算住宿晚数范围查询的酒店-行程对组合数:

$$ \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> 代码块中的 ,以便可以使用多种范围查询类型来满足提取请求。