Pakiety

Pakiety pokoi umożliwiają zdefiniowanie wielu typów pokoi w jednej usłudze lub połączenie planu podróży sal z funkcjami stawek, dodatkowymi usługami obejmującymi stawkę i warunki sprzedaży, dla użytkowników poza standardową ceną.

attributes

Najważniejsze pojęcia i przepływ pracy

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

Poniższa ilustracja przedstawia przykłady grup pokoi:

W tym przykładzie pierwszy pakiet to pokój podstawowy z rabatem tylko dla 1 osoby dorosłej. Drugi typ to inny pokój, który może pomieścić do 3 osób dorosłych. Trzeci typ to inny pokój w tej samej usłudze. Czwarty to pakiet premium pokoju podstawowego, który może zawierać takie udogodnienia jak wliczone w cenę śniadanie lub późniejsza płatność.

Te obrazy pokazują przykładowe funkcje związane ze stawkami:

Wyświetlanie pakietów pokoi i funkcji określania stawek w wynikach wyszukiwania podlega tym samym procesom wyboru co standardowe stawki za pokoje.

Pakiety sal

Definiujesz pakiety i ceny w wiadomościach dotyczących transakcji. Elementem głównym komunikatu transakcji jest <Transaction>.

Struktura komunikatu o transakcji zależy od tego, co robisz: definiujesz metadane dotyczące funkcji Pakiet lub sala oraz aktualizujesz cenę lub dostępność pakietu.

Metadane
W elemencie <PropertyDataSet> zdefiniuj pakiet pokoi i metadane oceny funkcji za pomocą <PackageData>. Więcej informacji znajdziesz w artykule Definiowanie metadanych pokoju i pakietu. Pakiety pokoi korzystają z dotychczasowych elementów <RoomData> w opisach fizycznych pokoi.
Ceny i dostępność
Ceny i dostępność pokoi możesz określić za pomocą elementu <RoomBundle> w <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, podatki i inne opłaty są wymagane w przypadku <Result>, gdy nie są używane w pakiecie z pokojem. Jeśli korzystasz z pakietów pokoi, możesz je usunąć. Jeśli implementujesz pakiety pokoi przy użyciu aktywnego konta, wykonaj te czynności:

  1. Dodaj stawkę za pokój, podatki i inne opłaty w wysokości <Result> oraz dodaj jeden pakiet pokoi, który odpowiada podstawowemu pakietowi.

  2. W razie potrzeby możesz zdefiniować dodatkowe pakiety w tym samym bloku <Result> dla innych typów pokoi w tej usłudze lub różnych pakietów usług.

  3. Po uruchomieniu grupy możesz usunąć cenę pokoju podstawowego, podatki i inne opłaty.

Metadane pakietu pokoi

Przy definiowaniu pakietów pokoi i funkcji związanych z cenami zwykle z wyprzedzeniem definiuje się opis, dodatkowe usługi, które są częścią ceny, oraz inne informacje dotyczące pakietu pokoi. Nazywamy je metadanymi grupy pokoi. Odwołujesz się do tych metadanych w aktualizacjach cen, ale nie uwzględniaj ich w wiadomościach dotyczących aktualizacji cen.

Przy definiowaniu grup używaj elementów <RoomData> w opisach fizycznych sal i elementów <PackageData> w przypadku funkcji określania stawek oraz terminów, które nie są częścią fizycznego opisu pokoju.

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

Na przykład w przypadku każdego planu podróży dane takie jak nazwa i opis sali są zwykle powtarzane. Za pomocą elementów <RoomData> i <PackageData> możesz raz zdefiniować ten typ danych. Dane dotyczące planów związanych z pokojami są łączone z przechowywanymi definicjami pokoi i pakietów, aby wyświetlać je użytkownikom.

Google dopasowuje metadane do danych dotyczących planu podróży, aby renderować zawartość reklam. Nazwy i opisy elementów <RoomData> i <PackageData> są przetwarzane w specjalny sposób, dzięki czemu w <RoomData> można opisać fizyczną lokalizację, a cechy i szczegóły pakietu – w <PackageData>.

Jeśli zdefiniujesz zarówno dane dotyczące pokoju, jak i dane pakietu dla pojedynczego pokoju lub grupy pokoi, Google uwzględni je w danych wyjściowych reklamy rozdzielone łącznikiem.

Wskazówki dotyczące zdjęć

