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
Tüm Haritalar Rezervasyon API ç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": "2014-10-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
): Bir satıcının ve birden fazla 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ı bilgi dokümanı 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:
- Tek bir rezervasyon birden fazla hizmeti mi etkiliyor? Örneğin, bir stilist için saç kesimi ve boyama (her biri farklı bir hizmettir) rezervasyonu yapılır. Bu nedenle, ilgili zaman aralığı için stilistle ilişkilendirilmiş tüm hizmetler kaldırılmalıdır.
- 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 durumlardan hiçbiri söz konusu değil mi?
- 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
Anlık 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": 1412263800, # October 02, 2014 15:30:00 "duration_sec": 1800, "availabilityTag": "1000001" } ]
Envanter Güncelleme API'si için, 15:30'ta rezervasyon yapıldığında değiştirme isteği gövde biçimi:
Anlık Güncellemeler snippet'ini değiştirme
{ "extendedServiceAvailability": [ { "merchantId": "1001", "serviceId": "12310", "startTimeRestrict": "2014-10-02T15:01:23.045123456Z", "endTimeRestrict": "2014-10-02T19:01:23.045123456Z", "availability": [ { "startTime": "2014-10-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": 1412263800, # October 02, 2014 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 değiştirme isteği gövde biçimi şöyle görünür:
{ "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" } } ] } ] } ] }
Aşağıda, bir sonraki günlük feed'de nelerin beklendiğine dair bir örnek 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.