借助客房套餐,您可以为单个房源定义多种客房类型,或 将客房行程与价格功能相结合, 提供了费率和销售条件, 价格。
主要概念和工作流程
借助客房套餐,您可以提供实体房型的其他组合 不同的服务套餐
下图显示了客房套餐的示例:
在此示例中,第一个套餐是基本房间,只有一项套餐的折扣 。第二种是其他客房类型,可供入住 为 3 名成人房客提供第 3 项是同一地点内的 属性。第四种是“高级”底层房间的房间 酒店设施与服务包括免费早餐或稍后结账等。
下图显示了费率功能的示例:
在搜索结果中显示客房套餐和评分功能受 与标准房价的选择流程相同。
客房套餐
您可以在交易消息中定义客房套餐和评分功能。根
是 <Transaction>
。
“交易”消息的结构取决于您要执行的操作: 定义有关客房套餐或房价功能的元数据,或更新 客房套餐的价格或空房情况。
- 元数据
- 在
<PackageData>
<PropertyDataSet>
元素。有关详情,请参阅定义会议室和 软件包元数据。客房套餐使用现有的<RoomData>
元素 介绍实体会议室的说明 - 价格和空房情况
- 使用
<RoomBundle>
元素定义客房套餐价格和空房情况 在<Result>
中。有关 信息,请参阅定义价格和库存状况。
基本房的房价、税费和其他费用为强制性规定
当它们未与客房套餐搭配使用时,<Result>
;当它们未与客房套餐搭配使用时,可以移除
与 Room Bundle 一起使用。如果您使用
请按以下步骤进行操作:
包含基础方案的房价、税费及其他费用,低于
<Result>
且 添加一个与基本客房套餐匹配的客房套餐。如果需要,可以在同一
<Result>
代码块中定义其他房间套餐 。启动客房套餐后,移除基本客房的房价、税费和 其他费用。
客房套餐元数据
在定义客房套餐和给设施评分时,您通常需要定义 价格说明中的附加服务 提供相关信息这些信息称为 客房套餐元数据。然后,您可以在定价中引用这些元数据 但不要将其包含在价格更新消息中。
定义 Room Bundle 时,请将现有的 <RoomData>
元素用于
实际房间说明和房价功能的 <PackageData>
元素
以及实体房间说明中未包含的字词
使用 <RoomData>
和 <PackageData>
元素
缩减酒店列表和酒店价格信息
Feed,因为它可以减少
事务消息中发送的重复数据量。
例如,房间名称和说明等数据通常会重复
提供各种实用信息您可以使用 <RoomData>
和 <PackageData>
元素对此类数据进行一次定义。行程专用客房套餐数据
然后与存储的房间和包定义合并
最终用户
Google 会将您的元数据与您的行程专用数据进行匹配,
广告内容系统通过特殊的处理 将名称和
来自 <RoomData>
和 <PackageData>
元素的说明,
<RoomData>
中描述的物理房间,并对设施和
软件包详细信息位于 <PackageData>
中。
如果您为单个房间或房间同时定义了房间数据和套餐数据 Google 会将这两种内容都包含在广告输出中,并用连字符分隔。
照片准则
发送会议室照片时,请遵循以下准则 确保您的照片会向用户显示:
发送每种客房类型的照片,包括无障碍设施的照片 房间,例如带不同浴室的指定无障碍房间 例如滚入淋浴间
至少添加 4 张会议室照片和至少 1 张 浴室。
照片应展示的是房间本身而非房源。最 床、整个房间、浴室、起居区 以及从房间拍摄的视角(其他房间拍摄在同一张照片中); 阳台、露台或露台(如适用)
拍摄桌子、厨房、咖啡机/茶具 和独特的房间功能
避免拍摄人物和财产(例如外部或财产)的照片 酒店设施与服务 - 观光/旅游和美食。
避免对物体的特写拍摄,例如高脚杯的特写。
避免使用品牌和品牌,但有标牌或品牌的洗浴用品没有问题 包含在能拍下整个浴室区域的照片中。照片 不应包含大段文字、徽标或水印。
提供视野开阔的标准横向(横向)照片; 避免鱼眼和扭曲的照片以最高分辨率拍摄照片 以提高排名。您无需提交不同版本相同的照片 解决方案。
数据优先级
系统会按照优先级从所有来源收集客房套餐数据并进行合并 规则来生成指定酒店、行程和客房套餐的最终数据。 优先级顺序如下(从低到高):
- (最低)合作伙伴数据
- 媒体资源数据
<RoomData>
,其中<RoomID>
与<RoomID>
<RoomBundle>
个块<PackageData>
,其中<PackageID>
与<PackageID>
<RoomBundle>
个块- (最高)
<RoomBundle>
定义价格和库存状况
如需指定客房套餐的价格和空房情况,请在以下位置使用 <RoomBundle>
元素:
每个套餐或行程组合的交易消息。通过
<RoomBundle>
元素应在 <Result>
元素内。示例代码
两个 <RoomBundle>
元素的区别如下。请注意,在此示例中,
两个 <RoomBundle>
元素使用
<RoomID>
和 <PackageID>
。
对于每个 <Result>
,其中包含的一组客房套餐会覆盖
现有集合。如果您没有定义任何
选择 <Result>
元素中的客房套餐或为设施评分,然后选择所有房间
系统会移除套餐,仅显示该酒店或行程的基本客房
。
请务必使用 <Name>
等元素使客房套餐更加丰富
对潜在客户具有吸引力,并确保其与酒店的着陆页保持一致
页面。在此示例中,您需要定义名称和其他描述性信息
。
<RatePlanID>
是可选的,表示会议室的唯一标识符。
软件包组合。我们强烈建议将 RatePlanID 作为变量
构建动态着陆页(以前称为“销售终端”)网址。有关详情,请参阅
使用变量和条件。
以下元素在 Room 软件包中是可选的:
<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>
在实际账号中实现 Room Bundle 时,请在<Baserate>
客房套餐已启用。
<Result>
<!-- Note: When using Room Bundles, the top level result price is no
longer necessary. -->
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Base Room Bundle -->
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P54321</PackageID>
<Baserate currency="USD">199.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL. For details, see Using Variables and Conditions. -->
<RatePlanID>060773-P54321</RatePlanID>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Price for 4 ("occupancy") -->
<Baserate currency="USD">298.88</Baserate>
<Tax currency="USD">42.12</Tax>
<OtherFees currency="USD">10.00</OtherFees>
<RatePlanID>436233-P12345</RatePlanID>
</RoomBundle>
</Result>
定义客房和套餐元数据
如需定义客房套餐元数据,请使用 <PackageData>
和 <RoomData>
元素
在交易消息的 <PropertyDataSet>
元素内。
您在事务消息中定义了房间和套餐元数据, 与价格和库存状况数据分开显示。通过定义 预先提供数据,因此价格更新 比如说明、照片网址、酒店设施和其他有关 提供各种实用信息
Google 会为您存储这些元数据,并在出现这些元数据时将其插入您的广告中。 。您可以随时通过新的 交易消息。
在“Transaction”消息中,您需要在每个区块上设置套餐 ID 和房间 ID
然后在 <Result>
价格更新部分中引用。
如果会议室和套餐数据发生变化(例如添加新会议室) 属性,请发送一条包含 更新后的客房和套餐数据 - Google 会替换 包含新数据的房间或软件包
Google 建议您在初始设置期间定义元数据。更新后
预定义元数据,那么您只需引用 <RoomID>
和
定价中的<PackageID>
值
更新而不是包含所有
这些信息。Google 会使用这些 ID 来匹配客房和客房套餐
存储的元数据。这可以极大地减小
交易消息。
因为客房或行程组合的价格变化更频繁 比房间或套餐说明更复杂,只需定义一次元数据,然后引用 因此可以更高效地使用事务消息。此外,还有错误 例如使用元数据来消除 而不是以内嵌方式定义数据
定义元数据和价格的最有效方法,推荐使用 如下所示:
<!-- Efficient method of defining Room Bundles -->
<!----- Occupancy of 2 and 4 example ------>
<Transaction timestamp="2019-04-18T16:20:00-04:00" id="12345678">
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<!-- Note: Once defined it does not have to be repeated for future Transaction Messages. -->
<!-- PropertyDataSets can also be defined and sent in their own Transaction Message -->
<!-- separately from pricing. Google can be configured to pull just PropertyDataSets -->
<!-- once per day (or on a predefined frequency). -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate 4, but bundle is for 2 -->
<Capacity>4</Capacity>
<PhotoURL>
<URL>http://www.foo.com/static/bar/imageQueen.jpg</URL>
<Caption>
<Text text="A bright and breezy way to enjoy your mornin'
cuppa tea." language="en"/>
<Text text="Une façon lumineuse et aérée pour profiter
de votre journée tasse de thé." language="fr"/>
</Caption>
</PhotoURL>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate 4 and bundle is for 4 -->
<Capacity>4</Capacity>
<PhotoURL>
<URL>http://www.foo.com/static/bar/imageKing.jpg</URL>
<Caption>
<Text text="A bright and breezy way to enjoy your mornin'
cuppa tea." language="en"/>
<Text text="Une façon lumineuse et aérée pour profiter
de votre journée tasse de thé." language="fr"/>
</Caption>
</PhotoURL>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P54321</PackageID>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<BreakfastIncluded/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<Result>
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Base Room Bundle -->
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P54321</PackageID>
<Baserate currency="USD">199.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL. For details, see Using Variables and Conditions. -->
<RatePlanID>060773-P54321</RatePlanID>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Price for 4 ("occupancy") -->
<Baserate currency="USD">298.88</Baserate>
<Tax currency="USD">42.12</Tax>
<OtherFees currency="USD">10.00</OtherFees>
<RatePlanID>060773-P12345</RatePlanID>
</RoomBundle>
<!-- Continue providing all available RoomBundle rates under matched
property for any other occupancies -->
</Result>
</Transaction>
入住人数和容纳人数
定义 Room Bundle 时,您必须了解 入住人数和容纳人数:
- 入住人数
- 客房套餐的入住人数。例如:
“蜜月套票”入住人数为 2 人。您可以将
通过使用
<PackageData>
或<RoomBundle>
元素的<Occupancy>
子元素。 - 容量
- 每间会议室可容纳的人数上限。通过
客房容纳人数始终等于或高于入住人数。对于
例如“蜜月套房”酒店内最多可容纳六人
人,而您却为两位房客支付了套餐费用。您可以将
通过使用
<RoomData>
元素的<Capacity>
子项来限制软件包的容量 元素。
为客房套餐定价时,您必须针对房客数量提供价格
(捆绑包的
<Occupancy>
元素)。如果 <Occupancy>
设置为 2,则其中的价格
必须是两个人。您不能将 <Occupancy>
设置为四人,并且
为两人设置套餐价格。
共享房间
您还使用客房套餐中的“入住人数和容纳人数”来为共享客房设置价格
客房住宿(如招待所)。例如,要将每个人
有 8 张床的宿舍价格,则您需要将“入住人数”设置为 1
,
8
的容量,并在 <RoomData>
名称中标识它。查看
示例。
更新客房套餐
本部分介绍了如何移除不再可用的客房套餐 以及如何更新现有客房套餐的价格。
客房套餐移除
移除后,客房套餐与酒店价格不同 。
如需从商品目录中移除客房或行程组合,请将
将 <Result>
元素的 <Baserate>
更改为 -1
。要为酒店移除客房套餐,请执行以下操作:
请删除<RoomBundle>
元素
<Result>
块。
数据 Feed 中的客房套餐被视为集合,其数字范围不限 从 0 到 10 个。将 Room Bundle 发送给 Google 时, 当前的完整组合。您没有将单个客房套餐的值更改为 将之前可用的代码标记为不可用。包含的任何媒体包 最新的交易消息会替换当前这组消息。
例如,有 A、B、C 和 D 套装。您首先发送一条消息 定义了房间套装 A、B、C 和 D 的集合。之后,如果套装 B 售罄, 则您可以重新发送仅包含内容包 A、C 和 D 的整个集合。如果所有客房套餐均包括在内 如果客房已售罄,则发送一组空的客房套餐。
价格调整
如需更改客房套餐的价格,请在 <Result>
中设置新的 <Baserate>
元素。
每次您在交易中更新客房/行程的 <Result>
区块时
消息,您必须为每个应用提供一整套可用的客房套餐
<Result>
。Google 会将现有的一组客房套餐替换为新的套餐
。如果您在<Result>
中未提供任何客房套餐,则 Google 会移除该套餐
该客房或行程的所有客房套餐。
元数据更新
通过对 Google 发送的 <Query>
的响应,您可以更新客房套餐元数据。
您在回复“查询”消息时提供定义会议室的“事务处理”消息 以及指定酒店的套餐元数据。有关详情,请参阅查询 信息。