W tej sekcji znajdziesz informacje na temat wiadomości z prośbą o podpowiedź, wiadomości z odpowiedzią na podpowiedź oraz wiadomości z zapytaniem opartych na formacie XML.
<Hint>
(wiadomość z odpowiedzią na podpowiedź)
Element główny wiadomości z odpowiedzią. Wiadomości z podpowiedziami określają, które hotele lub kombinacje planów podróży powinny zostać przecenione. Są to Twoje odpowiedzi na wiadomość z prośbą o podpowiedź od Google.
Odpowiedź na podpowiedź powinna zawierać tylko te hotele, których ceny zmieniły się od czasu, gdy Google otrzymało od Twoich serwerów pomyślną odpowiedź na podpowiedź.
Aby określić, które hotele i plany podróży mają być przeliczane przez Google, wiadomości z odpowiednią podpowiedzią używają jednej z tych metod:
Dokładne plany podróży: połączenie daty zameldowania i długości pobytu.
Zakresy dat zameldowania: określają zakres dat zameldowania, począwszy od pierwszej daty zameldowania do ostatniej.
Pobyty w ramach pakietu (lub plany podróży w ramach pakietu)
Każda z tych metod wymaga innej składni dla odpowiedzi na podpowiedź.
Więcej informacji znajdziesz w artykule Komunikaty z podpowiedzią.
Składnia
Element <Hint>
używa innej składni w zależności od typu wiadomości odpowiedzi:
Dokładne plany podróży
Poniżej przedstawiono składnię dokładnych planów podróży w wiadomości z odpowiedzią na podpowiedź:
<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>hotel_ID</Property>
...
<Stay>
<CheckInDate>checkin_date</CheckInDate>
<LengthOfStay>number_of_nights</LengthOfStay>
</Stay>
</Item>
...
</Hint>
Zakresy zameldowania
Poniżej przedstawiono składnię zakresów zameldowania w wiadomości z odpowiednią podpowiedzią:
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<Property>hotel_ID</Property>
[...]
<!-- Required -->
<FirstDate>first_checkin_date</FirstDate>
<!-- Required -->
<LastDate>last_checkin_date</LastDate>
</Item>
...
</Hint>
Zakwaterowanie w ramach przedziału cenowy
Poniżej przedstawiono składnię dotyczącą pobytu w ramach przedziału w wiadomości z podpowiedzią:
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<Property>1458700</Property>
<Property>5418701</Property>
<StaysIncludingRange>
<!-- Required -->
<FirstDate>2025-04-28</FirstDate>
<!-- Optional -->
<LastDate>2025-04-29</LastDate>
</StaysIncludingRange>
</Item>
...
</Hint>
Atrybuty
Element <Hint>
zawiera opcjonalny atrybut: id
. Jeśli zostanie podany, jest dołączany jako atrybut hintId
w wiadomościach <Query>
wysyłanych na podstawie tego <Hint>
.
Elementy potomne
Element <Hint>
ma te elementy podrzędne:
Element podrzędny | Wymagany? | Typ | Typ odpowiedzi na podpowiedź | Opis |
---|---|---|---|---|
<CheckInDate> | Required | Date | Dokładne plany podróży | Data zameldowania w ramach planu podróży. |
<FirstDate> | Required | Date | Zakresy godzin zameldowania i zakresy planów podróży | Pierwsza data w zakresie dat dla zakresu dat zameldowania lub pobytu w ramach odpowiedzi na podpowiedź. Daty są uwzględnione. |
<Item> | Required | Object | Wszystko | Kontener hotelu lub planu podróży, który ma zostać zaktualizowany. |
<LastDate> | Required* | Date | Zakresy godzin zameldowania i zakresy planów podróży | Ostatnia data zakresu dat dla zakresu dat zameldowania lub pobytu z zakresem dat. Daty są uwzględnione. * Ten element jest opcjonalny w przypadku pobytu w określonym przedziale czasowym. |
<LengthOfStay> | Required | integer | Dokładne plany podróży | Liczba nocy w planie podróży wyrażona jako dodatnia liczba całkowita. |
<Property> | Required | string | Wszystko | Identyfikator hotelu, który jest taki sam jak identyfikator listy hoteli. Liczba elementów
|
<Stay> | Required | Object | Dokładne plany podróży | Element kontenera dla elementów <CheckinDate> i <LengthOfStay> w odpowiedzi na podpowiedź dotyczącą dokładnego planu podróży. Każdy element <Item> może zawierać tylko 1 element <Stay> . |
<StaysIncludingRange> | Required | Object | Plany podróży z zakresem | Kontenery dla elementów <FirstDate> i <LastDate> w wiadomości z odpowiedzią na podpowiedź dotyczącą pobytu w zakresie. |
Przykłady
Dokładne plany podróży
W tym przykładzie zdefiniowano wiele planów podróży dla jednej usługi: wiadomość z odpowiednią podpowiedzią:
<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>12345</Property>
<Stay>
<CheckInDate>2018-07-03</CheckInDate>
<LengthOfStay>3</LengthOfStay>
</Stay>
</Item>
<Item>
<Property>12345</Property>
<Stay>
<CheckInDate>2018-07-03</CheckInDate>
<LengthOfStay>4</LengthOfStay>
</Stay>
</Item>
</Hint>
Zakresy zameldowania
W tym przykładzie podajemy 2 hotele, których ceny uległy zmianie i powinny zostać pobrane ponownie. Google otrzymuje wszystkie plany podróży między 3 a 6 lipca dla obiektów 12345 i 67890:
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>12345</Property>
<Property>67890</Property>
<FirstDate>2018-07-03</FirstDate>
<LastDate>2018-07-06</LastDate>
</Item>
</Hint>
Zakwaterowanie w ramach przedziału cenowy
Ten przykład pokazuje 2 różne zastosowania pobytu w ramach przedziału: jeden dla przedziału liczby nocy, a drugi dla jednej nocy:
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<!-- Google fetches prices for all itineraries (first and last date are set) -->
<Item>
<Property>12345</Property>
<StaysIncludingRange>
<FirstDate>2018-07-03</FirstDate>
<LastDate>2018-07-06</LastDate>
</StaysIncludingRange>
</Item>
<!-- Google fetches prices for a single night (first date only) -->
<Item>
<Property>67890</Property>
<StaysIncludingRange>
<FirstDate>2018-07-03</FirstDate>
</StaysIncludingRange>
</Item>
</Hint>
W przypadku każdego z tych przykładów Google odpowiada komunikatem <Query>
, na który należy odpowiedzieć komunikatem <Transaction>
zawierającym informacje o aktualnych cenach w wybranych hotelach lub trasach.
<HintRequest>
Element rdzeniowy wiadomości z prośbą o podpowiedź. Google wysyła wiadomość z żądaniem podpowiedzi do Twojego serwera i oczekuje odpowiedzi, która określa hotele i plany podróży, których ceny uległy zmianie od czasu ostatniego otrzymania przez Google od Twojego serwera prawidłowej odpowiedzi na żądanie podpowiedzi.
Jeśli nastąpią jakiekolwiek zmiany cen, Google wyśle <Query>
, aby pobrać zaktualizowane dane o cenach dla wskazanych hoteli i planów podróży.
Więcej informacji znajdziesz w artykule [GA4] Wskazówki dotyczące wiadomości z prośbą o dane.
Składnia
Element <HintRequest>
używa tej składni:
Składnia
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
Atrybuty
Element <HintRequest>
nie ma atrybutów.
Elementy potomne
Element <HintRequest>
ma te elementy podrzędne:
Element podrzędny | Typ | Opis |
---|---|---|
<LastFetchTime> | DateTime | Ostatni raz, kiedy Google otrzymało odpowiedź na prośbę o podpowiedź.
Jeśli czas jest starszy niż data ostatniej aktualizacji cen na serwerze, odpowiedz za pomocą wiadomości z podpowiedzią, w której określisz, które hotele uległy zmianie. Jeśli nie było ostatnio żadnego udanego pobrania, zostanie ustawiony stały interwał (aby uniknąć poważniejszych problemów z dużymi zaległościami). Obecna wartość stałego odstępu czasu to 1000 sekund, ale może ulec zmianie. Więcej informacji znajdziesz w artykule Komunikaty z podpowiedzią. |
Przykłady
Ten przykład pokazuje wiadomość z prośbą o podpowiedź:
wiadomość z prośbą o podpowiedź
Ten przykład pokazuje wiadomość z prośbą o podpowiedź:
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest id="ABCDEF" timestamp="2018-06-07T16:20:00Z">
<LastFetchTime>2018-03-25T00:04:09Z</LastFetchTime>
</HintRequest>
<Query>
Element główny wiadomości Query
. Query
wiadomości to żądania aktualizacji cen lub metadanych wysyłane przez Google. Są one używane w przypadku zarówno metody dostawy „pull”, jak i metody dostawy „push”.
wiadomości z zapytaniami dotyczącymi cen,
Wiadomości z zapytaniem o ceny określają kombinacje obiektu i planu podróży, dla których podajesz ceny.
Gdy serwer otrzyma wiadomość z zapytaniem o ceny, powinien odpowiedzieć wiadomością <Transaction>
zawierającą żądane informacje o cenach.
Więcej informacji znajdziesz w artykule Omówienie cen.
Istnieją 3 specjalne typy wiadomości Query
:
Ceny w czasie rzeczywistym: Google odpowiada na konkretne żądanie użytkownika, prosząc o aktualizację ceny w czasie rzeczywistym. Gdy partnerzy otrzymają wiadomość
Live pricing query
, powinni odpowiedzieć wiadomością<Transaction>
zawierającą żądane informacje o cenach w elementach<Result>
.W przypadku ustalania cen na podstawie kontekstu: Google aktualizuje pamięć podręczną cen na podstawie kontekstów, które były popularne w przeszłości. Gdy otrzymasz wiadomość
With context query
, odpowiedz wiadomością<Transaction>
zawierającą żądane informacje o cenach w elementach<Result>
.Metadane: Google prosi o aktualizację metadanych pokoi i pakietów pokoi w wybranych hotelach. Gdy otrzymasz wiadomość
Metadata Query
, odpowiedz wiadomością<Transaction>
zawierającą dane o pokojach i pakietach pokoi w elementach<PropertyDataSet>
. Więcej informacji znajdziesz w metadanych pakietu Room Bundle.
Składnia
Element <Query>
używa tej składni:
Zapytanie o ceny
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<PropertyList>
<Property>hotel_id</Property>
...
</PropertyList>
</Query>
Ceny w czasie rzeczywistym
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
<FirstDate>YYYY-MM-DD</FirstDate>
<LastDate>YYYY-MM-DD</LastDate>
<!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
<AffectedNights>number_of_nights</AffectedNights>
<PropertyList>
<Property>hotel_id</Property>
...
</PropertyList>
<!-- See documentation below for <Context> -->
<Context>
...
</Context>
</Query>
Z kontekstem
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
<FirstDate>YYYY-MM-DD</FirstDate>
<LastDate>YYYY-MM-DD</LastDate>
<!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
<AffectedNights>number_of_nights</AffectedNights>
<PropertyContextList>
<PropertyContext>
<Property>hotel_id</Property>
...
<!-- See documentation below for <Context> -->
<Context>
...
</Context>
</PropertyContext>
</PropertyContextList>
</Query>
Metadane
<HotelInfoProperties>
<Property>property_ID</Property>
...
</HotelInfoProperties>
Atrybuty
Element <Query>
może zawierać jeden atrybut: latencySensitive
.
Atrybut latencySensitive
jest opcjonalny. Gdy jest podany i ma wartość true
, oznacza, że zapytanie jest Live Pricing Query
. Aby Google wysyłało zapytania z atrybutem latencySensitive
, skontaktuj się z opiekunem klienta w zakresie technicznym (TAM).
Elementy potomne
Element <Query>
ma te elementy podrzędne:
Element podrzędny | Typ zapytania | Typ | Opis |
---|---|---|---|
<AffectedNights> | Pricing | integer | Liczba nocy w ramach pobytu z różną liczbą nocy. Ten element jest używany tylko w przypadku zapytań o ceny pobytu w ramach pobytu z wieloma terminami używanych w przypadku zmiany cen. |
<Checkin> | Pricing | Date | Daty konkretnej zmiany ceny. |
<Context> | Pricing (Live Pricing Queries only) | <Context> | W przypadku zapytań o ceny na żywo określa określone parametry, na podstawie których wysyłane jest zapytanie. Elementy podrzędne:
Element |
<FirstDate> | Pricing | Date | Data rozpoczęcia zakresu planów podróży, do których mają zastosowanie ceny. Ten element jest używany tylko w przypadku zapytań dotyczących cen w zakresie daty zameldowania używanych w przypadku zmiany cen. |
<HotelInfoProperties> | Metadata | string | Co najmniej 1 usługę, dla której Google chce zaktualizować metadane pokoju i pakietu pokoi w wiadomości metadanych Query .
Ten element może zawierać co najmniej 1 element <Property> , który określa identyfikatory obiektów hotelowych. |
<LastDate> | Pricing | Date | Data zakończenia zakresu planów podróży, do których mają zastosowanie ceny. Ten element jest używany tylko do zapytań dotyczących zakresu dat zameldowania używanych z opcją „Pociągnij i wskaż”. |
<Nights> | Pricing | integer | Liczba nocy w ramach konkretnego planu podróży, do 30. |
<PropertyList> | Pricing | Object | Co najmniej 1 identyfikator hotelu, który wymaga aktualizacji cen. Określ każdy hotel za pomocą elementu <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> |
Przykłady
Zapytanie o ceny
Ten przykład pokazuje wiadomość z zapytaniem o ceny, która prosi o aktualizacje cen dla zestawu hoteli dostępnych na 3 noce, począwszy od 23 maja 2023 r.:
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>3</Nights>
<PropertyList>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</PropertyList>
</Query>
Zapytanie o rzeczywistą cenę
Ten przykład pokazuje zapytanie o ceny na żywo z limitem czasu odpowiedzi wynoszącym 500 ms:
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>5</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>8675309</Property>
</PropertyList>
<Context>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="8"/>
<Child age="5"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Z zapytaniem kontekstowym
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>2</Nights>
<PropertyContextList>
<PropertyContext>
<Property>8675309</Property>
<!-- In the future, occupancy and device might be specified -->
<Context><UserCountry>US</UserCountry></Context>
<Context><UserCountry>GB</UserCountry></Context>
</PropertyContext>
<PropertyContext>
<Property>8675310</Property>
<Property>8675311</Property>
<Context><UserCountry>CA</UserCountry></Context>
</PropertyContext>
</PropertyContextList>
</Query>
Zapytanie o metadane
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<HotelInfoProperties>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</HotelInfoProperties>
</Query>
Aby zobaczyć więcej przykładów, w tym zapytań dotyczących cen, w tym zapytań dotyczących cen w przypadku pobytu w określonym przedziale czasowym i daty zameldowania, zapoznaj się z przykładami wiadomości Query
.
<Context>
Element <Context>
zawiera informacje o Live pricing query
, w tym liczbę i typ gości, kraj użytkownika i urządzenie użytkownika.
Wiele usług <Context>
nigdy nie będzie używanych w różnych krajach ani na różnych urządzeniach użytkowników. Jeśli do zapytania o wiele zakwaterowań używasz wielu wartości <Context>
, podaj cenę za każdą liczbę osób jako dodatkowy pakiet pokoi dla odpowiedniej usługi lub planu podróży. Każda usługa lub plan podróży powinien mieć jeden blok <Result>
z cenami uwzględniającymi różne liczby osób.
Szczegółowe informacje o odpowiedzi na zapytanie <Context>
znajdziesz w artykule <OccupancyDetails>
.
Składnia
Element <Context>
używa tej składni:
Składnia
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<Checkin>date</Checkin>
<Nights>number_of_nights</Nights>
<DeadlineMs>number_of_milliseconds</DeadlineMs>
<PropertyList>
<Property>property_ID</Property>
</PropertyList>
<Context>
<Occupancy>total_number_of_guests</Occupancy>
<OccupancyDetails>
<NumAdults>number_of_adults</NumAdults>
<Children>
<Child age=age_of_one_child_guest/>
<Child age=age_of_one_child_guest/>
</Children>
</OccupancyDetails>
<UserCountry>end_user_country</UserCountry>
<UserDevice>user_device_type</UserDevice>
</Context>
</Query>
Elementy potomne
Element <Context>
ma te elementy podrzędne:
Element podrzędny | Typ zapytania | Typ | Opis |
---|---|---|---|
<Occupancy> | Pricing | integer | Określa łączną liczbę gości. Chociaż nie jest to wymagane, zapytania z parametrem Uwaga: |
<OccupancyDetails> | Pricing | Object | Poprzedza go <Occupancy> . Określa gości według typu, w tym:
Chociaż nie jest to wymagane, zapytania z Uwaga: |
<UserCountry> | Pricing | string | Filtruje ceny według kraju, w którym znajduje się użytkownik. Wartość to 2-literowy kod kraju, np. Zapytania z zdefiniowanym parametrem |
<UserDevice> | Pricing | string | Filtruje ceny według typu urządzenia, na którym użytkownik prowadzi wyszukiwanie. Możliwe wartości:
Zapytania z zdefiniowanym parametrem |
Przykłady
Liczba osób
Ten przykład pokazuje zapytanie dotyczące cen na żywo dla <Occupancy>
w <Context>
. Zapytanie o rzeczywistą cenę dotyczy 3 osób dorosłych.
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>4</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>45617</Property>
</PropertyList>
<Context>
<Occupancy>3</Occupancy>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Szczegóły dotyczące zajętości
Poniższy przykład pokazuje zapytanie o ceny na żywo z wartością <OccupancyDetails>
w ramach <Context>
.
Zapytanie o ceny na żywo dotyczy 4 osób, z których 2 są dziećmi. Szukana cena dotyczy rezerwacji przez gościa z USA na urządzeniu mobilnym:
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>5</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>8675309</Property>
</PropertyList>
<Context>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="4"/>
<Child age="12"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Wiele kontekstów
Ten przykład pokazuje użycie dodatkowego elementu <Context>
w zapytaniu o ceny na żywo.
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>4</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>45617</Property>
</PropertyList>
<Context>
<Occupancy>3</Occupancy>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
<Context>
<Occupancy>6</Occupancy>
<OccupancyDetails>
<NumAdults>4</NumAdults>
<Children>
<Child age="6"/>
<Child age="10"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>