Podczas wysyłania zdjęć pomieszczeń należy przestrzegać tych wskazówek, aby Twoje zdjęcia były wyświetlane użytkownikom:

  • Prześlij zdjęcia poszczególnych typów pomieszczeń, w tym zdjęcia sal, do których są dostępne, np. wyznaczone pomieszczenia z różnymi rodzajami armatury sanitarnej, takie jak kabina prysznicowa.

  • Dodaj co najmniej 4 zdjęcia pomieszczenia i 1 łazienkę.

  • Zdjęcia powinny dotyczyć samego pokoju, a nie budynku. Najważniejsze zdjęcia to łóżko, całe pomieszczenie, łazienka, strefa dzienna oraz widok z pokoju (pozostałe zdjęcie na tym samym zdjęciu) oraz balkon, taras lub taras (w stosownych przypadkach).

    Pomocne może być też robienie zdjęć biurka, kuchni, ekspresu do kawy i herbaty oraz wyróżniających się cech pokoju.

  • Unikaj zdjęć osób i mienia, np. na zewnątrz lub z udogodnieniami nieruchomości, takich jak „zwiedzanie” i turystyka czy jedzenie.

  • Unikaj zbliżeń obiektów, takich jak zbliżenia kieliszków.

  • Unikaj prezentowania marki i przyborów toaletowych, ale możesz je umieścić na zdjęciu przedstawiającym całą łazienkę. Zdjęcia nie powinny zawierać dużych bloków tekstu, logo ani znaków wodnych.

  • Dostarczaj standardowe, poziome (poziome) zdjęcia, które mają szerokie pole widzenia. Unikaj zdjęć z efektem rybiego oka i zniekształconych jakości obrazu. Rób zdjęcia w najwyższej rozdzielczości, aby poprawić ich pozycję w rankingu. Nie musisz przesyłać tego samego zdjęcia w różnych rozdzielczościach.

Pierwszeństwo danych

Dane dotyczące pokoi są zbierane ze wszystkich źródeł i wykorzystywane zgodnie z regułami priorytetu, aby uzyskać ostateczne dane dotyczące danego hotelu, planu podróży i pakietu pokoi. Kolejność jest taka: od najniższego do najwyższego:

  1. (Najniższe) dane partnerów
  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>

Określanie cen i dostępności

Aby zdefiniować cenę i dostępność grupy pokoi, użyj elementu <RoomBundle> w komunikacie o transakcji dla 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 2 elementy <RoomBundle> odwołują się do metadanych pokoju i pakietu, używając <RoomID> i <PackageID>.

Dla każdego elementu (<Result>) zawarty w nim zestaw pakietów zastępuje dotychczasowy zestaw dla tej usługi lub planu podróży. Jeśli w elemencie <Result> nie określisz żadnych pakietów sal ani funkcji oceny, wszystkie grupy pokoi zostaną usunięte, a w wynikach wyszukiwania pojawi się tylko sala podstawowa w przypadku danego hotelu lub planu podróży.

Użyj takich elementów jak <Name>, aby Twoje pokoje były bardziej atrakcyjne dla potencjalnych klientów i pasowały do strony docelowej hotelu. W tym przykładzie określisz w metadanych nazwy i inne informacje opisowe.

Pole <RatePlanID> jest opcjonalne i reprezentuje unikalny identyfikator kombinacji sali i pakietu. Zdecydowanie zalecamy używanie zmiennej RatePlanID jako zmiennej do tworzenia adresów URL dynamicznych stron docelowych (dawniej punktu sprzedaży). Szczegółowe informacje znajdziesz w artykule Używanie zmiennych i warunków.

Te elementy są opcjonalne w pakietach pokoi:

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

Po wdrożeniu pakietu pokoi na aktywnym koncie usuń <Baserate> po włączeniu tego pakietu.

<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 sal i pakietów

Aby zdefiniować metadane grupy pokoi, użyj elementów <PackageData> i <RoomData> wewnątrz elementu <PropertyDataSet> wiadomości o transakcji.

Metadane pokoju i pakietu definiujesz w wiadomości transakcyjnej niezależnie od danych o cenie i dostępności. Definiując te dane z wyprzedzeniem, zmiany cen nie muszą obejmować powtarzających się informacji, takich jak opisy, adresy URL zdjęć, udogodnienia i inne informacje dotyczące poszczególnych pokoi i pokoi lub pakietów w przypadku każdego planu podróży.

Google przechowuje metadane za Ciebie i wstawia je do Twoich reklam, gdy je wyświetlają. Metadane pokoju i pakietu możesz zaktualizować w każdej chwili, dodając nową wiadomość na temat transakcji.

W wiadomości dotyczącej transakcji ustawiasz identyfikator pakietu oraz identyfikator pokoju w każdej bloku, do której odwołujesz się w aktualizacjach ceny <Result>.

Jeśli zmienią się dane w pokoju i pakiecie – na przykład jeśli dodasz nowy typ pokoju w usłudze, wyślij nową wiadomość dotyczącą transakcji, która zawiera zaktualizowane dane sali i pakietu – Google zastąpi obecne metadane pokoju lub pakietu nowymi danymi.

