Riferimento XML per query e suggerimenti

Questa sezione fornisce un riferimento per i file di Google Messaggi Hint Request, messaggi Hint Response, e Messaggi Query.

<Hint> (messaggio Hint Response)

L'elemento principale di un messaggio Hint Response. Messaggi Hint Response specificare per quali combinazioni hotel/itinerario il prezzo deve essere aggiornato. Sono le tue risposta a un messaggio Hint Request di Google.

Un messaggio Hint Response deve specificare solo gli hotel i cui prezzi hanno è cambiato dall'ultima volta che Google ha ricevuto un Hint Response con esito positivo da nei tuoi server.

I messaggi Hint Response utilizzano uno dei seguenti metodi per specificare quale hotel e itinerari che Google deve ridefinire i prezzi:

  • Itinerari esatti: una combinazione di data di check-in e durata del soggiorno.

  • Intervalli di date di check-in: specifica un intervallo di date di check-in. date, che iniziano con la prima data di check-in e terminano con l'ultima data del check-in.

  • Soggiorni con intervallo di date (o itinerario con intervallo di date)

Ognuno di questi metodi richiede una sintassi diversa per Hint Response .

Per ulteriori informazioni, consulta la sezione Messaggi Hint Response.

Sintassi

L'elemento <Hint> utilizza una sintassi diversa a seconda del tipo di Hint Messaggio di risposta:

Itinerari esatti

Di seguito viene mostrata la sintassi per gli itinerari esatti in una risposta Hint Response messaggio:

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

Intervalli di check-in

Di seguito viene mostrata la sintassi per gli intervalli di check-in in una risposta Hint messaggio:

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

Soggiorni con intervallo di date

Di seguito viene mostrata la sintassi per i soggiorni con intervallo di date in una risposta Hint messaggio:

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

Attributi

L'elemento <Hint> contiene un attributo facoltativo: id. Quando specificato, è incluso come attributo hintId in <Query> messaggi inviati in base a <Hint>.

Elementi secondari

L'elemento <Hint> ha i seguenti elementi secondari:

Elemento secondario Obbligatorio? Tipo Tipo di Hint Response Descrizione
<CheckInDate> Required Date Itinerari esatti La data del check-in per l'itinerario.
<FirstDate> Required Date Intervalli di check-in e itinerari con intervallo di date La prima data dell'intervallo di date per un intervallo di check-in o incluso mantieni il messaggio Hint Response. Le date sono incluse.
<Item> Required Object Tutte Un contenitore per l'hotel/itinerario da aggiornare.
<LastDate> Required* Date Intervalli di check-in e itinerari con intervallo di date

L'ultima data dell'intervallo di date per un intervallo di check-in o incluso mantieni il messaggio Hint Response. Le date sono incluse.

* Questo elemento è facoltativo per i soggiorni con intervallo di date.

<LengthOfStay> Required integer Itinerari esatti Il numero di notti per l'itinerario, espresso come valore positivo numero intero.
<Property> Required string Tutte

L'ID di un hotel, utilizzato nello stesso ID dell'elenco hotel. Il numero di <Property> elementi che puoi specificare in un singolo Il blocco <Item> è determinato dal tipo di Hint Messaggio di risposta:

  • Itinerari esatti: fino a 100 hotel.
  • Intervalli di check-in: più di uno se imposti Da <MultipleItineraries> a "checkin_range" nel tuo messaggio <QueryControl>.
  • Soggiorno con intervallo di date: più di uno se imposti Da <MultipleItineraries> a "affected_dates" nel tuo messaggio <QueryControl>.
<Stay> Required Object Itinerari esatti Un contenitore per <CheckinDate> e Suggerimento <LengthOfStay> elementi in un itinerario esatto Messaggio di risposta. Ogni elemento <Item> può contenere solo un singolo <Stay>.
<StaysIncludingRange> Required Object Itinerari con intervallo di date Un contenitore per <FirstDate> e Suggerimento risposta di <LastDate> elementi in un soggiorno con intervallo di date .

Esempi

Itinerari esatti

L'esempio seguente definisce più itinerari per una singola proprietà un messaggio Hint Response:

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

Intervalli di check-in

L'esempio seguente specifica due hotel i cui prezzi sono stati modificati deve essere recuperato di nuovo. Google individua tutti gli itinerari tra il 3 e il 3 luglio 6 per le proprietà 12345 e 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>

Tieni presente che, affinché un messaggio relativo all'intervallo di check-in consenta di specificare in un singolo elemento <Item>, il valore <MultipleItineraries> in <QueryControl> deve essere impostato su "checkin_range",

Soggiorni con intervallo di date

L'esempio seguente mostra due diversi utilizzi dei soggiorni con intervallo di date, uno per intervallo di notti e l'altro per una singola notte:

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

Tieni presente che, affinché un messaggio relativo a un soggiorno con intervallo di date possa specificare più in un singolo elemento <Item>, il valore <MultipleItineraries> in <QueryControl> deve essere impostato su "affected_dates",

