你可以運用房型套裝組合為單一房源定義多個房型,也能將房型的行程與其他服務及銷售條件相互搭配,而不僅限於標準價格。
重要概念和工作流程
透過房型套裝組合,你可以提供更多實體房型組合,並搭配不同的服務套裝方案。
範例
下圖顯示電腦和行動裝置上的 Room 套裝組合範例:
含圖片的房型套裝組合
這個範例是行動版的房型套裝組合,其中包含所有房型類型、所需入住人數,以及各房型的圖片。
注意:如果房型套裝組合沒有圖片,系統會以床的預留位置圖片取代。
費率功能
下方圖片顯示費率功能的範例:
在搜尋結果中顯示房型套裝組合和房價功能時,會採用與標準房價相同的選取程序。
房型套裝組合
您可以在交易訊息中定義房型套裝組合和費率功能。交易訊息的根元素為 <Transaction>
。
交易訊息的結構取決於你要執行的操作:定義房型套裝組合或房價功能的中繼資料,或是更新房型套裝組合的價格或供應情形。
- 中繼資料
- 請在
<PropertyDataSet>
元素中使用<PackageData>
定義房型套裝組合和費率功能中繼資料。詳情請參閱「定義會議室和套件中繼資料」。房型套裝組合會使用現有的<RoomData>
元素來描述實體房間。 - 價格與空房資訊
- 針對每個套裝/行程組合,在
<Result>
中使用<RoomBundle>
元素定義房型套裝組合的價格和供應情形。詳情請參閱「定義價格和供應情形」。
在 <Result>
中,如果未與房型套裝組合一起使用,則必須提供房價、稅金和其他費用,但如果與房型套裝組合一起使用,則可以移除。如果您要使用實際帳戶導入 Room 套件,請按照下列步驟操作:
在
<Result>
下方加入基本房價、稅金和其他費用,並新增與基本房型套裝組合相符的房型套裝組合。如有需要,請在該屬性或不同服務套件的相同
<Result>
區塊中,定義額外的 Room Bundle。推出房型套裝組合後,請移除房價、稅金和其他費用。
房型套裝組合中繼資料
定義房型套裝組合和房價功能時,通常會先定義說明、房價中的額外服務,以及其他房型套裝組合相關資訊。這項資訊稱為 Room Bundle 中繼資料。接著,您會在價格更新時參照這些中繼資料,但不包括在價格更新訊息中加入中繼資料。
定義房型套裝組合時,請使用現有的 <RoomData>
元素來描述實體房型,並使用 <PackageData>
元素來描述價格功能和條款,這些內容不屬於實體房型說明。
使用 <RoomData>
和 <PackageData>
元素可大幅縮減飯店清單和飯店價格動態饋給的大小,因為可減少交易訊息中傳送的重複資料數量。
舉例來說,每個行程通常都會重複使用房間名稱和說明等資料。您可以使用 <RoomData>
和 <PackageData>
元素定義這類資料一次,接著,行程專屬的 Room Bundle 資料會與儲存的房間和套件定義合併,以便向使用者顯示。
Google 會將中繼資料與行程專屬資料進行比對,以顯示廣告內容。系統會特別處理 <RoomData>
和 <PackageData>
元素中的名稱和說明,讓實體房間可在 <RoomData>
中說明,而費率功能和套裝組合詳細資料則可在 <PackageData>
中說明。
如果您為單一房間或房間套裝組合定義房間資料和套裝組合資料,Google 會將兩者納入廣告輸出內容,並以連字號分隔。
相片指南
傳送房間相片時,請遵循下列規範,確保使用者能看到相片:
傳送各房型相片,包括無障礙房間的相片,例如設有各種衛浴設備 (例如無障礙淋浴間) 的指定無障礙房間。
至少提供四張房間相片和一張浴室相片。
相片應是房間本身,而非房源。最重要的相片包括床、整個房間、浴室、起居空間,以及房內景觀 (同一張相片中包含房內其他部分),以及陽台、中庭或露台 (如有)。
另外,也建議拍攝書桌、廚房、咖啡/茶壺和客房獨特特色的照片。
請勿使用人物和房產的相片,例如外觀或房產設施、觀光景點/旅遊景點和食物。
避免拍攝物體的特寫鏡頭,例如酒杯的特寫鏡頭。
請避免使用品牌名稱和品牌,但如果盥洗用品有標示或品牌,可以在拍攝整個浴室區域時納入其中。相片不應有大量的文字、標誌或浮水印。
提供標準的橫向 (水平) 相片,確保視野夠寬闊;避免使用魚眼鏡頭拍攝相片,或拍出變形的相片。請以最高解析度拍攝相片,以便提升排名。您不需要以不同解析度提交同一張相片。
資料優先順序
系統會從所有來源收集 Room Bundle 資料,並根據優先順序規則合併資料,產生特定飯店、行程和 Room Bundle 的最終資料。順序如下 (從最低到最高優先順序排列):
- (最低) 合作夥伴資料
- 資源資料
<RoomData>
,其中<RoomID>
與<RoomBundle>
區塊中的<RoomID>
相符<PackageData>
,其中<PackageID>
與<RoomBundle>
區塊中的<PackageID>
相符- (最高)
<RoomBundle>
定義價格和供應情形
如要定義房型套裝組合的價格和供應情形,請在每個套裝行程組合交易訊息中使用 <RoomBundle>
元素。<RoomBundle>
元素應位於 <Result>
元素內。以下顯示兩個 <RoomBundle>
元素的程式碼範例。請注意,在這個範例中,兩個 <RoomBundle>
元素會使用 <RoomID>
和 <PackageID>
參照房間和套件中繼資料。
對於每個 <Result>
,內含的房型套裝組合會覆寫該房源或行程組合的現有組合。如果您未在 <Result>
元素中定義任何房型組合或費率功能,系統會移除所有房型組合,搜尋結果中只會顯示該飯店或行程的基本房型。
請務必使用 <Name>
等元素,讓房型套裝組合更吸引潛在客戶,並確保套裝組合與飯店的到達網頁相符。在這個範例中,您會在中繼資料中定義名稱和其他說明資訊。
<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>
可住人數和容量
定義房型套裝組合時,請務必瞭解入住人數和容量的差異:
- 可住人數
- 房型套裝組合適用的房客人數。舉例來說,「蜜月套裝方案」的住宿人數為兩人。您可以使用
<PackageData>
或<RoomBundle>
元素的<Occupancy>
子項元素,設定套件的可住人數值。 - 容量
- 房間可容納的人數上限。房間容量一律等於或高於可住人數。舉例來說,飯店中的「蜜月套裝行程」上限為六人,但您為兩名房客設定了套裝組合。您可以使用
<RoomData>
元素的<Capacity>
子項元素,設定套件的容量值。
為 Room 套裝組合定價時,您必須提供套裝組合的目標房客人數 (即套件的 <Occupancy>
元素中指定的值)。如果 <Occupancy>
設為兩個,則該套裝行程的價格必須是兩人價格。您無法將 <Occupancy>
設為四位房客,並將套裝組合的價格設為兩位房客。
共用客房
你也可以在房型套裝組合中使用住房人數和人數上限,設定共用房型住宿的價格,例如青年旅館。舉例來說,如要為有 8 張床的宿舍房設定每人價格,請將可住人數設為 1
和 8
,並在 <RoomData>
名稱中以此類推。查看範例。
更新房型套裝組合
本節說明如何移除已下架的房型套裝組合,以及如何更新現有房型套裝組合的價格。
移除房型套裝組合
房型套裝組合與飯店房價的移除方式不同。
如要從商品目錄中移除房型或行程組合,請將 <Result>
元素的 <Baserate>
設為 -1
。如要移除特定會議室或行程的 Room Bundle,請從交易訊息的 <Result>
區塊中移除 <RoomBundle>
元素。
資料動態饋給中的房型套裝組合視為一組,數量介於 0 到數十之間。將 Room Bundle 傳送給 Google 需要傳送目前的完整組件。您不會變更個別房型套裝組合的值,將先前可用的房型標示為無法使用。最新的交易訊息中包含的任何套裝組合都會取代目前的組合。
舉例來說,有 A、B、C 和 D 等套裝組合。您首先傳送訊息,定義房間組合 A、B、C 和 D。日後,如果套裝組合 B 售罄,您只需重新傳送套裝組合 A、C 和 D 即可。如果所有 Room 套裝組合均已售罄,請傳送一組空白的 Room Bundle。
價格調整
如要變更房型套裝組合的價格,請在 <Result>
元素中設定新的 <Baserate>
。
每次在交易訊息中更新房間/行程的 <Result>
區塊時,都必須為每個 <Result>
提供完整的房間套裝組合。Google 會將現有的 Room 套裝組合取代為新套裝組合。如果您未在 <Result>
中加入任何房型套裝組合,Google 會移除該房型或行程的所有房型套裝組合。
中繼資料更新
您可以透過回應 Google 的 <Query>
,更新 Room 套件中繼資料。
您以 Transaction 訊息回應 Query 訊息,該訊息定義了指定飯店的會議室和套件中繼資料。詳情請參閱「查詢訊息」。