Lượt đặt phòng đồng bộ là những lượt đặt phòng được xác nhận hoặc từ chối theo thời gian thực.
Lượt đặt chỗ không đồng bộ là lượt đặt chỗ mà người bán xác nhận hoặc từ chối vào một thời điểm khác.
Bạn có thể chỉ định lượt đặt phòng là đồng bộ hoặc không đồng bộ ở cấp độ lịch rảnh. Điều này cũng có nghĩa là đối với một người bán và dịch vụ nhất định, có thể có cả các khung giờ có sẵn đồng bộ và không đồng bộ.
Để xác định cách triển khai phù hợp, trước tiên, hãy xác định danh mục mà khoảng không quảng cáo của bạn thuộc về:
- Chỉ cho phép đặt chỗ đồng bộ: Tất cả người bán và dịch vụ đều được xác nhận ngay lập tức.
- Cho phép đặt chỗ không đồng bộ: Một số hoặc tất cả người bán và dịch vụ đều yêu cầu người bán xác nhận theo cách thủ công.
Tiêu chí đặt phòng không đồng bộ
- Bạn không thể sửa đổi yêu cầu đặt phòng không đồng bộ trên Trung tâm hành động.
- Người bán phải có thể chấp nhận hoặc từ chối yêu cầu đặt chỗ thông qua hệ thống trực tuyến của đối tác (ví dụ: bảng điều khiển của người tổ chức cho nhà hàng). Không được phép gọi cho người bán thay mặt người dùng để xác định xem người bán có chấp nhận hay từ chối lượt đặt trước.
- Chúng tôi không hỗ trợ đề xuất của người bán về thời gian đặt lịch hẹn mới. Bạn phải chấp nhận hoặc từ chối yêu cầu đặt trước ở trạng thái ban đầu.
Chỉ bật tính năng đặt chỗ đồng bộ
Chế độ triển khai tiêu chuẩn mặc định là đặt phòng đồng bộ. Vui lòng tham khảo tài liệu về quy trình tích hợp đặt phòng từ đầu đến cuối để biết thêm thông tin.
Bật tính năng đặt phòng không đồng bộ
Nếu một số hoặc tất cả người bán sử dụng quy trình đặt phòng không đồng bộ, thì bạn cần thực hiện những thay đổi sau:
-
Chế độ xác nhận: Tất cả các thông tin về các khung giờ còn trống hiện đều có trường
confirmation_modemô tả cách xác nhận lượt đặt trước của khung giờ còn trống đó. Chỉ địnhconfirmation_modecủa từng khung giờ trống cho những thông tin sau:- Trong nguồn cấp dữ liệu về tình trạng còn hàng,
confirmation_modeđược chỉ định ở cấp tình trạng còn hàng - Trong các phương thức Booking Server API,
confirmation_modeđược chỉ định ở cấp độ khe - Trong các phương thức Real-Time Updates API,
confirmation_modeđược chỉ định ở cấp độ sẵn có
- Trong nguồn cấp dữ liệu về tình trạng còn hàng,
- Trạng thái đặt phòng: Tất cả các lượt đặt phòng đều có trường
statusbiểu thị trạng thái của lượt đặt phòng. Ba giá trị trạng thái không đồng bộ mới đã được giới thiệu:PENDING_CONFIRMATION,DECLINED_BY_MERCHANTvàFAILED. Sử dụng các giá trị trạng thái mới này khi xử lý việc tạo, từ chối và thất bại của các lượt đặt phòng không đồng bộ. - Thông tin cập nhật về lượt đặt phòng: Tất cả thông tin cập nhật không đồng bộ về trạng thái của lượt đặt phòng đều phải được báo cáo thông qua phương thức bookings.patch của Booking Notification API.
Sơ đồ bên dưới cho thấy cách sử dụng chế độ xác nhận và trạng thái đặt phòng trong một hoạt động đặt phòng không đồng bộ điển hình.
- Chúng tôi đã cập nhật nguồn cấp dữ liệu về tình trạng còn hàng để chỉ định chế độ xác nhận của từng khung giờ còn hàng. Bạn cần có thông tin này trong nguồn cấp dữ liệu để chúng tôi có thể giải thích cho người dùng về tính chất không đồng bộ của lượt đặt chỗ ngay từ đầu trong quy trình.
- Khi
BatchAvailabilityLookuphoặcCheckAvailabilityđược gọi, chúng ta sẽ chuyển chế độ xác nhận và lý tưởng nhất là chế độ xác nhận tương tự sẽ được trả về. Điều này giúp đảm bảo người dùng nhìn thấy thông báo phù hợp. - Khi
CreateBookingđược gọi, chúng ta sẽ truyền chế độ xác nhận để cho biết chế độ xác nhận dự kiến. Khi yêu cầu đặt chỗ không đồng bộ được gửi, yêu cầu đặt chỗ sẽ được trả về với trạng tháiPENDING_MERCHANT_CONFIRMATION. - Khi người bán chấp nhận hoặc từ chối yêu cầu đặt lịch hẹn, trạng thái đặt lịch hẹn sẽ được cập nhật thông qua phương thức bookings.patch của Booking Notification API (API Thông báo đặt lịch hẹn) cập nhật theo thời gian thực. Nếu bạn muốn tự động từ chối những lượt đặt phòng không được phản hồi kịp thời, hãy thực hiện thông qua cùng một phương thức cập nhật theo thời gian thực.
Nguồn cấp dữ liệu về tình trạng còn hàng
Trong nguồn cấp dữ liệu về tình trạng còn chỗ, hãy chỉ định xem mỗi khung giờ là đồng bộ hay không đồng bộ. Để thực hiện việc này, hãy đặt trường confirmation_mode mới.
// Mode by which bookings for an availability slot are confirmed. enum ConfirmationMode { // The confirmation mode was not specified. // Synchronous confirmation will be assumed. CONFIRMATION_MODE_UNSPECIFIED = 0; // Bookings for this availability will be confirmed synchronously. CONFIRMATION_MODE_SYNCHRONOUS = 1; // Bookings for this availability will be confirmed asynchronously. CONFIRMATION_MODE_ASYNCHRONOUS = 2; }
Mặc dù chế độ xác nhận được giả định là đồng bộ nếu không có chế độ nào được chỉ định, nhưng bạn nên chỉ định rõ ràng một chế độ vì điều đó sẽ loại bỏ mọi nhầm lẫn về việc vô tình bỏ sót.
Không đồng bộ
{
"availability": [
{
"merchant_id": "10001",
"service_id": "1000",
"spots_open": 3,
"spots_total": 3,
"duration_sec": 3600,
"start_sec": 1535806800,
"resources": {
"party_size": 4
},
"confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
}
]
}Đồng bộ hoá
{
"availability": [
{
"merchant_id": "10001",
"service_id": "1000",
"spots_open": 3,
"spots_total": 3,
"duration_sec": 3600,
"start_sec": 1535806800,
"resources": {
"party_size": 4
},
"confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
}
]
}Không đồng bộ và đồng bộ
{
"availability": [
{
"merchant_id": "10001",
"service_id": "1000",
"spots_open": 3,
"spots_total": 3,
"duration_sec": 3600,
"start_sec": 1535806800,
"resources": {
"party_size": 4
},
"confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
},
{
"merchant_id": "10002",
"service_id": "1000",
"spots_open": 4,
"spots_total": 4,
"duration_sec": 3600,
"start_sec": 1535806800,
"resources": {
"party_size": 2
},
"confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
}
]
}Máy chủ đặt phòng
BatchAvailabilityLookup hoặc CheckAvailability
Trong BatchAvailabilityLookupResponse (BAL) hoặc CheckAvailabilityResponse (CA), hãy trả về cùng một confirmation_mode như được chỉ định trong nguồn cấp dữ liệu về tình trạng còn hàng và được truyền qua BatchAvailabilityLookupRequest hoặc CheckAvailabilityRequest.
BAL-Async
{
"slot_time_availability": [
{
"slot_time": {
"duration_sec": "3600",
"resource_ids": {
"party_size": 3
},
"service_id": "1000",
"start_sec": "1546458300",
"confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
},
"available": true
}
]
}BAL-Sync
{
"slot_time_availability": [
{
"slot_time": {
"duration_sec": "3600",
"resource_ids": {
"party_size": 3
},
"service_id": "1000",
"start_sec": "1546458300",
"confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
},
"available": true
}
]
}CA-Async
{
"slot": {
"duration_sec": "3600",
"merchant_id": "317652",
"resources": {
"party_size": 3
},
"service_id": "1000",
"start_sec": "1546458300",
"confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
},
"count_available": 1,
"duration_requirement": "DO_NOT_SHOW_DURATION"
}CA-Sync
{
"slot": {
"duration_sec": "3600",
"merchant_id": "317652",
"resources": {
"party_size": 3
},
"service_id": "1000",
"start_sec": "1546458300",
"confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
},
"count_available": 1,
"duration_requirement": "DO_NOT_SHOW_DURATION"
}CreateBooking
Đảm bảo bạn trả về trạng thái chính xác cho yêu cầu đặt phòng bằng cách sử dụng các lựa chọn có sẵn bên dưới:
// Status of a booking. // // Updating booking status does not change the status of the associated payment. // Prepayment status updates should be done using the PrepaymentStatus enum. enum BookingStatus { // Not specified. BOOKING_STATUS_UNSPECIFIED = 0; // Booking has been confirmed CONFIRMED = 1; // Booking is awaiting confirmation by the merchant before it can transition // into CONFIRMED status. Only applicable to non-payments Dining or // Beauty verticals. PENDING_MERCHANT_CONFIRMATION = 2; // Booking has been canceled on behalf of the user. // The merchant can still trigger a manual refund. CANCELED = 3; // User did not show for the appointment NO_SHOW = 4; // User did not show for the appointment in violation of the cancellation // policy. NO_SHOW_PENALIZED = 5; // Booking could not be completed by the async backend due to a failure. FAILED = 6; // Booking was asynchronously declined by the merchant. Only applicable to // non-payments Dining or Beauty verticals. DECLINED_BY_MERCHANT = 7; }
Trong CreateBookingResponse, hãy trả về confirmation_mode hiện tại cho vị trí được tổng hợp của lượt đặt phòng được cung cấp trong CreateBookingRequest. Ngoài ra, khi yêu cầu đặt phòng không đồng bộ, hãy đặt status thành PENDING_MERCHANT_CONFIRMATION. Vui lòng đảm bảo rằng confirmation_mode là những gì người dùng và tính năng Đặt chỗ bằng Google mong đợi để tránh gây nhầm lẫn cho người dùng.
Không đồng bộ
{ "booking": { "slot": { "duration_sec": "3600", "merchant_id": "100001", "resources": { "party_size": 2 }, "service_id": "1000", "start_sec": "1546647234", "confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS" }, "user_information": { "email": "johnsmith@gmail.com", "family_name": "John", "given_name": "Smith", "telephone": "+1 800-123-4567", "user_id": "2017492857928759285" }, "payment_information": { "prepayment_status": "PREPAYMENT_NOT_PROVIDED" }, "status": "PENDING_MERCHANT_CONFIRMATION" } }
Đồng bộ hoá
{ "booking": { "slot": { "duration_sec": "3600", "merchant_id": "100001", "resources": { "party_size": 2 }, "service_id": "1000", "start_sec": "1546647234", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" }, "user_information": { "email": "johnsmith@gmail.com", "family_name": "John", "given_name": "Smith", "telephone": "+1 800-123-4567", "user_id": "2017492857928759285" }, "payment_information": { "prepayment_status": "PREPAYMENT_NOT_PROVIDED" }, "status": "CONFIRMED" } }
UpdateBooking
Trong bản phát hành ban đầu của async, chúng tôi không hỗ trợ các sửa đổi của người dùng đối với một lượt đặt phòng hiện có. Thay vào đó, người dùng nên huỷ lượt đặt chỗ và tạo một lượt đặt chỗ mới.
Thông tin cập nhật theo thời gian thực
Để có thông tin cập nhật theo thời gian thực về tình trạng còn hàng, bạn nên chỉ định confirmation_mode. Điều này áp dụng cho các phương thức sau:
RTU khoảng không quảng cáo (ReplaceServiceAvailability hoặc BatchReplaceServiceAvailability)
Sử dụng phương thức availability.replace (hàng loạt) hoặc phương thức services.availability.replace, hãy đặt confirmation_mode thành CONFIRMATION_MODE_ASYNCHRONOUS trong Availability
Không đồng bộ
{
"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": "0",
"spotsTotal": "2",
"availabilityTag": "1000001",
"confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
}
]
}
]
}Đồng bộ hoá
{
"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": "0",
"spotsTotal": "2",
"availabilityTag": "1000001",
"confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
}
]
}
]
}Không đồng bộ và đồng bộ
{
"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": "0",
"spotsTotal": "2",
"availabilityTag": "1000001",
"confirmation_mode": "CONFIRMATION_MODE_ASYNCHRONOUS"
},
{
"startTime": "2014-10-03T11:00:00.00Z",
"duration": "5400s",
"spotsOpen": "1",
"spotsTotal": "1",
"availabilityTag": "1000002",
"confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS"
}
]
}
]
}Booking Notification API
Bạn nên cập nhật trạng thái đặt chỗ không đồng bộ thông qua phương thức Booking Notification API bookings.patch.
Khi cập nhật trạng thái, hãy nhớ thêm tên trường status vào updateMask.
| Trạng thái | Mô tả |
|---|---|
| ĐÃ XÁC NHẬN | người bán đã xác nhận lượt đặt chỗ |
| KHÔNG THÀNH CÔNG | đối tác không thể xác nhận hoặc từ chối lượt đặt phòng với người bán |
| DECLINED_BY_MERCHANT | người bán đã từ chối yêu cầu đặt chỗ |
Request: PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status Body: {"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"DECLINED_BY_MERCHANT"}
Trong trường hợp đặt phòng không thành công, hãy đặt trạng thái đặt phòng thành FAILED và chỉ định booking_failure. Nếu bạn đặt trạng thái thành bất kỳ giá trị nào khác, booking_failure sẽ bị bỏ qua.
Request: PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status&booking_failure.cause="SLOT_UNAVAILABLE" Body: {"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"FAILED"}
Thông báo qua email
Đối với các lượt đặt phòng không đồng bộ, có 5 email tiềm năng liên quan đến trạng thái của lượt đặt phòng được gửi cho người dùng.
PENDING_MERCHANT_CONFIRMATIONCONFIRMEDDECLINED_BY_MERCHANTFAILEDCANCELED