Gerçek Zamanlı Güncellemeleri Yapılandırma

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 sunucusu CheckAvailability ç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:

Entegrasyon türüne bağlı olarak aşağıdakiler de kullanılabilir veya gerekli olabilir:

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.