Giá phòng có điều kiện là một loại quy tắc giá cho phép bạn cung cấp nhiều mức giá cho các hành trình, dựa trên các tiêu chí như thiết bị, quốc gia của người dùng hoặc việc liệu người dùng có đăng nhập vào Google hay không.
Khi bạn có nhiều mức giá công khai hoặc có điều kiện cho một hành trình hoặc Gói dịch vụ phòng, người dùng sẽ thấy mức giá thấp nhất. Google luôn chọn mức giá đủ điều kiện thấp nhất cho người dùng.
Tổng quan
Giá phòng có điều kiện sẽ xuất hiện trong những chỗ giới thiệu giá tiêu chuẩn và chỉ được giới thiệu cho những người dùng có nội dung tìm kiếm thỏa mãn các tiêu chí liên quan của giá phòng có điều kiện. Các tiêu chí này có thể dựa trên:
- Thiết bị của người dùng cuối
- Quốc gia của người dùng cuối
- Lựa chọn ngôn ngữ ưu tiên của người dùng cuối
- Một tập hợp con được giảm tần số lấy mẫu của tất cả người dùng
- Người dùng cuối có đăng nhập hay không
Để bật giá phòng có điều kiện, hãy sửa đổi các mục sau:
Tệp XML chứa các quy tắc giá: Xác định các điều kiện để áp dụng cho giá phòng có điều kiện.
Nguồn cấp dữ liệu giá: Sử dụng phần tử
<Rate>
trong thông báo Giao dịch để đặt mức giá.Tệp Trang đích: Thêm các giá trị riêng của quy tắc giá vào các đường liên kết sâu của bạn.
Giá phòng có điều kiện theo thiết bị
Giá phòng dành riêng cho thiết bị là giá khách sạn mà chỉ người dùng một thiết bị cụ thể mới có thể nhìn thấy và đặt trước được, chẳng hạn như thiết bị di động, máy tính bảng hoặc máy tính. Mức giá do các đối tác của Google cung cấp và người dùng cuối có thể xem và đặt phòng với giá bằng với giá phòng dành riêng cho thiết bị trên trang web của đối tác.
Giá phòng có điều kiện theo quốc gia
Giá phòng có điều kiện riêng cho từng quốc gia là giá khách sạn mà chỉ người dùng đang tìm kiếm khách sạn từ một quốc gia cụ thể mới có thể nhìn thấy và đặt trước được. Google xác định quốc gia bằng địa chỉ IP của người dùng cuối. Mức giá do các đối tác của Google cung cấp và người dùng cuối có thể xem và đặt phòng với giá bằng với giá phòng dành riêng cho quốc gia của họ trên trang web dành riêng cho quốc gia của đối tác.
Giá phòng có điều kiện theo ngôn ngữ
Giá phòng cho từng ngôn ngữ cụ thể chỉ hiển thị đến những người dùng tìm kiếm bằng một ngôn ngữ cụ thể trên Google. Điều kiện cho từng ngôn ngữ cụ thể được xác định bằng phần tử <LanguageCode>
.
Ngôn ngữ không được chỉ định trong thông báo yêu cầu Có truy vấn theo bối cảnh. Vì vậy, nếu bạn chỉ định <LanguageCode>
trong quy tắc giá, thì phản hồi With Context sẽ bao gồm tất cả các mức giá theo ngôn ngữ có liên quan.
Giá phòng có điều kiện áp dụng cho số lượng mẫu đã cắt giảm
Giá phòng có điều kiện áp dụng cho số lượng mẫu đã cắt giảm là mức giá chỉ được giới thiệu cho một nhóm người dùng được chọn ngẫu nhiên trong số toàn bộ những người dùng đủ điều kiện. Tốc độ lấy mẫu được xác định bằng phần tử <MaxUsersPercent>
và được tính theo công thức sau:
MaxUsersPercent = (number of users selected to view rate)/(total eligible users)
Giá phòng có điều kiện cho người dùng đã đăng nhập
Giá phòng có điều kiện cho người dùng đã đăng nhập chỉ được giới thiệu cho những người dùng đã đăng nhập bằng Tài khoản Google. Các đối tác của Google cung cấp giá và người dùng có thể xem và đặt phòng với giá đó trên trang web của đối tác. Giá phòng phải đăng nhập được xác định bằng phần tử <UserSignedIn>
.
Vì Google luôn chọn mức giá đủ điều kiện thấp nhất, nên nếu giá phòng có điều kiện cao hơn giá được đặt ở cấp <Result>
, thì giá phòng có điều kiện sẽ không bao giờ được chọn. Để tránh trường hợp này, hãy xoá giá ở cấp <Result>
và đặt điều kiện cho tất cả các mức giá. Ngoài ra, hãy hỏi Nhà quản lý tài khoản kỹ thuật của bạn về việc sử dụng quy tắc giá mặc định cho các mức giá đặt ở cấp <Result>
.
Tạo tệp XML về quy tắc giá
Bạn xác định quy tắc giá cho giá phòng có điều kiện bằng tệp XML về quy tắc giá. Để biết thêm thông tin, hãy xem Tài liệu tham khảo về quy tắc giá viết bằng XML.
Cập nhật nguồn cấp dữ liệu về giá
Bạn có thể đặt giá phòng có điều kiện bằng phần tử trong thông báo Giao dịch.
Phần tử <Rate>
cũng có thể được dùng làm nhiều phần tử con của <Rates>
trong phần tử <RoomBundle>
hoặc <Result>
. Để sử dụng giá này làm giá phòng có điều kiện, bạn phải đặt giá trị của thuộc tính rate_rule_id
khớp với mã quy tắc giá mà bạn đã xác định trong tệp XML về quy tắc giá.
Nếu bạn không có giá phòng công khai mặc định cho hai người, hãy đặt phần tử con <Baserate>
của thông báo <Result>
thành -1
. Những <Rates>
có điều kiện được gửi đến Google trong trường hợp này đều sẽ được coi là hợp lệ.
Ví dụ
Cơ sở + có điều kiện
Ví dụ sau đây thể hiện một thông báo Giao dịch chứa giá cơ sở và giá phòng có điều kiện:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
</Rate>
</Rates>
</Result>
</Transaction>
Đĩa đơn RoomBundle
Ví dụ sau đây cho thấy một thông báo Giao dịch chứa một mức giá duy nhất trong <RoomBundle>
:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">300.00</Baserate>
<Tax currency="USD">30.00</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomBundle>
<RoomID>single</RoomID>
<Baserate currency="USD">300.00</Baserate>
<Tax currency="USD">30.00</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</RoomBundle>
<RoomBundle>
<RoomID>3</RoomID> <!-- Links to data in metadata -->
<RatePlanID>basic</RatePlanID>
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<ChargeCurrency>web</ChargeCurrency>
<BreakfastIncluded>1</BreakfastIncluded>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">269.00</Baserate>
<Tax currency="USD">2.69</Tax>
<OtherFees currency="USD">1.00</OtherFees>
</Rates>
</Rates>
</RoomBundle>
</Result>
</Transaction>
RoomBundle nhiều
Ví dụ sau đây thể hiện một thông báo Giao dịch chứa nhiều giá trong một <RoomBundle>
:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</Nights>
<!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</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>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides ChargeCurrency from roombundle. -->
<ChargeCurrency>hotel</ChargeCurrency>
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">268.33</Baserate>
<Tax currency="USD">26.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>
Không có phòng đôi công khai
Ví dụ sau đây thể hiện một thông báo Giao dịch chứa giá phòng có điều kiện khi không có giá phòng hai người công khai:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<!-- <Unavailable/> should not be specified when available nested rates
exist. -->
<Baserate currency="USD">-1</Baserate>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates. -->
<Rate rate_rule_id="mobile">
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Custom1>ratecode123</Custom1>
</Rate>
</Rates>
</Result>
</Transaction>
Cập nhật tệp trang đích
Để đảm bảo rằng người dùng cuối đủ điều kiện có thể đặt phòng với mức giá chiết khấu bằng một đường liên kết sâu, hãy chỉnh sửa tệp Trang đích. Bạn cũng có thể cần phải triển khai thêm trên trang web đặt phòng để hiển thị và đáp ứng đúng mức giá chiết khấu.
Chúng tôi mong rằng các đối tác sẽ chấp nhận mức giá trên đường liên kết sâu của giá phòng có điều kiện.
Trong một đường liên kết sâu linh động, bạn có thể đưa quy tắc giá vào theo tên, thuộc tính id
của phần tử <RateRule>
, kèm với biến RATE-RULE-ID
.
Ví dụ sau đây sẽ thêm mã quy tắc giá:
https://bookingsite.com/landing.do?id=(PARTNER-HOTEL-ID)&arrival=(CHECKINDAY)-(CHECKINMONTH)-(CHECKINYEAR)&departure=(CHECKOUTDAY)-(CHECKOUTMONTH)-(CHECKOUTYEAR)&lang=(USER-LANGUAGE)¤cy=(USER-CURRENCY)&prid=(RATE-RULE-ID)
Tệp Trang đích cũng hỗ trợ lệnh IF-RATE-RULE-ID
cho phép bạn dùng điều kiện để xác định các phần của URL, tuỳ vào việc có tồn tại quy tắc giá hay không:
https://bookingsite.com/(IF-RATE-RULE-ID)privatelanding.do(RATE-RULE-ID)(ELSE)landing.do(ENDIF)?id=(PARTNER-HOTEL-ID)&arrival=(CHECKINDAY)-(CHECKINMONTH)-(CHECKINYEAR)&departure=(CHECKOUTDAY)-(CHECKOUTMONTH)-(CHECKOUTYEAR)&lang=(USER-LANGUAGE)¤cy=(USER-CURRENCY)
Ví dụ này lựa chọn một trong hai trang đích, tuỳ thuộc vào việc có đặt mã quy tắc giá hay không.
Để biết thêm thông tin, hãy xem phần Sử dụng biến và điều kiện.