交易(房源数据)消息

概览

ARI 交易(房源数据)消息定义了每个房源的客房类型和套餐(或费率方案)的相关信息。每种房型数据都包含唯一标识符 (RoomID)、本地化名称、说明以及指向房型照片的网址。每个套餐数据都包含一个唯一标识符 (PackageID)、本地化名称、说明、入住人数和增值服务。

您可以使用交易消息执行以下操作:

  • 为一项或多项房源定义数据。
  • 为每个房源定义房型和套餐信息。
  • 控制产品供应。

您还可以设置操作来执行以下操作:

  • 为房源添加房型和套餐。

  • 从房源中移除房型和套餐。

  • 向套餐或房源添加积分奖励计划。

如需查看交易消息示例,请参阅交易(房源数据)示例

必需元素和可选元素

XML 参考提供了必需元素和可选元素的说明。如需详细了解属性和子元素,请参阅交易(房源数据)元素和属性

语法和架构

创建交易消息时,请参考交易(房源数据)语法示例,确保您遵循正确的格式。

您可以使用 xmllint 等第三方 XML 工具,在将 Feed 提交给 Google 之前,先使用已发布的架构验证 Feed。如需了解交易消息架构,请参阅酒店广告架构

指南

对于交易消息,请遵循以下准则:

操作:

delta:用于添加或更新新的房型和套餐(价格方案)。

overlay:用于将房源的所有房型和套餐替换为一组新的房型和套餐。必须包含您仍想销售的所有房型和价格方案的信息。

语言支持:

为“名称”“说明”和“字幕”字段指定一种或两种语言(英语,以及房源的本地语言,如果需要)。如果需要,您可以添加两种以上的语言。

客房类型和套餐:

更新房型或套餐时,您必须发送相应房型或套餐的所有相关信息。例如,添加照片时,您还必须添加名称和说明。

<AllowablePackageIDs><AllowableRoomIDs> 是可选的,如果未设置,则可以任意组合客房类型和价格方案。您仍然必须发送包含客房类型和房价方案 ID 的空房情况和房价。借助这些元素,您可以控制产品,还可以停用系统不再支持的组合。

每当房型或套餐发生变化,或者需要添加有关房型或套餐的重要详细信息时,请向 Google 发送交易消息更新。

积分:

如需在套餐中包含或排除奖励计划,请与 Google 合作设置会员积分配置。系统会显示与相应套餐关联的积分。详细了解积分

使用 <MilesIncluded> 元素定义或更新您的会员回馈活动。 如需了解详情,请参阅交易(房源数据)。积分可以包含在 <PackageData> 中。

示例

本部分提供了一个使用必需元素和可选元素的 ARI 交易消息基本示例。如需添加或更新房型和套餐,您可以使用 delta 操作来添加或更新房型和套餐,也可以使用 overlay 操作来替换所有房型和套餐定义(删除旧条目)。

您需要为“名称”“说明”和“字幕”字段指定一到两种语言(英语,以及房源的本地语言,如果需要)。然后,添加房源数据信息,包括指向照片的链接。

对于 <PropertyID><RoomID>,请使用您在系统中用于费率方案和房型(分别)的相同 ID。与您的系统保持一致对于确保 Google 正确显示您的价格和数据至关重要。

准备好文件后,您必须通过 POST 消息将其发送到以下端点:https://www.google.com/travel/hotels/uploads/property_data

如需详细了解如何推送/发布消息,请参阅推送消息

以下示例展示了如何使用 delta 操作设置交易消息:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="202X-XX-XXT00:00:00-0X:00" id="12345678" partner="partner_key">
  <PropertyDataSet action="delta">
    <Property>PROPERTYID</Property>
      <RoomData>
        <RoomID>ROOMID</RoomID>
        <Name><Text text="ROOM NAME" language="en"/></Name>
        <Description>
          <Text text="ROOM DESCRIPTION TEXT" language="en"/>
        </Description>
        <Capacity>4</Capacity>
        <PhotoURL>
          <Caption><Text text="ROOM PHOTO CAPTION TEXT" language="en"/></Caption>
          <URL>https://LINK TO PHOTO</URL>
        </PhotoURL>
      </RoomData>
      <PackageData>
        <PackageID>BASE</PackageID>
        <Name><Text text="Internet Special" language="en"/></Name>
        <Description><Text text="Direct Booking through Hotel Website" language="en"/></Description>
        <Refundable available="true" refundable_until_days="2" refundable_until_time="12:00"/>
      </PackageData>
  </PropertyDataSet>
</Transaction>

如需更多示例(例如如何使用 overlay 操作、向现有房源数据添加房型和套餐,以及移除现有房型和套餐),请参阅交易(房源数据)示例

方法指南

本部分针对您在发送交易消息时可能遇到的情况提供了解决方案。

方案 1:如何移除房间类型数据

如何移除现有房型和/或套餐数据?