Per ognuno di questi esempi, Google risponde con un valore <Query> e dovresti quindi rispondi con un <Transaction> che include gli aggiornamenti di prezzo per hotel/itinerario specificati.

<HintRequest>

L'elemento principale di un messaggio Hint Request. Google invia una richiesta Hint al tuo server e si aspetta una risposta che specifichi gli hotel e itinerari i cui prezzi sono cambiati dall'ultima volta in cui Google ha ricevuto un una risposta Hint Response riuscita dal tuo server.

In caso di variazioni di prezzo, Google invia un <Query> che Recupera i dati aggiornati sui prezzi per gli hotel e gli itinerari indicati.

Per ulteriori informazioni, consulta la sezione Messaggi Hint Request.

Sintassi

L'elemento <HintRequest> utilizza la seguente sintassi:

Sintassi

<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
  <LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>

Attributi

L'elemento <HintRequest> non ha attributi.

Elementi secondari

L'elemento <HintRequest> ha i seguenti elementi secondari:

Elemento secondario Tipo Descrizione
<LastFetchTime> DateTime L'ultima volta che Google ha ricevuto un messaggio Hint Response. a un messaggio Hint Request.

Se questo periodo di tempo è precedente all'ultima volta prezzi aggiornati sul tuo server, devi rispondere con un Messaggio di risposta che specifica quali hotel sono stati modificati.

Se di recente non è stato eseguito un recupero, verrà impostato su valore di intervallo fisso (per evitare problemi più seri con arretrati). L'attuale valore dell'intervallo fisso è 1000 secondi, ma è soggetti a modifiche.

Per ulteriori informazioni, consulta la sezione Messaggi Hint Response.

Esempi

L'esempio seguente mostra un messaggio Hint Request:

Messaggio Hint Request

L'esempio seguente mostra un messaggio Hint Request:

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

L'elemento principale di un messaggio Query. Query messaggi sono richieste da Google per aggiornamenti su prezzi o metadati. Vengono utilizzati sia con le modalità di e Prezzo modificato nelle modalità di invio.

Esistono tre tipi di messaggi Query:

  • Prezzi in tempo reale: Google risponde alla richiesta di una specifica utente, chiedendo un aggiornamento dei prezzi in tempo reale. Quando i partner ricevono un Live pricing query i partner devono rispondere con un messaggio <Transaction> che contiene le informazioni sui prezzi richieste negli elementi <Result>.

  • Con i prezzi contestuali: Google aggiorna la cache dei prezzi in base ai contesti che sono storicamente popolari. Quando ricevi un With context query devi rispondere con un messaggio <Transaction> che contenga il le informazioni sui prezzi richieste negli elementi <Result>.

  • Metadati:Google richiede aggiornamenti sui metadati per camere e pacchetti camera. per gli hotel specificati. Quando ricevi un messaggio di Metadata Query, deve rispondere con un messaggio <Transaction> che specifica i dati relativi a camere e pacchetti camera in elementi <PropertyDataSet>.

Per saperne di più, consulta la Panoramica dei prezzi per query sui prezzi e per i metadati dei pacchetti camera per le query sui metadati.

La sintassi per i tre diversi tipi è descritta di seguito.

Sintassi

L'elemento <Query> utilizza la seguente sintassi:

Prezzi in tempo reale

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

Con contesto

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

Metadati

<HotelInfoProperties>
  <Property>property_ID</Property>
  ...
</HotelInfoProperties>

Attributi

L'elemento <Query> può contenere un attributo: latencySensitive.

L'attributo latencySensitive è facoltativo. Se fornito e impostato su true, indica che la query è Live Pricing Query. Per fare in modo che Google invii query con l'attributo latencySensitive, rivolgiti al tuo account tecnico Responsabile (TAM).

Elementi secondari

L'elemento <Query> ha i seguenti elementi secondari:

Elemento secondario Tipo di query Tipo Descrizione
<AffectedNights> Pricing integer Il numero di notti per un soggiorno con intervallo di date. Questo elemento è utilizzato solo per le query sui prezzi dei soggiorni con intervallo di date utilizzate con la modalità Prezzo modificato.
<Checkin> Pricing Date Le date di una determinata variazione di prezzo.
<Context> Pricing (Live Pricing Queries only) <Context> Per le query sui prezzi in tempo reale, specifica alcuni parametri in base ai quali viene effettuata la query. Gli elementi secondari includono:
  • <Occupancy>: il numero totale di ospiti
  • <OccupancyDetails>: il tipo di ospiti, ad esempio adulti o bambini
  • <UserCountry>: il paese in cui si trova l'utente localizzato
  • <UserDevice>: il tipo di dispositivo utilizzato dall'ospite per cercare un hotel, ad esempio "mobile", tablet ", o "desktop."

L'elemento <Context> può essere ripetuto in una singola richiesta, consentendo di fare query per numeri di persone diversi. Consulta <Context> per un elenco di elementi secondari, sintassi ed esempi.

