Anwendungsfälle für Echtzeitupdates
In den folgenden Fällen müssen immer Echtzeitaktualisierungen herausgegeben werden:
- Wenn ein Nutzer eine Reservierung in Ihrem System storniert und der Slot wieder verfügbar wird.
- Wenn ein Nutzer eine Reservierung über das Actions Center bucht und der Verfügbarkeits-Slot nicht mehr verfügbar ist.
- Eine Reservierung, die über das Actions Center vorgenommen wurde, wird in deinem System storniert, z. B. direkt vom Händler. Du musst die Buchung und die Verfügbarkeit aktualisieren, weil der ursprüngliche Slot jetzt wieder verfügbar ist.
Wenn Sie Echtzeitaktualisierungen für „AvailabilityReplace“ implementieren, sollten in den folgenden Fällen Echtzeitaktualisierungen gesendet werden:
- Wenn ein Händler seinen Zeitplan (Verfügbarkeit) in Ihrem System ändert.
- Ein Nutzer reserviert einen Slot in deinem System. Er ist also nicht mehr verfügbar.
-
Wenn Sie eine alte Integration mit
CheckAvailability
verwenden, gibt einCheckAvailability
-Aufruf des Buchungsservers Inventar zurück, das nicht mit dem tatsächlichen Inventar übereinstimmt.
Nicht alle Maps Booking API-Aufrufe sind erforderlich. Folgendes ist obligatorisch:
-
notification.partners.bookings.patch
(BookingNotification.UpdateBooking
)
Je nach Art der Integration sind möglicherweise auch folgende Optionen verfügbar oder erforderlich:
inventory.partners.availability.replace
(InventoryUpdate.BatchServiceAvailability
) ODERinventory.partners.merchants.services.availability.replace
(InventoryUpdate.ReplaceServiceAvailability
)
Buchung – Echtzeitaktualisierung
Wenn eine Buchung im Actions Center in Ihrem System aktualisiert wurde (z.B. storniert oder geändert), muss eine notification.partners.bookings.patch
(BookingNotification.UpdateBooking
) gesendet werden.
Änderbare Felder
status
startTime
duration
partySize
paymentInformation.prepaymentStatus
Beispiel für eine Kündigung
Request: PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status Body: { "name": "partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "merchantId": "10001", "serviceId": "1001", "startTime": "2025-01-02T15:01:23.045123456Z", "duration": "3000s", "status": "CANCELED" }
Echtzeitaktualisierung für "AvailabilityReplace"
Es gibt zwei Arten von Ersatzmethoden, mit denen Sie Ihre Verfügbarkeit aktualisieren können:
-
Batch Replace (
InventoryUpdate.BatchServiceAvailability
): Die Verfügbarkeitsdaten für mehrere Händler und Dienste werden vollständig ersetzt.- Hinweis: Dieser Batch-Aufruf garantiert nicht die Atomarität. Es werden nur erfolgreich aktualisierte verfügbare Slots zurückgegeben.
-
Einzelvorgang (
InventoryUpdate.ReplaceServiceAvailability
): Die Verfügbarkeit für einen einzelnen Händler und Dienst wird vollständig ersetzt.
Weitere Informationen finden Sie in der Referenz.
Für Echtzeitaktualisierungen muss dieselbe Verfügbarkeitsstruktur verwendet werden wie für die Daten, die über Feeds gesendet werden. Sie müssen eine der folgenden Optionen verwenden:
spotsOpen
recurrence
Methode zum Ersetzen auswählen
Anhand der folgenden Anleitung können Sie ermitteln, welche Ersatzmethode am besten geeignet ist:
- Sind mehrere Händler betroffen? Sie können beispielsweise die Verfügbarkeit für mehrere Händler in einer Anfrage ersetzen.
- Ihr System wird von Zeit zu Zeit mit dem von Google synchronisiert, indem alle Verfügbarkeitsänderungen seit dem letzten Update gesendet werden (nicht empfohlen).
- Batch-Ersetzen
- Hinweis: Wir gehen davon aus, dass die Inventar-RTU innerhalb von 5 Minuten nach einer Aktualisierung auf Ihrer Seite gesendet wird. Sie sollten daher mindestens alle 5 Minuten nach Updates suchen und diese senden.
- Trifft keine dieser Optionen zu oder müssen Sie nur einen einzelnen Händler und Dienst aktualisieren?
- Einzelnes Ersetzen
- Hinweis: Sie können mehrere einzelne Replace-Aufrufe verwenden, um einen Batch-Replace-Aufruf zu emulieren. Es ist jedoch effizienter, einen einzelnen Batch-Replace-Aufruf zu verwenden.
Echtzeitaktualisierungen: Open Format für Anzeigen
Es ist wichtig, dasselbe Format für Feeds, Buchungsserver und Echtzeitaktualisierungen zu verwenden.
Ein spots_open
-Feed-Snippet sieht so aus:
Feed-Snippet
"availability": [ { "merchant_id": "1001", "service_id": "12310", "spots_open": 2, "spots_total": 2, "start_sec": 1735831800, # January 02, 2025 15:30:00 "duration_sec": 1800, "availabilityTag": "1000001" } ]
Für die Inventory Update API ist das Format des Anfragetexts für den Ersatz, wenn ein Slot um 15:30 Uhr gebucht wird, so:
Snippet für Echtzeitaktualisierungen ersetzen
{ "extendedServiceAvailability": [ { "merchantId": "1001", "serviceId": "12310", "startTimeRestrict": "2025-01-02T15:01:23.045123456Z", "endTimeRestrict": "2025-01-02T19:01:23.045123456Z", "availability": [ { "startTime": "2025-01-02T15:30:00.00Z", "duration": "3600s", "spotsOpen": "1", "spotsTotal": "2", "availabilityTag": "1000001" } ] } ] }
Hier ein Beispiel für den nächsten täglichen Feed, wenn ein neuer Slot um 15:30 Uhr gebucht wird:
Feed-Snippet
"availability": [ { "merchant_id": "1001", "service_id": "12310", "spots_open": 1, "spots_total": 2, "start_sec": 1735831800, # January 02, 2025 15:30:00 "duration_sec": 1800, "availabilityTag": "1000001" } ]
Echtzeitaktualisierungen: Wiederholungsformat
Es ist wichtig, dasselbe Format für Feeds, Buchungsserver und Echtzeitaktualisierungen zu verwenden.
Ein Feed mit Wiederholung sieht so aus:
Feed-Snippet
"availability": [ { "merchant_id": "1001", "service_id": "12310", "spots_open": 1, "spots_total": 1, "start_sec": 1540890000, # October 30, 2018 9:00:00 AM "duration_sec": 1800, "recurrence": { "repeat_every_sec": 1800, "repeat_until_sec": 1540918800 # October 30, 2018 5:00:00 PM }, "schedule_exception": [ { "time_range": { "begin_sec": 1540902600, # October 30, 2018 12:30:00 PM "end_sec": 1540904400 # October 30, 2018 1:00:00 PM } } ], } ]
Für die Inventory Update API sieht das Format des Replace-Anfragetexts bei der Buchung eines Slots um 15:30 Uhr so aus:
{ "extendedServiceAvailability": [ { "merchantId": "1001", "serviceId": "12310", "startTimeRestrict": "2018-10-30T15:01:23.045123456Z", "endTimeRestrict": "2018-10-30T19:01:23.045123456Z", "availability": [ { "startTime": "2018-10-30T15:30:00.00Z", "duration": "3600s", "spotsOpen": "1", "scheduleException": [ { "timeRange": { "startTime": "2018-10-30T12:30:00.00Z", "endTime": "2018-10-30T13:00:00.00Z" } }, { "timeRange": { "startTime": "2018-10-30T15:30:00.00Z", "endTime": "2018-10-30T16:00:00.00Z" } } ] } ] } ] }
Hier ein Beispiel für den nächsten täglichen Feed. Beachten Sie, dass es sich um die Verfügbarkeit des gesamten Dienstes für diesen Händler und alle seine bisherigen und neuen schedule_exceptions
handelt:
Feed-Snippet
"availability": [ { "merchant_id": "1001", "service_id": "12310", "spots_open": 1, "spots_total": 1, "start_sec": 1540890000, # October 30, 2018 9:00:00 AM "duration_sec": 1800, "recurrence": { "repeat_every_sec": 1800, "repeat_until_sec": 1540918800 # October 30, 2018 5:00:00 PM }, "schedule_exception": [ { "time_range": { "begin_sec": 1540902600, # October 30, 2018 12:30:00 PM "end_sec": 1540904400 # October 30, 2018 1:00:00 PM } }, { "time_range": { "begin_sec": 1540913400, # October 30, 2018 3:30:00 PM "end_sec": 1540915200 # October 30, 2018 4:00:00 PM } } ], } ]
Wann Echtzeitupdates einreichen?
Echtzeitaktualisierungen sollten kontinuierlich gesendet werden, wenn sich die Verfügbarkeit ändert. Dies ist zusätzlich zu einem umfassenden Verfügbarkeitsfeed, der einmal täglich eingereicht werden sollte, damit die Verfügbarkeit zwischen Ihrem und dem Google-System synchronisiert wird.