Gói dịch vụ phòng

Gói dịch vụ phòng giúp bạn xác định nhiều loại phòng cho một cơ sở lưu trú, hoặc kết hợp hành trình của một phòng với các dịch vụ bổ sung và điều kiện bán cho người dùng 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

Với Gói dịch vụ phòng, bạn có thể kết hợp thêm nhiều loại phòng thực tế với nhiều gói dịch vụ.

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 dành cho thiết bị di động của các gói phòng, bao gồm tất cả các loại phòng cho số người lưu trú bắt buộc 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 chịu sự điều chỉnh của quy trình lựa chọn giống như giá phòng tiêu chuẩn.

Gói dịch vụ Room

Bạn sẽ xác định Gói dịch vụ phòng và dịch vụ theo giá trong 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 đơn giá bằng thẻ <PackageData> trong phần tử <PropertyDataSet>. Để biết thêm thông tin, hãy xem bài viết Xác định siêu dữ liệu về phòng và gói dịch vụ. 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 hà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 những thông tin này không được sử dụng cùng Gói dịch vụ phòng. Bạn có thể xoá các khoản phí này khi sử dụng cùng Gói dịch vụ phòng. Nếu bạn đang triển khai Gói Room bằng tài khoản đang hoạt động, hãy làm theo các bước sau:

  1. 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.

  2. 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.

  3. 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><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 các phần tử <RoomData><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 cụ thể để 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><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 căn phòng hoặc cho Gói dịch vụ phòng, Google sẽ đưa cả hai dữ liệu này vào kết quả quảng cáo và các dữ liệu này được phân tách bằng dấu gạch ngang.

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à ảnh giường, toàn bộ phòng, phòng tắm, không gian sinh hoạt và khung cảnh nhìn từ phòng (có cả phần còn lại của phòng trong cùng một bức ảnh) và ban công, sân hiên hoặc sân vườ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 khác biệt của phòng.

  • Tránh dùng ảnh chụp người và tài sản, chẳng hạn như ngoại thất hoặc tiện nghi của cơ sở lưu trú, ngắm cảnh/du lịch và thức ăn.

  • Tránh chụp cận cảnh các vật thể, chẳng hạn như cận cảnh ly có chân.

  • Tránh sử dụng thương hiệu và nhãn hiệu, mặc dù bạn có thể đưa đồ dùng vệ sinh có nhãn hoặc thương hiệu vào ảnh chụp toàn bộ khu vực phòng tắm. Ảnh không được chứa các khối văn bản, biểu trưng hoặc hình mờ lớn.

  • 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.

Thứ tự ư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:

  1. (Thấp nhất) Dữ liệu của đối tác
  2. Dữ liệu của cơ sở lưu trú
  3. <RoomData>, trong đó <RoomID> khớp với <RoomID> trong khối <RoomBundle>
  4. <PackageData>, trong đó <PackageID> khớp với <PackageID> trong khối <RoomBundle>
  5. (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 của mỗi kiểu kết hợp gói hoặc hành trình. Phần tử <RoomBundle> phải nằm trong phần tử <Result>. Mã mẫu cho hai phần tử <RoomBundle> được trình bày ở phầ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><PackageID>.

Đối với mỗi <Result>, nhóm Gói dịch vụ phòng chứa trong phần tử này sẽ ghi đè lên nhóm hiện có đối với kiểu kết hợp cơ sở lưu trú hoặc hành trình đó. 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.

Đừng quên sử dụng các phần tử như <Name> để giúp Gói phòng thu hút nhiều khách hàng tiềm năng hơn và đảm bảo các gói này 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à phần tử không bắt buộc và đại diện cho giá trị nhận dạng duy nhất của một kiểu kế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 phòng trong một tài khoản đang hoạt động, hãy xoá <Baserate> sau khi bật Gói 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><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 một 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ẽ giúp bạn lưu trữ và chèn siêu dữ liệu vào quảng cáo khi quảng cáo hiển thị. 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 sẽ đặt một mã gói dịch vụ và một mã phòng trong mỗi khối mà sau đó bạn sẽ tham chiếu trong các 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 cơ sở lưu trú), hãy gửi một thông báo Giao dịch mới có chứa dữ liệu về phòng và gói dịch vụ đã cập nhật. Google sẽ thay thế siêu dữ liệu hiện có về một 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><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 dữ liệu về phòng và Gói dịch vụ phòng với siêu dữ liệu đã lưu. Cách 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 các tổ hợp phòng hoặc hành trình thay đổi thường xuyên hơn nhiều so với nội dung 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 tham chiếu đến đó là cách sử dụng thông báo Giao dịch hiệu quả hơn nhiều. 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.

Phương thức nên dùng và hiệu quả nhất để xác định riêng lẻ siêu dữ liệu và giá được trình bày dưới đây:

<!-- 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ố người lưu trú 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ú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à hai người. Bạn đặt giá trị cho số người lưu trú của một gói dịch vụ bằng cách sử dụng phần tử con <Occupancy> của phần tử <PackageData> hoặc <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ụ: &quot;Phòng trăng mật sang trọng&quot; của khách sạn có sức chứa tối đa là sáu người, nhưng bạn định giá một gói dịch vụ là cho hai khách. Bạn đặt giá trị sức chứa của một gói dịch vụ 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à bốn khách nhưng đặt giá của gói là cho hai khách được.

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 nữa và cách cập nhật giá cho 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 và giá khách sạn khác nhau ở cách 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 của một phòng hoặc hành trình cụ thể, 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 được thay đổi giá trị của một Gói dịch vụ phòng để đánh dấu Gói dịch vụ phòng trước đó là không cung cấp nữa. Nhóm gói dịch vụ chứa 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 dịch vụ 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 đều đã bán hết, hãy gửi một nhóm Gói dịch vụ phòng rỗng.

Hệ số đ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 nhập một nhóm đầ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 đưa Gói dịch vụ phòng nào vào <Result>, thì Google sẽ xoá tất cả các Gói dịch vụ phòng đối với phòng hoặc hành 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 phản hồi <Query> của Google.

Bạn sẽ trả lời thông báo Truy vấn bằng thông báo Giao dịch nhằm xác định siêu dữ liệu về phòng và gói dịch vụ của các khách sạn được chỉ định. Để biết thêm thông tin, hãy xem bài viết Thông báo truy vấn.