Riferimento XML per query e suggerimenti

Questa sezione fornisce un riferimento per i messaggi Google basati su XML di tipo Hint Request, Hint Response e Query.

<Hint> (messaggio Hint Response)

L'elemento principale di un messaggio Hint Response. Messaggi Hint Response specificare per quali combinazioni di hotel o itinerari è necessario ridefinire il prezzo. 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 creare un nuovo messaggio email.

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 -->
    <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 -->
    <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 di 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/l'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 un elemento se imposti <MultipleItineraries> su "checkin_range" nel 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 per creare un nuovo messaggio email.

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>

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>

Per ognuno di questi esempi, Google risponde con un elemento <Query> a cui dovrai rispondere con un elemento <Transaction> che include gli aggiornamenti dei prezzi per le combinazioni hotel/itinerario specificate.

<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

La sintassi dell'elemento <HintRequest> è la seguente:

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, consulenza 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 con le modalità di invio Pull e Prezzo modificato.

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 Metadata Query, devi rispondere con un messaggio <Transaction> che specifica i dati sulle camere e sui pacchetti camera negli elementi <PropertyDataSet>.

Per ulteriori informazioni, consulta la sezione Panoramica dei prezzi per le query sui prezzi e la sezione Metadati dei pacchetti camera per le query sui metadati.

I tre diversi tipi di sintassi sono i seguenti:

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 consentire a Google di inviare query con l'attributo latencySensitive, contatta il tuo Technical Account Manager (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 viene 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
  • <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 un singola richiesta, consentendo di effettuare query per numeri diversi di persone. Consulenza <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ù <Property> che specificano gli ID dell'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 giorno 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 ulteriori esempi, incluse le query sui prezzi per soggiorni con intervallo di date e per intervalli di date di check-in, consulta la sezione Esempi di messaggi 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ù elementi <Context> per eseguire query per valori di numero di persone diversi, fornisci ogni prezzo per il numero di persone sotto forma di pacchetto camera aggiuntivo per la proprietà o l'itinerario corrispondente. Ogni proprietà o itinerario deve avere un singolo blocco <Result> che includa i prezzi per più persone.

Per i dettagli della risposta alla query <Context>, vedi <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 generare un messaggio Transaction con i pacchetti camera appropriati definiti per ogni <Occupancy>, ma se i pacchetti camera non sono disponibili, ti consigliamo di specificare l'elemento <Occupancy>.

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 in base a tipo, tra cui:
  • <NumAdults>: numero di ospiti adulti
  • <Children> e <Child="age">: specifica quali ospiti sono bambini (in genere di età 0-17 anni); facoltativamente, include anche l'età di ogni bambino.

Anche se non è obbligatorio, le query con <OccupancyDetails> dovrebbe generare un messaggio Transaction con la stanza appropriata Set definiti per ogni <Occupancy>, ma se le I pacchetti camera non sono disponibili, ti consigliamo di specifica l'elemento <OccupancyDetails>.

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 Transaction con il blocco <Rates> appropriato definito per il tipo di dispositivo della query.

Esempi

Numero di persone

L'esempio seguente mostra una query sui prezzi in tempo reale per <Occupancy> all'interno di <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>