Pakiety pokoi umożliwiają zdefiniowanie wielu typów pokoi w jednym obiekcie lub połączenie planu pobytu z ceną z dodatkowymi usługami (dodatkowe usługi z ceną i warunkami sprzedaży) dla użytkowników poza standardową ceną.
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 dotyczy wersji pakietów pokoi na urządzeniach mobilnych, która obejmuje wszystkie różne typy pokoi dla wymaganej liczby osób oraz ich zdjęcia.
Uwaga: grupy pokoi bez zdjęć zostaną zastąpione zastępczym obrazem łóżka.
Oceń funkcje
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.
Pakiety pokoi
Pakiety pokoi i funkcje cenowe definiujesz w wiadomościach transakcyjnych. 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 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>
, 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:
W sekcji
<Result>
uwzględnij cenę pokoju podstawowego, podatki i inne opłaty oraz dodaj jeden pakiet pokoi odpowiadający podstawowemu pakietowi pokoi.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.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. Informacje te 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ż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>
i <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 Twoje metadane do danych dotyczących Twojego planu podróży, aby renderować zawartość reklam. Specjalne przetwarzanie służy do łączenia nazw i opisów z elementów <RoomData>
i <PackageData>
, co pozwala opisać fizyczną salę w elemencie <RoomData>
, a funkcje i szczegóły pakietu w elemencie <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ęć do pokoju pamiętaj o tych wskazówkach, których musisz przestrzegać, 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.
Dołącz co najmniej cztery zdjęcia pokoju i co najmniej jedno zdjęcie łazienki.
Zdjęcia powinny przedstawiać 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 własność, np. zewnątrz lub udogodnienia obiektu, zwiedzanie/turystyka i jedzenie.
Unikaj zbliżeń przedmiotów, np. kiełbasek na kieliszki.
Unikaj marek i elementów marki, ale na zdjęciu, które pokazuje całą łazienkę, można umieścić markowe przybory toaletowe z etykietami lub markami. Zdjęcia nie powinny 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ęć. Aby poprawić pozycję w rankingu, rób zdjęcia w najwyższej rozdzielczości. Nie musisz przesyłać tego samego zdjęcia w różnych rozdzielczościach.
Pierwszeństwo danych
Dane dotyczące pakietów pokoi są zbierane ze wszystkich źródeł i łączone za pomocą reguł ustalania kolejności, aby uzyskać ostateczne dane dotyczące danego hotelu, planu podróży i pakietu pokoi. Oto ich kolejność (od najniższego do najwyższego):
- (Lowest) Partner data
- Dane usługi
<RoomData>
, gdzie<RoomID>
odpowiada<RoomID>
w bloku<RoomBundle>
<PackageData>
, gdzie<PackageID>
pasuje do<PackageID>
w bloku<RoomBundle>
- (Najwyższy)
<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 dla 2 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.
<RatePlanID>
jest opcjonalny i reprezentuje unikalny identyfikator kombinacji pokoju 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 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>
Zdefiniuj metadane pokoju i pakietu
Aby zdefiniować metadane pakietu pokoi, użyj elementów <PackageData>
i <RoomData>
wewnątrz elementu <PropertyDataSet>
wiadomości transakcji.
Metadane dotyczące pokoju i pakietu definiujesz w wiadomości o transakcji, która jest oddzielona 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 i wstawia je do Twoich reklam podczas ich wyświetlania. 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 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 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ć łą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 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>
Liczba osób i pojemność
Określając pakiety pokoi, musisz wiedzieć, na czym polega różnica między liczbą a liczbą:
- Liczba osób
- Liczba gości, do których ma być przeznaczony pakiet pokoi. Na przykład pakiet „Honeymoon Package” jest przeznaczony dla 2 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ść 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 pakietu możesz ustawić 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>
ma wartość 2, cena w tym pakiecie musi obejmować 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>
. Zobacz 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ę 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 „Transakcja”.
Pakiety pokoi w plikach danych są traktowane jako zestawy, których liczba może wynosić od 0 do kilkudziesięciu. Gdy wysyłasz do Google pakiet pokoi, wysyłasz aktualny, kompletny zestaw. Nie zmieniaj wartości pojedynczego pakietu pokoi, aby oznaczyć wcześniej dostępny pakiet jako niedostępny. 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 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 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ść 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 Zapytania do funkcji Messages.