Cấu trúc nội dung cập nhật theo thời gian thực

Các trường hợp sử dụng thông tin cập nhật theo thời gian thực

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

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

Ngoài ra, nếu bạn triển khai tính năng Thay thế RTU bằng tình trạng còn hàng, thì bạn nên phát hành Thông tin 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 phòng trên hệ thống của bạn và khung giờ trống không còn nữa.
  • Nếu bạn đang sử dụng chế độ tích hợp cũ với CheckAvailability, thì khi lệnh gọi máy chủ đặt phòng 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 phòng trên Maps đều bắt buộc. Sau đây là những thông tin bắt buộc:

Tuỳ thuộc vào loại chế độ tích hợp, bạn cũng có thể cần hoặc có thể sử dụng các thông tin sau:

Cập nhật RTU đặt phòng

Trong trường hợp bạn đã cập nhật một yêu cầu đặt phòng trên Trung tâm hành động (ví dụ: huỷ hoặc sửa đổi) trên hệ thống, bạn phải gửi một notification.partners.bookings.patch (BookingNotification.UpdateBooking).

Trường có thể sửa đổi

  • 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 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 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 phòng cho một người bán và nhiều dịch vụ.
    • Lưu ý: Lệnh gọi hàng loạt này không đảm bảo tính nguyên tử. Hệ thống sẽ chỉ trả về những khung giờ trống đã cập nhật thành công.
  • Thay thế một lần (InventoryUpdate.ReplaceServiceAvailability): Thay thế hoàn toàn tình trạng còn hàng cho một người bán và dịch vụ.

Vui lòng sử dụng tài liệu tham khảo sau đây để biết thêm thông tin 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 với dữ liệu được gửi qua nguồn cấp dữ liệu. Họ phải sử dụng một trong những loại sau:

  • spotsOpen
  • recurrence

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

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

  • Một lượt đặt phòng có ảnh hưởng đến nhiều dịch vụ không? Ví dụ: một lượt cắt và nhuộm tóc (mỗi lượt 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 xoá tất cả các dịch vụ liên kết với nhà tạo mẫu đó cho khung giờ đó.
  • Hệ thống của bạn sẽ đồng bộ hoá với hệ thống của Google theo thời gian 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 đây nhất (không nên thực hiện).
    • Thay thế hàng loạt
    • Lưu ý: Chúng tôi dự kiến sẽ gửi RTU về khoảng không quảng cáo trong vòng 5 phút kể từ khi bạn cập nhật. 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ó trường hợp 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ế đơn lẻ để mô phỏng 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 thay thế hàng loạt

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

Điều quan trọng là bạn 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à nội dung 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 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 nội dung chúng tôi dự kiến sẽ có trong nguồn cấp dữ liệu hằng ngày tiếp theo, nếu một khung giờ mới vào lúc 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

Điều quan trọng là bạn 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à nội dung cập nhật theo thời gian thực.

Nguồn cấp dữ liệu sử dụng tính năng định kỳ sẽ 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ước sẽ 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"
                }
              }
            ]
          }
        ]
      }
    ]
  }

Dưới đâ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. Xin lưu ý rằng đó là toàn bộ tình trạng sẵn có của dịch vụ đối với người bán đó và tất cả schedule_exceptions cũ và mới:

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

Thời điểm gửi thông tin cập nhật theo thời gian thực

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