Pakiety

Pakiety pokoi umożliwiają zdefiniowanie wielu typów pokoi w jednym obiekcie lub połączenie planu pobytu z ceną z dodatkowymi usługami, które są dostępne w ramach ceny i warunków sprzedaży, i zaoferowanie ich użytkownikom zamiast standardowej ceny.

Kluczowe pojęcia i proces

Dzięki pakietom pokoi możesz oferować dodatkowe kombinacje typów pokoi z różnymi pakietami usług.

Przykłady

Na tych obrazach widać przykłady pakietów Room na komputerach i urządzeniach mobilnych:

Pakiety z pokojami z obrazkami

Ten przykład dotyczy wersji pakietów pokoi na urządzeniach mobilnych, która zawiera wszystkie różne typy pokoi dla wymaganej liczby osób oraz ich zdjęcia.

Uwaga: pakiety pokoi bez obrazów są zastępowane obrazem zastępczym łóżka.

Funkcje oceny

Na tych obrazach znajdziesz przykłady funkcji dotyczących stawek:

Wyświetlanie pakietów pokoi i funkcji cen w wynikach wyszukiwania podlega tym samym procesom wyboru co standardowe ceny pokoi.

Pakiety pokoi

Pakiety pokoi i funkcje cenowe definiujesz w wiadomościach transakcyjnych. Elementem głównym wiadomości transakcyjnej jest <Transaction>.

Struktura komunikatu o transakcji zależy od tego, co robisz: definiujesz metadane dotyczące funkcji Room Bundle lub stawek albo aktualizujesz ceny lub dostępność Room Bundle.

Metadane
Zdefiniuj metadane funkcji Room Bundle i stawek za pomocą elementu <PackageData> w elemencie <PropertyDataSet>. Więcej informacji znajdziesz w artykule Definiowanie metadanych sal i pakietów. Pakiety pokoi używają istniejących elementów <RoomData> do opisu pokoi fizycznych.
Ceny i dostępność
Określ ceny i dostępność pakietu pokoi za pomocą elementu <RoomBundle> w <Result> dla każdej kombinacji pakietu lub planu podróży. Więcej informacji znajdziesz w artykule Definiowanie cen i dostępności.

Stawka za pokój podstawowy, podatki i inne opłaty są obowiązkowe w ramach <Result>, gdy nie są używane w pakietach pokoi, i mogą zostać usunięte, gdy są używane w pakietach pokoi. Jeśli wdrażasz pakiety pokoi za pomocą aktywnego konta, wykonaj te czynności:

  1. W sekcji <Result> podaj cenę pokoju podstawowego, podatki i inne opłaty oraz dodaj jeden pakiet pokoi odpowiadający podstawowemu pakietowi pokoi.

  2. W razie potrzeby zdefiniuj dodatkowe pakiety pokoi w tym samym bloku <Result> dla innych typów pokoi w obiekcie lub dla różnych pakietów usług.

  3. Po uruchomieniu pakietu pokoju usuń cenę podstawową pokoju, podatki i inne opłaty.

Metadane pakietu z pokojem

Podczas definiowania pakietów pokoi i funkcji cenowych należy z wyprzedzeniem określić opis, dodatkowe usługi wchodzące w skład ceny oraz inne informacje o pakiecie pokoi. Te informacje to metadane pakietu pokoju. Następnie odwołujesz się do tych metadanych w aktualizacjach cen, ale nie uwzględniasz ich w wiadomościach o aktualizacji cen.

Podczas definiowania pakietów pokoi użyj istniejących elementów <RoomData> na potrzeby opisów pokoi oraz elementów <PackageData> na potrzeby funkcji cen i warunków, które nie są częścią opisu pokoju.

Użycie elementów <RoomData> i <PackageData> może znacznie zmniejszyć rozmiar pliku danych z listą hoteli i ceną hotelu, ponieważ zmniejsza ilość powtarzających się danych wysyłanych w wiadomościach transakcyjnych.

