Membuat Struktur Update Real-Time

Kasus Penggunaan untuk Update Real-Time

Update Real-Time harus selalu dilakukan dalam skenario berikut:

  • Bila pengguna membatalkan reservasi di sistem Anda, dan slot tersebut yang tersedia.
  • Saat pengguna memesan reservasi melalui {i>Actions Center<i} dan slot ketersediaan tidak lagi tersedia.
  • Jika reservasi yang dilakukan melalui Pusat Tindakan dibatalkan di misalnya, oleh penjual secara langsung. Anda harus memperbarui pemesanan serta ketersediaan karena slot aslinya sekarang tersedia lagi.

Selain itu, jika Anda mengimplementasikan RTU Penggantian Ketersediaan, Update Real-Time harus diberikan dalam skenario berikut:

  • Saat penjual mengubah jadwalnya (ketersediaan) di sistem Anda.
  • Saat pengguna memesan reservasi di sistem Anda dan slot ketersediaan sudah tidak tersedia.
  • Jika Anda menggunakan integrasi lama dengan CheckAvailability, saat server pemesanan CheckAvailability akan menampilkan inventaris yang tidak sesuai 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:

Memperbarui RTU Pemesanan

Jika pembaruan telah dilakukan pada pemesanan Actions Center (misalnya, dibatalkan atau dimodifikasi) pada sistem Anda, 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 satu penjual dan beberapa layanan IT perusahaan mereka.
    • Catatan: Panggilan batch ini tidak menjamin atomitas. Hanya slot ketersediaan yang berhasil diperbarui akan ditampilkan.
  • Penggantian Tunggal (InventoryUpdate.ReplaceServiceAvailability): Sepenuhnya menggantikan ketersediaan untuk satu penjual dan layanan.

Gunakan yang berikut referensi untuk informasi selengkapnya spesifikasi pendukung.

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

  • spotsOpen
  • recurrence

Memilih Metode Ganti untuk Memanggil

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

  • Apakah beberapa layanan terpengaruh dengan satu pemesanan? Misalnya, potong rambut dan mewarnai (masing-masing adalah Layanan yang berbeda) dipesan oleh stylist, jadi 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 ketersediaan berubah sejak update terakhir (tidak direkomendasikan).
    • Penggantian Batch
    • Catatan: Kami memperkirakan RTU Inventaris akan dikirim dalam waktu 5 menit setelah pembaruan terjadi berpihak kepada Anda. Jadi, Anda harus memeriksa dan mengirimkan update setidaknya setiap 5 menit.
  • Tidak ada yang sesuai?
    • Penggantian Tunggal
    • Catatan: Anda dapat menggunakan beberapa panggilan penggantian tunggal untuk mengemulasi mengganti banyak panggilan, tetapi akan lebih efisien untuk menggunakan satu panggilan penggantian batch

Update Real-Time: Format Spots Terbuka

Penting untuk menggunakan format yang sama di seluruh feed, server pemesanan, dan pembaruan 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 dapat 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 contoh yang kami harapkan di feed harian berikutnya, jika slot baru di Pukul 15.30 akan 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 pembaruan 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, ganti format isi permintaan saat Slot pukul 15.30 akan 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 contoh hal yang diharapkan dalam feed harian berikutnya. Perhatikan bahwa adalah ketersediaan seluruh layanan untuk penjual tersebut, dan semua schedule_exceptions sebelumnya dan 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 Mengirim Pembaruan Real-Time

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