En esta sección, se proporciona una referencia para los mensajes de solicitud de sugerencia, los mensajes de respuesta de sugerencia y los mensajes de consulta basados en XML de Google.
<Hint>
(mensaje de respuesta de sugerencia)
Es el elemento raíz de un mensaje de respuesta de sugerencia. Los mensajes de respuesta de sugerencia especifican qué combinaciones de itinerario y hotel deben cambiarse de precio. Son tu respuesta a un mensaje de solicitud de sugerencia de Google.
Un mensaje de respuesta de sugerencia solo debe especificar los hoteles cuyos precios cambiaron desde la última vez que Google recibió una respuesta correcta de sugerencia de tus servidores.
Los mensajes de respuesta de sugerencia usan uno de los siguientes métodos para especificar qué itinerarios y hoteles debe cambiar el precio de Google:
Itinerarios exactos: Una combinación de la fecha de entrada y la duración de la estadía.
Períodos de entrada: Especifica un rango de fechas de entrada, que comienza con la primera fecha de entrada y termina con la última fecha de entrada.
Estadías con intervalos (o itinerarios con intervalos)
Cada uno de estos métodos requiere una sintaxis diferente para el mensaje de respuesta de sugerencia.
Para obtener más información, consulta Mensajes de respuesta con sugerencias.
Sintaxis
El elemento <Hint>
usa una sintaxis diferente, según el tipo de mensaje de respuesta de sugerencia:
Itinerarios exactos
A continuación, se muestra la sintaxis de los itinerarios exactos en un mensaje de respuesta de sugerencia:
<!-- 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>
Rangos de registro de entrada
A continuación, se muestra la sintaxis para los rangos de registro en un mensaje de respuesta de sugerencia:
<!-- 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>
Estadías con alcance
A continuación, se muestra la sintaxis de los intervalos dentro de un mensaje de respuesta de sugerencia:
<!-- 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>
Atributos
El elemento <Hint>
contiene un atributo opcional: id
. Cuando se proporciona, se incluye como el atributo hintId
en los mensajes <Query>
enviados en función de este <Hint>
.
Elementos secundarios
El elemento <Hint>
tiene los siguientes elementos secundarios:
Elemento secundario | ¿Obligatorio? | Tipo | Tipo de respuesta de sugerencia | Descripción |
---|---|---|---|---|
<CheckInDate> | Required | Date | Itinerarios exactos | La fecha de entrada del itinerario. |
<FirstDate> | Required | Date | Itinerarios y rangos de registro de entrada | Es la primera fecha del período de un mensaje de respuesta de pista o período de registro de estadía. Las fechas son inclusivas. |
<Item> | Required | Object | All | Un contenedor para el hotel o itinerario que se actualizará. |
<LastDate> | Required* | Date | Itinerarios y rangos de registro de entrada | Es la última fecha del período de un período de registro o de estadía con un intervalo de tiempo del mensaje de respuesta de sugerencia. Las fechas son inclusivas. * Este elemento es opcional para estadías prolongadas. |
<LengthOfStay> | Required | integer | Iterarios exactos | Cantidad de noches del itinerario, expresada como un número entero positivo. |
<Property> | Required | string | All | Indica el ID de un hotel, con el mismo ID que el de la Lista de hoteles. La cantidad de elementos
|
<Stay> | Required | Object | Itinerarios exactos | Es un contenedor para los elementos <CheckinDate> y <LengthOfStay> en un mensaje de respuesta de sugerencia del itinerario exacto. Cada <Item> puede contener solo un <Stay> . |
<StaysIncludingRange> | Required | Object | Iterarios a distancia | Es un contenedor para los elementos <FirstDate> y <LastDate> en un mensaje de respuesta de sugerencia de estado limitado. |
Ejemplos
Itinerarios exactos
En el siguiente ejemplo, se definen varios itinerarios para una sola propiedad de un mensaje de respuesta de sugerencia:
<!-- 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>
Rangos de registro de entrada
En el siguiente ejemplo, se especifican dos hoteles cuyos precios cambiaron y se deben recuperar de nuevo. Google obtiene todos los itinerarios entre el 3 y el 6 de julio para las propiedades 12345 y 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>
Ten en cuenta que para que un mensaje del rango de registro pueda especificar varias propiedades en un solo <Item>
, el valor de <MultipleItineraries>
en <QueryControl>
se debe establecer como "checkin_range"
.
Estadías con alcance
En el siguiente ejemplo, se muestran dos usos diferentes de estadías con intervalos: una para un rango de noches y la otra para una sola noche:
<!-- 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>
Ten en cuenta que para que un mensaje de estadía con un rango pueda especificar varias propiedades en un solo <Item>
, el valor de <MultipleItineraries>
en <QueryControl>
debe establecerse como "affected_dates"
.
Para cada uno de estos ejemplos, Google responde con un <Query>
y, luego, debes responder con un <Transaction>
que incluya actualizaciones de precios de los hoteles o itinerarios especificados.
<HintRequest>
Es el elemento raíz de un mensaje de solicitud de sugerencia. Google envía un mensaje de solicitud de sugerencia a tu servidor y espera una respuesta que especifique los itinerarios y los hoteles cuyos precios cambiaron desde la última vez que Google recibió una respuesta correcta de sugerencia de tu servidor.
Si hay algún cambio de precio, Google envía un objeto <Query>
que recupera los datos de precios actualizados de los itinerarios y los hoteles indicados.
Para obtener más información, consulta Mensajes de solicitud de sugerencias.
Sintaxis
El elemento <HintRequest>
usa la siguiente sintaxis:
Sintaxis
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
Atributos
El elemento <HintRequest>
no tiene atributos.
Elementos secundarios
El elemento <HintRequest>
tiene los siguientes elementos secundarios:
Elemento secundario | Tipo | Descripción |
---|---|---|
<LastFetchTime> | DateTime | La última vez que Google pudo obtener un mensaje de respuesta de sugerencia en un mensaje de solicitud de sugerencia.
Si esta hora es anterior a la última vez que actualizaste los precios en tu servidor, deberías responder con un mensaje de respuesta de sugerencia que especifique qué hoteles cambiaron. Si no hubo una recuperación correcta reciente, se establecerá en un valor de intervalo fijo (para evitar problemas más graves con tareas pendientes grandes). El valor actual del intervalo fijo es de 1,000 segundos, pero está sujeto a cambios. Para obtener más información, consulta Mensajes de respuesta de sugerencias. |
Ejemplos
En el siguiente ejemplo, se muestra un mensaje de solicitud de sugerencia:
Mensaje de solicitud de sugerencia
En el siguiente ejemplo, se muestra un mensaje de solicitud de sugerencia:
<?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>
Es el elemento raíz de un mensaje Query
. Los mensajes Query
son solicitudes de Google de actualizaciones de precios o metadatos. Se usan con los modos de entrega de precios modificados y solicitud de precios a terceros.
Existen tres tipos de mensajes Query
:
Precios en tiempo real: Google responde a una solicitud específica de un usuario y solicita una actualización del precio en tiempo real. Cuando los socios reciben un mensaje
Live pricing query
, deben responder con un mensaje<Transaction>
que contenga la información de precios solicitada en los elementos<Result>
.Con precios por contexto: Google actualiza su caché de precios según contextos que históricamente han sido populares. Cuando recibes un mensaje
With context query
, debes responder con un mensaje<Transaction>
que contenga la información de precios solicitados en los elementos<Result>
.Metadatos: Google solicita actualizaciones de metadatos de las habitaciones y los paquetes de habitaciones de los hoteles especificados. Cuando recibes un mensaje
Metadata Query
, debes responder con un mensaje<Transaction>
que especifique los datos sobre las habitaciones y los paquetes de habitaciones en los elementos<PropertyDataSet>
.
Para obtener más información, consulta la Descripción general de precios para las consultas de precios y los metadatos de los paquetes de habitaciones para las consultas de metadatos.
La sintaxis de los tres tipos diferentes se describe a continuación.
Sintaxis
El elemento <Query>
usa la siguiente sintaxis:
Precios en tiempo real
<?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 contexto
<?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>
Metadatos
<HotelInfoProperties>
<Property>property_ID</Property>
...
</HotelInfoProperties>
Atributos
El elemento <Query>
puede contener un atributo: latencySensitive
.
El atributo latencySensitive
es opcional. Cuando se proporciona y se establece en true
, indica que la consulta es Live Pricing Query
. Para que Google envíe consultas con el atributo latencySensitive
, comunícate con tu administrador técnico de cuentas (TAM).
Elementos secundarios
El elemento <Query>
tiene los siguientes elementos secundarios:
Elemento secundario | Tipo de consulta | Tipo | Descripción |
---|---|---|---|
<AffectedNights> | Pricing | integer | Indica la cantidad de noches de una estadía con alcance limitado. Este elemento se usa solo para las consultas de precios de estadías prolongadas con precios modificados. |
<Checkin> | Pricing | Date | Las fechas de un cambio de precio específico. |
<Context> | Pricing (Live Pricing Queries only) | <Context> | Para las consultas de precios en tiempo real, especifica ciertos parámetros bajo los cuales se realiza la consulta. Entre los elementos secundarios, se incluyen los siguientes:
El elemento |
<FirstDate> | Pricing | Date | Es la fecha de inicio de un rango de itinerarios al que se aplica el precio. Este elemento se usa solo para las consultas de precios del período de entrada de datos que se usan con los precios modificados. |
<HotelInfoProperties> | Metadata | string | Una o más propiedades para las que Google quiere metadatos actualizados de habitaciones y paquetes de habitaciones en un mensaje Query de metadatos. Este elemento puede contener uno o más elementos <Property> que especifican los IDs de propiedad del hotel. |
<LastDate> | Pricing | Date | Es la fecha de finalización de un rango de itinerarios al que se aplica el precio. Este elemento se usa solo para las consultas de precios del período de entrada de fecha de entrada que se usan con solicitud de precios a terceros y sugerencias. |
<Nights> | Pricing | integer | La cantidad de noches de un itinerario en particular, hasta 30. |
<PropertyList> | Pricing | Object | Uno o más IDs del hotel que requieren actualizaciones de precios. Define cada hotel en un elemento <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> |
Ejemplos
Consulta de precios
En el siguiente ejemplo, se muestra un mensaje de consulta de precios que solicita actualizaciones de precios para un conjunto de hoteles, disponible por 3 noches, a partir del 10 de junio de 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>
Consulta de precios en tiempo real
En el siguiente ejemplo, se muestra una consulta de precios en tiempo real con un límite de tiempo de respuesta de 500 milisegundos:
<?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 búsqueda de contexto
<?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>
Consulta de metadatos
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<HotelInfoProperties>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</HotelInfoProperties>
</Query>
Para ver ejemplos adicionales, como las consultas de precios de períodos de entrada y estadía
y períodos de entrada, revisa los ejemplos del mensaje Query
.
<Context>
El elemento <Context>
describe la información de un Live pricing query
, lo que incluye la cantidad y el tipo de invitados, el país y el dispositivo del usuario.
Nunca se usarán varios <Context>
con diferentes países o dispositivos de usuario. Si se usan varios <Context>
para buscar varias
ocupaciones, proporciona el precio de cada ocupación como un paquete de habitación adicional
para la propiedad o el itinerario correspondiente. Cada propiedad o itinerario debe tener un
solo bloque de <Result>
con los precios para varias
ocupaciones incluidos.
Para obtener los detalles de la respuesta de la consulta <Context>
, consulta <OccupancyDetails>
.
Sintaxis
El elemento <Context>
usa la siguiente sintaxis:
Sintaxis
<?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>
Elementos secundarios
El elemento <Context>
tiene los siguientes elementos secundarios:
Elemento secundario | Tipo de consulta | Tipo | Descripción |
---|---|---|---|
<Occupancy> | Pricing | integer | Especifica la cantidad total de invitados. Si bien no son obligatorias, las consultas con Nota:Es posible que |
<OccupancyDetails> | Pricing | Object | Está precedida por <Occupancy> . Especifica los invitados por tipo, incluidos los siguientes:
Si bien no son obligatorias, las consultas con Nota: Es posible que |
<UserCountry> | Pricing | string | Filtra las tarifas por el país en el que se encuentra el usuario. El valor es un código de país de 2 letras, como Las consultas con un |
<UserDevice> | Pricing | string | Filtra las tarifas por el tipo de dispositivo desde el que el usuario está buscando. Valores posibles:
Las consultas con |
Ejemplos
Ocupación
En el siguiente ejemplo, se muestra una consulta de precios en tiempo real para <Occupancy>
dentro de <Context>
. La consulta de precios en tiempo real es para 3 invitados adultos.
<?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>
Detalles de ocupación
En el siguiente ejemplo, se muestra una consulta de precios en tiempo real con <OccupancyDetails>
dentro de <Context>
.
La consulta de precios en tiempo real es para 4 huéspedes, 2 de los cuales son niños, y busca una tarifa aplicable a la reserva de un huésped de EE.UU. desde un dispositivo móvil:
<?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>
Varios contextos
En el siguiente ejemplo, se muestra el uso de un elemento <Context>
adicional en una consulta de precios en tiempo real.
<?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>