Na przykład dane takie jak nazwa pokoju i opis są zwykle powtarzane w przypadku każdego planu podróży. Możesz użyć elementów <RoomData><PackageData>, aby raz zdefiniować ten typ danych. Dane dotyczące pakietu pokoi dla konkretnego planu podróży są następnie łączone z zapisanymi definicjami pokoi i pakietów, aby wyświetlić je użytkownikowi.

Google dopasowuje Twoje metadane do danych dotyczących Twojego planu podróży, aby renderować zawartość reklam. Specjalne przetwarzanie służy do łączenia nazw i opisów z elementów <RoomData> i <PackageData>, co pozwala opisać pokój fizyczny w elemencie <RoomData>, a funkcje i szczegóły pakietu w elemencie <PackageData>.

Jeśli zdefiniujesz dane pokoju i dane pakietu dotyczące jednego pokoju lub pakietu RoomBundle, Google uwzględni je obie w wyniku reklamy, rozdzielając je myślnikiem.

Wskazówki dotyczące zdjęć

Podczas wysyłania zdjęć pokoju pamiętaj o tych wskazówkach, aby mieć pewność, że zdjęcia będą wyświetlane użytkownikom:

  • Prześlij zdjęcia każdego typu pokoju, w tym zdjęć pokoi przystosowanych do potrzeb osób z niepełnosprawnością, na przykład pokoi z łazienką z różnymi urządzeniami sanitarnymi, takimi jak prysznic bez progu.

  • Dodaj co najmniej 4 zdjęcia pokoju i co najmniej 1 zdjęcie łazienki.

  • Zdjęcia powinny przedstawiać pokój, a nie obiekt. Najważniejsze zdjęcia to łóżko, cały pokój, łazienka, część dzienna, widok z pokoju (z resztą pokoju na tym samym zdjęciu) oraz, w razie potrzeby, balkon, patio lub taras.

    Warto też zrobić zdjęcia biurka, kuchni, zestawów do parzenia kawy/herbaty oraz innych elementów wyposażenia pokoju.

  • Unikaj zdjęć przedstawiających ludzi i własność, np. zewnątrz lub udogodnienia obiektu, zwiedzanie/turystyka i jedzenie.

  • Unikaj zbliżeń na obiekty, takich jak kieliszki.

  • Unikaj elementów marki, ale na zdjęciu przedstawiającym całą łazienkę możesz umieścić produkty oznaczone marką. Zdjęcia nie mogą zawierać dużych bloków tekstu, logo ani znaków wodnych.

  • Prześlij standardowe zdjęcia poziome (w układzie poziomym) z szerokim polem widzenia. Unikaj zdjęć z efektem rybiego oka i zniekształconych zdjęć. Aby poprawić pozycję w rankingu, rób zdjęcia w najwyższej rozdzielczości. Nie musisz przesyłać tego samego zdjęcia w różnych rozdzielczościach.

Priorytet danych

Dane dotyczące pakietów pokoi są zbierane ze wszystkich źródeł i łączone za pomocą reguł ustalania kolejności, aby uzyskać ostateczne dane dotyczące danego hotelu, planu podróży i pakietu pokoi. Kolejność jest następująca:

  1. (Lowest) Partner data
  2. Dane usługi
  3. <RoomData>, gdzie <RoomID> pasuje do <RoomID> w bloku <RoomBundle>
  4. <PackageData>, gdzie <PackageID> pasuje do <PackageID> w bloku <RoomBundle>
  5. (Najwyższa) <RoomBundle>

Definiowanie cen i dostępności

Aby zdefiniować cenę i dostępność pakietu pokoi, użyj elementu <RoomBundle> w wiadomości o transakcji dla każdego pakietu lub każdej kombinacji planu podróży. Element <RoomBundle> powinien znajdować się w elemencie <Result>. Poniżej znajdziesz przykładowy kod dla 2 elementów <RoomBundle>. Zwróć uwagę, że w tym przykładzie 2 elementy <RoomBundle> odwołują się do metadanych sali i pakietu za pomocą elementów <RoomID> i <PackageID>.

