Xây dựng bản cập nhật theo thời gian thực

Trường hợp sử dụng thông tin 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ỷ một yêu cầu đặt chỗ trên hệ thống của bạn và vị trí sẽ xuất hiện.
  • Khi người dùng đặt trước thông qua tính năng Đặt chỗ bằng Google và vị trí còn trống không còn trống.
  • Khi việc đặt chỗ thông qua tính năng Đặt chỗ bằng Google bị huỷ ở phía bạn, ví dụ: bởi người bán trực tiếp. Bạn sẽ cần phải cập nhật thông tin đặt phòng cũng như tình trạng phòng vì khung giờ ban đầu đã mở cửa trở lại.

Ngoài ra, nếu bạn triển khai tính năng Thay thế RTU (Tình trạng còn hàng), thì bạn nên phát hành Bản cập nhật theo thời gian thực 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ước trên hệ thống của bạn và vị trí còn trống sẽ 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, thì khi máy chủ đặt trước CheckAvailability 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ế.

Không phải tất cả lệnh gọi API Đặt chỗ trên Maps đều bắt buộc. Những điều sau đây là bắt buộc:

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

Cập nhật RTU đặt trước

Trong trường hợp có thông tin cập nhật về việc đặt trước bằng tính năng Đặt chỗ bằng Google (ví dụ: đã hủy hoặc được sửa đổi) trên hệ thống, bạn phải gửi notification.partners.bookings.patch (BookingNotification.UpdateBooking).

Các trường có thể sửa đổi

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

Ví dụ về quyết định 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 còn hàng thay thế RTU

Có hai loại phương thức thay thế để cập nhật tình trạng rảnh/bận:

  • 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 cho người bán và nhiều dịch vụ.
    • Lưu ý: Lệnh gọi theo lô này không đảm bảo trạng thái không tự nhiên. Chỉ những vị trí còn hàng đã cập nhật thành công mới được trả về.
  • Thay thế một lần (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 tài liệu tham khảo sau để 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 tình trạng còn hàng giống như dữ liệu được gửi qua các nguồn cấp dữ liệu. Họ phải dùng một trong những cách sau:

  • spotsOpen
  • recurrence

Vui lòng tham khảo hướng dẫn về cấu trúc phạm vi cung cấp để xác định định dạng phù hợp hơn.

Chọn phương thức thay thế để gọi

Hãy sử dụng hướng dẫn sau đây để giúp bạn xác định phương thức thay thế phù hợp hơn:

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

Thông tin cập nhật theo thời gian thực: Định dạng mở của quảng cáo

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

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

Đoạn mã 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 hàng, định dạng nội dung yêu cầu thay thế cho thời điểm đặt trước khung giờ 3:30 chiều:

Thay thế đoạn mã Thông tin 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"
          }
        ]
      }
    ]
  }

Sau đây là ví dụ về những nội dung chúng tôi sẽ nhận được trong nguồn cấp dữ liệu hằng ngày tiếp theo, nếu có một khung giờ mới vào lúc 3:30 chiều được đặt trước:

Đoạn mã 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"
        }
      ]

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

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

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

Đoạn mã 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 hàng, định dạng nội dung yêu cầu thay thế cho thời điểm đặt trước khung giờ 3:30 chiều, có dạ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"
                }
              }
            ]
          }
        ]
      }
    ]
  }

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

Đoạn mã 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
              }
            }
          ],
        }
      ]

Thời điểm gửi bản cập nhật theo thời gian thực

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