您可以使用房型套裝組合,為單一房源定義多種房型,也能將房價特色的行程結合 (價格及銷售條件以外的額外服務),以標準價格向使用者呈現。
重要概念和工作流程
透過 Room Bundle,您可以依據不同服務套件提供更多實體房型組合。
下圖為 Room 套裝組合的範例:
在此範例中,第一個套裝組合是基本房型,其中一人為成人的折扣。第二種是不同的房間類型 最多可可供三位成人入住第三種是相同屬性中的另一種房型。第四種是基本房型的「高級」套件,其中可能包括免費早餐或稍後結帳等設施。
下方圖片顯示費率功能的範例:
在搜尋結果中顯示房型套裝組合和費率功能,受到與標準房價相同的選取程序規範。
房型套裝組合
您可以在交易訊息中定義 Room Bundle 和費率功能。交易訊息的根元素為 <Transaction>
。
交易訊息的結構取決於您正在進行的操作:定義 Room Bundle 或費率功能的中繼資料,或是更新 Room Bundle 的定價或供應情形。
- 中繼資料
- 在
<PropertyDataSet>
元素中使用<PackageData>
定義 Room 套件和費率功能中繼資料。詳情請參閱「定義會議室和套件中繼資料」。Room Bundle 會在實體房間說明中使用現有的<RoomData>
元素。 - 價格與空房資訊
- 針對每個套件/行程組合,使用
<Result>
中的<RoomBundle>
元素,定義 Room 套裝組合的價格和供應情形。詳情請參閱「定義定價和供應情形」。
如果基本房型的費率、稅金和其他費用未與 Room Bundle 搭配使用,則必須符合「<Result>
」的規定,如果與 Room Bundle 搭配使用,則應移除這類費用。如果您使用即時帳戶實作 Room Bundle,請按照下列步驟操作:
將基本房型的房價、稅金和其他費用加入
<Result>
下,並新增一個符合基本房型套裝組合的 Room 套裝組合。如有需要,請在該屬性或不同服務套件的相同
<Result>
區塊中,定義額外的 Room Bundle。Room Bundle 推出後,移除基本房型的費率、稅金和其他費用。
房型套裝組合中繼資料
定義 Room Bundle 和費率功能時,您通常會預先定義說明、包含在費率中的額外服務,以及 Room Bundle 的其他資訊。這項資訊稱為 Room Bundle 中繼資料。接著,您會在價格更新時參照這些中繼資料,但不包括在價格更新訊息中加入中繼資料。
定義 Room Bundle 時,請在實體客房說明中使用現有的 <RoomData>
元素,並將費率功能和 <PackageData>
元素用於提供在實體客房說明中無關的功能與字詞。
使用 <RoomData>
和 <PackageData>
元素可大幅縮減飯店清單和飯店價格動態饋給的大小,因為可減少交易訊息中傳送的重複資料數量。
例如,每個行程通常會重複顯示房間名稱和說明等資料。您可以使用 <RoomData>
和 <PackageData>
元素定義這類資料一次。然後,系統會將行程專屬的 Room Bundle 資料與儲存的房間和套件定義合併,以便向使用者顯示。
Google 會將中繼資料與行程專屬資料進行比對,以顯示您的廣告內容。結合 <RoomData>
和 <PackageData>
元素的名稱和說明有特殊的處理程序,可讓實體房間在 <RoomData>
中描述,而費率功能和套件詳細資料則位於 <PackageData>
中。
如果您同時定義單一房間或 Room 套裝組合的會議室資料和套件資料,Google 就會將這兩個資料納入廣告輸出內容,並以連字號分隔。
相片指南
傳送房間相片時,您必須遵守下列規範,確保使用者能看到你的相片:
傳送每種房型的相片,包括無障礙房間的相片,例如設有各種浴室裝飾的無障礙指定房間,例如捲入淋浴間。
請加入至少四張房間相片和至少一張浴室相片。
相片應為房間本身,而非房源。最重要的相片包括床鋪、房間、浴室、起居空間、房間的視角 (同張相片的其餘部分),以及陽台、露台或露台 (如適用)。
此外,拍攝桌子、廚房、咖啡/茶具和獨特房間特色的相片也很有幫助。
請避免使用觀光/旅遊活動和美食,例如室外或財產設施。
避免拍攝物體的特寫鏡頭,例如立體軟體的特寫。
請避免使用品牌宣傳元素和品牌,但可在拍攝整個浴室區域的相片中,加入有標籤或品牌的盥洗用品。相片不應有大量的文字、標誌或浮水印。
提供標準的橫向 (水平) 相片,而且視野充足,避免使用魚眼或扭曲的相片。如要提升排名,請以最高解析度拍照。您不需要以不同解析度提交同一張相片。
資料優先順序
Room Bundle 資料會從所有來源收集,並結合優先順序規則,產生特定飯店、行程和 Room Bundle 的最終資料。順序如下 (從最低到最高優先順序排列):
- (最低) 合作夥伴資料
- 資源資料
<RoomData>
,其中<RoomID>
與<RoomBundle>
區塊中的<RoomID>
相符<PackageData>
,其中<PackageID>
與<RoomBundle>
區塊中的<PackageID>
相符- (最高)
<RoomBundle>
定義價格和供應情形
如要定義 Room 套裝組合的價格和供應情形,請在每個套件或行程組合的交易訊息中使用 <RoomBundle>
元素。<RoomBundle>
元素應位於 <Result>
元素中。以下顯示兩個 <RoomBundle>
元素的程式碼範例。請注意,在這個範例中,兩個 <RoomBundle>
元素使用 <RoomID>
和 <PackageID>
參照室和套件中繼資料。
針對每個 <Result>
,包含的 Room Bundle 組合會覆寫該屬性或行程組合的現有集合組合。如果您未在 <Result>
元素中定義任何 Room 套裝組合或房價特徵,系統就會移除所有 Room 套裝組合,且搜尋結果中只會顯示該飯店或行程的基本客房。
請務必使用 <Name>
等元素,讓 Room Bundle 更能吸引潛在顧客,並確保其與飯店的到達網頁一致。在這個範例中,您可以在中繼資料中定義名稱和其他描述性資訊。
<RatePlanID>
為選用項目,代表客房和套件組合的專屬 ID。我們強烈建議您使用 RatePlanID 做為變數,建立動態到達網頁 (舊稱 銷售點) 網址。詳情請參閱「使用變數和條件」。
Room 套裝組合中的選用元素如下:
<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>
如果在使用中帳戶中實作 Room Bundle,請在啟用 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>
定義會議室和套件中繼資料
如要定義 Room Bundle 中繼資料,請在交易訊息的 <PropertyDataSet>
元素中使用 <PackageData>
和 <RoomData>
元素。
您可以在交易訊息中定義客房和套件中繼資料,而不是在定價與空房資料。藉由事先定義這類資料,價格更新就不必包含重複資訊,例如說明、相片網址、設施,以及每個行程的每個房間或套件的其他資料。
Google 會為您儲存中繼資料,並在廣告顯示時插入該中繼資料。您可以透過新的交易訊息,隨時更新會議室和套件中繼資料。
在交易訊息中,您需要在價格更新的 <Result>
區塊中參照的各個區塊,設定套件 ID 和客房 ID。
如果房間和套件資料有所變更 (例如在屬性中新增房間類型),請傳送含有所更新房間和套件資料的新交易訊息,Google 會將房間或套件的現有中繼資料替換成新資料。
Google 建議您在初始設定期間定義中繼資料。定義中繼資料後,您只需在定價更新中參照 <RoomID>
和 <PackageID>
值即可,不必再次納入所有這些資訊。Google 會使用這些 ID 來比對房間和 Room Bundle 與儲存的中繼資料。這可大幅縮減交易訊息的整體大小。
由於客房或行程組合的價格變動比客房或套裝方案說明更頻繁,因此在定義中繼資料一次後參照,會更有效率地使用交易訊息。此外,透過中繼資料 (而非內嵌定義資料) 也可排除會議室說明不符的錯誤。
如要分別定義中繼資料和定價,建議且最有效率的方法如下:
<!-- 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 時,您必須瞭解「可住人數」和「可容納人數」之間的差異:
- 人員偵測狀態
- 要套用房型套裝組合的房客人數。舉例來說,「蜜月套裝方案」的「可住人數」為二。您可以使用
<PackageData>
或<RoomBundle>
元素的<Occupancy>
子項元素,設定套件的可住人數值。 - 發電量
- 房間可容納的人數上限。房間容量一律等於或高於可住人數。舉例來說,飯店中的「蜜月套裝行程」上限為六人,但您為兩名房客設定了套裝組合。您可以使用
<RoomData>
元素的<Capacity>
子項元素,設定套件的容量值。
為 Room 套裝組合定價時,您必須提供套裝組合的目標房客人數 (即套件的 <Occupancy>
元素中指定的值)。如果將 <Occupancy>
設為二,則該套件中的價格必須為兩位使用者。您無法將 <Occupancy>
設為四位訪客,以及為兩名房客設定套裝組合價格。
共用聊天室
您也能使用「房型套裝組合」中的可住人數和容量,設定共用客房住宿 (例如青年旅館) 的價格。舉例來說,如要為有 8 張床的宿舍房設定每人價格,請將可住人數設為 1
和 8
,並在 <RoomData>
名稱中以此類推。查看範例。
更新房型套裝組合
本節說明如何移除已無法使用的 Room Bundle,以及如何更新現有 Room 套裝組合的價格。
房型套裝組合移除
房型套裝組合與飯店價格不同,刪除方式而異。
如要從目錄中移除會議室或行程組合,請將 <Result>
元素的 <Baserate>
設為 -1
。如要移除特定會議室或行程的 Room Bundle,請從交易訊息的 <Result>
區塊中移除 <RoomBundle>
元素。
系統會將資料動態饋給中的 Room Bundle 視為一組集合,以 0 到 0 之間的數字表示。將 Room Bundle 傳送給 Google 需要傳送目前的完整組件。您無法變更個別 Room Bundle 的值,將先前可用的值標示為「無法使用」。最新交易訊息中的哪一組套件會取代目前的組合。
例如 A、B、C 和 D 套件。您會先傳送定義會議室組合 A、B、C 和 D 的訊息。如果之後組合 B 售罄,則只使用套裝組合 A、C 和 D 重新傳送整個組合。如果所有 Room 套裝組合均已售罄,請傳送一組空的 Room Bundle。
價格調整
如要變更房型套裝組合的價格,請在 <Result>
元素中設定新的 <Baserate>
。
每次在交易訊息中更新會議室/行程的 <Result>
區塊時,都必須為每個 <Result>
加入完整的可用 Room 套件組合。Google 會將現有的 Room Bundle 組合替換為新的組合。如果您沒有在 <Result>
中加入任何 Room Bundle,Google 就會移除該會議室或行程的所有 Room Bundle。
中繼資料更新
您將在 Google 回應 <Query>
時,更新 Room Bundle 中繼資料。
您以 Transaction 訊息回應 Query 訊息,該訊息定義了指定飯店的會議室和套件中繼資料。詳情請參閱「查詢訊息」。