Membuat Struktur Pembaruan Real-Time

Kasus Penggunaan untuk Update Real-Time

Update Real-Time harus selalu dikeluarkan dalam skenario berikut:

  • Saat pengguna membatalkan reservasi di sistem Anda, dan slot menjadi tersedia.
  • Saat pengguna memesan reservasi melalui Pesan dengan Google dan slot ketersediaan tidak lagi tersedia.
  • Jika reservasi yang dilakukan melalui Pesan dengan Google 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 Ganti Ketersediaan, Update Real-Time harus dikeluarkan dalam skenario berikut:

  • Saat penjual mengubah jadwal (ketersediaan) mereka 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 yang 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 dibuat pada pemesanan dengan Reservasi dengan Google (misalnya dibatalkan atau dimodifikasi) di sistem, 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": "2014-10-02T15:01:23.045123456Z",
  "duration": "3000s",
  "status": "CANCELED"
}

Availability Replace RTU

Ada dua jenis metode penggantian yang tersedia untuk memperbarui ketersediaan:

  • Penggantian Batch (InventoryUpdate.BatchServiceAvailability): Sepenuhnya menggantikan data ketersediaan untuk penjual dan beberapa layanan.
    • Catatan: Panggilan batch ini tidak menjamin atomisitas. Hanya slot ketersediaan yang berhasil diperbarui yang akan ditampilkan.
  • Penggantian Tunggal (InventoryUpdate.ReplaceServiceAvailability): Sepenuhnya menggantikan ketersediaan 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. Mereka harus menggunakan salah satu dari:

  • spotsOpen
  • recurrence

Silakan merujuk ke panduan struktur ketersediaan untuk menentukan format mana yang lebih baik untuk Anda.

Memilih Metode Ganti untuk Menelepon

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 dengan stylist, sehingga semua layanan yang terkait dengan stylist untuk slot waktu tersebut harus dihapus.
  • Sistem Anda akan disinkronkan dari waktu ke waktu dengan Google mengirim semua perubahan ketersediaan sejak pembaruan terakhir (tidak direkomendasikan).
    • Penggantian Batch
    • Catatan: Kami mengharapkan RTU Inventaris dikirim dalam waktu 5 menit setelah update dilakukan di pihak Anda. Jadi, Anda harus memeriksa dan mengirim update setidaknya setiap 5 menit.
  • Tidak ada yang sesuai?
    • Ganti Sekali
    • Catatan: Anda dapat menggunakan beberapa panggilan penggantian tunggal untuk mengemulasikan panggilan penggantian batch, tetapi akan lebih efisien untuk menggunakan panggilan penggantian satu batch

Update Real-Time: Spot Format Terbuka

Format yang sama harus digunakan 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, format isi permintaan penggantian saat slot pukul 15.30 dipesan:

Mengganti Cuplikan Update 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 yang kami harapkan di 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

Format yang sama harus digunakan di seluruh feed, server pemesanan, dan update real-time.

Feed yang menggunakan pengulangan 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 dipesan, 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 adalah contoh perkiraan pada 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

Update real-time harus dikirim terus-menerus setiap kali ketersediaan berubah. Hal ini merupakan tambahan bagi feed ketersediaan komprehensif yang harus dikirimkan sekali sehari, untuk memastikan ketersediaan sinkronisasi antara sistem Anda dan sistem Google.