Zapytanie i dokument XML wskazówek

Ta sekcja zawiera odniesienie do kodu Google opartego na języku XML, Wiadomości z prośbami o wskazówki, wiadomości z odpowiedziami na podpowiedzi, i Zapytania dotyczące wiadomości.

<Hint> (wiadomość z odpowiedzią)

Element główny wiadomości z odpowiedzią. Wiadomości z odpowiedziami na podpowiedzi określać, których kombinacji hoteli lub planów podróży chcesz zmienić. Są to Twoje odpowiedź na wiadomość żądania podpowiedzi od Google.

Komunikat z podpowiedzią powinien określać tylko te hotele, których ceny mają zmieniła się od ostatniego otrzymania przez Google prawidłowej odpowiedzi na pytanie Twoje serwery.

W wiadomościach z odpowiedziami na sugestie możesz użyć jednej z poniższych metod hotele i plany podróży, które Google powinien zmienić:

  • Dokładne plany podróży: połączenie daty zameldowania o długości pobytu.

  • Zakresy dat zameldowania: określa zakres dat zameldowania. daty rozpoczynającej się od pierwszej daty zameldowania, a kończąc ostatnim datę zameldowania.

  • Pokoje o określonym zakresie (lub różne plany podróży).

Każda z tych metod wymaga innej składni odpowiedzi na podpowiedź .

Więcej informacji znajdziesz w artykule Wiadomości z odpowiedziami na wskazówki.

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 widać składnię dokładnych planów podróży w odpowiedzi na podpowiedź wiadomość:

<!-- 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 zameldowań

Poniżej przedstawiono składnię zakresów zameldowania w wiadomości z hitem:

<!-- 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>

Zakresy długości pobytu

Poniżej widać składnię pozostających w zakresie w odpowiedzi na podpowiedzi wiadomość:

<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <!-- At least one is required -->
    <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. Kiedy jest uwzględniony jako atrybut hintId w <Query> Wysłano wiadomości na podstawie: <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 planie podróży.
<FirstDate> Required Date Zakresy odprawiania i różne plany podróży Pierwsza data zakresu dat zameldowania pozostaw wiadomość z odpowiedzią. Daty są uwzględnione.
<Item> Required Object Wszystko Kontener do aktualizacji hotelu lub planu podróży.
<LastDate> Required* Date Zakresy odprawiania i różne plany podróży

Ostatnia data zakresu dat zameldowania lub zakresu dat pozostaw wiadomość z odpowiedzią. Daty są uwzględnione.

* Ten element jest opcjonalny w przypadku pobytu z zakresu zakresu.

<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 używany z tym samym identyfikatorem co na liście hoteli. Numer z <Property> elementów, które można określić w jednym Blok <Item> jest określany na podstawie typu podpowiedzi Wiadomość z odpowiedzią:

  • Dokładne plany podróży: maksymalnie 100 hoteli.
  • Zakresy zameldowania: więcej niż jeden, jeśli jest ustawiony <MultipleItineraries> do użytkownika "checkin_range" w wiadomości <QueryControl>.
  • Zakres pobytu: więcej niż 1, jeśli w wiadomości <QueryControl> ustawisz wartość <MultipleItineraries> na "affected_dates" .
<Stay> Required Object Dokładne plany podróży Kontener dla elementów <CheckinDate> i <LengthOfStay> w dokładnym planie podróży w odpowiedzi. Każdy element <Item> może zawierać tylko jeden <Stay>
<StaysIncludingRange> Required Object Różne plany podróży Kontener dla zasobów typu <FirstDate> i <LastDate> elementów w odpowiedzi na pytanie dotyczące stałego pobytu .

Przykłady

Dokładne plany podróży

W tym przykładzie zdefiniowano wiele planów podróży dla jednej usługi.Wiadomość z wskazówką:

<!-- 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 zameldowań

Poniższy przykład wskazuje 2 hotele, których ceny uległy zmianie. powinno zostać pobrane jeszcze raz. Google otrzymuje wszystkie plany podróży między 3 a 6 lipca dla 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>

Zakresy długości pobytu

Poniższy przykład pokazuje 2 różne zastosowania przedziałów czasowych, po jednym dla zakres nocy, a drugi w przypadku 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 przesyła <Query>, a Ty a potem prześlij odpowiedź <Transaction> z informacjami o zmianach cen określonych hoteli lub planów podróży.

<HintRequest>

