सिंक्रोनस बुकिंग, ऐसी बुकिंग होती हैं जिनकी पुष्टि या अस्वीकार रीयल टाइम में की जाती है.
एसिंक्रोनस बुकिंग ऐसी बुकिंग होती हैं जिनकी पुष्टि कारोबारी या कंपनी बाद में करती है या उन्हें अस्वीकार करती है.
उपलब्धता के लेवल पर, बुकिंग को सिंक्रोनस या एसिंक्रोनस के तौर पर तय किया जाता है. इसका यह भी मतलब है कि किसी कारोबारी या कंपनी और सेवा के लिए, सिंक्रोनस और असिंक्रोनस, दोनों तरह के स्लॉट उपलब्ध हो सकते हैं.
सही तरीके से लागू करने के लिए, सबसे पहले यह पता करें कि आपकी इन्वेंट्री किस कैटगरी में आती है:
- सिर्फ़ सिंक्रोनस बुकिंग की सुविधा चालू करना: सभी कारोबारियों या कंपनियों और सेवाओं की तुरंत पुष्टि हो जाती है.
- एसिंक्रोनस बुकिंग की सुविधा चालू करना: कुछ या सभी कारोबारियों/कंपनियों और सेवाओं के लिए, कारोबारी या कंपनी के मैन्युअल की पुष्टि करना ज़रूरी है.
एसिंक्रोनस बुकिंग की शर्तें
- Actions Center पर, एसिंक बुकिंग में बदलाव करने की सुविधा उपलब्ध नहीं है.
- कारोबारियों या कंपनियों को, पार्टनर के ऑनलाइन सिस्टम (जैसे, रेस्टोरेंट के लिए होस्ट पैनल) के ज़रिए बुकिंग स्वीकार या अस्वीकार करने का विकल्प मिलना चाहिए. उपयोगकर्ता की ओर से कारोबारी या कंपनी को कॉल करके यह पता नहीं लगाया जा सकता कि वह बुकिंग स्वीकार करती है या नहीं. ऐसा करना अनुमति नहीं है.
- कारोबारी या कंपनी की ओर से बुकिंग के नए समय का सुझाव देने की सुविधा उपलब्ध नहीं है. बुकिंग के अनुरोध को उसकी मूल स्थिति में स्वीकार या अस्वीकार किया जाना चाहिए.
सिर्फ़ सिंक्रोनस बुकिंग की सुविधा चालू करना
स्टैंडर्ड इंटिग्रेशन में, डिफ़ॉल्ट रूप से सिंक्रोनस बुकिंग की सुविधा चालू होती है. ज़्यादा जानकारी के लिए, कृपया सीधे बुकिंग करने की सुविधा के इंटिग्रेशन से जुड़ा दस्तावेज़ देखें.
एसिंक्रोनस बुकिंग की सुविधा चालू करना
अगर कुछ या सभी कारोबारी या कंपनियां एसिंक्रोनस बुकिंग फ़्लो का इस्तेमाल करती हैं, तो ये बदलाव करने होंगे:
-
पुष्टि मोड: उपलब्धता के सभी स्लॉट में अब
confirmation_modeफ़ील्ड शामिल है. इसमें बताया गया है कि उपलब्धता के उस स्लॉट की बुकिंग की पुष्टि कैसे की जाती है. इनके लिए, उपलब्धता के हर स्लॉट कीconfirmation_modeबताएं:- उपलब्धता फ़ीड में,
confirmation_modeको उपलब्धता के लेवल पर सेट किया गया है - बुकिंग सर्वर एपीआई के तरीकों में,
confirmation_modeको स्लॉट लेवल पर सेट किया जाता है - रीयल-टाइम अपडेट API के तरीकों में,
confirmation_modeको उपलब्धता के लेवल पर तय किया जाता है
- उपलब्धता फ़ीड में,
- बुकिंग की स्थिति: बुकिंग के सभी रिप्रज़ेंटेशन में
statusफ़ील्ड होता है. इससे बुकिंग की स्थिति के बारे में पता चलता है. एसिंक्रोनस स्टेटस की तीन नई वैल्यू जोड़ी गई हैं:PENDING_CONFIRMATION,DECLINED_BY_MERCHANT, औरFAILED. एसिंक्रोनस बुकिंग के अनुरोधों को प्रोसेस करते समय, मंज़ूरी न मिलने पर, और बुकिंग पूरी न होने पर, स्टेटस की इन नई वैल्यू का इस्तेमाल करें. - बुकिंग के अपडेट: बुकिंग के स्टेटस में होने वाले सभी एसिंक्रोनस अपडेट, Booking Notification API के bookings.patch तरीके से रिपोर्ट किए जाने चाहिए.
यहां दिए गए डायग्राम में दिखाया गया है कि बुकिंग की पुष्टि करने वाले मोड और बुकिंग की स्थिति का इस्तेमाल, बुकिंग से जुड़ी सामान्य एसिंक्रोनस बातचीत में कैसे किया जाता है.
- उपलब्धता फ़ीड अपडेट कर दिए गए हैं, ताकि उपलब्धता के हर स्लॉट के लिए पुष्टि करने का तरीका बताया जा सके. फ़ीड में यह जानकारी होना ज़रूरी है, ताकि हम उपयोगकर्ता को बुकिंग के एसिंक्रोनस नेचर के बारे में फ़्लो की शुरुआत में ही बता सकें.
- जब
BatchAvailabilityLookupयाCheckAvailabilityको कॉल किया जाता है, तो हम पुष्टि करने का मोड पास करते हैं. साथ ही, हम पुष्टि करने के उसी मोड को वापस भेजते हैं. इससे यह पक्का होता है कि उपयोगकर्ता को सही मैसेज दिखाया जाए. - कॉल किए जाने पर, हम पुष्टि करने के मोड को पास करते हैं, ताकि पुष्टि करने के अनुमानित मोड का पता चल सके.
CreateBookingएसिंक्रोनस बुकिंग का अनुरोध सबमिट करने पर, बुकिंग की स्थितिPENDING_MERCHANT_CONFIRMATIONके साथ वापस आ जाती है. - जब कारोबारी या कंपनी, बुकिंग के अनुरोध को स्वीकार या अस्वीकार करती है, तब बुकिंग की स्थिति अपडेट हो जाती है. यह अपडेट, बुकिंग की सूचना देने वाले एपीआई के bookings.patch तरीके का इस्तेमाल करके रीयल-टाइम में किया जाता है. अगर आपको उन बुकिंग को अपने-आप अस्वीकार करना है जिनके लिए समय पर जवाब नहीं दिया गया है, तो रीयल-टाइम अपडेट करने के उसी तरीके का इस्तेमाल करें.
उपलब्धता की जानकारी देने वाले फ़ीड
उपलब्धता फ़ीड में, यह बताएं कि हर स्लॉट सिंक्रोनस है या एसिंक्रोनस. इसके लिए, नया confirmation_mode फ़ील्ड सेट करें.
// 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; }
अगर कोई मोड नहीं बताया गया है, तो पुष्टि करने के मोड को सिंक्रोनस माना जाता है. हालांकि, हमारा सुझाव है कि आप मोड के बारे में साफ़ तौर पर बताएं. इससे गलती से हुई किसी भी चूक को ठीक करने में मदद मिलती है.
Async
{
"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"
}
]
}सिंक करें
{
"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"
}
]
}एसिंक और सिंक
{
"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"
}
]
}बुकिंग सर्वर
BatchAvailabilityLookup या CheckAvailability
BatchAvailabilityLookupResponse (बीएएल)
या
CheckAvailabilityResponse (सीए) में, वही confirmation_mode वैल्यू सबमिट करें जो उपलब्धता वाले फ़ीड में दी गई है. साथ ही, BatchAvailabilityLookupRequest या 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
नीचे दिए गए विकल्पों का इस्तेमाल करके, बुकिंग की सही स्थिति की जानकारी दें:
// 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; }
CreateBookingResponse में, CreateBookingRequest में दिए गए बुकिंग के एग्रीगेट किए गए स्लॉट के लिए, मौजूदा confirmation_mode दिखाएं. इसके अलावा, अगर बुकिंग एसिंक्रोनस है, तो status को PENDING_MERCHANT_CONFIRMATION पर सेट करें. कृपया पक्का करें कि confirmation_mode वही हो जो उपयोगकर्ता और Reserve with Google को चाहिए, ताकि उपयोगकर्ता को कोई भ्रम न हो.
Async
{ "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" } }
सिंक करें
{ "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
एसिंक की शुरुआती रिलीज़ में, उपयोगकर्ता के लिए मौजूदा बुकिंग में बदलाव करने की सुविधा उपलब्ध नहीं है. इसके बजाय, उपयोगकर्ता को बुकिंग रद्द करनी चाहिए और नई बुकिंग करनी चाहिए.
रीयल-टाइम अपडेट
उपलब्धता के बारे में रीयल-टाइम अपडेट पाने के लिए, confirmation_mode
की जानकारी देना ज़रूरी है. यह इन तरीकों पर लागू होता है:
इन्वेंट्री आरटीयू (ReplaceServiceAvailability या BatchReplaceServiceAvailability)
availability.replace (बैच) तरीके या services.availability.replace तरीके का इस्तेमाल करके, Availability में confirmation_mode को CONFIRMATION_MODE_ASYNCHRONOUS पर सेट करें
Async
{
"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"
}
]
}
]
}सिंक करें
{
"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"
}
]
}
]
}एसिंक और सिंक
{
"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
बुकिंग के स्टेटस में एसिंक्रोनस अपडेट, Booking Notification API के bookings.patch तरीके से किए जाने चाहिए.
स्टेटस अपडेट करते समय, पक्का करें कि आपने updateMask में status फ़ील्ड का नाम शामिल किया हो.
| स्थिति | ब्यौरा |
|---|---|
| पुष्टि हो गई | कारोबारी या कंपनी ने बुकिंग की पुष्टि कर दी है |
| FAILED | पार्टनर, कारोबारी या कंपनी के साथ बुकिंग की पुष्टि नहीं कर सका या उसे अस्वीकार नहीं कर सका |
| DECLINED_BY_MERCHANT | कारोबारी या कंपनी ने बुकिंग अस्वीकार कर दी है |
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"}
अगर बुकिंग नहीं हो पाती है, तो बुकिंग की स्थिति को FAILED पर सेट करें और booking_failure की जानकारी दें. अगर स्थिति को किसी और वैल्यू पर सेट किया जाता है, तो booking_failure को अनदेखा कर दिया जाता है.
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"}
ईमेल सूचनाएं
एसिंक्रोनस बुकिंग के लिए, बुकिंग की स्थिति से जुड़े पांच संभावित ईमेल होते हैं. ये ईमेल उपयोगकर्ताओं को भेजे जाते हैं.
PENDING_MERCHANT_CONFIRMATIONCONFIRMEDDECLINED_BY_MERCHANTFAILEDCANCELED