অ্যাসিঙ্ক্রোনাস বুকিং যোগ করুন

সিঙ্ক্রোনাস বুকিং বলতে এমন বুকিংকে বোঝায় যা রিয়েল টাইমে নিশ্চিত বা প্রত্যাখ্যাত হয়।

অ্যাসিঙ্ক্রোনাস বুকিং বলতে সেই বুকিংগুলিকে বোঝায় যা বণিক পরবর্তী সময়ে নিশ্চিত করে বা প্রত্যাখ্যান করে।

একটি বুকিং প্রাপ্যতা-স্তরে সিঙ্ক্রোনাস বা অ্যাসিনক্রোনাস হিসাবে নির্দিষ্ট করা হয়। এর অর্থ হল একটি নির্দিষ্ট বণিক এবং পরিষেবার জন্য, সিঙ্ক্রোনাস এবং অ্যাসিনক্রোনাস উভয় ধরণের প্রাপ্যতা স্লট থাকতে পারে।

যথাযথ বাস্তবায়ন নির্ধারণ করতে, প্রথমে আপনার ইনভেন্টরি কোন বিভাগের অধীনে পড়ে তা চিহ্নিত করুন:

অ্যাসিঙ্ক্রোনাস বুকিং মানদণ্ড

  • অ্যাকশন সেন্টারে অ্যাসিঙ্ক বুকিংয়ের পরিবর্তন সমর্থিত নয়
  • ব্যবসায়ীরা অংশীদারের অনলাইন সিস্টেমের মাধ্যমে বুকিং গ্রহণ বা প্রত্যাখ্যান করতে সক্ষম হবেন (যেমন রেস্তোরাঁর জন্য হোস্ট প্যানেল)। ব্যবহারকারীর পক্ষ থেকে ব্যবসায়ীকে ফোন করে নির্ধারণ করা যাবে যে ব্যবসায়ী বুকিং গ্রহণ করবেন নাকি প্রত্যাখ্যান করবেন।
  • নতুন বুকিং সময়ের ব্যবসায়ীর প্রস্তাব সমর্থিত নয় । বুকিং অনুরোধটি মূল অবস্থায় গ্রহণ বা প্রত্যাখ্যান করতে হবে।

শুধুমাত্র সিঙ্ক্রোনাস বুকিং সক্ষম করা হচ্ছে

স্ট্যান্ডার্ড বাস্তবায়নটি সিঙ্ক্রোনাস বুকিংয়ের ক্ষেত্রে ডিফল্ট। আরও তথ্যের জন্য অনুগ্রহ করে রিজার্ভেশনস এন্ড-টু-এন্ড ইন্টিগ্রেশন ডকুমেন্টেশনটি দেখুন।

অ্যাসিঙ্ক্রোনাস বুকিং সক্ষম করা হচ্ছে

যদি কিছু বা সমস্ত ব্যবসায়ী একটি অ্যাসিঙ্ক্রোনাস বুকিং প্রবাহ ব্যবহার করে, তাহলে নিম্নলিখিত পরিবর্তনগুলি করতে হবে:

  • নিশ্চিতকরণ মোড: প্রাপ্যতা স্লটের সমস্ত উপস্থাপনায় এখন একটি confirmation_mode ক্ষেত্র রয়েছে যা বর্ণনা করে যে কীভাবে সেই উপলব্ধতা স্লটের বুকিং নিশ্চিত করা হয়। নিম্নলিখিতগুলির জন্য প্রতিটি উপলব্ধতা স্লটের confirmation_mode নির্দিষ্ট করুন:

    • Availability Feed-এ, confirmation_mode প্রাপ্যতা স্তরে নির্দিষ্ট করা আছে
    • বুকিং সার্ভার API পদ্ধতিতে, স্লট স্তরে confirmation_mode নির্দিষ্ট করা হয়
    • রিয়েল-টাইম আপডেট API পদ্ধতিতে, confirmation_mode প্রাপ্যতা স্তরে নির্দিষ্ট করা হয়
  • বুকিং স্ট্যাটাস: বুকিংয়ের সমস্ত উপস্থাপনায় একটি status ফিল্ড থাকে যা বুকিংয়ের অবস্থা উপস্থাপন করে। তিনটি নতুন অ্যাসিঙ্ক্রোনাস স্ট্যাটাস মান চালু করা হয়েছে: PENDING_CONFIRMATION , DECLINED_BY_MERCHANT , এবং FAILED । অ্যাসিঙ্ক্রোনাস বুকিংয়ের সৃষ্টি, প্রত্যাখ্যান এবং ব্যর্থতা প্রক্রিয়া করার সময় এই নতুন স্ট্যাটাস মানগুলি ব্যবহার করুন।
  • বুকিং আপডেট: বুকিংয়ের স্ট্যাটাসের সমস্ত অ্যাসিঙ্ক্রোনাস আপডেট বুকিং নোটিফিকেশন API এর bookings.patch পদ্ধতির মাধ্যমে রিপোর্ট করা উচিত।

