Yapılandırılmış Veriler için Gerçek Zamanlı Güncellemeler

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

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

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.