Cuando el usuario reserve un horario de disponibilidad con un precio específico, se lo redireccionará a tu página de reservas con una URL que tú definas. En los pasos proporcionados, se muestra cómo hacer lo siguiente:
- Define tu plantilla de URL.
- Establece tu plantilla de URL en tus feeds.
- Habilita la vinculación por período de disponibilidad.
- Verifica los campos en el Centro de acciones.
1. Define tu plantilla de URL.
La plantilla de URI sigue la especificación de plantillas de URI de nivel 2 del RFC6570 del Grupo de trabajo de ingeniería de Internet (IETF). Obtén más información en datatracker.ietf.org. Tú configuras la URL con parámetros que se completan de forma dinámica con información relacionada con esa reserva. En la siguiente tabla, se incluyen los parámetros obligatorios y opcionales disponibles para tu plantilla de URI.
`https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}`
Valores disponibles para la plantilla de URL
Parámetros de plantilla | Obligatorio / Opcional | Feed | Campo | Ejemplo de valor |
---|---|---|---|---|
availability_slot_start_seconds | Obligatorio | de disponibilidad | start_sec | 4152695841 |
resources_party_size | Obligatorio | availability.resources | party_size | 2 |
availability_slot_availability_tag | Opcional | de disponibilidad | availability_tag | res-123 |
availability_slot_duration_seconds | Opcional | de disponibilidad | duration_sec | 3600 |
resources_room_id | Opcional | availability.resources | room_id | bar_123 |
2. Establece tu plantilla de URI en el feed.
En la siguiente sección, se da por sentado que tienes una integración E2E activa con un feed de servicios existente. La URL que definiste se establecerá en el feed de servicios. A continuación, se incluye la definición de ese campo.
message Service {
// ..
UriTemplate uri_template = 38;
}
Definición de la plantilla de URI
// A template specifying how Google should generate URLs to external site. message UriTemplate { // The uri template must follow the RFC6570, see // https://datatracker.ietf.org/doc/html/rfc6570. // Supports Level 2 templates. // These parameters will be resolved to their values specified in their // respective entities. // // 5 available parameters for Dining Reservation Linkout: // 1) (required) {availability_slot_start_seconds} :: populated from start_sec // field in availability feed // 2) (required) {availability_slot_duration_seconds} :: populated from // duration_sec field in availability feed // 3) (optional) {resources_party_size} :: populated from party_size field in // availability feed // 4) (optional) {availability_availability_tag} :: populated from // availability_tag field in availability feed // 5) (optional) {resources_room_id} :: populated from room_id field in // availability feed // // Example usage: // http://example.com/book/restaurant?start={availability_slot_start_seconds} // &num_guests={resources_party_size} // * start_sec = 123456 // * party_size = 2 // https://example.com/book/restaurant?start=123456&num_guests=2 string uri_template = 1; }
Definición de la muestra de servicio
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 0, "total_shards": 1, "nonce": "12484913", "generation_timestamp": 1530432018 }, "service": [ { "merchant_id": "dining-A", "service_id": "reservation", "uri_template": { "uri_template": "https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}" }, "localized_service_name": { "value": "Reservation", "localized_value": [ { "locale": "en", "value": "Reservation" } ] } } ] }
3. Habilita la vinculación por período de disponibilidad.
En la siguiente sección, se da por sentado que tienes una integración E2E activa con un feed de disponibilidad existente. Una vez que hayas configurado la plantilla de URL en tu feed de servicios, deberás especificar cuáles de tus horarios disponibles serán obligatorios para establecer vínculos.
Para ello, agrega el campo linkout_required_reason
con un valor de PAYMENT_REQUIRED
.
Definición del motivo de vinculación
message Availability {
// ..
LinkoutRequiredReason linkout_required_reason = 19;
}
// The reason why a slot requires a linkout. Currently only used for Dining // Reservations Payment Redirect Partners. enum LinkoutRequiredReason { // Default value: Do not use, equates to unknown. LINKOUT_REQUIRED_REASON_UNSPECIFIED = 0; // Slot requires payment in the partner platform to be booked. PAYMENT_REQUIRED = 1; }
Definición de ejemplo del motivo de vinculación
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 0, "total_shards": 1, "nonce": "11203880", "generation_timestamp": 1543875200 }, "service_availability": [ { "availability": [ { "merchant_id": "dining-A", "service_id": "reservation", "linkout_required_reason": "PAYMENT_REQUIRED", "start_sec": 1535853600, "duration_sec": 2700, "spots_total": 2, "spots_open": 2, "resources": { "room_id": "A-dining-room", "room_name": "Dining Room", "party_size": 2 } } ] } ] }
4. Verifica los campos en el Centro de acción
Una vez que tus feeds se hayan enviado correctamente y no haya errores en el historial de feeds, puedes verificar los campos siguiendo los pasos que se indican a continuación.
Plantilla de URL en el visor de inventario
Puedes encontrar la definición de la plantilla de URL en la sección Servicios de la vista del inventario de un comercio. Encontrarás la plantilla en la sección "fragmento de feed". Consulta la Vista de inventario para obtener más detalles sobre la vista de Merchant y Service.
Motivo de vinculación en el visor de disponibilidad
Puedes encontrar el campo linkout_reason_required
cuando veas el horario de disponibilidad específico en la Vista de disponibilidad.