说明

您已为相应房源发送了多种房型,包括特大床客房和大床客房。在改造期间,所有双人床客房类型均不可用,目前仅提供特大床客房类型。

解决方案

  • 对于已移除或停用的房型和套餐 ID,您无需更新其每晚空房情况、价格或房源。
  • 如果房间类型或套餐已被移除或停用,请发送新的交易消息,其中包含 action="overlay",且仅包含仍处于有效状态的房间类型和套餐,并排除已移除的房间类型或套餐。

示例

此 XML 代码段展示了如何使用 overlay 操作移除房型。

以下是包含“特大床”和“大床”房型的原始 delta 操作:

  <PropertyDataSet action="delta">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>King</RoomID>
      <Name>
        <Text text="King" language="en"/>
      </Name>
      <Capacity>2</Capacity>
    </RoomData>
    <PackageData>
      <PackageID>Standard</PackageID>
      <Name>
        <Text text="Standard" language="en"/>
      </Name>
      <Description>
        <Text text="Standard rate" language="en"/>
      </Description>
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>0</BreakfastIncluded>
      </PackageData>
    <RoomData>
      <RoomID>Queen</RoomID>
      <Name>
        <Text text="Queen" language="en"/>
      </Name>
      <Capacity>2</Capacity>
      <!-- Additional RoomData child elements omitted. -->
    </RoomData>
  </PropertyDataSet>

然后,您可以设置 overlay 以移除“大床房”房型并保留“特大床房”房型:

  <PropertyDataSet action="overlay">
    <Property>Property_1</Property>
    <RoomData>
      <RoomID>King</RoomID>
      <Name>
        <Text text="King" language="en"/>
      </Name>
      <Capacity>2</Capacity>
    </RoomData>
    <PackageData>
      <PackageID>Standard</PackageID>
      <Name>
        <Text text="Standard" language="en"/>
      </Name>
      <Description>
        <Text text="Standard rate" language="en"/>
      </Description>
      <Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
      <BreakfastIncluded>0</BreakfastIncluded>
    </PackageData>
  </PropertyDataSet>

场景 2:如何使用 AllowablePackageIDs 控制产品

如果套餐按房型分组,如何控制产品(房型和套餐的组合)?

说明

您有某些套餐仅适用于特定房型。例如,如果您的酒店资源有四种房型(包括总统套房)和六种不同的套餐,但只有少数套餐适用于总统套房,您可以指定适用性。

解决方案

发送更新后的交易消息,使用 <AllowablePackageIDs> 指定软件包中包含哪些商品。

示例

此 XML 代码段展示了如何使用 <AllowablePackageIDs> 来指定与特定会议室类型搭配使用的软件包。例如,顶层套房房型仅允许使用顶层全包套餐或免费早餐套餐,而特大床套房房型仅允许使用特大床全包套餐或宠物友好型套餐。

<RoomData>
  <RoomID>penthouse_suite</RoomID>
  <AllowablePackageIDs>
    <AllowablePackageID>penthouse_all_inclusive</AllowablePackageID>
    <AllowablePackageID>free_breakfast</AllowablePackageID>
  </AllowablePackageIDs>
  <!-- Additional child elements omitted. -->
</RoomData>
<RoomData>
  <RoomID>king_suite</RoomID>
  <AllowablePackageIDs>
    <AllowablePackageID>king_all_inclusive</AllowablePackageID>
    <AllowablePackageID>pet_friendly</AllowablePackageID>
  </AllowablePackageIDs>
  <!-- Additional child elements omitted. -->
</RoomData>
<PackageData>
  <PackageID>penthouse_all_inclusive</PackageID>
</PackageData>
<!-- Additional child elements omitted. -->
<PackageData>
  <PackageID>free_breakfast</PackageID>
</PackageData>
<!-- Additional child elements omitted. -->
<PackageData>
  <PackageID>king_all_inclusive</PackageID>
</PackageData>
<!-- Additional child elements omitted. -->
<PackageData>
  <PackageID>pet_friendly</PackageID>
</PackageData>

场景 3:如何使用 AllowableRoomIDs 控制产品

如果按套餐对房型进行分组,如何控制产品(房型和套餐的组合)?

说明

客房类型和套餐组合不再作为产品销售,或者您想控制新套餐中包含的内容。例如,您只想指定某些房型(例如可欣赏海景的特大床客房和大床客房)搭配套餐。

解决方案

发送更新后的交易消息,使用 <AllowableRoomIDs> 元素指定套餐中包含的确切商品。

示例

此 XML 代码段展示了如何使用 <AllowableRoomID> 在套餐中指定海景大床房和海景双床房房型。

<PackageID>RO</PackageID>
<AllowableRoomIDs>
  <AllowableRoomID>king_oceanview</AllowableRoomID>
  <AllowableRoomID>queen_oceanview</AllowableRoomID>
</AllowableRoomIDs>