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 Hotel/Reiseplan-Kombinationen Preise aktualisiert werden sollen. Dies ist Ihre Antwort auf eine Hinweisanfragenachricht von Google.
In einer Hinweisantwortnachricht sollten nur die Hotels angegeben sein, deren Preise sich geändert haben, seit Google das letzte Mal eine erfolgreiche Hinweisantwort von Ihren Servern erhalten hat.
In Hinweisantwortnachrichten wird mit einer der folgenden Methoden angegeben, für welche Hotels und Reisepläne Google die Preise aktualisieren soll:
Genaue Reisepläne: Eine Kombination aus Anreisedatum 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
. Sofern angegeben, wird er als Attribut hintId
in Nachrichten vom Typ <Query>
aufgenommen, die basierend auf diesem <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 des Reiseplans. |
<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 bzw. den zu aktualisierenden 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 mit der gleichen ID wie die Hotelliste. 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 ein einzelnes <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 einen Aufenthalt in bestimmten Zeiträumen. |
Beispiele
Genaue Reisepläne
Im folgenden Beispiel werden mehrere Reisepläne für eine einzelne Unterkunft als 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 sollten. Google ruft alle Reisepläne zwischen dem 3. und 6. Juli für die Unterkünfte 12345 und 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 einen Check-in-Bereich mehrere Unterkünfte in einem einzelnen <Item>
angeben kann, muss der Wert von <MultipleItineraries>
in <QueryControl>
auf "checkin_range"
festgelegt werden.
Aufenthalte in bestimmten Zeiträumen
Das folgende Beispiel zeigt zwei verschiedene Verwendungen von Aufenthalten in bestimmten Zeiträumen: eine für mehrere Übernachtungen und eine für eine einzelne Nacht:
<!-- 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 für eine Nachricht für einen Aufenthalt in bestimmten Zeiträumen mehrere Unterkünfte in einem einzigen <Item>
angegeben werden können, muss der Wert von <MultipleItineraries>
in <QueryControl>
auf "affected_dates"
festgelegt werden.
Für jedes dieser Beispiele antwortet Google mit <Query>
. Sie sollten dann mit einem <Transaction>
-Objekt antworten, das 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 mit den Hotels und Reiseplänen, deren Preise sich geändert haben, seit Google das letzte Mal eine erfolgreiche Hinweisantwort von Ihrem Server erhalten hat.
Bei Preisänderungen sendet Google eine <Query>
, die 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 | Der Zeitpunkt, zu dem Google zuletzt eine Hinweisantwortnachricht auf eine Hinweisanfragenachricht erhalten hat.
Wenn dieser Zeitpunkt vor der letzten Preisaktualisierung liegt, sollten Sie in einer Hinweisantwortnachricht angeben, welche Hotels sich geändert haben. Wenn in letzter Zeit kein erfolgreicher Abruf stattgefunden hat, wird dieser Wert auf einen festen Intervallwert gesetzt, um schwerwiegendere Probleme mit großen Rückständen zu vermeiden. Der aktuelle Wert für das feste Intervall beträgt 1.000 Sekunden, kann sich aber ä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 Google-Anfragen zu Preis- oder Metadatenaktualisierungen. Sie werden mit den Übermittlungsmodi „Pull“ und „Geänderter Preis“ verwendet.
Es gibt drei Arten von Query
-Nachrichten:
Livepreise: Google reagiert auf eine bestimmte Nutzeranfrage und fordert eine Preisaktualisierung in Echtzeit an. 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 du eine
With context query
-Nachricht erhältst, solltest du 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. Diese enthält Daten zu den Zimmern und Zimmerpaketen in<PropertyDataSet>
-Elementen.
Weitere Informationen finden Sie in der Preisübersicht für Preisabfragen und unter Zimmerpaket-Metadaten für Metadatenabfragen.
Die Syntax der drei verschiedenen Typen wird im Folgenden 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 es angegeben und auf true
gesetzt ist, bedeutet dies, dass die Abfrage ein Live Pricing Query
ist. Wenn Google Anfragen mit dem Attribut latencySensitive
senden soll, wenden Sie sich an Ihren Technical Account Manager (TAM).
Untergeordnete Elemente
Das <Query>
-Element hat die folgenden untergeordneten Elemente:
Untergeordnetes Element | Anfragetyp | Typ | Beschreibung |
---|---|---|---|
<AffectedNights> | Pricing | integer | Die Anzahl der Übernachtungen für einen Aufenthalt in einem bestimmten Zeitraum. Dieses Element wird nur für Preisabfragen für Aufenthalte in bestimmten Zeiträumen im Zusammenhang mit „Geänderte Preise“ verwendet. |
<Checkin> | Pricing | Date | Die Datumsangaben für eine bestimmte Preisänderung. |
<Context> | Pricing (Live Pricing Queries only) | <Context> | Gibt für Livepreisabfragen bestimmte Parameter an, unter denen die Abfrage durchgefü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-Datumsbereich im Zusammenhang mit „Geänderte Preise“ verwendet. |
<HotelInfoProperties> | Metadata | string | Eine oder mehrere Unterkünfte, für die Google in einer Metadaten-Query -Nachricht aktualisierte Zimmer- und Zimmerpaketmetadaten wünscht. Dieses Element kann ein oder mehrere <Property> -Elemente enthalten, die Hotel-Unterkunfts-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-Datumsbereich 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
Im folgenden Beispiel sehen Sie eine Preisanfragenachricht, mit der Preisaktualisierungen für eine Reihe von Hotels für drei Übernachtungen ab dem 10. Juni 2018 angefordert 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>
Livepreisabfrage
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, einschließlich Abfragen für Aufenthalte in bestimmten Zeiträumen und Check-in-Zeiträume, 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 Art der Gäste, des Landes des Nutzers und des Nutzergeräts.
Mehrere <Context>
werden niemals 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 bzw. den entsprechenden Reiseplan an. Jedes Hotel bzw. jeder Reiseplan sollte einen einzelnen <Result>
-Block mit den Preisen für mehrere Belegungen enthalten.
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 mit definiertem |
<UserDevice> | Pricing | string | Filtert Preise nach dem Typ des Geräts, von dem aus der Nutzer sucht. Mögliche Werte:
Abfragen mit definiertem |
Beispiele
Anwesenheit
Das folgende Beispiel zeigt eine Livepreisabfrage für <Occupancy>
innerhalb von <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>
Details zur Belegung
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 eine Buchung von Gästen 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>