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.

Najważniejsze pojęcia i przepływ pracy

Dzięki pakietom pokojów możesz oferować dodatkowe kombinacje rodzajów fizycznych pomieszczeń z różnymi pakietami usług.

Oto przykłady pakietów pokojów:

W tym przykładzie pierwszy pakiet to pokój w piwnicy z rabatem tylko dla 1 osoby dorosłej. Drugi to pokój innego typu, który jest dostępny dla maksymalnie 3 dorosłych osób. Trzeci to inny rodzaj pokoju w tej samej usłudze. Czwarty abonament to pakiet premium pokoju w piwnicy, który może obejmować takie udogodnienia jak bezpłatne śniadanie lub późniejsze wymeldowanie.

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

Wyświetlanie pakietów pokojów i funkcji związanych z cenami w wynikach wyszukiwania podlega tym samym procesom wyboru co standardowe stawki za pokoje.

Zestawy pokojów

Funkcje określania pakietów pokojów i oceny określa się w wiadomościach o transakcjach. Głównym elementem 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 zestawu pokoi i ceny za pomocą elementu <PackageData> w elemencie <PropertyDataSet>. Więcej informacji znajdziesz w artykule Definiowanie metadanych pokoju 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>, jeśli nie są używane z pakietami pokojów. Można je usunąć, jeśli są używane razem z pakietami pokojów. Jeśli implementujesz 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 ramach tego samego bloku <Result> dla innych typów pomieszczeń w tej usłudze lub różnych pakietów usług.

  3. Po uruchomieniu pakietu pokoi usuń stawkę za pokój podstawowy, podatki i inne opłaty.

Metadane pakietu pokoi

Aby zdefiniować funkcje związane z pakietem pokojów i ceną, zwykle musisz z wyprzedzeniem podać opis, usługi dodatkowe wchodzące w skład stawki oraz inne informacje o pakiecie. Informacje te są nazywane metadanymi pakietu pokoi. Możesz się do nich odwoływać w aktualizacjach cen, ale nie uwzględniasz ich w wiadomościach o aktualizacji cen.

Przy definiowaniu pakietów pokoi użyj istniejących elementów <RoomData> w opisach fizycznych pomieszczeń, a elementów <PackageData> na potrzeby cech i warunków, które nie są częścią opisu fizycznego pokoju.

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

Na przykład dane takie jak nazwa i opis pokoju są zwykle powtarzane w przypadku każdego planu podróży. Za pomocą elementów <RoomData> i <PackageData> można jednorazowo określić ten typ danych. Dane pakietu pokoi związane z planem podróży są następnie łączone z definicjami pomieszczeń i pakietów przechowywanych w celu wyświetlenia 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ć rodzaj pomieszczenia w polu <RoomData>, a cechy ceny i szczegóły pakietu umieścić w <PackageData>.

Jeśli zdefiniujesz zarówno dane sali, jak i dane pakietu dla pojedynczej sali lub pakietu pomieszczeń, Google uwzględni w danych wyjściowych reklamy obie te informacje, rozdzielone łącznikiem.

Wskazówki dotyczące zdjęć

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

  • Wyślij zdjęcia każdego typu pokoju, w tym zdjęcia pokojów z ułatwieniami dostępu, np. wyznaczonych pokoi z różnymi wyposażeniem łazienkowym, takich jak kabina prysznicowa.

  • Dołącz co najmniej cztery zdjęcia pokoju i co najmniej jedno zdjęcie łazienki.

  • Zdjęcia powinny przedstawiać cały pokój, a nie obiekt. Najważniejsze zdjęcia to łóżko, cały pokój, łazienka, strefa dzienna i widok z pokoju (pozostała część pokoju na tym samym zdjęciu) oraz – w niektórych przypadkach – balkon, patio lub taras.

    Przydatne będzie również robienie zdjęć biurka, kuchni, ekspresów do kawy i herbaty oraz różnych elementów pokoju.

  • Unikaj zdjęć przedstawiających ludzi i mienia, np. wyposażenia zewnętrznego lub mienia, zwiedzania lub turystyki bądź jedzenia.

  • Unikaj zbliżeń przedmiotów, np. kiełbasek na kieliszki.

  • Unikaj marek i elementów marki. Możesz jednak ująć oznaczone lub markowe przybory toaletowe na zdjęciu ukazującym całą łazienkę. Zdjęcia nie powinny zawierać dużych bloków tekstu, logo ani znaków wodnych.

  • Prześlij standardowe zdjęcia w orientacji poziomej (poziome) 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.

Pierwszeństwo 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. Oto ich kolejność (od najniższego do najwyższego):

  1. (najniższe) Dane partnera
  2. Dane usługi
  3. <RoomData>, gdzie <RoomID> odpowiada <RoomID> w bloku <RoomBundle>
  4. <PackageData>, gdzie <PackageID> odpowiada <PackageID> w bloku <RoomBundle>
  5. (Najwyższa) <RoomBundle>

Określ ceny i dostępność

Aby określić ceny i dostępność pakietów pokojów, użyj elementu <RoomBundle> w komunikacie transakcji w przypadku każdej kombinacji pakietu lub planu podróży. Element <RoomBundle> powinien znajdować się wewnątrz elementu <Result>. Poniżej znajdziesz przykładowy kod dwóch elementów <RoomBundle>. Zwróć uwagę, że w tym przykładzie 2 elementy <RoomBundle> odnoszą się do metadanych pokoju i pakietu za pomocą elementów <RoomID> i <PackageID>.