W przypadku każdego <Result> zawarty w nim zestaw pakietów pokoi zastępuje dotychczasowy zestaw dla danej usługi lub kombinacji planu podróży. Jeśli w elemencie <Result> nie zdefiniujesz żadnych pakietów pokoi ani stawek, wszystkie pakiety pokoi zostaną usunięte, a w wynikach wyszukiwania pojawi się tylko pokój podstawowy dla danego hotelu lub planu podróży.

Używaj elementów takich jak <Name>, aby uczynić Pakiety pokoi bardziej atrakcyjne dla potencjalnych klientów, i upewnij się, że pasują one do strony docelowej hotelu. W tym przykładzie nazwy i inne informacje opisowe definiujesz w metadanych.

<RatePlanID> jest opcjonalny i reprezentuje unikalny identyfikator kombinacji pokoju i pakietu. Zdecydowanie zalecamy użycie identyfikatora RatePlanID jako zmiennej do tworzenia dynamicznego adresu URL strony docelowej (dawniej strony punktu sprzedaży). Więcej informacji znajdziesz w artykule Używanie zmiennych i warunków.

W pakietach pokoi te elementy są opcjonalne:

<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>

Gdy wdrożysz Room Bundle na koncie z aktywnym czatem, po włączeniu Room Bundle usuń <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>

Definiowanie metadanych pokoju i pakietu

Aby zdefiniować metadane pakietu pokoi, użyj elementów <PackageData> i <RoomData> w elemencie <PropertyDataSet> wiadomości transakcyjnej.

Metadane pokoju i pakietu definiujesz w wiadomości dotyczącej transakcji, która jest oddzielona od danych o cenach i dostępności. Dzięki zdefiniowaniu tych danych z wyprzedzeniem aktualizacje cen nie muszą zawierać powtarzających się informacji, takich jak opisy, adresy URL zdjęć, udogodnienia i inne dane dotyczące każdego pokoju lub pakietu w każdym planie podróży.

Google przechowuje metadane i wstawia je do Twoich reklam podczas ich wyświetlania. Metadane pokoju i pakietu możesz zaktualizować w dowolnym momencie za pomocą nowej wiadomości o transakcji.

W wiadomości o transakcji dla każdego bloku ustawiasz identyfikator pakietu i identyfikator pokoju, na który następnie się powołujesz w blokach <Result> aktualizacji cen.

Jeśli dane pokoju lub pakietu ulegną zmianie (np. dodasz nowy typ pokoju w usłudze), wyślij nową wiadomość o transakcji zawierającą zaktualizowane dane pokoju lub pakietu. Google zastąpi dotychczasowe metadane dotyczące pokoju lub pakietu nowymi danymi.

Google zaleca zdefiniowanie metadanych podczas początkowej konfiguracji. Po zdefiniowaniu metadanych wystarczy, że w aktualizacjach cen będziesz odwoływać się do wartości <RoomID><PackageID>, zamiast powtarzać te informacje. Google używa tych identyfikatorów do dopasowywania pokoi i pakietów pokoi do zapisanych metadanych. Może to znacznie zmniejszyć łączny rozmiar wiadomości o transakcji.

Ceny pokoi lub kombinacji planów podróży zmieniają się znacznie częściej niż opisy pokoi lub pakietów, dlatego zdefiniowanie metadanych raz i odwoływanie się do nich jest znacznie bardziej wydajnym sposobem korzystania z wiadomości o transakcjach. Ponadto błędy, takie jak niezgodne opisy pokoi, można wyeliminować, używając metadanych zamiast definiowania danych w tekście.

Poniżej przedstawiamy zalecaną i najskuteczniejszą metodę definiowania metadanych i cenowania osobno:

<!-- 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>

Liczba osób i pojemność

Podczas definiowania pakietów pokoi musisz wiedzieć, jaka jest różnica między zajętością a pojemnością:

