Gerçek Zamanlı Güncellemeler için Kullanım Alanları
Gerçek zamanlı güncellemeler aşağıdaki senaryolarda her zaman yayınlanmalıdır:
- Bir kullanıcı sisteminizdeki bir rezervasyonu iptal ettiğinde ve ilgili aralık müsait hale geldiğinde
- Kullanıcı, İşlem Merkezi üzerinden rezervasyon yaptığında ve müsaitlik durumu aralığı artık müsait değilse
- İşlem Merkezi üzerinden yapılan bir rezervasyon, sizin tarafınızda (ör. doğrudan satıcı tarafından) iptal edildiğinde Orijinal zaman aralığı tekrar kullanılabilir hâle geldiği için rezervasyonun yanı sıra müsaitlik durumunu da güncellemeniz gerekir.
Ayrıca, Kullanılabilirlik için RTU'yu değiştir seçeneğini uygularsanız aşağıdaki senaryolarda gerçek zamanlı güncellemeler yayınlanmalıdır:
- Satıcılar sisteminizde programlarını (müsaitlik durumlarını) değiştirdiğinde.
- Kullanıcılar sisteminizde rezervasyon yaptığında ve müsaitlik durumu aralığı artık kullanılamıyorsa
-
CheckAvailability
ile eski bir entegrasyon kullanıyorsanız rezervasyon sunucusuCheckAvailability
çağrısı gerçek envanterle eşleşmeyen envanter döndürdüğünde
Haritalar Rezervasyon API'sinin tüm çağrıları gerekli değildir. Aşağıdakiler zorunludur:
-
notification.partners.bookings.patch
(BookingNotification.UpdateBooking
)
Entegrasyon türüne bağlı olarak aşağıdakiler de kullanılabilir veya gerekli olabilir:
inventory.partners.availability.replace
(InventoryUpdate.BatchServiceAvailability
) VEYAinventory.partners.merchants.services.availability.replace
(InventoryUpdate.ReplaceServiceAvailability
)
Rezervasyon RTU'sunu güncelleme
Sisteminizde bir Actions Center rezervasyonunda güncelleme yapılmışsa (ör. iptal edilmiş veya değiştirilmişse) notification.partners.bookings.patch
(BookingNotification.UpdateBooking
) gönderilmelidir.
Değiştirilebilir Alanlar
status
startTime
duration
partySize
paymentInformation.prepaymentStatus
İptal örneği
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" }
Müsaitlik durumu RTU'yu değiştir
Kullanılabilirlik durumunuzu güncellemek için iki tür değiştirme yöntemi vardır:
-
Toplu Değiştirme (
InventoryUpdate.BatchServiceAvailability
): Birden fazla satıcı ve hizmetin müsaitlik durumu verilerini tamamen değiştirir.- Not: Bu toplu çağrı, atomikliği garanti etmez. Yalnızca başarıyla güncellenen müsaitlik durumu aralıkları döndürülür.
-
Tek Değişim (
InventoryUpdate.ReplaceServiceAvailability
): Tek bir satıcı ve hizmetin stok durumunu tamamen değiştirir.
Daha fazla bilgi için lütfen aşağıdaki kaynağı inceleyin.
Gerçek zamanlı güncellemeler, feed'ler aracılığıyla gönderilen verilerle aynı stok durumu yapısını kullanmalıdır. Aşağıdakilerden birini kullanmalıdır:
spotsOpen
recurrence
Arama için bir değiştirme yöntemi seçme
Hangi değiştirme yönteminin daha uygun olduğunu belirlemek için aşağıdaki kılavuzdan yararlanın:
- Birden fazla satıcı etkileniyor mu? Örneğin, tek bir istekte birden fazla satıcının müsaitlik durumunu değiştirebilirsiniz.
- Sisteminiz, son güncellemeden bu yana yapılan tüm müsaitlik durumu değişikliklerini göndererek zaman zaman Google ile senkronize olur (önerilmez).
- Toplu Değiştirme
- Not: Envanter RTU'nun, tarafınızda bir güncelleme yapıldıktan sonraki 5 dakika içinde gönderilmesini bekliyoruz. Bu nedenle, en az 5 dakikada bir güncellemeleri kontrol edip göndermeniz gerekir.
- Bu durumların hiçbiri sizin için geçerli değil mi yoksa yalnızca tek bir satıcıyı ve hizmeti güncellemeniz mi gerekiyor?
- Tek Değiştirme
- Not: Toplu değiştirme çağrısını taklit etmek için birden fazla tek değiştirme çağrısı kullanabilirsiniz ancak tek bir toplu değiştirme çağrısı kullanmak daha verimli olacaktır
Gerçek Zamanlı Güncellemeler: Spotlar Açık Format
Feed'ler, rezervasyon sunucusu ve gerçek zamanlı güncellemelerde aynı biçimin kullanılması önemlidir.
spots_open
feed snippet'i şöyle görünür:
Feed snippet'i
"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" } ]
Envanter Güncelleme API'si için, 15:30'ta rezervasyon yapıldığında istek içeriği biçimi:
Anlık Güncellemeler snippet'ini değiştirme
{ "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" } ] } ] }
Saat 15:30'ta yeni bir slot rezerve edilirse sonraki günlük feed'de ne göreceğinize dair bir örnek aşağıda verilmiştir:
Feed snippet'i
"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" } ]
Gerçek Zamanlı Güncellemeler: Tekrarlama Biçimi
Feed'ler, rezervasyon sunucusu ve gerçek zamanlı güncellemelerde aynı biçimin kullanılması önemlidir.
Yinelenen öğeler içeren bir feed aşağıdaki gibi görünür:
Feed snippet'i
"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 } } ], } ]
Envanter Güncelleme API'sinde, 15:30'ta rezervasyon yapıldığında istek içeriği biçimi şu şekildedir:
{ "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" } } ] } ] } ] }
Bir sonraki günlük feed'de nelerin beklendiğine dair bir örnek aşağıda verilmiştir. Bu, hizmetin ilgili satıcı için kullanılabilirliğinin tamamının yanı sıra önceki ve yeni tüm schedule_exceptions
öğelerinin kullanılabilirliğini ifade eder:
Feed snippet'i
"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 } } ], } ]
Gerçek Zamanlı Güncellemeleri Ne Zaman Göndermelisiniz?
Müsaitlik durumu değiştiğinde anlık güncellemeler sürekli olarak gönderilmelidir. Bu, müsaitlik durumunun sizinle Google'ın sistemleri arasında senkronize edilmesini sağlamak için günde bir kez gönderilmesi gereken kapsamlı bir müsaitlik durumu feed'ine ek olarak gönderilir.