Struttura della richiesta
Le richieste BatchAvailabilityLookup
possono riguardare più servizi per lo stesso commerciante e gli slot richiesti possono riguardare più risorse e giorni. Consigliamo di utilizzare un unico ID servizi per tutti i commercianti per semplificare l'integrazione.
Tempi di risposta
Le richieste BatchAvailabilityLookup
hanno una soglia di latenza di 1,5 secondi
prima che la risposta venga considerata non riuscita. Assicurati che il routing DNS e di rete interno
siano sincronizzati per ridurre al minimo qualsiasi ritardo nella richiesta che
raggiunge la tua infrastruttura. Se si verificano errori di timeout significativi, la tua
integrazione potrebbe essere disattivata finché non riesci a risolverli.
Ogni risposta a una richiesta deve restituire lo stato effettivo dell'inventario in quel momento e non quando è stato inserito il flusso di prenotazione. Se uno slot è esaurito, riflettilo nelle risposte attuali.
Definizioni
Il metodo BatchAvailabilityLookup
verifica che solo gli slot attuali vengano
presentati agli utenti durante il flusso di prenotazione.
Richiesta BatchAvailabilityLookup
message BatchAvailabilityLookupRequest {
// ID of the merchant.
string merchant_id = 1;
// Multiple slot times to be checked for availability. All queried times apply
// to the same merchant_id and service_id.
repeated SlotTime slot_time = 3;
reserved 2;
}
Risposta BatchAvailabilityLookup
// Response for the [ext.maps.booking.partner.v3.BatchAvailabilityLookupRequest]
// RPC with the availabilities of the appointment slots.
message BatchAvailabilityLookupResponse {
// The availabilities for the requested SlotTime entries. There must be
// exactly one slot_time_availability for each SlotTime entry in the
// [ext.maps.booking.partner.v3.BatchAvailabilityLookupRequest].
repeated SlotTimeAvailability slot_time_availability = 1;
}
SlotTime
// Identifies a Slot service_id and start time and optionally, the Slot duration
// and resources, for a specific merchant. Note that this differs from the
// definition of Slot, as it does not include merchant_id identifier.
message SlotTime {
// ID of the service. (required)
string service_id = 5;
// Start time of the appointment slot in seconds of UTC time since Unix epoch
// (required)
int64 start_sec = 1;
// Duration of the appointment slot in seconds (optional)
int64 duration_sec = 2;
// Opaque tag that identifies the availability slot and matches the value
// provided in the Availability Feed (optional)
string availability_tag = 3;
// The set of resources that specifies the appointment slot, e.g. by
// indicating the staff member and room selected by the user, or party size
// for dining slots (optional)
ResourceIds resource_ids = 4;
// Indicates whether bookings of this slot will be confirmed
// synchronously or asynchronously. (optional)
// An UNSPECIFIED value will be interpreted as synchronous.
ConfirmationMode confirmation_mode = 6;
}
SlotTimeAvailability
Se non vengono trovate aree, restituisci una risposta vuota. Non restituire un errore 400, ma puoi restituire 204 o un altro codice 2xx. Verifica che la risposta sia stata ricevuta correttamente.
message SlotTimeAvailability {
// The SlotTime for which availability was checked.
SlotTime slot_time = 1;
// Whether the requested SlotTime is available
bool available = 2;
}
Esempi di BatchAvailabilityLookup
Caricamento pagina
Quando un utente fa clic su Prenota online per avviare il flusso di prenotazione, viene inviata una richiesta BatchAvailabilityLookup
con gli slot di disponibilità noti per il commerciante. Per ogni slot inviato nella richiesta, il server di prenotazione restituisce una
risposta con la disponibilità attuale effettiva dello slot. All'utente vengono presentati
solo gli slot disponibili nel frontend.
Se un utente modifica il numero di persone o seleziona un'altra data, è possibile inviare un'altra richiesta di caricamento della pagina.
Richiesta di caricamento pagina
{
"merchant_id" : "1234",
"slot_time" : [
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
},
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606469400"
},
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606471200"
}
]
}
Risposta di caricamento pagina
{ "slot_time_availability" :
[
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2 },
"service_id" : "1000",
"start_sec" : "1606467600" }
},
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2 },
"service_id" : "1000",
"start_sec" : "1606469400" }
},
{
"available" : false,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2 },
"service_id" : "1000",
"start_sec" : "1606471200" }
}
]
}
Clic sullo spazio
Quando un utente seleziona un orario prenotabile, viene inviata una richiesta BatchAvailabilityLookup
per l'orario specifico. Il server di prenotazione restituisce una risposta con la disponibilità attuale
effettiva dello slot. La risposta prevista è False per la
disponibilità se lo slot è prenotato da un altro utente Google, internamente
all'interno del tuo sistema o tra il caricamento della pagina e le richieste di clic sullo slot.
Richiesta di clic sullo slot
{
"merchant_id" : "1234",
"slot_time" : [
{
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
}
]
}
Risposta al clic sullo slot
{
"slot_time_availability" : [
{
"available" : true,
"slot_time" : {
"duration_sec" : "1800",
"resource_ids" : {
"party_size" : 2
},
"service_id" : "1000",
"start_sec" : "1606467600"
}
}
]
}