एसिंक्रोनस बुकिंग जोड़ें

सिंक की गई बुकिंग को ऐसी बुकिंग कहा जाता है जिनकी रीयल टाइम में पुष्टि की जाती है या अस्वीकार कर दी जाती है.

एसिंक्रोनस बुकिंग को ऐसी बुकिंग माना जाता है जिसकी पुष्टि व्यापारी/कंपनी/कारोबारी बाद में करता है या अस्वीकार कर देता है.

उपलब्धता के लेवल पर, बुकिंग को सिंक्रोनस या एसिंक्रोनस के तौर पर तय किया जाता है. इसका मतलब यह भी है कि किसी व्यापारी/कंपनी/कारोबारी और सेवा के लिए, सिंक्रोनस और एसिंक्रोनस, दोनों तरह के स्लॉट उपलब्ध हो सकते हैं.

सही तरीके से लागू करने के लिए, सबसे पहले पहचान करें कि आपकी इन्वेंट्री किस कैटगरी में आती है:

एसिंक्रोनस बुकिंग की शर्तें

  • कार्रवाई केंद्र पर, एसिंक्रोनस बुकिंग में बदलाव नहीं किया जा सकता.
  • व्यापारियों/कंपनियों/कारोबारियों के पास, पार्टनर के ऑनलाइन सिस्टम (जैसे कि रेस्टोरेंट के लिए होस्ट पैनल) से, बुकिंग को स्वीकार या अस्वीकार करने का विकल्प होना चाहिए. उपयोगकर्ता की तरफ़ से व्यापारी/कंपनी को कॉल करने की अनुमति नहीं है. इससे यह पता चलेगा कि व्यापारी/कंपनी, बुकिंग को स्वीकार या अस्वीकार करती है.
  • कारोबारी के लिए, बुकिंग के नए समय का सुझाव नहीं दिया जाएगा. बुकिंग का अनुरोध मूल स्थिति में ही स्वीकार या अस्वीकार किया जाना चाहिए.

सिर्फ़ सिंक्रोनस बुकिंग की सुविधा चालू की जा रही है

लागू करने का स्टैंडर्ड तरीका, डिफ़ॉल्ट तौर पर सिंक्रोनस बुकिंग को लागू करता है. ज़्यादा जानकारी के लिए, कृपया अपॉइंटमेंट के शुरू से अंत तक के इंटिग्रेशन के दस्तावेज़ देखें.

एसिंक्रोनस बुकिंग की सुविधा चालू करना

अगर कुछ या सभी व्यापारी/कंपनी/कारोबारी, एसिंक्रोनस बुकिंग फ़्लो का इस्तेमाल करते हैं, तो ये बदलाव किए जाने चाहिए:

  • पुष्टि मोड: उपलब्धता स्लॉट के सभी प्रतिनिधित्व में अब एक confirmation_mode फ़ील्ड होता है. इससे पता चलता है कि उस उपलब्धता स्लॉट की बुकिंग की पुष्टि कैसे की जाती है. इनके लिए, हर उपलब्धता स्लॉट का confirmation_mode तय करें:

    • खरीदारी के लिए उपलब्धता फ़ीड में, confirmation_mode के बारे में उपलब्धता के लेवल पर बताया जाता है
    • बुकिंग सर्वर एपीआई के तरीकों में, confirmation_mode की जानकारी स्लॉट के लेवल पर दी गई है
    • रीयल-टाइम अपडेट एपीआई के तरीकों में, confirmation_mode की जानकारी उपलब्धता के लेवल पर दी जाती है
  • बुकिंग की स्थिति: बुकिंग के सभी मामलों में एक status फ़ील्ड होता है, जो बुकिंग की स्थिति के बारे में बताता है. एसिंक्रोनस स्थिति की तीन नई वैल्यू पेश की गई हैं: PENDING_CONFIRMATION, DECLINED_BY_MERCHANT, और FAILED. एसिंक्रोनस बुकिंग को प्रोसेस करने, अस्वीकार किए जाने, और न हो पाने के दौरान, इन नई स्टेटस वैल्यू का इस्तेमाल करें.
  • बुकिंग से जुड़े अपडेट: बुकिंग की स्थिति के सभी एसिंक्रोनस अपडेट की रिपोर्ट, Booking Notification API के bookings.patch तरीके से की जानी चाहिए.

नीचे दिया गया डायग्राम, सामान्य एसिंक्रोनस बुकिंग इंटरैक्शन में पुष्टि करने के मोड और बुकिंग की स्थिति का इस्तेमाल कैसे किया जाता है, यह दिखाता है.

पहली इमेज: एसिंक्रोनस बुकिंग फ़्लो
पहली इमेज: एसिंक्रोनस बुकिंग फ़्लो
  1. उपलब्धता फ़ीड को अपडेट किया गया है, ताकि हर एक उपलब्धता स्लॉट के पुष्टि मोड के बारे में बताया गया हो. फ़ीड में इस जानकारी का होना ज़रूरी है, ताकि हम शुरुआत में ही उपयोगकर्ता को यह समझा सकें कि बुकिंग किस तरह की है.
  2. जब BatchAvailabilityLookup या CheckAvailability को कॉल किया जाता है, तो हम पुष्टि करने वाले मोड का इस्तेमाल करते हैं. आम तौर पर, हम पुष्टि करने वाला वही मोड इस्तेमाल करते हैं जिसे वापस किया जाता है. इससे यह पक्का होता है कि उपयोगकर्ता को सही मैसेज दिखाया जाएगा.
  3. जब CreateBooking को कॉल किया जाता है, तो हम अनुमानित पुष्टि मोड के बारे में बताने के लिए, पुष्टि मोड को पास करते हैं. जब एसिंक्रोनस बुकिंग का अनुरोध सबमिट किया जाता है, तो बुकिंग को PENDING_MERCHANT_CONFIRMATION स्टेटस के साथ दिखाया जाता है.
  4. जब कारोबारी किसी बुकिंग का अनुरोध स्वीकार या अस्वीकार करता है, तो रीयल-टाइम अपडेट वाली बुकिंग की सूचना देने वाले एपीआई के 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 (BAL) या CheckAvailabilityResponse (CA) में, वही confirmation_mode दिखाएं जो उपलब्धता फ़ीड में बताया गया है. साथ ही, इसे BatchAvailabilityLookupRequest या CheckAvailabilityRequest के ज़रिए पास किया जाता है.

BAL-Aसिंक

{
  "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-सिंक

{
  "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-एसिंक्रोनस

{
  "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-सिंक

{
  "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 के बारे में बताया जाना चाहिए. यह इन तरीकों पर लागू होता है:

इन्वेंट्री RTU (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"
        }
      ]
    }
  ]
}

बुकिंग सूचना का एपीआई

बुकिंग की स्थिति में एसिंक्रोनस अपडेट, बुकिंग सूचना एपीआई bookings.patch तरीके से किए जाने चाहिए.

स्टेटस अपडेट करते समय, updateMask में status फ़ील्ड का नाम शामिल करना न भूलें.

स्थिति ब्यौरा
पुष्टि हो गई व्यापारी ने बुकिंग की पुष्टि की
नहीं हो सका पार्टनर, व्यापारी/कंपनी के साथ बुकिंग की पुष्टि या उसे अस्वीकार नहीं कर सका
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_CONFIRMATION
  • CONFIRMED
  • DECLINED_BY_MERCHANT
  • FAILED
  • CANCELED