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

Gerçek Zamanlı Güncellemelerin Kullanım Alanları

Gerçek Zamanlı Güncellemeler her zaman aşağıdaki senaryolarda yayınlanmalıdır:

  • Bir kullanıcı sisteminizdeki rezervasyonu iptal ettiğinde ve yer kullanılabilir hale geldiğinde.
  • Bir kullanıcı İşlemler Merkezi üzerinden rezervasyon yaptırdığında ve müsaitlik aralığı artık kullanılamadığında
  • İşlemler Merkezi üzerinden yapılan bir rezervasyon sizin tarafınızdan (ör. doğrudan satıcı tarafından) iptal edildiğinde. Orijinal aralık artık tekrar kullanılabilir olduğundan rezervasyonu ve uygunluğu da güncellemeniz gerekir.

Ayrıca, Availability Replace RTU'yu uygularsanız aşağıdaki durumlarda anlık güncellemeler yayınlanmalıdır:

Tüm Haritalar Randevu 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 İşlemler Merkezi rezervasyonunda güncelleme yapılması (ör. iptal veya değişiklik) 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": "2025-01-02T15:01:23.045123456Z",
  "duration": "3000s",
  "status": "CANCELED"
}

Kullanıma Sunma - RTU'yu Değiştirme

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

  • Toplu Değiştirme (InventoryUpdate.BatchServiceAvailability): Birden fazla satıcı ve hizmet için 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 aralıkları döndürülür.
  • Tek Değiştirme (InventoryUpdate.ReplaceServiceAvailability): Tek bir satıcı ve hizmet için stok durumunu tamamen değiştirir.

Daha fazla bilgi için lütfen aşağıdaki referansı kullanın.

Anlık güncellemeler, feed'ler aracılığıyla gönderilen verilerle aynı stok durumu yapısını kullanmalıdır. Aşağıdakilerden birini kullanmaları gerekir:

  • spotsOpen
  • recurrence

Aramak için bir 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:

  • Birden fazla satıcı etkileniyor mu? Örneğin, tek bir istekte birden fazla satıcının stok durumunu değiştirebilirsiniz.
  • Sisteminiz, son güncellemeden bu yana tüm uygunluk değişikliklerini göndererek zaman zaman Google'ın sistemiyle 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, güncellemeleri en az 5 dakikada bir kontrol edip göndermeniz gerekir.
  • Bunlardan hiçbiri geçerli değil mi veya yalnızca tek bir satıcıyı ve hizmeti mi güncellemeniz gerekiyor?
    • Tekli Değiştirme
    • Not: Toplu değiştirme çağrısını taklit etmek için birden fazla tekli 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: Spots Açık Biçimi

Feed'ler, rezervasyon sunucusu ve anlık 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": 1735831800, # January 02, 2025 15:30:00
            "duration_sec": 1800,
            "availabilityTag": "1000001"
          }
    ]

Envanter Güncelleme API'si için, saat 15:30'daki bir aralık rezerve edildiğinde kullanılan değiştirme isteği gövdesi biçimi:

Anlık Güncellemeler Snippet'ini Değiştirme

  {
    "extendedServiceAvailability": [
      {
        "merchantId": "1001",
        "serviceId": "12310",
        "startTimeRestrict": "2025-01-02T15:01:23.045123456Z",
        "endTimeRestrict": "2025-01-02T19:01:23.045123456Z",
        "availability": [
          {
            "startTime": "2025-01-02T15:30:00.00Z",
            "duration": "3600s",
            "spotsOpen": "1",
            "spotsTotal": "2",
            "availabilityTag": "1000001"
          }
        ]
      }
    ]
  }

Saat 15:30'da yeni bir yer ayırtılırsa bir sonraki günlük feed'de görmeyi beklediğimiz örneği aşağıda bulabilirsiniz:

Feed Snippet'i

"availability": [
        {
          "merchant_id": "1001",
          "service_id": "12310",
          "spots_open": 1,
          "spots_total": 2,
          "start_sec": 1735831800, # January 02, 2025 15:30:00
          "duration_sec": 1800,
          "availabilityTag": "1000001"
        }
      ]

Anlık Güncellemeler: Tekrar Biçimi

Feed'ler, rezervasyon sunucusu ve anlık güncellemelerde aynı biçimi kullanmak önemlidir.

Tekrarı kullanan bir feed şu şekilde 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, saat 15:30'daki bir yer ayırtıldığında kullanılan 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 olması gerekenlere dair bir örneği aşağıda bulabilirsiniz. Bu hizmetin, söz konusu satıcı için hizmetin tamamının kullanılabilirliği ve önceki ve yeni tüm schedule_exceptions olduğunu unutmayın:

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
              }
            }
          ],
        }
      ]

Anlık Güncellemeler Ne Zaman Gönderilir?

Müsaitlik durumu değiştiğinde anlık güncellemeler sürekli olarak gönderilmelidir. Bu, stok durumunun sizin ve Google'ın sistemleri arasında senkronize edilmesini sağlamak için günde bir kez gönderilmesi gereken kapsamlı bir stok durumu feed'ine ek olarak sağlanır.