Gerçek Zamanlı Güncellemeler İçin Kullanım Alanları
Gerçek Zamanlı Güncellemeler her zaman aşağıdaki senaryolarda yayınlanmalıdır:
- Bir kullanıcı, sisteminizdeki bir rezervasyonu iptal ettiğinde boş alan kullanılabilir hale gelir.
- Bir kullanıcı, Actions Center üzerinden rezervasyon yaptırdığında ve müsaitlik durumu özelliği artık kullanılamadığında.
- Actions Center üzerinden yapılan bir rezervasyon sizin tarafınızda (örneğin, doğrudan satıcı tarafından) iptal edildiğinde. Orijinal alan artık tekrar kullanılabilir olduğundan rezervasyonu ve müsaitlik durumunu güncellemeniz gerekir.
Ayrıca, Kullanılabilirlik Değişikliği RTU'yu uygularsanız Gerçek Zamanlı Güncellemeler aşağıdaki senaryolarda yayınlanmalıdır:
- Bir satıcı, sisteminizdeki programını (stok durumu) değiştirdiğinde.
- Bir kullanıcı, sisteminizde rezervasyon yaptırdığında ve müsaitlik durumu özelliği artık kullanılamadığında.
-
CheckAvailability
ile eski bir entegrasyon kullanıyorsanız rezervasyon sunucusuCheckAvailability
çağrısı gerçek envanterle eşleşmeyen envanteri döndürdüğünde bu durum geçerli olur.
Tüm Maps Reservation 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üncelle
Sisteminizdeki bir Actions Center rezervasyonunda güncelleme yapılması (ör. iptal edilmesi veya değiştirilmesi) olması durumunda 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" }
Kullanılabilirlik RTU'yu değiştir
Müsaitlik durumunuzu güncellemek için kullanabileceğiniz iki tür değiştirme yöntemi vardır:
-
Toplu Değiştirme (
InventoryUpdate.BatchServiceAvailability
): Bir satıcı ve birden fazla hizmet için stok durumu verilerini tamamen değiştirir.- Not: Bu toplu çağrı, atomik kesinliği garanti etmez. Yalnızca başarıyla güncellenen kullanılabilirlik slotları döndürülür.
-
Tek Değiştirme (
InventoryUpdate.ReplaceServiceAvailability
): Tek bir satıcı ve hizmet için stok durumunun tamamen yerini alır.
Daha fazla bilgi için lütfen aşağıdaki referansı inceleyin.
Gerçek zamanlı güncellemeler, feed'ler üzerinden gönderilen verilerle aynı kullanılabilirlik yapısını kullanmalıdır. Aşağıdakilerden birini kullanmaları gerekir:
spotsOpen
recurrence
Aramak için Değiştirme Yöntemi Seçme
Hangi değiştirme yönteminin daha uygun olduğunu belirlemenize yardımcı olması için aşağıdaki kılavuzu kullanın:
- Tek bir rezervasyondan birden fazla hizmet etkileniyor mu? Örneğin, saç kesimi ve boyama (her biri ayrı bir Hizmet'tir) bir stilistle rezerve edilir. Bu nedenle, bu zaman aralığında stilistle bağlantılı tüm hizmetler kaldırılmalıdır.
- Sisteminiz, son güncellemeden bu yana tüm kullanılabilirlik
değişikliklerini göndererek zaman zaman Google'ın verileriyle senkronize edilir (önerilmez).
- Toplu Değiştirme
- Not: Envanter RTU'nun, tarafınızda bir güncelleme yapıldıktan sonra 5 dakika içinde gönderilmesini bekleriz. Bu nedenle, güncellemeleri en az 5 dakikada bir kontrol edip göndermelisiniz.
- Bunların hiçbiri geçerli değil mi?
- Tek Değiştirme
- Not: Bir toplu değiştirme çağrısına öykünmek için birden çok tekli değiştirme çağrısı kullanabilirsiniz ancak tek bir toplu değiştirme çağrısı kullanmak daha verimli olur.
Gerçek Zamanlı Güncellemeler: Açık Spotlar Biçimi
Feed'lerde, rezervasyon sunucusunda ve gerçek zamanlı güncellemelerde aynı biçimi kullanmak ö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" } ]
Inventory Update API'de 15:30 için bir zaman aralığı rezerve edildiğinde değiştirme isteği gövde biçimi:
Gerçek Zamanlı Güncelleme 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'da yeni bir zaman aralığı rezerve edilirse sonraki günlük feed'de neler olacağına dair bir örneği aşağıda bulabilirsiniz:
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: Yinelenme Biçimi
Feed'lerde, rezervasyon sunucusunda ve gerçek zamanlı güncellemelerde aynı biçimi kullanmak önemlidir.
Yineleme kullanan bir feed şuna benzer:
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 } } ], } ]
Inventory Update API'de 15:30 için bir zaman aralığı rezerve edildiğinde 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" } } ] } ] } ] }
Bir sonraki günlük feed'de beklenenlerin bir örneğini burada görebilirsiniz. Bu süre, ilgili satıcı için hizmetin tamamının ve önceki ve yeni schedule_exceptions
öğelerinin tamamının kullanılabilirliğidir.
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?
Kullanılabilirlik her değiştiğinde gerçek zamanlı güncellemeler sürekli olarak gönderilmelidir. Bu, müsaitlik durumunun Google'ın sistemleri ile senkronize edildiğinden emin olmak için günde bir kez gönderilmesi gereken kapsamlı bir müsaitlik durumu feed'ine ek olarak yapılır.