Dieser Abschnitt enthält eine Referenz für die XML-basierten Hinweisanfragenachrichten, Hinweisantwortnachrichten und Anfragenachrichten von Google.
<Hint>
(Hinweisantwortnachricht)
Das Stammelement einer Hinweisantwortnachricht. In Hinweisantwortnachrichten wird angegeben, für welche Kombinationen aus Hotel und Reiseplan die Preise aktualisiert werden sollen. Sie sind Ihre Antwort auf eine Hinweisanfragenachricht von Google.
In einer Hinweisantwortnachricht sollten nur die Hotels angegeben werden, deren Preise sich seit der letzten erfolgreichen Hinweisantwort durch Google geändert haben.
In Hinweisantwortnachrichten wird eine der folgenden Methoden verwendet, um anzugeben, welche Hotels und Reisepläne Google aktualisieren soll:
Exakte Reisepläne: Eine Kombination aus Check-in-Datum und Aufenthaltsdauer.
Check-in-Zeiträume: Gibt einen Check-in-Zeitraum an, der mit dem ersten Check-in-Datum beginnt und mit dem letzten Check-in-Datum endet.
Aufenthalte in bestimmten Zeiträumen (oder Reisepläne mit bestimmten Zeiträumen)
Jede dieser Methoden erfordert eine andere Syntax für die Hinweisantwortnachricht.
Weitere Informationen finden Sie unter Hinweisantwortnachrichten.
Syntax
Das <Hint>
-Element verwendet je nach Typ der Hinweisantwortnachricht eine andere Syntax:
Genaue Reisepläne
Im Folgenden wird die Syntax für genaue Reisepläne in einer Hinweisantwortnachricht dargestellt:
<!-- 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>
Check-in-Zeiträume
Im Folgenden wird die Syntax für Check-in-Bereiche in einer Hinweisantwortnachricht dargestellt:
<!-- 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>
Aufenthalte in bestimmten Zeiträumen
Im Folgenden wird die Syntax für Aufenthalte in bestimmten Zeiträumen in einer Hinweisantwortnachricht dargestellt:
<!-- 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>
Attribute
Das <Hint>
-Element enthält ein optionales Attribut: id
. Wenn angegeben, wird es als das Attribut hintId
in <Query>
-Nachrichten eingefügt, die anhand dieses <Hint>
gesendet werden.
Untergeordnete Elemente
Das <Hint>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Erforderlich? | Typ | Hinweisantworttyp | Beschreibung |
---|---|---|---|---|
<CheckInDate> | Required | Date | Genaue Reisepläne | Das Check-in-Datum für den Reiseplan. |
<FirstDate> | Required | Date | Check-in-Zeiträume und Reisepläne mit bestimmten Zeiträumen | Das erste Datum des Zeitraums für eine Hinweisantwortnachricht für einen Check-in-Zeitraum oder einen Aufenthalt in bestimmten Zeiträumen. Datumsangaben sind inklusive. |
<Item> | Required | Object | Alle | Ein Container für das zu aktualisierende Hotel/den Reiseplan. |
<LastDate> | Required* | Date | Check-in-Zeiträume und Reisepläne mit bestimmten Zeiträumen | Das letzte Datum des Zeitraums für eine Hinweisantwortnachricht für einen Check-in-Zeitraum oder einen Aufenthalt in bestimmten Zeiträumen. Datumsangaben sind inklusive. * Dieses Element ist für Aufenthalte in bestimmten Zeiträumen optional. |
<LengthOfStay> | Required | integer | Genaue Reisepläne | Die Anzahl der Übernachtungen des Reiseplans als positive Ganzzahl. |
<Property> | Required | string | Alle | Die ID eines Hotels, die dieselbe ID wie die Hotelliste hat. Die Anzahl der
|
<Stay> | Required | Object | Genaue Reisepläne | Ein Container für die Elemente <CheckinDate> und <LengthOfStay> in einer Hinweisantwortnachricht für genaue Reisepläne. Jedes <Item> kann nur einen einzelnen <Stay> enthalten. |
<StaysIncludingRange> | Required | Object | Reisepläne mit bestimmten Zeiträumen | Ein Container für die Elemente <FirstDate> und <LastDate> in einer Hinweisantwortnachricht für Aufenthalte in bestimmten Zeiträumen. |
Beispiele
Genaue Reisepläne
Im folgenden Beispiel werden mehrere Reisepläne für eine einzelne Unterkunft in einer Hinweisantwortnachricht definiert:
<!-- 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>
Check-in-Zeiträume
Im folgenden Beispiel werden zwei Hotels angegeben, deren Preise sich geändert haben und noch einmal abgerufen werden sollen. Google ruft alle Reisepläne zwischen dem 3. und 6. Juli für die Unterkünfte 12345 bis 67890 ab:
<!-- 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>
Damit eine Nachricht für den Check-in-Bereich mehrere Attribute in einer einzelnen <Item>
angeben kann, muss der Wert von <MultipleItineraries>
in <QueryControl>
auf "checkin_range"
festgelegt sein.
Aufenthalte in bestimmten Zeiträumen
Das folgende Beispiel zeigt zwei verschiedene Verwendungen von Aufenthalten in bestimmten Zeiträumen, eine für eine Reihe von Übernachtungen und eine für eine einzelne Übernachtung:
<!-- 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>
Damit eine Nachricht für einen Aufenthalt in bestimmten Zeiträumen in einer einzelnen <Item>
mehrere Unterkünfte angeben kann, muss der Wert von <MultipleItineraries>
in <QueryControl>
auf "affected_dates"
festgelegt werden.
Auf jedes dieser Beispiele antwortet Google mit einem <Query>
. Anschließend sollten Sie mit einer <Transaction>
antworten, die Preisaktualisierungen für die angegebenen Hotels bzw. Reisepläne enthält.
<HintRequest>
Das Stammelement einer Hinweisanfragenachricht. Google sendet eine Hinweisanfragenachricht an Ihren Server und erwartet eine Antwort, in der die Hotels und Reisepläne angegeben sind, deren Preise sich seit der letzten erfolgreichen Hinweisantwort von Ihrem Server durch Google geändert haben.
Wenn es Preisänderungen gibt, sendet Google ein <Query>
, das die aktualisierten Preisdaten für die angegebenen Hotels und Reisepläne abruft.
Weitere Informationen finden Sie unter Hinweisanfragenachrichten.
Syntax
Das <HintRequest>
-Element verwendet die folgende Syntax:
Syntax
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
Attribute
Das <HintRequest>
-Element hat keine Attribute.
Untergeordnete Elemente
Das <HintRequest>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Typ | Beschreibung |
---|---|---|
<LastFetchTime> | DateTime | Das letzte Mal, dass Google eine Hinweisantwortnachricht auf eine Hinweisanfragenachricht erhalten hat.
Wenn dieser Zeitpunkt vor der letzten Preisaktualisierung auf Ihrem Server liegt, sollten Sie in einer Hinweisantwortnachricht angeben, welche Hotels sich geändert haben. Wenn in letzter Zeit kein erfolgreicher Abruf erfolgt ist, wird dieser auf einen festen Intervallwert festgelegt, um schwerwiegendere Probleme bei großen Rückständen zu vermeiden. Der aktuelle feste Intervallwert beträgt 1.000 Sekunden, kann sich jedoch ändern. Weitere Informationen finden Sie unter Hinweisantwortnachrichten. |
Beispiele
Das folgende Beispiel zeigt eine Hinweisanfragenachricht:
Hinweisanfragenachricht
Das folgende Beispiel zeigt eine Hinweisanfragenachricht:
<?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>
Das Stammelement einer Query
-Nachricht. Query
-Nachrichten sind Anfragen von Google zu Preis- oder Metadatenaktualisierungen. Sie werden mit den Übermittlungsmodi „Pull-Preise“ und „Geänderte Preise“ verwendet.
Es gibt drei Arten von Query
-Meldungen:
Livepreise:Google antwortet auf eine bestimmte Nutzeranfrage und bittet um eine Preisaktualisierung in Echtzeit. Wenn Partner eine
Live pricing query
-Nachricht erhalten, sollten sie mit einer<Transaction>
-Nachricht antworten, die die angeforderten Preisinformationen in<Result>
-Elementen enthält.Mit Kontextpreisen:Google aktualisiert seinen Preis-Cache anhand von Kontexten, die in der Vergangenheit beliebt sind. Wenn Sie eine
With context query
-Nachricht erhalten, sollten Sie mit einer<Transaction>
-Nachricht antworten, die die angeforderten Preisinformationen in<Result>
-Elementen enthält.Metadaten: Google fordert Metadatenaktualisierungen für die Zimmer und Zimmerpakete der angegebenen Hotels an. Wenn Sie eine
Metadata Query
-Nachricht erhalten, sollten Sie mit einer<Transaction>
-Nachricht antworten, in der Sie Daten zu den Zimmern und Zimmerpaketen in<PropertyDataSet>
-Elementen angeben.
Weitere Informationen finden Sie in der Preisübersicht für Preisabfragen und in der Preisübersicht für Metadatenabfragen.
Die Syntax für die drei verschiedenen Typen wird unten beschrieben.
Syntax
Das <Query>
-Element verwendet die folgende Syntax:
Livepreise
<?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>
Mit Kontext
<?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>
Metadaten
<HotelInfoProperties>
<Property>property_ID</Property>
...
</HotelInfoProperties>
Attribute
Das <Query>
-Element kann ein Attribut enthalten: latencySensitive
.
Das Attribut latencySensitive
ist optional. Wenn dieses Flag angegeben und auf true
gesetzt ist, bedeutet dies, dass die Abfrage ein Live Pricing Query
ist. Wenn Sie Google Anfragen mit dem Attribut latencySensitive
senden lassen möchten, wenden Sie sich an Ihren Technical Account Manager (TAM).
Untergeordnete Elemente
Das <Query>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Art der Suchanfrage | Typ | Beschreibung |
---|---|---|---|
<AffectedNights> | Pricing | integer | Die Anzahl der Übernachtungen für einen Aufenthalt in einem bestimmten Zeitraum. Dieses Element wird nur für Preisabfragen in einem bestimmten Zeitraum und mit „Geänderte Preise“ verwendet. |
<Checkin> | Pricing | Date | Der Zeitraum einer bestimmten Preisänderung. |
<Context> | Pricing (Live Pricing Queries only) | <Context> | Gibt für Livepreisabfragen bestimmte Parameter an, unter denen die Abfrage ausgeführt wird. Zu den untergeordneten Elementen gehören:
Das |
<FirstDate> | Pricing | Date | Das Startdatum einer Reihe von Reiseplänen, für die der Preis gilt. Dieses Element wird nur für Preisabfragen für den Check-in-Zeitraum mit „Geänderte Preise“ verwendet. |
<HotelInfoProperties> | Metadata | string | Eine oder mehrere Unterkünfte, für die Google die Zimmer- und Zimmerpaketmetadaten in einer Query -Metadatennachricht aktualisieren möchte. Dieses Element kann ein oder mehrere <Property> -Elemente enthalten, die Hotelunterkunfts-IDs angeben. |
<LastDate> | Pricing | Date | Das Enddatum einer Reihe von Reiseplänen, für die der Preis gilt. Dieses Element wird nur für Preisabfragen für den Check-in-Zeitraum im Pull-Modus mit Hinweisen verwendet. |
<Nights> | Pricing | integer | Die Anzahl der Übernachtungen für einen bestimmten Reiseplan (maximal 30). |
<PropertyList> | Pricing | Object | Eine oder mehrere IDs für Hotels, für die Preisaktualisierungen erforderlich sind. Definieren Sie jedes Hotel in einem <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> |
Beispiele
Preisabfrage
Das folgende Beispiel zeigt eine Preisanfragenachricht, mit der Preisaktualisierungen für eine Gruppe von Hotels für einen Zeitraum von drei Nächten ab dem 10. Juni 2018 angefragt werden:
<?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>
Livepreis-Abfrage
Das folgende Beispiel zeigt eine Livepreisabfrage mit einer Antwortzeit von 500 Millisekunden:
<?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>
Mit Kontextabfrage
<?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>
Metadatenabfrage
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<HotelInfoProperties>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</HotelInfoProperties>
</Query>
Weitere Beispiele, etwa Abfragen für Preise für einen Aufenthalt in bestimmten Zeiträumen und für einen Check-in-Zeitraum, finden Sie in den Beispielen für Query
-Nachrichten.
<Context>
Das Element <Context>
beschreibt Informationen für eine Live pricing query
, einschließlich Anzahl und Typ der Gäste, Land des Nutzers und Nutzergerät.
Mehrere <Context>
werden nie mit unterschiedlichen Nutzerländern oder Nutzergeräten verwendet. Wenn mehrere <Context>
zur Abfrage mehrerer Belegungen verwendet werden, geben Sie jeden Belegungspreis als zusätzliches Zimmerpaket für die entsprechende Unterkunft/den entsprechenden Reiseplan an. Jede Unterkunft bzw. jeder Reiseplan sollte einen einzelnen <Result>
-Block mit den Preisen für mehrere Belegungen haben.
Die Antwortdetails für die <Context>
-Abfrage finden Sie unter <OccupancyDetails>
.
Syntax
Das <Context>
-Element verwendet die folgende Syntax:
Syntax
<?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>
Untergeordnete Elemente
Das <Context>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Abfragetyp | Typ | Beschreibung |
---|---|---|---|
<Occupancy> | Pricing | integer | Gibt die Gesamtzahl der Gäste an. Obwohl Abfragen mit Hinweis: |
<OccupancyDetails> | Pricing | Object | <Occupancy> ist vorangestellt. Gibt Gäste nach Typ an, einschließlich:
Obwohl Abfragen mit Hinweis: |
<UserCountry> | Pricing | string | Filtert Preise nach dem Land, in dem sich der Nutzer befindet. Der Wert ist ein zweistelliger Ländercode wie Abfragen, bei denen |
<UserDevice> | Pricing | string | Filtert Preise nach dem Typ des Geräts, über das der Nutzer sucht. Mögliche Werte:
Abfragen, bei denen |
Beispiele
Anwesenheit
Das folgende Beispiel zeigt eine Livepreisabfrage für <Occupancy>
in <Context>
. Die Livepreisabfrage gilt für 3 erwachsene Gäste.
<?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>
Belegungsdetails
Das folgende Beispiel zeigt eine Livepreisabfrage mit <OccupancyDetails>
in <Context>
.
Die Livepreisabfrage bezieht sich auf 4 Gäste, von denen 2 Kinder sind, und sucht nach einem Preis, der für die Buchung eines Gasts in den USA über ein Mobilgerät gilt:
<?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>
Mehrere Kontexte
Das folgende Beispiel zeigt die Verwendung eines zusätzlichen <Context>
-Elements in einer Livepreisabfrage.
<?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>