当 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 个酒店-行程对(酒店、入住日期和住宿晚数)组合。 对于住宿晚数范围提示,组合数使用梯形公式计算,以计算住宿晚数范围查询的酒店-行程对组合数:
其中:
Date Span:<FirstDate>和<LastDate>之间的天数(包括这两个日期)(日期范围 = LastDate - FirstDate + 1)。LOS:提示中请求的最长住宿晚数(例如<AffectedNights>14</AffectedNights>)。- \(N_{\text{hotel_batch_size}}\):查询批处理中包含的房源数量(通过
hotel_batch_size配置)。
如果提示超过 10,000 个项,会发生什么情况?
如果计算出的项超过 10,000 个,Google 会自动拆分查询工作负载:
- 初始尝试(住宿晚数范围):使用
<AffectedNights>发送涵盖范围开始日期的较小日期窗口。 - 首次回退(如果受支持 - 入住日期范围):我们将尝试使用
<Nights>(以下查询)以入住日期范围查询的形式发送日期范围的较小剩余部分。 - 最终回退(确切行程):我们将回退到将查询集扩展到各个确切行程。
<!-- 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>的代码块中的 或 ,以便可以使用多种范围查询类型来满足提取请求。