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

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

অ্যাসিঙ্ক্রোনাস বুকিংগুলিকে এমন বুকিং হিসাবে সংজ্ঞায়িত করা হয় যেগুলি বণিক পরবর্তী সময়ে নিশ্চিত করে বা অস্বীকার করে৷

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

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

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

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

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

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

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

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

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

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

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

চিত্র 1: অ্যাসিঙ্ক্রোনাস বুকিং প্রবাহ
চিত্র 1: অ্যাসিঙ্ক্রোনাস বুকিং প্রবাহ
  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"
    }

  ]
}

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

BatchAvailabilityLookup বা CheckAvailability

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

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

বুকিং তৈরি করুন

নীচের উপলব্ধ বিকল্পগুলি ব্যবহার করে বুকিংয়ের জন্য সঠিক স্থিতি ফেরত নিশ্চিত করুন:

// 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 ব্যবহারকারী কি এবং 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 নির্দিষ্ট করা উচিত। এটি নিম্নলিখিত পদ্ধতিগুলির জন্য প্রযোজ্য:

ইনভেন্টরি আরটিইউ (প্রতিস্থাপন পরিষেবা উপলভ্যতা বা ব্যাচ রিপ্লেস পরিষেবা উপলভ্যতা)

availability.replace (ব্যাচ) পদ্ধতি বা services.availability.replace পদ্ধতি ব্যবহার করে, CONFIRMATION_MODE_ASYNCHRONOUS Availability confirmation_mode সেট করুন

অ্যাসিঙ্ক

{
  "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 পদ্ধতির মাধ্যমে করা উচিত।

স্থিতি আপডেট করার সময়, 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