Ta sekcja zawiera informacje na temat opartych na formacie XML wiadomości z prośbą o podpowiedź, wiadomości z odpowiedziami na podpowiedź i wiadomości z zapytań.
<Hint>
(wiadomość z odpowiedzią na podpowiedź)
Element główny wiadomości z odpowiedzią. Wiadomości z odpowiedziami na podpowiedź określają, dla których połączeń hoteli i planów podróży należy zmienić cenę. Jest to Twoja odpowiedź na wiadomość z prośbą o podpowiedź od Google.
Odpowiedź z odpowiedzią powinna wskazywać tylko te hotele, których ceny zmieniły się od ostatniego otrzymania przez Google udanej odpowiedzi z podpowiedzią z Twoich serwerów.
W odpowiedziach na podpowiedź używa się jednej z tych metod, aby określić, które hotele i plany podróży Google ma zmienić ceny:
Dokładne plany podróży: data zameldowania i długość pobytu.
Zakresy dat zameldowania: określa zakres dat zameldowania, począwszy od daty pierwszego zameldowania i kończąc na datę ostatniego zameldowania.
Pobyty na pewien obszar (lub plany podróży)
Każda z tych metod wymaga innej składni wiadomości z odpowiedzią.
Więcej informacji znajdziesz w artykule Wiadomości z odpowiedzią na podpowiedź.
Składnia
Element <Hint>
używa innej składni w zależności od typu komunikatu z odpowiedzią na podpowiedź:
Dokładne plany podróży
Poniżej znajdziesz składnię dokładnych planów podróży w wiadomości z odpowiedzią z podpowiedzią:
<!-- 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 przedstawiamy składnię zakresów zameldowania w wiadomości z odpowiedzią:
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<!-- Can be > 1 if MultipleItineraries is "checkin_range" in your
QueryControl message -->
<Property>hotel_ID</Property>
[...]
<!-- Required -->
<FirstDate>first_checkin_date</FirstDate>
<!-- Required -->
<LastDate>last_checkin_date</LastDate>
</Item>
...
</Hint>
Pobyty na dłuższy okres
Tak wygląda składnia wiadomości z zakresu zakresu w odpowiedzi na podpowiedź:
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<!-- Can be > 1 if MultipleItineraries is "affected_dates" in your
QueryControl message -->
<Property>hotel_ID</Property>
[...]
<StaysIncludingRange>
<!-- Required -->
<FirstDate>first_date</FirstDate>
<!-- Optional -->
<LastDate>last_date</LastDate>
</StaysIncludingRange>
</Item>
...
</Hint>
Atrybuty
Element <Hint>
zawiera opcjonalny atrybut: id
. Jeśli zostanie podany, będzie uwzględniany jako atrybut hintId
w wiadomościach <Query>
wysyłanych na podstawie tego <Hint>
.
Elementy potomne
Element <Hint>
zawiera te elementy podrzędne:
Element podrzędny | Wymagana? | Typ | Typ odpowiedzi na podpowiedź | Opis |
---|---|---|---|---|
<CheckInDate> | Required | Date | Dokładne plany podróży | Data zameldowania w planie podróży. |
<FirstDate> | Required | Date | Zakresy zameldowania i plany podróży | Pierwsza data zakresu dat odpowiadającego zakresowi zameldowania lub przedziałowi czasu w wiadomości z odpowiedzią na pytanie. Daty są uwzględnione. |
<Item> | Required | Object | Wszystko | Kontener hotelu lub planu podróży do zaktualizowania. |
<LastDate> | Required* | Date | Zakresy zameldowania i plany podróży | Ostatni dzień zakresu dat odpowiadającego zakresowi zameldowania lub przedziałowi czasu w wiadomości z odpowiedzią na pytanie. Daty są uwzględnione. * Ten element jest opcjonalny w przypadku pobytów ograniczonych. |
<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, mający ten sam identyfikator co Lista hoteli. Liczba elementów
|
<Stay> | Required | Object | Dokładne plany podróży | Kontener elementów <CheckinDate> i <LengthOfStay> w wiadomości z podpowiedzią dotyczącą planu podróży. Każdy element <Item> może zawierać tylko 1 element <Stay> . |
<StaysIncludingRange> | Required | Object | Wybrane plany podróży | Kontener elementów <FirstDate> i <LastDate> w wiadomości z odpowiedzią na temat pobytu o zakresie długości. |
Przykłady
Dokładne plany podróży
W tym przykładzie zdefiniowano wiele planów podróży dla jednej usługi (wiadomość z odpowiedzią na podpowiedź):
<!-- 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
Ten przykład określa 2 hotele, których ceny uległy zmianie i powinien zostać ponownie pobrany. Google otrzymuje wszystkie plany podróży z okresu od 3 do 6 lipca dotyczące usług 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>
Pamiętaj, że aby komunikat o zakresie zameldowania mógł określić kilka właściwości w jednym elemencie <Item>
, wartość <MultipleItineraries>
w polu <QueryControl>
musi być ustawiona na "checkin_range"
.
Pobyty na dłuższy okres
Poniższy przykład przedstawia 2 zastosowania pobytów ograniczonych – jedno na wiele nocy, a drugie – na 1 noc:
<!-- 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>
Pamiętaj, że aby wiadomość dotycząca pobytu na wybranym zakresie mogła określić kilka właściwości w pojedynczym elemencie <Item>
, wartość <MultipleItineraries>
w polu <QueryControl>
musi być ustawiona na "affected_dates"
.
W przypadku każdego z tych przykładów Google wysyła w odpowiedzi <Query>
, a Ty musisz przesłać w odpowiedzi <Transaction>
z informacjami o aktualizacjach cen wybranych hoteli lub planów podróży.
<HintRequest>
Element główny wiadomości z prośbą o podpowiedź. Google wysyła na Twój serwer wiadomość z prośbą o podpowiedź i oczekuje odpowiedzi zawierającej informacje o hotelach i planach podróży, których ceny zmieniły się od czasu ostatniego otrzymania z Twojego serwera udanej odpowiedzi na podpowiedź.
Jeśli ceny się zmienią, Google wyśle kod <Query>
, który pobiera zaktualizowane dane o cenach dla wskazanych hoteli i planów podróży.
Więcej informacji znajdziesz w artykule Wiadomości z prośbami o podpowiedź.
Składnia
W elemencie <HintRequest>
używana jest taka składnia:
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>
zawiera te elementy podrzędne:
Element podrzędny | Typ | Opis |
---|---|---|
<LastFetchTime> | DateTime | Czas ostatniego otrzymania przez Google wiadomości z odpowiedzią na prośbę o podpowiedź.
Jeśli ten czas jest starszy niż przy ostatniej aktualizacji cen na serwerze, w odpowiedzi wyślij wiadomość z odpowiedzią z informacją, które hotele się zmieniły. Jeśli ostatnio nie było udanego pobierania, zostanie ustawiona wartość stałego odstępu (aby uniknąć poważniejszych problemów z dużymi zaległościami). Bieżąca wartość stałego odstępu to 1000 sekund, ale może się zmienić. Więcej informacji znajdziesz w artykule Wiadomości z odpowiedzią na podpowiedź. |
Przykłady
Ten przykład przedstawia komunikat z prośbą o podpowiedź:
wiadomość z prośbą o podpowiedź
Ten przykład przedstawia komunikat 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
. Wiadomości (Query
) to żądania od Google dotyczące aktualizacji cen lub metadanych. Są używane w trybach dostawy pobierania i zmiany cen.
Są 3 typy wiadomości Query
:
Aktualne ceny: Google odpowiada na konkretne prośby użytkowników i prosi o aktualizację cen w czasie rzeczywistym. Gdy partnerzy otrzymają wiadomość
Live pricing query
, powinni w odpowiedzi wysłać wiadomość<Transaction>
, która będzie zawierać żądane informacje o cenie w elementach<Result>
.Z cenami kontekstowymi: Google aktualizuje pamięć podręczną cen na podstawie kontekstów, które były dotychczas popularne. Gdy otrzymasz wiadomość
With context query
, w odpowiedzi prześlij wiadomość<Transaction>
zawierającą żądane informacje o cenie w elementach<Result>
.Metadane: Google prosi o aktualizację metadanych pokoi i pakietów pokojów w przypadku określonych hoteli. Gdy otrzymasz wiadomość
Metadata Query
, w odpowiedzi na tego e-maila prześlij wiadomość<Transaction>
, która będzie zawierać dane o pokojach i pakietach pokoi w elementach<PropertyDataSet>
.
Więcej informacji znajdziesz w sekcji omówienie cen w przypadku zapytań o cenę, a w przypadku zapytań o metadane dotyczące metadanych pakietów sal.
Składnia trzech różnych typów została opisana poniżej.
Składnia
W elemencie <Query>
używana jest taka składnia:
Aktualna cena
<?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. Po podaniu wartości true
wskazuje, że zapytanie ma typ Live Pricing Query
. Aby umożliwić Google wysyłanie zapytań z atrybutem latencySensitive
, skontaktuj się z technicznym menedżerem konta (TAM).
Elementy potomne
Element <Query>
zawiera te elementy podrzędne:
Element podrzędny | Typ zapytania | Typ | Opis |
---|---|---|---|
<AffectedNights> | Pricing | integer | Liczba nocy za pobyt na czas. Ten element jest używany tylko w przypadku zapytań dotyczących cen za ograniczony czas pobytu używanych w przypadku zmiany cen. |
<Checkin> | Pricing | Date | daty określonej zmiany ceny. |
<Context> | Pricing (Live Pricing Queries only) | <Context> | W przypadku zapytań o ceny na żywo określa parametry, przy użyciu których jest wykonywane zapytanie. Elementy podrzędne to:
Element |
<FirstDate> | Pricing | Date | Data rozpoczęcia zakresu planów podróży, których dotyczą te ceny. Ten element jest używany tylko w przypadku zapytań dotyczących zakresu dat zameldowania, które są używane w przypadku zmiany ceny. |
<HotelInfoProperties> | Metadata | string | Co najmniej 1 usługa, w przypadku której Google chce zaktualizować metadane dotyczące sal i pakietów pokoi w wiadomości z metadanymi 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, których dotyczą te ceny. Ten element jest używany tylko w przypadku zapytań dotyczących zakresu dat zameldowania, które są używane w przypadku metod pull i podpowiedzi. |
<Nights> | Pricing | integer | Liczba nocy w ramach określonego planu podróży, do 30. |
<PropertyList> | Pricing | Object | Co najmniej jeden identyfikator hotelu, który wymaga aktualizacji cen. Określ każdy hotel w elemencie <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> |
Przykłady
Zapytanie o cenę
Ten przykład przedstawia komunikat Zapytanie o ceny, który prosi o aktualizację cen grupy hoteli dostępnych na 3 noce od 10 czerwca 2018 roku:
<?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>
Pytanie o rzeczywistą cenę
Ten przykład przedstawia zapytanie o rzeczywistą cenę z limitem czasu odpowiedzi wynoszącym 500 milisekund:
<?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>
Więcej przykładów, m.in. zapytania o ceny pobytu na przedział czasu i zakres dat zameldowania, znajdziesz w przykładach wiadomości (Query
).
<Context>
Element <Context>
zawiera informacje o elemencie Live pricing query
, w tym liczbę i rodzaj gości, kraj i urządzenie użytkownika.
Różne <Context>
nigdy nie będą używane w przypadku różnych krajów lub urządzeń. Jeśli w przypadku zapytań dotyczących wielu osób posługuje się wieloma obiektami typu <Context>
, podaj każdą cenę za pobyt jako dodatkowy pakiet pokoi w przypadku danego obiektu lub planu podróży. Każda usługa lub plan podróży powinien mieć 1 blok <Result>
z cenami dla wielu miejsc.
Szczegółowe informacje o odpowiedzi na zapytanie <Context>
znajdziesz w sekcji <OccupancyDetails>
.
Składnia
W elemencie <Context>
używana jest taka składnia:
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>
zawiera te elementy podrzędne:
Element podrzędny | Typ zapytania | Typ | Opis |
---|---|---|---|
<Occupancy> | Pricing | integer | Określa łączną liczbę gości. Chociaż nie jest to obowiązkowe, zapytania z funkcją Uwaga: |
<OccupancyDetails> | Pricing | Object | Jest poprzedzony ciągiem <Occupancy> . Określa gości według typu,
w tym:
Chociaż nie jest to obowiązkowe, zapytania z parametrem Uwaga: |
<UserCountry> | Pricing | string | Filtruje stawki według kraju, w którym znajduje się użytkownik. Wartość to dwuliterowy kod kraju, np. Zapytania ze zdefiniowaną wartością |
<UserDevice> | Pricing | string | Filtruje współczynniki według typu urządzenia, na którym użytkownik wyszukuje informacje. Możliwe wartości:
Zapytania ze zdefiniowaną wartością |
Przykłady
Obecność
Przykład poniżej pokazuje zapytanie o rzeczywistą cenę dla danych <Occupancy>
w obrębie <Context>
. Zapytanie o cenę w czasie rzeczywistym jest przeznaczone dla 3 dorosłych gości.
<?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ółowe informacje o obłożeniu
Ten przykład przedstawia zapytanie o rzeczywistą cenę z użyciem właściwości <OccupancyDetails>
w obrębie <Context>
.
Zapytanie o cenę w transmisji w czasie rzeczywistym jest przeznaczone dla 4 gości, z których 2 są dzieci, i szuka stawki obowiązującej w przypadku rezerwacji gości w 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
Przykład poniżej pokazuje wykorzystanie dodatkowego elementu <Context>
w zapytaniu o rzeczywistą cenę.
<?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>