Yêu cầu đặt phòng đồng bộ được định nghĩa là các yêu cầu đặt phòng đã được xác nhận hoặc từ chối theo thời gian thực.
Lượt đặt trước không đồng bộ được định nghĩa là những lượt đặt trước mà người bán xác nhận hoặc từ chối sau đó.
Yêu cầu đặt trước được chỉ định là đồng bộ hoặc không đồng bộ ở cấp tình trạng phòng. Đ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ả khe khả dụng đồ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:
- Chỉ bật tính năng đặt trước đồng bộ: Tất cả người bán và dịch vụ sẽ được xác nhận ngay lập tức.
- Bật tính năng đặt trước 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ộ
- Tính năng sửa đổi việc đặt lịch hẹn không đồng bộ trên Actions Center không được hỗ trợ.
- 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 dành cho người tổ chức của nhà hàng). Bạn 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 yêu cầu đặt chỗ hay không.
- Đề xuất của người bán về thời gian đặt trước mới không được hỗ trợ. Yêu cầu đặt trước phải được chấp nhận hoặc bị từ chối ở trạng thái ban đầu.
Chỉ cho phép đặt trước đồng bộ
Phương thức triển khai chuẩn mặc định áp dụng cho các lượt đặt trước đồng bộ. Vui lòng tham khảo tài liệu về quy trình tích hợp toàn diện về Cuộc hẹn để 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ộ, bạn cần chỉnh sửa những điểm sau:
-
Chế độ xác nhận: Tất cả các bản trình bày của khung giờ còn trống đều có chứa trường
confirmation_mode
mô tả cách xác nhận lượt đặt phòng trong khung giờ đó. Hãy chỉ địnhconfirmation_mode
của từng khung giờ trống cho những mục sau:- Trong Nguồn cấp dữ liệu về tình trạng phòng,
confirmation_mode
được chỉ định ở cấp độ tình trạng còn hàng - Trong các phương thức của API máy chủ đặt phòng,
confirmation_mode
được chỉ định ở cấp vị trí - Trong các phương thức của Real-Time Updates API (API Cập nhật theo thời gian thực),
confirmation_mode
được chỉ định ở cấp độ khả dụng
- Trong Nguồn cấp dữ liệu về tình trạng phòng,
- Trạng thái của lượt đặt phòng: Tất cả các nội dung trình bày về lượt đặt phòng đều chứa trường
status
, cho biết 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 đưa ra:PENDING_CONFIRMATION
,DECLINED_BY_MERCHANT
vàFAILED
. Sử dụng các giá trị trạng thái mới này khi xử lý lượt tạo, từ chối và lỗ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: Bạn phải báo cáo tất cả thông tin cập nhật không đồng bộ về trạng thái của các lượt đặt phòng thông qua phương thức bookings.patch của API Thông báo đặt phòng.
Sơ đồ dưới đây cho biết 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ương tác đặt phòng không đồng bộ thông thường.
![Hình 1: Quy trình đặt phòng không đồng bộ](https://developers-dot-devsite-v2-prod.appspot.com/static/actions-center/images/enabling_async_1.png?authuser=5&hl=vi)
- Nguồn cấp dữ liệu về tình trạng rảnh/bận đã được cập nhật để chỉ định chế độ xác nhận của từng vị trí trống. Điều quan trọng là phải 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 không đồng bộ của yêu cầu đặt phòng ngay từ đầu trong quy trình.
- Khi
BatchAvailabilityLookup
hoặ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 để đượ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 tôi sẽ chuyển chế độ xác nhận để cho biết chế độ xác nhận dự kiến. Khi yêu cầu đặt vé không đồng bộ được gửi, yêu cầu đặt phòng sẽ được trả về có trạng tháiPENDING_MERCHANT_CONFIRMATION
. - Khi người bán chấp nhận hoặc từ chối một yêu cầu đặt trước, trạng thái của yêu cầu đặt phòng sẽ được cập nhật thông qua phương thức bookings.patch của API Thông báo đặt chỗ 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 qua chính 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 tình trạng còn hàng, hãy chỉ định xem mỗi vị trí 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õ một chế độ vì điều đó sẽ giúp 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ộ 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" }, { "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
Tra cứu BatchTình trạng hoặc CheckTình trạng còn hàng
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 chuyển qua BatchAvailabilityLookupRequest
hoặc CheckAvailabilityRequest
.
Không đồng bộ BAL
{ "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 } ] }
Đồng bộ hoá BAL
{ "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 } ] }
Không đồng bộ với CA
{ "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" }
Đồng bộ hoá CA
{ "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
Hãy đảm bảo trả lại trạng thái chính xác của yêu cầu đặt phòng bằng các lựa chọn có sẵn dưới đây:
// 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 khung giờ tổng hợp của yêu cầu đặt chỗ được cung cấp trong CreateResetRequest. Ngoài ra, khi việc đặt trước không đồng bộ, hãy đặt status
thành PENDING_MERCHANT_CONFIRMATION
. Hãy đảm bảo rằng
confirmation_mode
là nội dung mà người dùng và tính năng Đặt chỗ bằng
Google mong đợi để tránh khiến người dùng bị nhầm lẫn.
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 không đồng bộ ban đầu, hệ thống sẽ không hỗ trợ các thao tác sửa đổi của người dùng đối với lượt đặt trước hiện có. Thay vào đó, người dùng cần huỷ yêu cầu đặt phòng và tạo một yêu cầu đặt phòng mới.
Cập nhật theo thời gian thực
Để cập nhật tình trạng còn hàng theo thời gian thực, bạn phải 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 (ReplaceServiceTình trạng hoặc BatchReplaceServiceAvailability)
Sử dụng
phương thức availability.replace
(theo lô)
hoặc
phương thức services.availability.replace
,
đặ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ộ 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_ASYNCHRONOUS" }, { "startTime": "2014-10-03T11:00:00.00Z", "duration": "5400s", "spotsOpen": "1", "spotsTotal": "1", "availabilityTag": "1000002", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
API Thông báo đặt trước
Bạn phải cập nhật không đồng bộ trạng thái đặt phòng thông qua phương thức bookings.patch của API Thông báo đặt phòng.
Khi cập nhật trạng thái, hãy nhớ đưa tên trường status
vào updateMask
.
Trạng thái | Nội dung mô tả |
---|---|
ĐÃ XÁC NHẬN | người bán đã xác nhận việc đặt trước |
KHÔNG THÀNH CÔNG | đối tác không thể xác nhận hoặc từ chối yêu cầu đặt chỗ với người bán |
DECLINED_BY_MERCHANT | người bán đã từ chối lượt đặt trước |
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 này thành bất kỳ trạng thái nào khác, thì 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 trước không đồng bộ, sẽ có 5 email tiềm năng liên quan đến trạng thái của lượt đặt trước được gửi đến người dùng.
PENDING_MERCHANT_CONFIRMATION
CONFIRMED
DECLINED_BY_MERCHANT
FAILED
CANCELED