Menyusun Update Real-Time

Kasus Penggunaan Pembaruan Real-Time

Pembaruan Real-Time harus selalu dikeluarkan dalam skenario berikut:

  • Saat pengguna membatalkan reservasi di sistem Anda, dan slot menjadi tersedia.
  • Saat pengguna memesan reservasi melalui Pusat Tindakan dan slot ketersediaan tidak lagi tersedia.
  • Jika reservasi yang dilakukan melalui Pusat Tindakan dibatalkan di sisi Anda, misalnya, oleh penjual secara langsung. Anda perlu memperbarui pemesanan serta ketersediaannya karena slot asli sekarang tersedia lagi.

Selain itu, jika Anda menerapkan RTU Penggantian Ketersediaan, Pembaruan Real-Time harus dikeluarkan dalam skenario berikut:

  • Saat penjual mengubah jadwal (ketersediaan) di sistem Anda.
  • Saat pengguna memesan reservasi di sistem Anda dan slot ketersediaannya tidak lagi tersedia.
  • Jika Anda menggunakan integrasi lama dengan CheckAvailability, saat panggilan CheckAvailability server pemesanan menampilkan inventaris yang tidak cocok dengan inventaris sebenarnya.

Tidak semua panggilan Maps Booking API diperlukan. Berikut ini wajib diisi:

Bergantung pada jenis integrasi, hal berikut mungkin juga tersedia atau diperlukan:

Update real-time Booking

Jika pembaruan telah dilakukan pada pemesanan Pusat Tindakan (misalnya, dibatalkan atau diubah) di sistem Anda, maka notification.partners.bookings.patch (BookingNotification.UpdateBooking) harus dikirim.

Kolom yang Dapat Diubah

  • status
  • startTime
  • duration
  • partySize
  • paymentInformation.prepaymentStatus

Contoh pembatalan

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

Availability Replace RTU

Ada dua jenis metode penggantian yang tersedia untuk memperbarui ketersediaan Anda:

  • Batch Replace (InventoryUpdate.BatchServiceAvailability): Menggantikan sepenuhnya data ketersediaan untuk beberapa penjual dan layanan.
    • Catatan: Panggilan batch ini tidak menjamin atomicity. Hanya slot ketersediaan yang berhasil diperbarui yang akan ditampilkan.
  • Penggantian Tunggal (InventoryUpdate.ReplaceServiceAvailability): Mengganti sepenuhnya ketersediaan untuk satu penjual dan layanan.

Gunakan referensi berikut untuk mengetahui detail selengkapnya.

Pembaruan real-time harus menggunakan struktur ketersediaan yang sama dengan data yang dikirim melalui feed. Mereka harus menggunakan salah satu dari:

  • spotsOpen
  • recurrence

Memilih Metode Penggantian untuk Dipanggil

Gunakan panduan berikut untuk membantu Anda menentukan metode penggantian mana yang lebih sesuai:

  • Apakah beberapa penjual terpengaruh? Misalnya, mengganti ketersediaan untuk beberapa penjual dalam satu permintaan.
  • Sistem Anda akan disinkronkan dengan sistem Google dari waktu ke waktu dengan mengirimkan semua perubahan ketersediaan sejak update terakhir (tidak direkomendasikan).
    • Penggantian Batch
    • Catatan: Kami memperkirakan RTU Inventaris akan dikirim dalam waktu 5 menit setelah update terjadi di pihak Anda. Jadi, Anda harus memeriksa dan mengirimkan update setidaknya setiap 5 menit.
  • Tidak ada yang berlaku atau Anda hanya perlu memperbarui satu penjual dan layanan?
    • Penggantian Tunggal
    • Catatan: Anda dapat menggunakan beberapa panggilan penggantian tunggal untuk meniru panggilan penggantian batch, tetapi akan lebih efisien menggunakan satu panggilan penggantian batch

Update Real-Time: Format Tersedia

Penting untuk menggunakan format yang sama di seluruh feed, server pemesanan, dan update real-time.

Cuplikan feed spots_open terlihat seperti:

Cuplikan Feed

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

Untuk Inventory Update API, format isi permintaan penggantian saat slot pukul 15.30 WIB dipesan:

Mengganti Cuplikan Pembaruan Real-Time

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

Berikut contoh yang kami harapkan dalam feed harian berikutnya, jika slot baru pada pukul 15.30 WIB dipesan:

Cuplikan Feed

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

Pembaruan Real-Time: Format Berulang

Penting untuk menggunakan format yang sama di seluruh feed, server pemesanan, dan update real-time.

Feed yang menggunakan pengulangan akan terlihat seperti:

Cuplikan Feed

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

Untuk Inventory Update API, format isi permintaan penggantian saat slot pukul 15.30 WIB dipesan, akan terlihat seperti:

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

Berikut contoh yang diharapkan dalam feed harian berikutnya. Perhatikan bahwa ini adalah ketersediaan seluruh layanan untuk penjual tersebut, dan semua schedule_exceptions sebelumnya dan yang baru:

Cuplikan Feed

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

Kapan Harus Mengirimkan Pembaruan Real-Time

Pembaruan real-time harus dikirim secara terus-menerus setiap kali ketersediaan berubah. Selain itu, feed ketersediaan komprehensif yang harus dikirimkan sekali sehari, untuk memastikan ketersediaan disinkronkan antara sistem Anda dan Google.