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 verilmelidir:

  • Kullanıcı, sisteminizdeki bir rezervasyonu iptal ettiğinde bu alan kullanılabilir hale gelir.
  • Bir kullanıcı Google ile Rezervasyon üzerinden rezervasyon yaptığında ve müsaitlik durumu artık kullanılamaz.
  • Google ile Rezervasyon üzerinden yaptığınız rezervasyon (ör. doğrudan satıcı tarafından) iptal edildiğinde. Orijinal alan artık tekrar kullanılabilir olduğundan rezervasyonun yanı sıra müsaitlik durumunu güncellemeniz gerekir.

Ayrıca, Stok Durumu Değişikliği RTU'sunu uygularsanız, Gerçek Zamanlı Güncellemeler aşağıdaki senaryolarda yayınlanmalıdır:

  • Satıcı, sisteminizdeki programını (stok durumu) değiştirdiğinde.
  • Bir kullanıcı sisteminizde rezervasyon yaptığında ve müsaitlik durumu artık kullanılamıyorsa.
  • CheckAvailability ile eski entegrasyonu kullanıyorsanız bir rezervasyon sunucusu CheckAvailability çağrısı gerçek envanterle eşleşmeyen envanter döndürdüğünde.

Tüm Maps Booking API'si çağrıları gerekli değildir. Aşağıdakilerin yapılması zorunludur:

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

Rezervasyon RTU'sunu güncelleme

Sisteminizle Google ile Rezervasyon rezervasyonunda güncelleme (ör. iptal edildi veya değiştirildi) olması durumunda, bir 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"
}

Stok Durumu Değişikliği RTU

Müsaitlik durumunuzu güncellemek için kullanabileceğiniz iki tür değiştirme yöntemi vardır:

  • Toplu Değişiklik (InventoryUpdate.BatchServiceAvailability): Bir satıcı ve birden fazla hizmet için stok durumu verilerini tamamen değiştirir.
    • Not: Bu toplu görüşme, atmosferi garanti etmez. Yalnızca başarıyla güncellenen müsaitlik durumu alanları 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 referansları kullanın.

Gerçek zamanlı güncellemeler, feed'ler aracılığıyla gönderilen verilerle aynı stok durumu yapısını kullanmalıdır. Şunlardan birini kullanması gerekir:

  • spotsOpen
  • recurrence

Size en uygun biçimi belirlemek için lütfen kullanılabilirlik yapısı kılavuzuna bakın.

Aramak İç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, bir saç kesimi ve boyama (her biri farklı bir Hizmet) olduğundan bir saç tasarımcısıyla randevu alınır. Bu nedenle, bu zaman aralığı için saç tasarımcısına bağlı tüm hizmetler kaldırılmalıdır.
  • Sisteminiz son güncellemeden bu yana tüm müsaitlik durumu değişikliklerini göndererek Google'ın zaman zaman senkronizasyonunu gerçekleştirir (önerilmez).
    • Toplu Değiştirme
    • Not: Envanter RTU'nun tarafınızca yapılan bir güncellemeden sonra 5 dakika içinde gönderilmesini bekleriz. Bu nedenle, güncellemeleri en az 5 dakikada bir kontrol edip göndermeniz gerekir.
  • Yukarıdakilerden hiçbiri söz konusu değil mi?
    • Tekli 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 olur

Gerçek Zamanlı Güncellemeler: Açık Nokta Biçimi

Feed'ler, rezervasyon sunucusu ve gerçek zamanlı güncellemelerde aynı biçimi kullanmanız ö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'da rezerve edilen bir slot için değiştirme isteği biçimi:

Gerçek Zamanlı Güncellemeler Snippet'ini Değiştir

  {
    "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"
          }
        ]
      }
    ]
  }

15:30'da yeni bir alan rezerve edilirse sonraki günlük özet akışında neler beklediğimize 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: Yinelenme Biçimi

Feed'ler, rezervasyon sunucusu ve gerçek zamanlı güncellemelerde aynı biçimi kullanmanız önemlidir.

Yinelenme kullanılan bir özet akışı şöyle 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'si için, 15:30'da ayrılan bir alanın değiştirme isteği gövde 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 beklenenlerin bir örneğini burada görebilirsiniz. Satıcının, söz konusu satıcı için tüm müsaitlik durumunun yanı sıra önceki ve yeni schedule_exceptions'sinin tamamı olduğuna dikkat edin:

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üncellemeler Ne Zaman Gönderilmelidir?

Stok durumu her değiştiğinde gerçek zamanlı güncellemeler sürekli olarak gönderilmelidir. Bu, stok durumu ile Google sistemleri arasında senkronize edilmesini sağlamak için günde bir kez gönderilen kapsamlı bir kullanılabilirlik feed'ine ek olarak sunulur.