Główny element wiadomości żądania podpowiedzi. Google wysyła żądanie wskazówek do serwera i oczekuje odpowiedzi, która określa hotele planów podróży, których ceny zmieniły się od czasu otrzymania przez Google odpowiedź z podpowiedzią została przesłana z serwera.

W przypadku zmian cen Google przesyła <Query> z pobiera zaktualizowane dane o cenach wybranych hoteli i planów podróży.

Więcej informacji znajdziesz w artykule Wiadomości z prośbami o wskazówki.

Składnia

Element <HintRequest> ma taką 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 Kiedy ostatnio udało się nam otrzymać wiadomość z odpowiedzią na wiadomość z 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 w ostatnim czasie nie było żadnego udanego pobierania, wartość ta zostanie ustawiona na stałą wartość interwału (aby uniknąć poważnych problemów ze zaległości). Bieżąca stała wartość interwału wynosi 1000 sekund, ale jest może ulec zmianie.

Aby dowiedzieć się więcej, skonsultuj się z: Wiadomości z odpowiedziami na podpowiedzi.

Przykłady

Poniższy przykład pokazuje wiadomość z żądaniem podpowiedzi:

wiadomość z prośbą o podpowiedź

Oto przykład prośby 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>

Główny element wiadomości Query. Query wiadomości to prośby od Google w celu aktualizacji cen lub metadanych. Są używane zarówno z funkcją Pull, i zmianach cen. trybami wyświetlania.

Istnieją 3 typy wiadomości typu Query:

  • Aktywna cena: Google w odpowiedzi na konkretne pytanie użytkownika, pyta: od cen w czasie rzeczywistym. Gdy partnerzy otrzymają Live pricing query na wiadomość, partnerzy powinni odpowiedzieć, wysyłając wiadomość <Transaction> z następującym zawiera żądane informacje o cenach w elementach <Result>.

  • Za pomocą cen kontekstowych: Google aktualizuje swoją pamięć podręczną cen na podstawie kontekstu. które są wciąż popularne. 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 sal i pakietów pomieszczeń. w wybranych hotelach. Gdy otrzymasz wiadomość Metadata Query, powinien przesłać w odpowiedzi komunikat <Transaction>, który określa dane na temat i pakiety pokojów w elementach <PropertyDataSet>.

Więcej informacji znajdziesz w artykule Omówienie cen w przypadku zapytań o ceny i metadanych pakietu pokoi. zapytań o metadane.

Oto 3 różne typy składni:

Składnia

Element <Query> używa tej składni:

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 i ustawieniu na true, oznacza to, że zapytanie ma typ Live Pricing Query. Aby Google wysyłało zapytania z atrybutem latencySensitive, skontaktuj się z opiekunem klienta w zakresie obsługi technicznej (TAM).

Elementy potomne

Element <Query> ma te elementy podrzędne:

Element podrzędny Typ zapytania Typ Opis
<AffectedNights> Pricing integer Liczba nocy w przypadku pobytu o określonym zakresie. Ten element jest używany tylko w przypadku zapytań o ceny zakresu objętego zmianą ceny.
<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:
  • <Occupancy>: łączna liczba gości
  • <OccupancyDetails>: typ gości, np. dorośli lub dzieci
  • <UserCountry>: kraj, w którym znajduje się użytkownik z siedzibą
  • <UserDevice>: typ urządzenia używanego przez gościa. aby wyszukać hotel, np. "mobile”, „tablet”, lub „desktop”.

Element <Context> może się powtarzać w parametrach można wysyłać zapytania uwzględniające różne obłożenie. Skonsultuj się <Context>, gdzie znajdziesz listę elementów podrzędnych, składnię i przykłady.

<FirstDate> Pricing Date datę rozpoczęcia zakresu planów podróży, do których ma zastosowanie. Ten element jest używany tylko do określania cen w zakresie dat zameldowania zapytań używanych ze zmianą ceny.
<HotelInfoProperties> Metadata string Co najmniej jedna usługa, której dotyczy aktualizacja metadanych pokoju i pakietu pokojów w wiadomości metadanych Query. Ten element może zawierać co najmniej 1 <Property> elementów, które określają identyfikatory obiektów hotelowych.
<LastDate> Pricing Date Data końcowa zakresu planów podróży, do których ma zastosowanie. Ten element jest używany tylko do określania cen w zakresie dat zameldowania zapytań używanych za pomocą pull + wskazówki.
<Nights> Pricing integer Liczba nocy w przypadku konkretnego planu podróży (maksymalnie 30).
<PropertyList> Pricing Object

