查询消息

查询消息是 Google 发出的价格更新或元数据更新请求。它们可与拉取模式和价格更改传送模式结合使用。

查询消息的根元素是 <Query>

Query 消息的结构取决于消息的类型:

  • 价格:Google 会发送一条 Query 消息,用于请求更新指定酒店的价格。

  • 元数据:Google 会发送一条 Query 消息,请求有关指定酒店的客房和套餐信息的数据。

您可以在初始配置期间定义 Google 用于“查询消息”和“实时价格查询”的端点。如需了解详情,请与您的技术支持客户经理 (TAM) 联系。

Google 以 HTTP POST 请求的形式发送查询消息,其中 Content-Type 标头设置为“application/xml”,User-Agent 标头设置为 Google-HotelAdsPrices。通过 Google-TravelAds-Live 手动测试价格端点集成期间,此规则不适用。这些示例查询可能包含 User-Agent 标头,也可能不包含。

您可以在查询 XML 参考文档中找到查询消息的详细格式设置。

价格查询消息

价格查询消息指定您为其提供价格的房源或行程组合。

当您的服务器收到 pricing 查询消息时,应返回一条 <Transaction> 消息,其中包含所请求的价格信息。

如需了解详情,请参阅价格概览

有三种特殊类型的查询消息:

  1. 实时价格:如果启用实时价格,当用户主动浏览指定酒店或行程组合的价格,并且有指定的响应时间范围时,系统会发送查询。

  2. 有上下文:如果启用,则 Google 发送给您的每个查询中都会包含用户上下文建议,这些建议会反映搜索指定房源或行程组合的最常见用户类型。遵循这些建议可以提高响应效率。

  3. 元数据:请求获取指定房源的客房和套餐的详细信息。

实时价格查询

实时价格查询是 Google 为响应用户搜索而发出的实时价格更新请求。Google 会收到用户针对酒店或行程组合的搜索请求,由于无法获得或不是最新的价格数据,因此 Google 会在用户搜索时请求您提供价格更新。通过实时价格查询,Google 会尝试获取价格,并在用户进行搜索时将其显示在结果中。

所有实时价格查询请求都有响应时间限制,通常不超过 4,000 毫秒。此限制在实时价格查询请求中指定。如果您未在时限内提供回复,则会导致错失特定机会的参与机会。不过,我们仍建议您提供价格,以便系统缓存价格以供将来使用。响应的连接将保持打开状态十分钟,或按照合作伙伴配置中指定的方式保持打开状态。

实时价格查询也是与情境相关的,并且可以检索以下参数的价格:用户所在国家/地区、设备类型、入住人数(房客数量)以及这些房客是成人还是儿童。通过实时价格查询,您可以显示更多与客户搜索内容匹配的最新价格。

实时价格查询是价格更新的次要机制。主要的重新定价机制仍然通过拉取或价格更改功能。实时价格查询有助于填补 Google 未提供酒店或行程组合价格的缺口。

实时价格查询使用规则

  • 给定行程没有缓存数据,因为所请求的行程不寻常,例如日期非常遥远,或者酒店的搜索频率非常低。

  • 请求的日期不是默认日期。

:注意:默认日期无法用于实时价格查询。系统仅会针对非默认日期请求实时价格查询。

Google 通常会缓存实时价格的结果,以便不会再次查询同一酒店或行程。它可以请求单个酒店或行程组合,以及多酒店或单个行程组合。

借助带上下文的实时价格功能,Google 可以根据用户的设备类型、用户执行搜索时所在的国家/地区以及入住人数(包括儿童)发送特定的实时价格请求。查询消息和交易消息都会展开,以包含用于定义查询参数的 <Context> 元素。通过包含上下文的实时价格查询获得的价格可以缓存为客房套餐(如果这是特定入住人数的价格)和条件式费率(如果适用于用户所在国家/地区或用户设备)。

使用上下文查询

使用上下文查询时,系统会为指定的属性或行程组合更新数据库的常规请求。其中包含适用于这些组合的常用用户上下文列表。如果使用条件式费率,则针对所有可能的用户上下文发送费率的成本可能很高,因此您可以使用此用户上下文列表来限制响应。仅针对指定用户上下文的返回价格涵盖了绝大多数相关的用户查询。

元数据查询消息

元数据查询消息包含有关指定属性的房间和软件包信息的详细信息。

收到 metadata 查询消息时,您应使用 <Transaction> 消息进行响应,其中指明了 <Result> 元素中所请求属性的价格。

如需了解详情,请参阅定义会议室和软件包元数据

对照查询

本部分介绍如何控制哪些房源和行程可以作为来自 Google 的查询消息的主题。

行程边界

您可以使用 <ItineraryCapabilities> 确定价格查询的可能边界。您需要定义规则来确定支持的日期范围和最长住宿晚数。

您可以为 <MaxAdvancePurchase><MaxLengthOfStay> 设置适用于所有酒店或行程组合的默认值。您还可以为酒店组定义这些设置。

查询消息示例

本部分介绍了价格查询消息和元数据查询消息的几个示例。如需查看其他示例,请参阅查询 XML 参考文档

示例行程

以下示例展示了一个价格 <Query>,它会请求更新 2023 年 5 月 23 日开始的 3 晚 4 家酒店的价格:

<?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, 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>

使用上下文查询时,仅指定用户所在国家/地区上下文。将来,此类查询还可能指定用户设备和入住人数。

入住日期范围

如果您使用价格更改,则查询消息的结构取决于您用于入住日期范围、精确行程或范围行程的提示类型。如需详细了解其中每种提示类型,请参阅提示响应消息

以下示例展示了入住日期范围的价格 <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/24/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>

您可以使用定义会议室和软件包元数据的 Transaction 消息来响应此类查询消息。如需了解详情,请参阅定义会议室和软件包元数据