Pakiety pokoi umożliwiają zdefiniowanie wielu typów pokoi w jednym obiekcie lub połączenie planu podróży z funkcjami cenowymi – dodatkowymi usługami, które są powiązane z ceną i warunkami sprzedaży – dla użytkowników poza standardową ceną.
Kluczowe pojęcia i procedury
Dzięki pakietom pokoi możesz oferować dodatkowe kombinacje fizycznych typów pokoi z różnymi pakietami usług.
Przykłady
Te obrazy pokazują przykłady pakietów Room na komputerach i urządzeniach mobilnych:
Pakiety z pokojami z obrazami
Ten przykład to mobilna wersja pakietów pokoi, która zawiera wszystkie rodzaje pokoi dla wymaganej liczby osób i odpowiednie zdjęcia pokoi.
Uwaga: pakiety pokoi bez zdjęć są zastępowane obrazem zastępczym łóżka.
Oceń funkcje
Na ilustracjach poniżej znajdziesz przykłady funkcji związanych ze stawkami:



Wyświetlanie pakietów pokoi i funkcji cen w wynikach wyszukiwania podlega temu samemu procesowi wyboru co standardowe ceny pokoi.
Pakiety z pokojem
Pakiety pokoi i funkcje cenowe określasz w wiadomościach o transakcjach. Elementem głównym wiadomości transakcyjnej jest <Transaction>.
Struktura komunikatu o transakcji zależy od tego, co robisz: definiujesz metadane pakietu pokoi lub funkcji ceny albo aktualizujesz cenę lub dostępność pakietu pokoi.
- Metadane
- Zdefiniuj metadane funkcji pakietu pokoju i ceny za pomocą elementu
<PackageData>w elemencie<PropertyDataSet>. Więcej informacji znajdziesz w artykule Definiowanie metadanych pokoju i pakietu. Pakiety pokoi korzystają z dotychczasowych<RoomData>elementów w opisach pokoi fizycznych. - Ceny i dostępność
- Określ cenę i dostępność pakietu pokoi za pomocą elementu
<RoomBundle>w elemencie<Result>dla każdej kombinacji pakietu lub planu podróży. Więcej informacji znajdziesz w artykule Określanie cen i dostępności.
Stawka za pokój podstawowy, podatki i inne opłaty są wymagane w przypadku elementu <Result>, gdy nie są używane z pakietami pokoi, i można je usunąć, gdy są używane z pakietami pokoi. Jeśli wdrażasz pakiety pomieszczeń za pomocą aktywnego konta, wykonaj te czynności:
W sekcji
<Result>podaj cenę podstawową pokoju, podatki i inne opłaty, a następnie dodaj jeden pakiet pokoju, który pasuje do podstawowego pakietu pokoju.W razie potrzeby zdefiniuj dodatkowe pakiety pokoi w tym samym
<Result>bloku dla innych typów pokoi w tym obiekcie lub różnych pakietów usług.Po uruchomieniu pakietu pokoi usuń stawkę, podatki i inne opłaty za pokój podstawowy.
Metadane pakietu z pokojem
Podczas definiowania pakietów pokoi i funkcji cen zwykle określasz z wyprzedzeniem opis, dodatkowe usługi wchodzące w skład ceny i inne informacje o pakiecie pokoi. Te informacje są nazywane metadanymi pakietu pokoi. 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żywaj istniejących elementów <RoomData> do opisu pokoi fizycznych i elementów <PackageData> do opisu funkcji i warunków cenowych, które nie są częścią opisu pokoju fizycznego.
Użycie elementów <RoomData> i <PackageData> może znacznie zmniejszyć rozmiar listy hoteli i pliku danych z cenami hoteli, ponieważ ogranicza ilość powtarzających się danych wysyłanych w wiadomościach transakcyjnych.
Na przykład dane takie jak nazwa pokoju i jego opis są zwykle powtarzane w przypadku każdego planu podróży. Możesz użyć elementów <RoomData> i <PackageData>, aby zdefiniować ten typ danych tylko raz. Dane pakietu pokoju dotyczące konkretnego planu podróży są następnie łączone z przechowywanymi definicjami pokoju i pakietu, aby wyświetlić je użytkownikowi końcowemu.
Google dopasowuje metadane do danych dotyczących konkretnego planu podróży, aby wyświetlać treści reklam. Istnieje specjalny proces łączenia nazw i opisów z elementów <RoomData> i <PackageData>, który umożliwia opisanie pokoju w <RoomData>, a funkcji cenowych i szczegółów pakietu w <PackageData>.
Jeśli zdefiniujesz zarówno dane pokoju, jak i dane pakietu dla jednego pokoju lub pakietu pokoi, Google uwzględni oba te rodzaje danych w danych wyjściowych reklamy, oddzielając je łącznikiem.
Wskazówki dotyczące zdjęć
Jeśli wysyłasz zdjęcia pokoju, postępuj zgodnie z tymi wskazówkami, aby mieć pewność, że będą one wyświetlane użytkownikom:
Prześlij zdjęcia każdego typu pokoju, w tym zdjęcia pokoi przystosowanych do potrzeb osób z niepełnosprawnością, np. pokoi z różnymi udogodnieniami w łazience, takimi jak prysznic bez brodzika.
Dodaj co najmniej 4 zdjęcia pokoju i co najmniej 1 zdjęcie łazienki.
Zdjęcia powinny przedstawiać samo pomieszczenie, a nie obiekt. Najważniejsze zdjęcia to łóżko, cały pokój, łazienka, salon i widok z pokoju (z resztą pokoju na tym samym zdjęciu) oraz, w stosownych przypadkach, balkon, patio lub taras.
Warto też zrobić zdjęcia biurka, kuchni, ekspresu do kawy lub czajnika oraz charakterystycznych elementów pokoju.
Unikaj zdjęć osób i nieruchomości – na przykład zewnętrznych lub związanych z udogodnieniami – oraz zdjęć przedstawiających zwiedzanie, turystykę i jedzenie.
Unikaj zdjęć obiektów z bliska, np. kieliszków.
Unikaj elementów marki i marek, chociaż kosmetyki z etykietami lub oznaczone marką można umieścić na zdjęciu przedstawiającym całą łazienkę. Zdjęcia nie powinny zawierać dużych bloków tekstu, logo ani znaków wodnych.
Przesyłaj standardowe zdjęcia w orientacji poziomej z szerokim polem widzenia. Unikaj zdjęć typu rybie oko i zniekształconych. Rób zdjęcia w najwyższej rozdzielczości, aby poprawić pozycję. Nie musisz przesyłać tego samego zdjęcia w różnych rozdzielczościach.
Priorytet danych
Dane o zestawach pokoi są zbierane ze wszystkich źródeł i łączone zgodnie z regułami pierwszeństwa, aby uzyskać ostateczne dane dla danego hotelu, planu podróży i zestawu pokoi. Kolejność jest następująca (od najniższego do najwyższego priorytetu):
- (Najniższy) Dane partnera
- Dane usługi
<RoomData>, gdzie<RoomID>pasuje do<RoomID>w<RoomBundle><PackageData>, gdzie<PackageID>pasuje do<PackageID>w<RoomBundle>- (Najwyższa)
<RoomBundle>
Określanie cen i dostępności
Aby określić cenę i dostępność pakietu pokoi, użyj elementu <RoomBundle> w wiadomości o transakcji dla każdej kombinacji pakietu lub planu podróży. Element <RoomBundle> powinien znajdować się w elemencie <Result>. Wyświetlony zostanie przykładowy kod dwóch elementów <RoomBundle>. Zwróć uwagę, że w tym przykładzie 2 elementy <RoomBundle> odwołują się do metadanych pokoju i pakietu za pomocą <RoomID> i <PackageID>.
W przypadku każdego elementu <Result> zawarty zestaw pakietów pokoi zastępuje istniejący zestaw dla danej kombinacji usługi lub planu podróży. Jeśli w elemencie <Result> nie zdefiniujesz żadnych pakietów pokoi ani funkcji cenowych, wszystkie pakiety pokoi zostaną usunięte, a w wynikach wyszukiwania pojawi się tylko podstawowy pokój w danym hotelu lub planie podróży.
Używaj elementów takich jak <Name>, aby pakiety pokoi były bardziej atrakcyjne dla potencjalnych klientów. Upewnij się, że są one zgodne ze stroną docelową hotelu. W tym przykładzie nazwy i inne informacje opisowe zdefiniujesz w metadanych.
<RatePlanID> jest opcjonalny i reprezentuje unikalny identyfikator kombinacji pokoju i pakietu. Zdecydowanie zalecamy używanie zmiennej RatePlanID do tworzenia dynamicznego adresu URL strony docelowej (wcześniej punktu sprzedaży). Aby uzyskać optymalną wydajność, powinien mieć maksymalnie 50 znaków. Więcej informacji znajdziesz w sekcji Używanie zmiennych i warunków.
Te elementy są opcjonalne w przypadku pakietów pokoi:
<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>
Gdy wdrożysz pakiet pokoju na aktywnym koncie, usuń <Baserate> po włączeniu pakietu pokoju.
<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>
Określanie metadanych pokoju i pakietu
Aby zdefiniować metadane pakietu Room, użyj elementów <PackageData> i <RoomData> w elemencie <PropertyDataSet> wiadomości o transakcji.
Metadane pokoju i pakietu określasz w wiadomości o transakcji, która jest oddzielona od danych o cenach i dostępności. Dzięki wcześniejszemu zdefiniowaniu tych danych 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 reklam, gdy są one wyświetlane. Metadane pokoju i pakietu możesz w każdej chwili zaktualizować za pomocą nowej wiadomości o transakcji.
W wiadomości o transakcji ustawiasz identyfikator pakietu i identyfikator pokoju w każdym bloku, do którego następnie odwołujesz się w blokach <Result> aktualizacji cen.
Jeśli dane pokoju i pakietu ulegną zmianie – na przykład dodasz nowy typ pokoju w obiekcie – wyślij nową wiadomość o transakcji zawierającą zaktualizowane dane pokoju i pakietu. Google zastąpi istniejące metadane dotyczące pokoju lub pakietu nowymi danymi.
Google zaleca zdefiniowanie metadanych podczas początkowej konfiguracji. Po wstępnym zdefiniowaniu metadanych wystarczy odwołać się do wartości <RoomID> i <PackageID> w aktualizacjach cen, zamiast ponownie uwzględniać wszystkie te informacje. Google używa tych identyfikatorów do dopasowywania pokoi i pakietów pokoi do przechowywanych metadanych. Może to znacznie zmniejszyć ogólny rozmiar wiadomości transakcyjnych.
Ceny kombinacji pokoju lub planu podróży zmieniają się znacznie częściej niż opisy pokoju lub pakietu, więc zdefiniowanie metadanych raz, a następnie odwoływanie się do nich jest znacznie bardziej efektywnym sposobem wykorzystania wiadomości transakcyjnych. Dodatkowo można wyeliminować błędy, takie jak niezgodne opisy pokoi, używając metadanych zamiast definiowania danych w tekście.
Zalecana i najskuteczniejsza metoda oddzielnego definiowania metadanych i cen jest pokazana poniżej:
<!-- 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 znać różnicę między zajętością a pojemnością:
- Liczba osób
- Liczba gości, do których ma zastosowanie pakiet pokoi. Na przykład „Pakiet dla nowożeńców” ma zajętość 2 osób. Wartość dotyczącą liczby osób w pakiecie ustawiasz za pomocą elementu podrzędnego
<Occupancy>elementów<PackageData>lub<RoomBundle>. - Rozmiar
- Maksymalna liczba osób, które mogą fizycznie przebywać w pomieszczeniu. Pojemność pokoju jest zawsze równa liczbie osób lub od niej większa. Na przykład „Apartament dla nowożeńców” w Twoim hotelu może pomieścić maksymalnie 6 osób, ale oferujesz pakiet dla 2 gości. Wartość pojemności opakowania ustawia się za pomocą elementu podrzędnego
<Capacity>elementu<RoomData>.
Podczas określania ceny pakietu pokoi musisz podać cenę dla liczby gości, dla których jest on przeznaczony (wartość określona w elemencie <Occupancy> pakietu). Jeśli wartość <Occupancy> wynosi 2, cena w tym pakiecie musi być przeznaczona dla 2 osób. Nie możesz ustawić <Occupancy> na 4 gości i określić ceny pakietu dla 2 gości.
Wspólne pokoje
W przypadku pakietów pokoi możesz też używać pól Obłożenie i Pojemność, aby ustawiać ceny za pokoje współdzielone, np. w hostelu. Jeśli np. chcesz ustawić cenę za osobę za pokój w akademiku z 8 łóżkami, ustaw wartość pola Liczba osób na 1, a wartość pola Pojemność na 8 i określ to w nazwie <RoomData>. Zobacz
przykład
Aktualizowanie pakietów z pokojami
W tej sekcji opisano, jak usunąć pakiet pokoju, który nie jest już dostępny, oraz jak zaktualizować cenę istniejącego pakietu pokoju.
Usuwanie pakietu z pokojem
Pakiety pokoi różnią się od cen hoteli sposobem usuwania.
Aby usunąć z asortymentu kombinację pokoju i planu podróży, ustaw wartość elementu
<Result> <Baserate> na -1. Aby usunąć pakiet pokoju 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 zestaw, który może zawierać od 0 do kilkudziesięciu elementów. Gdy wysyłasz pakiety pomieszczeń do Google, wysyłasz aktualny, kompletny zestaw. Nie zmieniaj wartości poszczególnych pakietów pokoi, aby oznaczyć wcześniej dostępny pakiet jako niedostępny. Zestaw pakietów w najnowszej wiadomości o transakcji zastępuje bieżący zestaw.
Na przykład są pakiety A, B, C i D. Najpierw wysyłasz wiadomość, która definiuje zestawy pokoi A, B, C i D. Jeśli później pakiet B zostanie wyprzedany, wyślesz ponownie cały zestaw, ale tylko z pakietami A, C i D. Jeśli wszystkie pakiety z pokojem zostały wyprzedane, wyślij pusty zestaw pakietów z pokojem.
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 transakcyjnych, musisz podać pełny zestaw dostępnych pakietów pokoi dla każdego <Result>. Google zastępuje dotychczasowy zestaw pakietów do sal konferencyjnych 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
Metadane zestawu Room Bundle aktualizujesz za pomocą odpowiedzi na żądanie <Query> od Google.
Odpowiadasz na wiadomość Query wiadomością Transaction, która określa metadane pokoju i pakietu dla wskazanych hoteli. Więcej informacji znajdziesz w artykule Zapytania i wiadomości.