<FirstDate> Pricing Date La data di inizio per una serie di itinerari a cui i prezzi . Questo elemento viene utilizzato solo per i prezzi relativi all'intervallo di date di check-in utilizzate con la modalità Prezzo modificato.
<HotelInfoProperties> Metadata string Una o più proprietà per cui Google richiede l'aggiornamento Metadati di camera e pacchetto camera in un messaggio Query di metadati. Questo elemento può contenere uno o più elementi <Property> che specificare gli ID degli hotel.
<LastDate> Pricing Date La data di fine per una serie di itinerari a cui i prezzi . Questo elemento viene utilizzato solo per i prezzi relativi all'intervallo di date di check-in utilizzate con la modalità Pull + Hints.
<Nights> Pricing integer Il numero di notti per un determinato itinerario, fino a 30.
<PropertyList> Pricing Object

Uno o più ID hotel che richiedono aggiornamenti dei prezzi.

Definisci ogni hotel in un elemento <Property>. La value corrisponde a una stringa che corrisponde a un ID hotel presente nel tuo elenco hotel. Per esempio:

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

Esempi

Query sui prezzi

L'esempio seguente mostra un messaggio Query sui prezzi che richiede il prezzo aggiornamenti per un gruppo di hotel, disponibili per 3 notti, a partire dal 10 giugno 2018:

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

Query sui prezzi in tempo reale

L'esempio seguente mostra una query sui prezzi in tempo reale con un tempo di risposta limite di 500 millisecondi:

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

Con query di contesto

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

Query sui metadati

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <HotelInfoProperties>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </HotelInfoProperties>
</Query>

Per altri esempi, tra cui soggiorno con intervallo di date e intervallo di date del check-in query sui prezzi, guarda gli esempi di messaggi di Query.

<Context>

L'elemento <Context> descrive le informazioni relative a Live pricing query, inclusi il numero e il tipo di ospiti, il paese dell'utente e il dispositivo dell'utente.

Non verranno mai utilizzati più elementi <Context> con paesi o paesi degli utenti diversi e i dispositivi degli utenti. Quando vengono utilizzati più <Context> per eseguire query numero di persone, fornisci ogni prezzo come pacchetto camera aggiuntivo per la proprietà/l'itinerario corrispondente. Ogni proprietà/itinerario deve avere un un singolo blocco <Result> con i prezzi di più numero di persone incluso.

Per i dettagli della risposta alla query <Context>, consulta <OccupancyDetails>.

Sintassi

L'elemento <Context> utilizza la seguente sintassi:

Sintassi

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

Elementi secondari

L'elemento <Context> ha i seguenti elementi secondari:

Elemento secondario Tipo di query Tipo Descrizione
<Occupancy> Pricing integer Specifica il numero totale di ospiti.

Anche se non è obbligatorio, le query con <Occupancy> dovrebbero generano un messaggio di transazione con i pacchetti camera appropriati definita per ogni <Occupancy> oggetto della query.

Nota:<Occupancy> potrebbe non essere sempre visualizzato in una query. In questi casi, devi restituire tutti i prezzi numero di persone.

<OccupancyDetails> Pricing Object È preceduto da <Occupancy>. Specifica gli ospiti per tipo, tra cui:

  • <NumAdults>: numero di ospiti adulti
  • <Children> e <Child="age">: Specifica quali ospiti sono bambini (in genere 0-17 anni) e include facoltativamente l'età di ogni figlio.
  • Anche se non è obbligatorio, le query con <OccupancyDetails> deve generare un messaggio di transazione con i pacchetti camera appropriati definita per ogni <Occupancy> oggetto della query.

    Nota: <OccupancyDetails> potrebbe non essere sempre vengono visualizzati in una query. In questi casi, devi presumere che tutti gli ospiti sono adulti.

<UserCountry> Pricing string

Filtra le tariffe in base al paese in cui si trova l'utente. Il valore è un Codice paese di due lettere, ad esempio “US” per gli Stati Uniti oppure un codice regione, ad esempio "EU" per "Europa".

Le query con <UserCountry> definito devono generare un messaggio Transaction con il <Rates> appropriato blocco definito per il paese della query.

<UserDevice> Pricing string

Filtra le tariffe in base al tipo di dispositivo da cui l'utente effettua la ricerca. Valori possibili:

  • mobile
  • desktop
  • tablet

Le query con <UserDevice> definito devono generare un messaggio di transazione con il <Rates> appropriato per il tipo di dispositivo sottoposto a query.

Esempi

Numero di persone

L'esempio seguente mostra una query sui prezzi in tempo reale per <Occupancy> in <Context>. La query sui prezzi in tempo reale riguarda 3 adulti ospiti.

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

Dettagli numero di persone

L'esempio seguente mostra una query sui prezzi in tempo reale con <OccupancyDetails> in <Context>. La query sui prezzi in tempo reale riguarda 4 ospiti, 2 dei quali sono bambini e chiede una tariffa applicabile alla prenotazione di un ospite negli Stati Uniti da un dispositivo mobile:

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

Più contesti

L'esempio seguente mostra l'utilizzo di un elemento <Context> aggiuntivo in una query sui prezzi in tempo reale.

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