Xây dựng cấu trúc cho thông tin cập nhật theo thời gian thực

Trường hợp sử dụng khi cập nhật theo thời gian thực

Bản cập nhật theo thời gian thực phải luôn được phát hành trong các trường hợp sau:

  • Khi người dùng huỷ yêu cầu đặt chỗ trên hệ thống của bạn và khung giờ đó sẽ trở thành sẵn có.
  • Khi người dùng đặt chỗ thông qua Trung tâm hành động và khung giờ trống không còn nữa.
  • Khi giao dịch đặt chỗ thực hiện qua Trung tâm hành động bị huỷ trên do người bán trực tiếp cung cấp. Bạn sẽ cần phải cập nhật cũng như tình trạng còn phòng vì khung giờ ban đầu hiện là có thể sử dụng lại.

Ngoài ra, nếu bạn triển khai Khả năng sử dụng thay thế RTU, Bản cập nhật theo thời gian thực sẽ được phát hành trong các trường hợp sau:

  • Khi người bán thay đổi lịch biểu (tình trạng còn hàng) trên hệ thống của bạn.
  • Khi người dùng đặt chỗ trên hệ thống của bạn và khung giờ còn trống không còn nữa.
  • Nếu bạn đang sử dụng tính năng tích hợp cũ với CheckAvailability! khi một máy chủ đặt phòng CheckAvailability lệnh gọi sẽ trả về khoảng không quảng cáo không khớp với khoảng không quảng cáo thực tế.

Chỉ có một số lệnh gọi API Đặt chỗ trên Maps là bắt buộc. Những nội dung sau đây là bắt buộc:

Tuỳ thuộc vào loại hình tích hợp, bạn cũng có thể sử dụng hoặc bắt buộc:

Cập nhật RTU yêu cầu đặt vé

Trong trường hợp có cập nhật đối với yêu cầu đặt chỗ Actions Center (ví dụ: bị huỷ hoặc sửa đổi) trên hệ thống của mình, notification.partners.bookings.patch (BookingNotification.UpdateBooking) phải gửi.

Trường có thể xác minh

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

Ví dụ về việc huỷ

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

Tình trạng sẵn hàng thay thế RTU

Hiện có hai loại phương pháp thay thế để cập nhật tình trạng còn hàng:

  • Thay thế hàng loạt (InventoryUpdate.BatchServiceAvailability): Thay thế hoàn toàn dữ liệu về tình trạng còn hàng của một người bán và nhiều luôn miễn phí.
    • Lưu ý: Lệnh gọi hàng loạt này không đảm bảo tính nguyên tử. Chỉ khung giờ trống đã cập nhật thành công sẽ được trả về.
  • Thay thế duy nhất (InventoryUpdate.ReplaceServiceAvailability): Thay thế hoàn toàn tình trạng còn hàng của một người bán và dịch vụ duy nhất.

Vui lòng sử dụng tham khảo để biết thêm chi tiết.

Thông tin cập nhật theo thời gian thực phải sử dụng cùng một cấu trúc về tình trạng còn hàng như dữ liệu được gửi qua các nguồn cấp dữ liệu. Nhà quảng cáo phải sử dụng một trong:

  • spotsOpen
  • recurrence

Chọn phương pháp thay thế để gọi

Hãy làm theo hướng dẫn sau để xác định phương thức thay thế nào hiệu quả hơn phù hợp:

  • Nhiều dịch vụ có bị ảnh hưởng khi một yêu cầu đặt trước không? Ví dụ: cắt tóc và tô màu (mỗi dịch vụ là một Dịch vụ riêng biệt) được đặt trước bởi một nhà tạo mẫu, vì vậy tất cả các dịch vụ gắn liền với nhà tạo mẫu cho khoảng thời gian đó phải được xóa.
  • Hệ thống của bạn sẽ thỉnh thoảng đồng bộ hoá với hệ thống của Google bằng cách gửi tất cả tình trạng còn hàng thay đổi kể từ lần cập nhật gần đây nhất (không nên dùng).
    • Thay thế hàng loạt
    • Lưu ý: Chúng tôi dự kiến RTU kho hàng sẽ được gửi trong vòng 5 phút kể từ khi cập nhật bên phía bạn. Vì vậy, bạn nên kiểm tra và gửi thông tin cập nhật ít nhất 5 phút một lần.
  • Không có đáp án nào phù hợp?
    • Thay thế một lần
    • Lưu ý: Bạn có thể sử dụng nhiều lệnh gọi thay thế duy nhất để mô phỏng một lệnh gọi lệnh gọi thay thế hàng loạt nhưng sẽ hiệu quả hơn nếu sử dụng một lệnh gọi lệnh gọi thay thế hàng loạt

Cập nhật theo thời gian thực: Định dạng quảng cáo Spots Open

Bạn phải sử dụng cùng một định dạng trên các nguồn cấp dữ liệu, máy chủ đặt phòng và theo thời gian thực.

Đoạn mã nguồn cấp dữ liệu spots_open có dạng như sau:

Đoạn trích nguồn cấp dữ liệu

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

Đối với API Cập nhật khoảng không quảng cáo, định dạng nội dung yêu cầu thay thế khi một Khung giờ 3:30 chiều được đặt trước:

Thay thế đoạn mã cập nhật theo thời gian thực

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

Dưới đây là ví dụ về những gì chúng tôi mong đợi trong nguồn cấp dữ liệu hàng ngày tiếp theo, nếu một khung giờ mới tại 3:30 chiều được đặt trước:

Đoạn trích nguồn cấp dữ liệu

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

Thông tin cập nhật theo thời gian thực: Định dạng lặp lại

Bạn phải sử dụng cùng một định dạng trên các nguồn cấp dữ liệu, máy chủ đặt phòng và theo thời gian thực.

Nguồn cấp dữ liệu sử dụng lặp lại có dạng như sau:

Đoạn trích nguồn cấp dữ liệu

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

Đối với API Cập nhật khoảng không quảng cáo, định dạng nội dung yêu cầu thay thế khi một Khung giờ 3:30 chiều đã được đặt, trông giống như sau:

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

Dưới đây là ví dụ về những nội dung cần có trong nguồn cấp dữ liệu hằng ngày tiếp theo. Lưu ý rằng là khả năng cung cấp toàn bộ dịch vụ cho người bán đó và tất cả trước đó và mới schedule_exceptions:

Đoạn trích nguồn cấp dữ liệu

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

Khi nào nên gửi thông tin cập nhật theo thời gian thực

Thông tin cập nhật theo thời gian thực phải được gửi liên tục bất cứ khi nào tình trạng rảnh/bận thay đổi. Đây là phần bổ sung cho một nguồn cấp dữ liệu toàn diện về tình trạng còn hàng được gửi mỗi ngày một lần để đảm bảo rằng tình trạng còn hàng được đồng bộ hoá giữa các hệ thống của bạn và hệ thống của Google.