Creare un messaggio di suggerimento

Se si esegue l'iscrizione per il pull con richieste di suggerimento, Microsoft invia un messaggio con il modulo seguente all'endpoint specificato chiedendo di identificare eventuali modifiche dell'itinerario dopo l'ultima richiesta pull. Si decide la frequenza delle richieste al momento dell'onboarding.

<?xml version="1.0" encoding="UTF-8"?>
<HintRequest id="123-abc" timestamp="2017-10-21T08:45:09Z">
  <LastFetchTime>2017-10-21T08:30:16Z</LastFetchTime>
</HintRequest>

L'elemento LastFetchTime identifica la data e l'ora UTC dell'ultima risposta riuscita inviata a Microsoft che ha identificato le modifiche dell'itinerario. Se da quel momento non sono state apportate modifiche, la risposta deve contenere un corpo vuoto. Se sono state apportate modifiche, il corpo contiene un messaggio hint che identifica gli itinerari modificati. È possibile identificare gli itinerari usando uno dei metodi seguenti:

Itinerari esatti

Il messaggio di suggerimento può identificare i singoli itinerari usando la data di check-in e la durata del soggiorno. L'esempio seguente mostra un messaggio di suggerimento che specifica un singolo itinerario per un singolo hotel.

<Hint>
  <Item>
    <Property>789</Property>
    <Stay>
      <CheckInDate>2017-10-20</CheckInDate>
      <LengthOfStay>2</LengthOfStay>
    </Stay>
  </Item>
</Hint>

Ogni <elemento> rappresenta un singolo itinerario. È possibile specificare oggetti <Item> per ogni itinerario da aggiornare e ogni itinerario può specificare una o più proprietà.

Quando Microsoft riceve l'hint precedente, invia all'utente il messaggio query seguente:

<Query>
  <Checkin>2017-10-20</Checkin>
  <Nights>2</Nights>
  <PropertyList>
    <Property>789</Property>
  </PropertyList>
</Query>

Quando si riceve il messaggio Query, la risposta deve contenere un feed Price (in precedenza messaggio di transazione) con il risultato> seguente<.

  <Result>
    <Property>789</Property>
    <Checkin>2017-10-20</Checkin>
    <Nights>2</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>

Se l'hint precedente specifica due proprietà, il feed Price conterrà due <elementi Result> (uno per ogni proprietà).

Intervalli di date di archiviazione

Il messaggio di suggerimento può identificare una serie di itinerari. Per specificare l'intervallo, impostare l'elemento FirstDate sulla data di archiviazione iniziale e sull'ultima LastDate data di archiviazione. Nell'esempio seguente viene illustrato un messaggio di suggerimento che usa un intervallo di date per specificare sei date di archiviazione per una singola proprietà.

<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <Property>123</Property>
    <FirstDate>2017-10-20</FirstDate>
    <LastDate>2017-10-25</LastDate>
  </Item>
</Hint>

Ogni <elemento> rappresenta un singolo intervallo di date di archiviazione. È possibile specificare un <oggetto Item> per ogni intervallo di date di archiviazione che identifica gli itinerari da aggiornare e ognuno di essi può specificare una o più proprietà.

Quando Microsoft riceve l'hint precedente, invia all'utente il messaggio query seguente.

<Query>
  <FirstDate>2017-10-20</FirstDate>
  <LastDate>2017-10-25</LastDate>
  <Nights>3</Nights>
  <PropertyList>
    <Property>123</Property>
  </PropertyList>
</Query>

Quando si riceve il messaggio Query, la risposta deve contenere un feed Price (in precedenza messaggio di transazione) con gli oggetti Result> seguenti<.

  <Result>
    <Property>789</Property>
    <Checkin>2017-10-20</Checkin>
    <Nights>1</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-20</Checkin>
    <Nights>2</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-20</Checkin>
    <Nights>3</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>

  . . .
  
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-25</Checkin>
    <Nights>1</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-25</Checkin>
    <Nights>2</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-25</Checkin>
    <Nights>3</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>

Per questo esempio, il numero massimo di risultati che il feed Prezzi deve contenere è 18 (6 date di check-in * 3 notti). Il feed prezzi può contenere meno se alcuni itinerari con l'intervallo di date non sono cambiati.

Intervalli di date di archiviazione espansi

L'hint per l'intervallo di date di archiviazione espanso è simile all'hint relativo all'intervallo di date di archiviazione, ma richiede di includere tutti gli itinerari che intersecano gli itinerari nell'intervallo di date. Pertanto, il feed prezzi deve includere qualsiasi itinerario la cui data di check-out rientra nell'intervallo di date.

<StaysIncludingRange> identifica l'hint come hint per l'intervallo di date di archiviazione espanso. Per specificare l'intervallo, impostare l'elemento FirstDate sulla data di archiviazione iniziale e sull'ultima LastDate data di archiviazione. Nell'esempio seguente viene illustrato un messaggio di suggerimento che usa un intervallo di date per specificare sei date di archiviazione per una singola proprietà.

<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <Property>123</Property>
    <StaysIncludingRange>
      <FirstDate>2017-10-20</FirstDate>
      <LastDate>2017-10-25</LastDate>
    </StaysIncludingRange>
  </Item>
</Hint>

Ogni <elemento> rappresenta un singolo intervallo di itinerari. È possibile specificare un <oggetto Item> per ogni intervallo di date di archiviazione che identifica gli itinerari da aggiornare e ognuno di essi può specificare una o più proprietà.

Quando Microsoft riceve l'hint precedente, invia all'utente il messaggio query seguente. L'impostazione MaxLengthOfStay nel messaggio QueryControl determina il valore di <AffectedNights> (in questo esempio si presuppone che sia impostato su 3).

<Query>
  <FirstDate>2017-10-20</FirstDate>
  <LastDate>2017-10-25</LastDate>
  <AffectedNights>3</AffectedNights>
  <PropertyList>
    <Property>123</Property>
  </PropertyList>
</Query>

Quando si riceve il messaggio Query, la risposta deve contenere un feed Price (in precedenza messaggio di transazione) con gli oggetti Result> seguenti<. Si noti che la data di archiviazione per i primi diversi oggetti è precedente alla data nell'hint FirstDate . Questo perché la data di check-out degli itinerari rientra nell'intervallo di date dell'hint.

  <Result>
    <Property>789</Property>
    <Checkin>2017-10-17</Checkin>
    <Nights>3</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-18</Checkin>
    <Nights>2</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-18</Checkin>
    <Nights>3</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-19</Checkin>
    <Nights>1</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-19</Checkin>
    <Nights>2</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-19</Checkin>
    <Nights>3</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-20</Checkin>
    <Nights>1</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>

  . . .
  
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-25</Checkin>
    <Nights>1</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-25</Checkin>
    <Nights>2</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>
  <Result>
    <Property>789</Property>
    <Checkin>2017-10-25</Checkin>
    <Nights>3</Nights>
    <!-- Pricing and other elements that changed -->
  </Result>

Invio in batch di query

A seconda del numero di proprietà e itinerari che è necessario aggiornare, Microsoft invia diverse query più piccole anziché una query di grandi dimensioni. Ad esempio, se è necessario aggiornare gli itinerari per 1.000 proprietà, Microsoft può inviare 100 messaggi di query con 10 proprietà ciascuna.