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
Obrazy poniżej przedstawiają 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 typy pokoi dla wymaganej liczby osób i odpowiednie zdjęcia pokoi.
Uwaga: pakiety pokoi bez zdjęć są zastępowane obrazem symbolu zastępczego łóżka.
Funkcje stawki
Na ilustracjach poniżej znajdziesz przykłady funkcji związanych z ocenami:
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 dotyczące 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 1 pakiet pokoju, który pasuje do pakietu podstawowego.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 pokoju 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. Aby zdefiniować ten typ danych tylko raz, możesz użyć elementów <RoomData>
i <PackageData>
. 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 fizycznego pokoju w elemencie <RoomData>
, a funkcji cenowych i szczegółów pakietu w elemencie <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 myślnikiem.
Wskazówki dotyczące zdjęć
Podczas wysyłania zdjęć 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ściami, 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 zdjęcia łóżka, całego pokoju, łazienki, salonu i widoku z pokoju (z resztą pokoju na tym samym zdjęciu) oraz, w stosownych przypadkach, balkonu, patio lub tarasu.
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 części obiektu lub udogodnień – oraz zdjęć przedstawiających zwiedzanie, turystykę i jedzenie.
Unikaj zbliżeń obiektów, np. kieliszków.
Unikaj marek i elementów marki, ale 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.
Prześlij 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 pakietu 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 pakietu pokoi. Kolejność jest następująca (od najniższego do najwyższego priorytetu):
- (Najniższe) Dane partnera
- Dane usługi
<RoomData>
, gdzie<RoomID>
pasuje do<RoomID>
w bloku<RoomBundle>
<PackageData>
, gdzie<PackageID>
pasuje do<PackageID>
w bloku<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ą skuteczność, powinien mieć maksymalnie 50 znaków. Więcej informacji znajdziesz w sekcji Używanie zmiennych i warunków.
Te elementy są opcjonalne w pakietach pokoi:
<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>
Gdy wdrożysz pakiet Room Bundle na aktywnym koncie, usuń <Baserate>
po włączeniu pakietu Room Bundle.
<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 pokoju, 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 przypadku każdego planu 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 podawać 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 ceny 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 obłożenie 2-osobowe. Wartość zajętości pakietu 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 gości 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ć podana dla 2 osób. Nie możesz ustawić liczby gości na <Occupancy>
i jednocześnie określić ceny pakietu dla 2 osób.
Pokoje współdzielone
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. Na przykład, aby ustawić cenę za osobę za pokój w hostelu z 8 łóżkami, ustawisz liczbę osób na 1
, a pojemność na 8
i określisz to w nazwie <RoomData>
. Zobacz
przykład
Aktualizowanie pakietów z pokojami
W 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 usuwania.
Aby usunąć z asortymentu kombinację pokoju i planu podróży, ustaw wartość atrybutu <Baserate>
elementu
<Result>
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, przesył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 masz 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 uwzględnić pełny zestaw dostępnych pakietów pokoi dla każdego <Result>
. Google zastępuje dotychczasowy zestaw pakietów Room Bundles 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 o wiadomości.