Gói dịch vụ phòng cho phép bạn xác định nhiều loại phòng cho một cơ sở lưu trú duy nhất, hoặc kết hợp lịch đặt phòng của một phòng có dịch vụ theo đơn giá (các dịch vụ bổ sung có giá và điều kiện bán) cho người dùng của bạn, với mức giá khác mức giá tiêu chuẩn.
Các khái niệm chính và quy trình công việc
Gói dịch vụ phòng cho phép bạn kết hợp các loại phòng thực tế với các gói dịch vụ khác nhau.
Ví dụ
Các hình ảnh sau đây minh hoạ ví dụ về gói Room trong máy tính và thiết bị di động:
Gói dịch vụ phòng có hình ảnh
Ví dụ này là phiên bản Gói dịch vụ Phòng dành cho thiết bị di động, bao gồm tất cả các loại phòng khác nhau cho số lượng người lưu trú cần thiết và hình ảnh phòng tương ứng.
Lưu ý: Gói dịch vụ phòng không có hình ảnh sẽ được thay thế bằng hình ảnh phần giữ chỗ cho giường.
Dịch vụ xếp hạng
Dưới đây là hình ảnh minh hoạ về các dịch vụ theo đơn giá:
Việc đăng các Gói dịch vụ phòng và dịch vụ theo đơn giá trong kết quả tìm kiếm cũng phải trải qua quy trình chọn lọc như việc đăng giá phòng tiêu chuẩn.
Gói dịch vụ phòng
Bạn sẽ xác định Gói dịch vụ phòng và dịch vụ theo đơn giá trong phần thông báo Giao dịch. Thành phần gốc của thông báo Giao dịch là <Transaction>
.
Cấu trúc của thông báo Giao dịch tuỳ thuộc vào mục đích của bạn: xác định siêu dữ liệu cho Gói dịch vụ phòng hoặc dịch vụ theo đơn giá, hoặc cập nhật thông tin về giá hoặc tình trạng phòng của Gói dịch vụ phòng.
- Metadata
- Xác định siêu dữ liệu về Gói dịch vụ phòng và dịch vụ theo giá bằng
<PackageData>
trong phần tử<PropertyDataSet>
. Để biết thêm thông tin, hãy xem phần Xác định siêu dữ liệu về phòng và gói. Gói dịch vụ phòng sử dụng các phần tử<RoomData>
hiện có để lấy thông tin mô tả về căn phòng thực tế. - Mức giá và tình trạng còn phòng
- Xác định giá của Gói dịch vụ phòng và tình trạng phòng bằng phần tử
<RoomBundle>
trong<Result>
của mỗi kiểu kết hợp gói dịch vụ/hành trình. Để biết thêm thông tin, hãy xem phần Xác định giá và tình trạng còn phòng.
Giá, thuế và các khoản phí khác của phòng cơ bản là bắt buộc trong <Result>
khi không được sử dụng với Gói dịch vụ phòng và có thể bị xoá khi được sử dụng với Gói dịch vụ phòng. Nếu bạn đang triển khai Gói dịch vụ phòng bằng tài khoản trực tiếp, hãy làm theo các bước sau:
Thêm giá, thuế và các khoản phí khác của phòng cơ bản vào
<Result>
, đồng thời thêm một Gói dịch vụ phòng khớp với Gói dịch vụ phòng cơ bản.Nếu cần, hãy xác định thêm các Gói dịch vụ phòng trong cùng một khối
<Result>
cho các loại phòng khác tại cùng khách sạn hoặc các gói dịch vụ khác.Sau khi ra mắt Gói dịch vụ phòng, hãy xoá giá, thuế và các khoản phí khác của phòng cơ bản.
Siêu dữ liệu của Gói dịch vụ phòng
Khi xác định Gói dịch vụ phòng và dịch vụ theo đơn giá, bạn thường phải xác định trước thông tin mô tả, các dịch vụ bổ sung trong đơn giá đó và các thông tin khác về Gói dịch vụ phòng. Thông tin này được gọi là siêu dữ liệu của Gói dịch vụ phòng. Sau đó, bạn hãy tham chiếu siêu dữ liệu này trong thông tin cập nhật về giá, nhưng đừng đưa siêu dữ liệu này vào thông báo cập nhật về giá.
Khi bạn xác định Gói dịch vụ phòng, hãy sử dụng các phần tử <RoomData>
hiện có cho thông tin mô tả về căn phòng thực tế và các phần tử <PackageData>
cho các dịch vụ theo đơn giá và những điều khoản không liên quan đến thông tin mô tả của căn phòng thực tế.
Việc sử dụng các phần tử <RoomData>
và <PackageData>
có thể làm giảm đáng kể kích thước của Danh sách khách sạn và của Nguồn cấp dữ liệu giá khách sạn vì các phần tử này giúp giảm lượng dữ liệu lặp lại được gửi đến các thông báo Giao dịch.
Ví dụ: Những dữ liệu như tên phòng và nội dung mô tả thường lặp lại cho mỗi hành trình. Bạn có thể sử dụng phần tử <RoomData>
và <PackageData>
để xác định loại dữ liệu này một lần. Sau đó, dữ liệu Gói dịch vụ phòng của hành trình sẽ được hợp nhất với các định nghĩa về phòng và gói dịch vụ đã lưu trữ để hiển thị cho người dùng cuối.
Google sẽ so khớp siêu dữ liệu của bạn với dữ liệu của hành trình để hiển thị nội dung quảng cáo của bạn. Một quá trình xử lý đặc biệt được dùng để kết hợp tên và thông tin mô tả từ các phần tử <RoomData>
và <PackageData>
, cho phép căn phòng thực tế có thể được mô tả trong <RoomData>
còn các tính năng theo đơn giá và thông tin về gói dịch vụ được mô tả trong <PackageData>
.
Nếu bạn xác định cả dữ liệu về phòng và dữ liệu về gói dịch vụ cho một phòng hoặc Gói dịch vụ phòng, thì Google sẽ đưa cả hai dữ liệu này vào kết quả quảng cáo và được phân tách bằng dấu gạch nối.
Nguyên tắc về ảnh
Khi gửi ảnh phòng, bạn nên làm theo một số nguyên tắc sau để đảm bảo ảnh của bạn hiển thị với người dùng:
Gửi ảnh cho từng loại phòng, bao gồm cả ảnh phòng dành cho người khuyết tật, ví dụ: phòng dành cho người khuyết tật được chỉ định với nhiều thiết bị phòng tắm, chẳng hạn như vòi sen dành cho người khuyết tật.
Thêm ít nhất 4 ảnh về phòng và ít nhất 1 ảnh về phòng tắm.
Ảnh phải chụp chính phòng đó chứ không phải cơ sở lưu trú. Những bức ảnh quan trọng nhất là về giường, toàn bộ phòng, phòng tắm, không gian sinh hoạt và tầm nhìn từ trong phòng (với phần còn lại của phòng trong cùng một ảnh) và ban công, sân trong hoặc sân hiên (nếu có).
Bạn cũng nên chụp ảnh bàn làm việc, bếp, máy pha cà phê/trà và các đặc điểm riêng biệt trong phòng.
Tránh đăng ảnh người và tài sản (ví dụ: bên ngoài hoặc tiện nghi của tài sản), hoạt động tham quan/du lịch và đồ ăn.
Tránh chụp cận cảnh các vật thể, chẳng hạn như cận cảnh phần mềm gốc.
Tránh sử dụng thương hiệu và thương hiệu, mặc dù đồ vệ sinh cá nhân có gắn nhãn hoặc có thương hiệu cũng có thể được đưa vào ảnh chụp toàn bộ khu vực phòng tắm. Ảnh không nên có khối văn bản lớn, biểu trưng hoặc hình mờ.
Cung cấp ảnh chuẩn, ngang (ngang) với trường nhìn rộng; tránh ảnh mắt cá và ảnh bị méo. Chụp ảnh ở độ phân giải cao nhất để cải thiện thứ hạng. Bạn không cần gửi cùng một ảnh có độ phân giải khác nhau.
Mức độ ưu tiên của dữ liệu
Dữ liệu về Gói dịch vụ phòng được thu thập từ tất cả các nguồn và tổng hợp lại bằng các quy tắc ưu tiên để tạo ra dữ liệu cuối cùng cho một khách sạn, hành trình và Gói dịch vụ phòng nhất định. Thứ tự ưu tiên từ thấp nhất đến cao nhất như sau:
- (Thấp nhất) Dữ liệu của đối tác
- Dữ liệu tài sản
<RoomData>
, trong đó<RoomID>
khớp với<RoomID>
trong khối<RoomBundle>
<PackageData>
, trong đó<PackageID>
khớp với<PackageID>
trong khối<RoomBundle>
- (Cao nhất)
<RoomBundle>
Xác định giá và tình trạng còn hàng
Để xác định giá và tình trạng phòng của Gói dịch vụ phòng, hãy sử dụng phần tử <RoomBundle>
trong thông báo Giao dịch cho từng tổ hợp gói hoặc hành trình. Phần tử <RoomBundle>
phải nằm trong phần tử <Result>
. Bạn có thể xem mã mẫu cho 2 phần tử <RoomBundle>
ở bên dưới. Xin lưu ý rằng trong ví dụ này, 2 phần tử <RoomBundle>
tham chiếu siêu dữ liệu về phòng và gói dịch vụ bằng <RoomID>
và <PackageID>
.
Đối với mỗi <Result>
, nhóm Gói dịch vụ phòng chứa trong đó sẽ ghi đè nhóm hiện có đối với tổ hợp hành trình hoặc cơ sở lưu trú đó. Nếu bạn không xác định bất kỳ Gói dịch vụ phòng hoặc dịch vụ theo đơn giá nào trong phần tử <Result>
, thì tất cả các Gói dịch vụ phòng sẽ bị xoá và chỉ có phòng cơ bản của khách sạn hoặc hành trình đó mới xuất hiện trong kết quả tìm kiếm.
Hãy nhớ sử dụng các phần tử như <Name>
để làm cho Gói dịch vụ phòng của bạn trở nên hấp dẫn hơn đối với khách hàng tiềm năng và đảm bảo chúng khớp với trang đích của khách sạn. Trong ví dụ này, bạn sẽ xác định tên và các thông tin mô tả khác trong siêu dữ liệu.
<RatePlanID>
là thuộc tính không bắt buộc và đại diện cho giá trị nhận dạng duy nhất của một tổ hợp phòng và gói dịch vụ. Bạn nên dùng RatePlanID làm biến để tạo URL cho trang đích động (trước đây gọi là Điểm bán hàng). Để biết thông tin chi tiết, hãy xem bài viết Sử dụng biến và điều kiện.
Các phần tử sau đây là không bắt buộc trong Gói dịch vụ phòng:
<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>
Khi bạn triển khai Gói dịch vụ phòng trong một tài khoản đang hoạt động, hãy xoá <Baserate>
sau khi bật Gói dịch vụ phòng.
<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>
Xác định siêu dữ liệu của phòng và gói dịch vụ
Để xác định siêu dữ liệu của Gói dịch vụ phòng, hãy sử dụng phần tử <PackageData>
và <RoomData>
bên trong phần tử <PropertyDataSet>
của thông báo Giao dịch.
Bạn sẽ xác định siêu dữ liệu về phòng và gói dịch vụ trong thông báo Giao dịch tách biệt với dữ liệu về giá và tình trạng phòng. Bằng cách xác định trước dữ liệu này, thông tin cập nhật về giá của bạn sẽ không cần phải chứa những thông tin lặp lại như thông tin mô tả, URL của ảnh, tiện nghi và những dữ liệu khác của mỗi phòng hoặc gói dịch vụ cho mỗi hành trình.
Google sẽ lưu trữ siêu dữ liệu cho bạn và chèn siêu dữ liệu này vào quảng cáo của bạn khi siêu dữ liệu xuất hiện. Bạn có thể cập nhật siêu dữ liệu về phòng và gói dịch vụ bất cứ lúc nào bằng thông báo Giao dịch mới.
Trong thông báo Giao dịch, bạn đặt mã gói và mã phòng trên mỗi khối mà sau đó bạn sẽ tham chiếu trong khối <Result>
của thông tin cập nhật về giá.
Nếu dữ liệu về phòng và gói dịch vụ thay đổi (ví dụ: nếu bạn thêm một loại phòng mới vào một cơ sở lưu trú, hãy gửi thông báo Giao dịch mới chứa dữ liệu về phòng và gói dịch vụ đã cập nhật), thì Google sẽ thay thế siêu dữ liệu hiện có về phòng hoặc gói dịch vụ bằng dữ liệu mới.
Bạn nên xác định siêu dữ liệu trong quá trình thiết lập ban đầu. Sau khi xác định trước siêu dữ liệu, bạn chỉ cần tham chiếu các giá trị <RoomID>
và <PackageID>
trong thông tin cập nhật về giá thay vì phải thêm lại toàn bộ các thông tin đó. Google sẽ dùng các mã đó để so khớp phòng và Gói dịch vụ phòng với siêu dữ liệu đã lưu trữ. Điều này có thể làm giảm đáng kể kích thước tổng thể của thông báo Giao dịch.
Vì giá của mỗi kiểu kết hợp phòng hoặc hành trình thay đổi thường xuyên hơn rất nhiều so với thông tin mô tả về phòng hoặc gói dịch vụ, nên việc xác định siêu dữ liệu một lần rồi sau đó xem xét lại là một cách sử dụng thông báo Giao dịch hiệu quả hơn. Ngoài ra, việc sử dụng siêu dữ liệu thay vì xác định dữ liệu trực tiếp có thể loại bỏ được những lỗi như thông tin mô tả phòng không khớp với nhau.
Dưới đây là phương thức nên dùng và hiệu quả nhất để xác định riêng siêu dữ liệu và giá:
<!-- 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>
Sức chứa và sức chứa
Khi xác định Gói dịch vụ phòng, bạn phải hiểu sự khác biệt giữa số người lưu trú và sức chứa:
- Số người lưu trú
- Số lượng khách lưu trú mà bạn muốn áp dụng cho Gói dịch vụ phòng. Ví dụ: "Gói tuần trăng mật" có số người lưu trú là 2. Bạn đặt giá trị cho số người lưu trú của một gói dịch vụ phòng bằng phần tử con
<Occupancy>
của phần tử<PackageData>
hoặc của phần tử<RoomBundle>
. - Công suất
- Số người tối đa mà một phòng có thể chứa được trên thực tế. Sức chứa tối đa của một căn phòng sẽ luôn bằng hoặc cao hơn sức chứa. Ví dụ: "Gói tuần trăng mật" trong khách sạn của bạn có sức chứa tối đa là 6 người, nhưng bạn định giá một gói cho hai khách. Bạn đặt giá trị dung lượng của một gói bằng cách sử dụng phần tử con
<Capacity>
của phần tử<RoomData>
.
Khi định giá cho một Gói dịch vụ phòng, bạn phải cung cấp giá tương ứng với số lượng khách sẽ chứa trong gói đó (giá trị được xác định trong phần tử <Occupancy>
của gói). Nếu bạn đặt <Occupancy>
là hai, thì giá trong gói dịch vụ đó phải dành cho hai người. Bạn không thể đặt <Occupancy>
là 4 khách và đặt giá của gói là cho 2 khách.
Phòng chung
Bạn cũng sử dụng các giá trị Sức chứa và Sức chứa tối đa trong Gói dịch vụ phòng để định giá cho các cơ sở lưu trú có phòng dùng chung, ví dụ: nhà nghỉ. Ví dụ: Để đặt giá theo người cho một phòng ở tập thể có 8 giường, bạn sẽ đặt Số người lưu trú là 1
, Sức chứa tối đa là 8
và xác định giá trị như vậy trong tên của <RoomData>
. Xem ví dụ.
Cập nhật gói dịch vụ Room
Phần này mô tả cách xoá Gói dịch vụ phòng không còn được cung cấp và cách cập nhật giá của một Gói dịch vụ phòng hiện có.
Xoá gói dịch vụ phòng
Gói dịch vụ phòng khác với giá khách sạn ở cách bạn xoá.
Để xoá một tổ hợp phòng hoặc hành trình khỏi quỹ phòng, bạn cần đặt <Baserate>
của phần tử <Result>
thành -1
. Để xoá Gói dịch vụ phòng cho một phòng hoặc lịch trình nhất định, hãy xoá phần tử <RoomBundle>
khỏi khối <Result>
trong thông báo Giao dịch.
Các Gói dịch vụ phòng trong nguồn cấp dữ liệu của bạn được coi là một nhóm, với số lượng từ 0 đến hàng chục gói. Khi gửi Gói dịch vụ phòng cho Google, bạn sẽ gửi toàn bộ nhóm hiện tại. Bạn không thay đổi giá trị của một Gói dịch vụ phòng riêng lẻ để đánh dấu một Gói dịch vụ phòng trước đó là không còn phòng. Nhóm gói dịch vụ trong thông báo Giao dịch gần đây nhất sẽ thay thế cho nhóm hiện tại.
Ví dụ: có các gói A, B, C và D. Ban đầu, bạn gửi thông báo xác định tập hợp các gói dịch vụ phòng A, B, C và D. Sau đó, nếu gói B đã bán hết, bạn sẽ chỉ gửi lại toàn bộ tập hợp kèm theo các gói A, C và D. Nếu tất cả các Gói dịch vụ phòng đã bán hết, hãy gửi một tập trống các Gói dịch vụ phòng.
Mức điều chỉnh giá
Để thay đổi giá của Gói dịch vụ phòng, hãy đặt <Baserate>
mới trong phần tử <Result>
.
Mỗi lần cập nhật khối <Result>
của một phòng/hành trình trong thông báo Giao dịch, bạn phải thêm một tập hợp đầy đủ các Gói dịch vụ phòng có sẵn cho mỗi <Result>
. Google sẽ thay thế nhóm Gói dịch vụ phòng hiện có bằng nhóm mới. Nếu bạn không có Gói dịch vụ phòng nào trong <Result>
, thì Google sẽ xoá tất cả Gói dịch vụ phòng của phòng hoặc lịch trình đó.
Cập nhật siêu dữ liệu
Bạn cập nhật siêu dữ liệu của Gói dịch vụ phòng bằng cách phản hồi <Query>
từ Google.
Bạn sẽ trả lời thông báo Truy vấn bằng thông báo Giao dịch xác định siêu dữ liệu phòng và gói dịch vụ cho các khách sạn nhất định. Để biết thêm thông tin, hãy xem bài viết Thông báo truy vấn.