Liczba osób
Liczba gości, do których ma być stosowany pakiet pokoi. Na przykład pakiet „Honeymoon Package” jest przeznaczony dla 2 osób. Wartość obłożenia pakietu ustawiasz za pomocą elementu podrzędnego <Occupancy> elementu <PackageData> lub <RoomBundle>.
Pojemność
Maksymalna liczba osób, które mogą fizycznie zmieścić się w pokoju. Pojemność pokoju jest zawsze równa lub większa od liczby osób. Na przykład „apartament na miesiąc miodowy” w Twoim hotelu może pomieścić maksymalnie 6 osób, ale Ty ustalasz cenę pakietu dla 2 osób. Wartość pojemności opakowania ustawiasz za pomocą elementu podrzędnego <Capacity> elementu <RoomData>.

Określając cenę pakietu pokoi, musisz podać cenę za liczbę gości, dla których przeznaczony jest pakiet (wartość określona w elemencie <Occupancy> pakietu). Jeśli <Occupancy> jest ustawiona na 2, cena w tym pakiecie musi być ceną za 2 osoby. Nie możesz ustawić <Occupancy> na 4 osób, a cenę pakietu na 2 osób.

Sale współdzielone

Zajęcia i pojemność w pakietach pokoi możesz też używać do określania cen za pokoje wieloosobowe, na przykład w hostelu. Aby na przykład ustawić cenę za osobę w pokoju w akademiku, który ma 8 łóżek, ustaw Liczba osób na 1, a Liczba miejsc na 8 i podaj tę informację w nazwie <RoomData>. Przykład

Aktualizowanie pakietów z pokojami

Z tej sekcji dowiesz się, jak usunąć pakiet pokoi, który nie jest już dostępny, oraz jak zaktualizować cenę istniejącego pakietu pokoi.

Usuwanie pakietu z pokojem

Pakiety pokoi różnią się od cen hoteli sposobem ich usuwania.

Aby usunąć z asortymentu kombinację pokoju lub planu podróży, ustaw element <Result> <Baserate> na -1. Aby usunąć pakiet pokoi dla danego pokoju lub planu podróży, usuń element <RoomBundle> z bloku <Result> w wiadomości o transakcji.

Pakiety pokoi w plikach danych są traktowane jako zestawy, których liczba może wynosić od 0 do kilkudziesięciu. Gdy wysyłasz do Google pakiet pokoi, wysyłasz aktualny, kompletny zestaw. Nie zmieniaj wartości poszczególnych pakietów pokoi, aby oznaczyć wcześniej dostępne pakiety jako niedostępne. Niezależnie od tego, jakie pakiety zawiera, najnowsza wiadomość o transakcji zastępuje bieżący zestaw.

Na przykład dostępne są pakiety A, B, C i D. Najpierw wysyłasz wiadomość, która definiuje zestaw pakietów pokoi A, B, C i D. Jeśli później wyprzeda się pakiet B, ponownie wyślesz cały zestaw, ale tylko z pakietami A, C i D. Jeśli wszystkie pakiety pokoi są wyprzedane, wyślij pusty zestaw pakietów pokoi.

Dostosowanie cennika

Aby zmienić cenę pakietu pokoi, ustaw nową wartość <Baserate> w elemencie <Result>.

Za każdym razem, gdy aktualizujesz blok <Result> pokoju lub planu podróży w wiadomościach o transakcji, musisz uwzględnić pełny zestaw dostępnych pakietów pokoi dla każdego <Result>. Google zastępuje dotychczasowy zestaw pakietów pokoi nowym zestawem. Jeśli nie uwzględnisz żadnych pakietów pokoi w <Result>, Google usunie wszystkie pakiety pokoi dla danego pokoju lub planu podróży.

Aktualizacje metadanych

Aktualizujesz metadane Room Bundle, odpowiadając na <Query> od Google.

Na wiadomość z zapytaniem odpowiadasz wiadomością transakcyjną, która definiuje metadane pokoju i pakietu dla wybranych hoteli. Więcej informacji znajdziesz w artykule Pytania dotyczące funkcji „Messages”.