Update Real-Time Struktur

Kasus Penggunaan untuk Update Real-Time

Update Real-Time harus selalu diterbitkan dalam skenario berikut:

  • Saat pengguna membatalkan reservasi di sistem Anda, dan slot akan tersedia.
  • Saat pengguna memesan reservasi melalui Pusat Tindakan dan slot ketersediaan tidak lagi tersedia.
  • Jika reservasi yang dilakukan melalui Pusat Tindakan dibatalkan di pihak Anda, misalnya, oleh penjual secara langsung. Anda harus memperbarui pemesanan serta ketersediaan karena slot asli kini telah tersedia lagi.

Selain itu, jika Anda menerapkan Availability Replace RTU, Update Real-Time harus dikeluarkan dalam skenario berikut:

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

Tidak semua panggilan Maps Booking API diperlukan. Hal berikut bersifat wajib:

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

Perbarui RTU Pemesanan

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

Kolom yang Dapat Dimodifikasi

  • 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": "2014-10-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): Mengganti sepenuhnya data ketersediaan untuk penjual dan beberapa layanan.
    • Catatan: Panggilan batch ini tidak menjamin atomicity. Hanya slot ketersediaan yang berhasil diperbarui yang akan ditampilkan.
  • Single Replace (InventoryUpdate.ReplaceServiceAvailability): Sepenuhnya menggantikan ketersediaan untuk satu penjual dan layanan.

Gunakan referensi berikut untuk mengetahui detail selengkapnya.

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

  • spotsOpen
  • recurrence

Memilih Metode Ganti untuk Memanggil

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

  • Apakah beberapa layanan terpengaruh dengan satu pemesanan? Misalnya, potong rambut dan pewarnaan (masing-masing adalah Layanan yang berbeda) dipesan oleh stylist, sehingga semua layanan yang terkait dengan stylist untuk slot waktu tersebut harus dihapus.
  • Sistem Anda akan melakukan sinkronisasi dengan 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 pembaruan terjadi di pihak Anda. Oleh karena itu, Anda harus memeriksa dan mengirimkan info terbaru setidaknya setiap 5 menit.
  • Tidak ada yang sesuai?
    • Penggantian Tunggal
    • Catatan: Anda dapat menggunakan beberapa panggilan penggantian tunggal untuk mengemulasi panggilan penggantian batch, tetapi akan lebih efisien jika menggunakan satu panggilan penggantian batch

Update Real-Time: Format Spot Terbuka

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

Cuplikan feed spots_open terlihat seperti ini:

Cuplikan Feed

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

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

Mengganti Cuplikan Pembaruan Real-Time

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

Berikut adalah contoh dari perkiraan kami dalam feed harian berikutnya, jika slot baru pada pukul 15.30 dipesan:

Cuplikan Feed

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

Update Real-Time: Format Pengulangan

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

Feed yang menggunakan pengulangan terlihat seperti ini:

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 yang diganti saat slot pukul 15.30 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 ini contoh yang diharapkan dalam feed harian berikutnya. Perhatikan bahwa ini adalah ketersediaan seluruh layanan untuk penjual tersebut, serta semua schedule_exceptions sebelumnya dan barunya:

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 {i>Real-Time<i}

Update real-time harus dikirim secara terus-menerus setiap kali ketersediaan berubah. Ini adalah tambahan dari feed ketersediaan komprehensif yang harus dikirimkan sekali sehari, untuk memastikan ketersediaan disinkronkan antara sistem Anda dan sistem Google.