নিচের চিত্রটি দেখায় কিভাবে একটি সাধারণ অ্যাসিঙ্ক্রোনাস বুকিং ইন্টারঅ্যাকশনে নিশ্চিতকরণ মোড এবং বুকিং স্ট্যাটাস ব্যবহার করা হয়।

চিত্র ১: অ্যাসিঙ্ক্রোনাস বুকিং প্রবাহ
চিত্র ১: অ্যাসিঙ্ক্রোনাস বুকিং প্রবাহ
  1. প্রতিটি প্রাপ্যতা স্লটের নিশ্চিতকরণ মোড নির্দিষ্ট করার জন্য উপলব্ধতা ফিডগুলি আপডেট করা হয়েছে। ফিডে এই তথ্য থাকা গুরুত্বপূর্ণ যাতে আমরা প্রবাহের শুরুতেই ব্যবহারকারীকে বুকিংয়ের অ্যাসিঙ্ক্রোনাস প্রকৃতি ব্যাখ্যা করতে পারি।
  2. যখন BatchAvailabilityLookup অথবা CheckAvailability কল করা হয়, তখন আমরা নিশ্চিতকরণ মোডটি পাস করি এবং আদর্শভাবে একই নিশ্চিতকরণ মোডটি ফেরত পাঠাই। এটি নিশ্চিত করে যে ব্যবহারকারীকে উপযুক্ত বার্তা দেখানো হচ্ছে।
  3. যখন CreateBooking কল করা হয়, তখন আমরা প্রত্যাশিত নিশ্চিতকরণ মোড নির্দেশ করার জন্য নিশ্চিতকরণ মোডটি অতিক্রম করি। যখন অ্যাসিঙ্ক্রোনাস বুকিং অনুরোধ জমা দেওয়া হয়, তখন বুকিংটি PENDING_MERCHANT_CONFIRMATION স্ট্যাটাস সহ ফেরত পাঠানো হয়।
  4. যখন বণিক কোনও বুকিং অনুরোধ গ্রহণ বা প্রত্যাখ্যান করেন, তখন রিয়েল-টাইম আপডেট বুকিং নোটিফিকেশন API-এর 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;
}

যদিও কোনও মোড নির্দিষ্ট না করা থাকলে নিশ্চিতকরণ মোডটি সিঙ্ক্রোনাস বলে ধরে নেওয়া হয়, তবে স্পষ্টভাবে একটি মোড নির্দিষ্ট করার জন্য জোরালোভাবে উৎসাহিত করা হচ্ছে কারণ এটি দুর্ঘটনাজনিত বাদ পড়ার বিষয়ে যেকোনো বিভ্রান্তি দূর করে।

অ্যাসিঙ্ক

{
  "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"
    }

  ]
}

বুকিং সার্ভার

ব্যাচউপলব্ধতালুকআপ বা চেকউপলব্ধতা

BatchAvailabilityLookupResponse (BAL) অথবা CheckAvailabilityResponse (CA) তে, availability ফিডে উল্লেখিত এবং BatchAvailabilityLookupRequest অথবা CheckAvailabilityRequest এর মাধ্যমে পাস করা একই confirmation_mode ফেরত দিন।

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

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-এর প্রত্যাশা অনুযায়ী।

অ্যাসিঙ্ক

{
  "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"
  }
}

আপডেটবুকিং

অ্যাসিঙ্কের প্রাথমিক প্রকাশে, বিদ্যমান বুকিংয়ে ব্যবহারকারীর পরিবর্তন সমর্থিত নয়। পরিবর্তে, ব্যবহারকারীর বুকিং বাতিল করে একটি নতুন বুকিং তৈরি করা উচিত।

রিয়েল-টাইম আপডেট

উপলব্ধতার রিয়েল-টাইম আপডেটের জন্য, confirmation_mode নির্দিষ্ট করা উচিত। এটি নিম্নলিখিত পদ্ধতিগুলির জন্য প্রযোজ্য:

ইনভেন্টরি RTU (ReplaceServiceAvailability বা BatchReplaceServiceAvailability)

availability.replace (batch) পদ্ধতি অথবা services.availability.replace পদ্ধতি ব্যবহার করে, Availabilityconfirmation_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_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"
        }
      ]
    }
  ]
}

বুকিং বিজ্ঞপ্তি API

বুকিং স্ট্যাটাসের অ্যাসিঙ্ক্রোনাস আপডেটগুলি বুকিং নোটিফিকেশন API bookings.patch পদ্ধতির মাধ্যমে করা উচিত।

স্ট্যাটাস আপডেট করার সময়, updateMaskstatus ফিল্ডের নাম অন্তর্ভুক্ত করতে ভুলবেন না।

অবস্থা বিবরণ
নিশ্চিত ব্যবসায়ী বুকিং নিশ্চিত করেছেন।
ব্যর্থ পার্টনার বণিকের সাথে বুকিং নিশ্চিত বা প্রত্যাখ্যান করতে পারেনি
বণিকের_অস্বীকৃতি বণিক বুকিং প্রত্যাখ্যান করেছেন
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