Pakiety

Dzięki pakietom pokojów możesz zdefiniować kilka typów pokojów w jednym miejscu zakwaterowania lub połączyć plan pokoju z elementami dotyczącymi ceny (dodatkowymi usługami objętymi stawką i warunkami sprzedaży) dla użytkowników po cenie standardowej.

Kluczowe pojęcia i przepływ pracy

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 to mobilna wersja pakietów pokoi, która zawiera wszystkie typy pokoi dla wymaganej liczby osób oraz odpowiadające im zdjęcia pokoi.

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

Oceń funkcje

Poniższe obrazy przedstawiają przykłady funkcji związanych ze stawkami:

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

Zestawy pokojów

W wiadomościach o transakcjach definiujesz pakiety pokoi i funkcje oceniania. Elementem głównym wiadomości dotyczącej transakcji jest <Transaction>.

Struktura wiadomości dotyczącej transakcji zależy od tego, co robisz: zdefiniujesz metadane pakietu pokoi lub funkcję ceny albo zaktualizujesz cenę lub dostępność pakietu pokoi.

Metadane
Zdefiniuj metadane funkcji Room Bundle i stawek za pomocą elementu <PackageData> w elemencie <PropertyDataSet>. Więcej informacji znajdziesz w artykule Definiowanie metadanych sali i pakietu. W przypadku pakietów pokoi w opisach fizycznych pomieszczeń używane są istniejące elementy <RoomData>.
Ceny i dostępność
Określ cenę i dostępność pakietu pokoi za pomocą elementu <RoomBundle> w elemencie <Result> dla każdej kombinacji pakietu i 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. Uwzględnij stawkę za pokój podstawowy, podatki i inne opłaty w ramach <Result> i dodaj 1 pakiet pokoi zgodny z podstawowym pakietem.

  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 wprowadzeniu pakietu pokoju usuń cenę pokoju, podatki i inne opłaty.

Metadane pakietu pokoi

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. Aby zdefiniować ten typ danych, możesz użyć elementów <RoomData><PackageData>. 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 metadane do danych konkretnego planu podróży, aby renderować treść reklam. Łączenie nazw i opisów z elementów <RoomData> i <PackageData> wymaga specjalnego przetwarzania danych, dzięki czemu możesz opisać w polu <RoomData>, gdzie znajduje się ilość miejsca, a cechy ceny i szczegóły pakietu umieścić w <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ęć pokoi 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 i 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.

  • Używaj standardowych zdjęć poziomych (poziomych) o szerokim polu widzenia. Unikaj zdjęć z efektem rybiego oka i zniekształconych zdjęć. Rób zdjęcia w najwyższej rozdzielczości, aby poprawić pozycję filmu w rankingu. Nie musisz przesyłać tego samego zdjęcia w różnych rozdzielczościach.

Priorytet danych

Dane o pakietach pokojów są zbierane ze wszystkich źródeł i łączone za pomocą reguł pierwszeństwa w celu wygenerowania ostatecznych danych dotyczących danego hotelu, planu podróży i pakietu pokoi. Kolejność jest następująca:

  1. (najniższe) Dane partnera
  2. Dane obiektu
  3. <RoomData>, gdzie <RoomID> pasuje do <RoomID> w bloku <RoomBundle>
  4. <PackageData>, gdzie <PackageID> pasuje do <PackageID> w bloku <RoomBundle>
  5. (Najwyższa) <RoomBundle>

Określ ceny i dostępność

Aby zdefiniować cenę i dostępność pakietu pokoi, użyj elementu <RoomBundle> w wiadomości dotyczącej 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.

Aby zwiększyć atrakcyjność pakietów pokojów dla potencjalnych klientów, użyj takich elementów jak <Name>. Upewnij się też, że pasują one do strony docelowej hotelu. W tym przykładzie zdefiniujesz nazwy i inne informacje opisowe 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 przypadku pakietów pokoi te elementy są opcjonalne:

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

Gdy wdrożesz Room Bundle na koncie z aktywnym filmem, 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 podajesz w wiadomości transakcji, które są niezależne 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 przypadku każdego planu 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 komunikacie transakcji w każdym bloku ustawiasz identyfikator pakietu i identyfikator pokoju, do których możesz się później odwoływać w blokach aktualizacji cen <Result>.

Jeśli dane pokoju lub pakietu ulegną zmianie (na przykład jeśli dodasz nowy typ pokoju w usłudze), wyślij nową wiadomość dotyczącą 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. Błędy, takie jak niezgodne opisy sal, można też wyeliminować, korzystając z metadanych, zamiast definiować dane na poziomie.

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>.
Rozmiar
Maksymalna liczba osób, które mogą fizycznie zmieścić się w sali. 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 i ustawić cenę pakietu dla 2 osób.

Sale współdzielone

Objętość i pojemność w pakietach pokoi służą też do określania cen za zakwaterowanie współdzielone, np. hostel. Aby na przykład ustawić cenę za osobę w pokoju w akademiku, który ma 8 łóżek, należy ustawić wartość pola Liczba osób na 1, a w polu Pojemność wpisać 8 i podać nazwę <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 zbiór, którego liczba może wynosić od 0 do dziesiątek. Wysyłając pakiety pokojów do Google, wysyłasz aktualny, kompletny zestaw. Nie zmieniaj wartości poszczególnych pakietów pokoi, aby oznaczyć wcześniej dostępne pakiety jako niedostępne. Aktualny zestaw pakietów w najnowszym komunikacie 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 pokojów się wyprzedziły, wyślij pusty zestaw.

Dostosowanie cennika

Aby zmienić cenę pakietu pokoi, ustaw nową <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 w elementach <Result> nie ma żadnych pakietów pokoi, Google usuwa wszystkie pakiety pokoi dla danego pokoju lub planu podróży.

Aktualizacje metadanych

aktualizujesz metadane pakietu pokoi o odpowiedź na zapytanie <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 Zapytania do funkcji Messages.