Lorsqu'un utilisateur réserve un créneau de disponibilité à un prix spécifique, il est redirigé vers votre page de réservation à l'aide d'une URL que vous avez définie. Les étapes fournies vous montreront comment effectuer les actions suivantes :
- Définissez votre modèle d'URL.
- Définissez votre modèle d'URL dans vos flux.
- Activez le lien externe pour chaque créneau de disponibilité.
- Vérifiez les champs dans le Centre d'action.
1. Définir votre modèle d'URL
Le modèle d'URI suit la spécification de modèle d'URI de niveau 2 RFC6570 de l'IETF (Internet Engineering Task Force). Pour en savoir plus, consultez datatracker.ietf.org. Vous définissez l'URL avec des paramètres qui sont renseignés de manière dynamique avec des informations concernant cette réservation. Le tableau suivant inclut les paramètres obligatoires et facultatifs disponibles pour votre modèle d'URI.
`https://reservation-provider.com/examplerestaurant/book?date={availability_slot_start_seconds}&num_guests={resources_party_size}`
Valeurs disponibles pour le modèle d'URL
Paramètres du modèle | Obligatoire / Facultatif | Flux | Champ | Exemple de valeur |
---|---|---|---|---|
availability_slot_start_seconds | Obligatoire | disponibilité | start_sec | 4152695841 |
resources_party_size | Obligatoire | availability.resources | party_size | 2 |
availability_slot_availability_tag | Facultatif | disponibilité | availability_tag | res-123 |
availability_slot_duration_seconds | Facultatif | disponibilité | duration_sec | 3600 |
2. Définissez votre modèle d'URI dans votre flux.
La section suivante suppose que vous disposez d'une intégration E2E en direct avec un flux de services existant. L'URL que vous avez définie sera définie dans le flux de services. Vous trouverez ci-dessous la définition de ce champ.
message Service {
// ..
UriTemplate uri_template = 38;
}
Définition du modèle d'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. // // Available parameters for Dining Reservation Linkout: // 1) (required) {availability_slot_start_seconds} :: populated from start_sec // field in availability feed // 2) (required) {resources_party_size} :: populated from party_size field in // availability feed // 3) (optional) {availability_slot_duration_seconds} :: populated from // duration_sec field in availability feed // 4) (optional) {availability_slot_availability_tag} :: populated from // availability_tag 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; }
Exemple de définition de service
{ "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. Activez le lien externe pour chaque créneau de disponibilité.
La section suivante suppose que vous disposez d'une intégration E2E en direct avec un flux de disponibilité existant. Une fois que vous avez défini le modèle d'URL dans votre flux de services, vous devez spécifier les créneaux de disponibilité pour lesquels le lien vers le site Web est obligatoire.
Pour ce faire, ajoutez le champ linkout_required_reason
avec la valeur PAYMENT_REQUIRED
.
Définition du motif de redirection
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; }
Exemple de définition du motif de redirection
{ "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. Vérifier les champs dans le Centre d'action
Une fois vos flux envoyés et si aucune erreur ne figure dans l'historique des flux, vous pouvez vérifier les champs en suivant les étapes ci-dessous.
Modèle d'URL dans le lecteur d'inventaire
Vous trouverez la définition du modèle d'URL dans la section "Services" de la vue de l'inventaire d'un marchand. Vous trouverez le modèle dans la section "Extrait de flux". Pour en savoir plus sur les vues "Marchand" et "Service", consultez Vue de l'inventaire.

Motif du lien externe dans le vérificateur de disponibilité
Vous trouverez le champ linkout_required_reason
lorsque vous afficherez le créneau de disponibilité spécifique dans la vue Disponibilité.