Google zaleca definiowanie metadanych podczas wstępnej konfiguracji. Po zdefiniowaniu metadanych musisz jedynie uwzględnić wartości <RoomID> i <PackageID> w aktualizacjach cen, zamiast ponownie uwzględniać wszystkie te informacje. Google używa tych identyfikatorów do dopasowywania sal i pakietów do przechowywanych metadanych. Może to znacznie zmniejszyć ogólny rozmiar wiadomości dotyczących transakcji.

Ceny kombinacji pokoi i planów podróży znacznie zmieniają się w stosunku do opisów pokoi i pakietów, więc definiowanie metadanych raz, a następnie odwoływanie się do nich, jest znacznie skuteczniejszym komunikatem dotyczącym transakcji. Błędy takie jak niezgodne opisy pokoi możesz wyeliminować, korzystając z metadanych, zamiast definiować je bezpośrednio w danych.

Poniżej znajdziesz zalecany i najskuteczniejszy sposób definiowania 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>

Obecność i pojemność

Podczas definiowania pakietów musisz znać różnicę między obłożeniem a pojemnością:

Obecność
Liczba gości, których ma dotyczyć pakiet. Na przykład „Pakiet Honeymoon” ma miejsce wynoszące 2. Wartość zajętości w pakiecie ustawiasz za pomocą elementu podrzędnego <PackageData> lub <RoomBundle>.
<Occupancy>
Rozmiar
Maksymalna liczba osób, które mogą pomieścić pokój. Pojemność sali może być równa lub większa niż liczba osób w pokoju. Na przykład pakiet „Apartament ślubny” w Twoim hotelu może pomieścić do 6 osób, ale cena pakietu obejmuje 2 osoby. Wartość pojemności pakietu ustalasz za pomocą elementu podrzędnego <Capacity> elementu <RoomData>.

Przy wycenianiu pakietu pokoi musisz podać cenę dla liczby gości, dla których ma on być przeznaczony (wartość określona w elemencie <Occupancy> pakietu). Jeśli zasada <Occupancy> ma wartość 2, cena w tym pakiecie musi wynosić 2 osoby. Nie możesz ustawić atrybutu <Occupancy> dla 4 gości i ustawić cenę pakietu dla 2 gości.

Pokoje wspólne

Korzystasz też z obłożenia i pojemności w pakietach pokoi, aby ustawić ceny za pokoje wieloosobowe (np. hostel). Na przykład aby ustawić cenę za pokój wieloosobowy z 8 łóżkami, ustaw liczbę osób na 1 i pojemność na 8, a potem podaj tę nazwę w nazwie <RoomData>. Zobacz przykład

Zaktualizuj pakiety

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

Usuwanie pakietów pokoi

Pakiety są inne od cen hoteli w kwestii ich usunięcia.

Aby usunąć z zasobów reklamowych kombinację sali lub planu podróży, ustawiasz <Baserate> elementu <Result> na -1. Aby usunąć pakiet sal na potrzeby określonej sali lub planu podróży, usuń element <RoomBundle> z bloku <Result> w komunikacie Transakcja.

Pakiety danych o pokojach w Twoich plikach danych są uznawane za zbiór od 0 do dziesiątek. Gdy wysyłasz do Google pakiety sal, wysyłasz bieżący, kompletny zestaw. Nie zmieniasz wartości pojedynczego pakietu sal, aby oznaczyć wcześniej dostępny pakiet jako niedostępny. Zestaw zawiera najnowszy komunikat o transakcjach, zastępując bieżący.

np. grupy A, B, C i D. Najpierw wyślesz wiadomość definiującą zestawy pokoi A, B, C i D. Później, jeśli pakiet B zostanie wyprzedany, wyślij cały pakiet z pakietami A, C i D. Jeśli wszystkie pakiety pokoi zostały wyprzedane, wyślij pusty zestaw.

Dostosowania cen

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

Za każdym razem, gdy w wiadomości dotyczących transakcji aktualizujesz blok <Result> z pokoju lub planu podróży, musisz uwzględnić pełny zestaw dostępnych pokoi dla każdego pakietu <Result>. Google zastąpi dotychczasowy zbiór zestawów. Jeśli nie uwzględnisz w grupie „<Result>” żadnych pakietów pokoi, Google usunie wszystkie ich sale i plan podróży.

Aktualizacje metadanych

Aktualizujesz metadane grupy pokoi w odpowiedzi na: <Query> od Google.

Odpowiadasz na wiadomość z zapytaniem o transakcję, która określa metadane dotyczące sali i pakietu dla określonych hoteli. Więcej informacji znajdziesz w artykule Wykonywanie wiadomości przy użyciu zapytania.