W przypadku każdego obiektu <Result> zawarty w nim zestaw pakietów zastępuje istniejący zestaw dla danej kombinacji właściwości lub planu podróży. Jeśli w elemencie <Result> nie zdefiniujesz żadnych pakietów pokoi ani cech cen, wszystkie pakiety pokoi zostaną usunięte, a w wynikach wyszukiwania pojawi się tylko podstawowy pokój powiązany z tym hotelem lub planem 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.

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

W przypadku pakietów pokojów te elementy są opcjonalne:

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

Podczas wdrażania pakietu pokoi na aktywnym koncie usuń pakiet <Baserate> po włączeniu pakietu pokoi.

<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> wewnątrz elementu <PropertyDataSet> wiadomości transakcji.

Metadane pokoju i pakietu podajesz w wiadomości transakcji, które są niezależne od danych o cenach i dostępności. Jeśli zdefiniujesz te dane z wyprzedzeniem, aktualizacje cen nie będą musiały zawierać powtarzalnych informacji, takich jak opisy, adresy URL zdjęć, udogodnienia czy inne dane o poszczególnych pokojach i pakietach w przypadku każdego planu podróży.

Google przechowuje metadane za Ciebie i wstawia je do wyświetlanych reklam. W każdej chwili możesz zaktualizować metadane pokoju i pakietu za pomocą nowej wiadomości dotyczącej 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 dotyczące sali i pakietu ulegną zmianie (np. jeśli dodasz do usługi nowy typ pokoju, wyślesz nową wiadomość transakcji), która zawiera zaktualizowane dane o pokojach i pakietach, Google zastąpi istniejące metadane pokoju lub pakietu nowymi danymi.

Google zaleca zdefiniowanie metadanych podczas początkowej konfiguracji. Po wstępnym zdefiniowaniu metadanych musisz tylko odwoływać się do wartości <RoomID> i <PackageID> w aktualizacjach cen, zamiast ponownie podawać wszystkie te informacje. Google używa tych identyfikatorów do dopasowywania sal i pakietów pomieszczeń do przechowywanych metadanych. Może to znacznie zmniejszyć ogólny rozmiar wiadomości dotyczących transakcji.

Ceny za pokój lub plan podróży zmieniają się znacznie częściej niż w opisach pokoi czy pakietów, dlatego o wiele efektywniej zdefiniujesz metadane, a potem odwołasz się do nich. 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 osobnych metadanych i cen:

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

Obłożenie i pojemność

Określając pakiety pokoi, musisz wiedzieć, na czym polega różnica między liczbą a liczbą:

Obecność
Liczba gości, do których ma być przeznaczony pakiet pokoi. Na przykład „Pakiet podróżny” ma liczbę osób. Wartość obłożenia w pakiecie możesz ustawić za pomocą elementu podrzędnego <Occupancy> elementu <PackageData> lub <RoomBundle>.
Rozmiar
Maksymalna liczba osób, które mogą pomieścić w sali. Pojemność sali jest zawsze równa liczbie osób lub większa. Na przykład „Apartament dla nowożeńców” w Twoim hotelu może pomieścić maksymalnie 6 osób, a Twoja cena obejmuje pakiet dla 2 osób. Wartość pojemności pakietu możesz ustawić za pomocą elementu podrzędnego <Capacity> elementu <RoomData>.

Ustalając cenę pakietu pokoi, musisz podać cenę dla liczby gości, dla której jest on przeznaczony (wartość określona w elemencie <Occupancy> pakietu). Jeśli <Occupancy> ma wartość 2, cena w tym pakiecie musi obejmować 2 osoby. Nie możesz ustawić atrybutu <Occupancy> na 4 gości i ustalić cenę pakietu dla 2 osób.

Współdzielone pokoje

Objętość i pojemność w pakietach pokoi służą też do określania cen za zakwaterowanie współdzielone, np. hostel. Aby na przykład określić cenę za osobę za pokój w akademiku z 8 łóżkami, ustaw liczbę osób na 1, a liczbę osób na 8 – i podaj taką cenę w nazwie <RoomData>. Zobacz przykład

Aktualizowanie pakietów pokojów

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

Usuwanie zestawu pokoi

Sposób usuwania pakietów pokojów różni się od cen hoteli.

Aby usunąć z asortymentu kombinację sali lub planu podróży, ustaw wartość <Baserate> elementu <Result> na -1. Aby usunąć pakiet pokoi dotyczący danego sali lub planu podróży, usuń element <RoomBundle> z bloku <Result> w wiadomości 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 pojedynczego pakietu pokoi, aby oznaczyć wcześniej dostępny pakiet jako niedostępny. Dowolny zestaw pakietów znajdujący się w najnowszej wiadomości dotyczącej transakcji zastępuje bieżący zestaw.

Na przykład mamy pakiety A, B, C i D. Najpierw wysyłasz wiadomość, która definiuje zbiór grup pokojów A, B, C i D. Później, jeśli pakiet B zostanie wyprzedany, przesyłasz ponownie cały zestaw zawierający tylko pakiety 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> sali lub planu podróży w wiadomościach o transakcjach, w przypadku każdego obiektu <Result> musisz zawrzeć kompletny zestaw dostępnych pakietów pokojów. Google zastępuje dotychczasowy zestaw pakietów pokojów nowym. Jeśli nie dodasz żadnych pakietów pokojów w usłudze <Result>, Google usunie wszystkie pakiety pokojów powiązane z tym pokojem lub planem podróży.

Aktualizacje metadanych

aktualizujesz metadane pakietu pokoi o odpowiedź na zapytanie <Query> od Google.

Na wiadomość dotyczącą zapytania odpowiadasz, wysyłając wiadomość o transakcji, która określa metadane pokoju i pakietu dla określonych hoteli. Więcej informacji znajdziesz w artykule o wysyłaniu zapytań.