Co najmniej 1 identyfikator hotelu, który wymaga aktualizacji cen.

Określ każdy hotel w elemencie <Property>. jest ciągiem znaków pasującym do identyfikatora hotelu na liście hoteli. Dla: przykład:

<PropertyList>
  <Property>pid1</Property>
  <Property>pid2</Property>
</PropertyList>

Przykłady

Pytanie o cenę

Przykład poniżej pokazuje wiadomość z zapytaniem o cenę, która zawiera żądanie ceny aktualizacje dotyczące grupy hoteli, dostępne na 3 noce w dniach 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ę

Przykład poniżej przedstawia zapytanie o ceny w czasie rzeczywistym z czasem odpowiedzi. limit 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>

Za pomocą zapytania kontekstowego

<?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>

Dodatkowe przykłady, w tym pobyt w określonym zakresie i zakres dat zameldowania zawiera przykłady wiadomości (Query).

<Context>

Element <Context> opisuje informacje dotyczące: Live pricing query, w tym liczbę i typ gości, kraj użytkownika oraz jego urządzenie.

Wiele usług <Context> nigdy nie będzie używane w różnych krajach ani na różnych urządzeniach użytkowników. Jeśli do zapytania o wiele typów zakwaterowania 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żdy obiekt lub plan podróży powinny mają jeden blok <Result> z cenami dla wielu osób. dołączono.

Szczegółowe informacje o odpowiedzi na zapytanie <Context> znajdziesz w artykule <OccupancyDetails>

Składnia

Element <Context> ma taką 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 <Occupancy> powinny powodować wysłanie wiadomości transakcyjnej z odpowiednimi pakietami Room Bundles zdefiniowanymi dla każdego parametru <Occupancy>. Jeśli jednak pakietów Room Bundles nie można użyć, zalecamy określenie elementu <Occupancy>.

Uwaga:<Occupancy> może nie zawsze się pojawiać. w zapytaniu. W takich przypadkach należy zwrócić ceny wszystkich typów zakwaterowania.

<OccupancyDetails> Pricing Object Jest poprzedzone znakiem <Occupancy>. Określa gości według typu, w tym:
  • <NumAdults>: liczba dorosłych gości
  • <Children><Child="age">: określa, którzy goście są dziećmi (zazwyczaj w wieku 0–17 lat) oraz opcjonalnie zawiera wiek każdego dziecka.

Nie jest to obowiązkowe, ale zapytania z parametrem <OccupancyDetails> powinien skutkować wyświetleniem komunikatu o transakcji z odpowiednim pokojem Są one zdefiniowane dla każdej wartości w kolumnie <Occupancy>, ale jeśli Pakiety pokojów są niedostępne, zalecamy określ element <OccupancyDetails>.

Uwaga: <OccupancyDetails> nie zawsze nie pojawiają się w zapytaniu. W takich przypadkach należy przyjąć, że wszyscy goście są tylko dorośli.

<UserCountry> Pricing string

Filtruje ceny według kraju, w którym znajduje się użytkownik. Wartość to dwuliterowy kod kraju, np. "US" w przypadku Polski lub kodu regionu, na przykład "EU" oznacza „Europa”.

Zapytania ze zdefiniowanym atrybutem <UserCountry> powinny zwracać wyniki wiadomość o transakcji z odpowiednim <Rates> blok zdefiniowany dla kraju, którego dotyczy zapytanie.

<UserDevice> Pricing string

Filtruje dane na podstawie typu urządzenia, na którym użytkownik przeprowadza wyszukiwanie. Możliwe wartości:

  • mobile
  • desktop
  • tablet

Zapytania ze zdefiniowanym parametrem <UserDevice> powinny zwracać błąd wiadomość o transakcji z odpowiednim <Rates> blok zdefiniowany dla urządzenia, którego dotyczy zapytanie.

Przykłady

Liczba osób

Przykład poniżej pokazuje zapytanie o rzeczywistą cenę dla zasobu <Occupancy> w ciągu <Context>. Zapytanie o rzeczywistą cenę dotyczy 3 osób 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óły dotyczące zajętości

Poniższy przykład przedstawia zapytanie dotyczące cen na żywo z <OccupancyDetails> w <Context>. Zapytanie o cenę w czasie rzeczywistym dotyczy 4 gości, z których 2 są dzieci i dotyczy ceny obowiązującej w USA jako gość od urządzenie mobilne:

<?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 użycie dodatkowego elementu <Context> w zapytaniu o aktualną 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>