ধাপ 5: রিয়েল-টাইম API আপডেট

আপনার বণিকদের থেকে নতুন বুকিং, বাতিলকরণ এবং সময়সূচী পরিবর্তনের কারণে আপনার সিস্টেমে ইনভেন্টরি দিনভর ওঠানামা করে। রিয়েল-টাইম আপডেট এপিআই হল ইনভেন্টরি উপলব্ধতার এই পরিবর্তনগুলি সম্পর্কে Google-কে অবহিত করার একটি প্রক্রিয়া৷ আপনি বিদ্যমান বুকিং-এ করা পরিবর্তনগুলি Google-কে জানানোর জন্য রিয়েল-টাইম API আপডেটগুলিও ব্যবহার করতে পারেন৷

API রিয়েল-টাইম আপডেট এবং ফিড

এপিআই রিয়েল-টাইম আপডেটগুলি Google-কে ইনভেন্টরির প্রাপ্যতা এবং বুকিং-এ ক্রমবর্ধমান পরিবর্তনগুলি সম্পর্কে অবহিত করতে ব্যবহৃত হয় কারণ সেগুলি রিয়েল-টাইমে ঘটে। রিয়েল-টাইম API আপডেটগুলি ছাড়াও, আপনার সিস্টেমে বিদ্যমান থাকা Google-এর কাছে উপলব্ধতার সবচেয়ে সঠিক এবং বর্তমান জ্ঞান রয়েছে তা নিশ্চিত করতে প্রতিদিন সম্পূর্ণ উপলব্ধতা ফিড পাঠান। সম্পূর্ণ ফিডগুলি আপনার সিস্টেমে ইনভেন্টরি প্রাপ্যতার বর্তমান অবস্থার স্ন্যাপশট হিসাবে কাজ করে।

যদিও API আপডেটগুলি ফিড দ্বারা সরবরাহ করা যেকোন তথ্য আপডেট করতে ব্যবহার করা যেতে পারে, যেমন বণিক এবং পরিষেবা সম্পর্কে তথ্য, সেগুলি সাধারণত শুধুমাত্র উপলব্ধতার তথ্য আপডেট করতে ব্যবহৃত হয়।

প্রয়োজনীয় রিয়েল-টাইম আপডেট API

রিয়েল-টাইম আপডেট (RTU) API
বুকিং বিজ্ঞপ্তি বাধ্যতামূলক বুকিং-এ কোনো পরিবর্তন হলে (যেমন পরিবর্তন বা বাতিলকরণ) বুকিং নোটিফিকেশন RTU পাঠান।
প্রাপ্যতা RTU প্রতিস্থাপন শর্তসাপেক্ষে প্রয়োজন[1] ইনভেন্টরি উপলভ্যতার আপডেট পাঠাতে হয় ব্যাচ রিপ্লেস বা সিঙ্গেল রিপ্লেস RTU পাঠান। পরিবর্তনগুলি প্রচার করতে এবং প্রতিফলিত হতে কয়েক মিনিট সময় নিতে পারে।
বণিক আরটিইউ ঐচ্ছিক আপনি যদি রিয়েল-টাইমে বণিক তথ্যে পরিবর্তন করতে চান তাহলে বণিক RTU পাঠান। পরিবর্তনগুলি প্রচার এবং প্রতিফলিত হতে কয়েক ঘন্টা সময় লাগতে পারে।
সেবা RTU ঐচ্ছিক আপনি যদি রিয়েল-টাইমে পরিষেবার তথ্যে পরিবর্তন করতে চান তাহলে পরিষেবা RTU পাঠান৷ একটি সাধারণ ব্যবহারের ক্ষেত্রে যদি দিনের বেলায় পরিষেবার দাম নাটকীয়ভাবে ওঠানামা করে, তাহলে দামের অমিলের কারণে অর্ডার ব্যর্থতা এড়াতে পরিষেবা RTUs প্রয়োগ করার সুপারিশ করা হয়। পরিবর্তনগুলি প্রচার এবং প্রতিফলিত হতে কয়েক ঘন্টা সময় লাগতে পারে।

প্রাপ্যতা প্রতিস্থাপন API RTU

নিম্নলিখিত ব্যবহারের ক্ষেত্রে প্রাপ্যতা আপডেট প্রদান করতে Availability Replace API ব্যবহার করুন:

  • একজন ব্যবহারকারী আপনার সিস্টেমে একটি রিজার্ভেশন বুক করে, তাই প্রাপ্যতা স্লট আর পাওয়া যায় না।
  • একজন বণিক আপনার সিস্টেমে তাদের উপলব্ধতা পরিবর্তন করে।
  • একজন ব্যবহারকারী Google এর মাধ্যমে একটি রিজার্ভেশন বুক করে, তাই প্রাপ্যতা স্লট আর পাওয়া যায় না।
  • Google-এর মাধ্যমে করা একটি রিজার্ভেশন আপনার পক্ষ থেকে বাতিল করা হয়েছে, উদাহরণস্বরূপ, বণিক সরাসরি। আপনাকে বুকিংয়ের পাশাপাশি উপলব্ধতা আপডেট করতে হবে, কারণ আসল স্লট এখন আবার উপলব্ধ।
  • একটি বুকিং সার্ভার BatchAvailabilityLookup কল রিটার্ন করে এমন ইনভেন্টরি যা প্রকৃত ইনভেন্টরির সাথে মেলে না।

আরও তথ্যের জন্য, নিম্নলিখিত সংস্থানগুলি পড়ুন:

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

বুকিং নোটিফিকেশন এপিআই বিদ্যমান বুকিংগুলির আপডেট সম্পর্কে Google কে অবহিত করে৷ আপনি যখন বাতিলকরণ সম্পর্কে একটি আপডেট পাঠান, তখন updateMask ক্যোয়ারী প্যারামিটার সহ অনুরোধে শুধুমাত্র প্রয়োজনীয় তথ্য পাঠান। এখানে একটি উদাহরণ:

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

API অ্যাক্সেস করা হচ্ছে

একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

একটি পরিষেবা অ্যাকাউন্ট তৈরি করতে Google API কনসোলে শংসাপত্র ট্যাবটি ব্যবহার করুন৷ JSON ফরম্যাটে ব্যক্তিগত কী একটি নিরাপদ স্থানে সংরক্ষণ করুন। আপনি যখন অ্যাকাউন্ট তৈরি করেন, আপনার কাছে "মালিক" হিসাবে ভূমিকা সেট করার বিকল্প থাকে।

মানচিত্র বুকিং API গুলিকে প্রমাণীকরণ করুন৷

একটি পরিষেবা অ্যাকাউন্ট তৈরি করার পরে, নিম্নলিখিত APIগুলি প্রমাণীকরণ করুন:

  • গুগল ম্যাপ বুকিং এপিআই
  • Google Maps বুকিং API (Dev)

কীভাবে এটি করতে হয় তার একটি ধাপে ধাপে নির্দেশিকা পেতে, মানচিত্র বুকিং API টিউটোরিয়ালের সাথে প্রমাণীকরণটি পড়ুন।

RESTful কল ব্যবহার করুন বা ক্লায়েন্ট লাইব্রেরি ডাউনলোড করুন

আমরা সুপারিশ করি যে আপনি JSON পেলোড সহ Maps Booking API-এ সরাসরি RESTful কল করুন৷ আরও তথ্যের জন্য, REST API ডকুমেন্টেশন দেখুন।

আপনি API এর সাথে সংযোগ করতে ক্লায়েন্ট লাইব্রেরিগুলিও ব্যবহার করতে পারেন।

ভাষা ডাউনলোড লিঙ্ক
জাভা জাভা ক্লায়েন্ট লাইব্রেরি । আরও তথ্যের জন্য, Java ক্লায়েন্ট নির্দেশাবলী দেখুন।

অতিরিক্ত সমর্থন লাইব্রেরিগুলি ডাউনলোডের জন্য উপলব্ধ যা অনুমোদন এবং Google API-তে কলের অন্যান্য দিকগুলি পরিচালনা করে৷ প্রয়োজনে এই নমুনাগুলো দেখে নিন।

আবিষ্কার নথি আনুন

কিছু ক্লায়েন্ট লাইব্রেরির জন্য, যেমন রুবি, API-এর জন্য ডিসকভারি ডকুমেন্ট আনতে হবে, যা এর পদ্ধতি এবং পরামিতি বর্ণনা করে।

ডিসকভারি ডকুমেন্ট আনতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

curl -s -o 'mapsbooking_rest' 'https://mapsbooking.googleapis.com/$discovery/rest?version=v1alpha'

রুবি থেকে API অ্যাক্সেস করার বিষয়ে আরও তথ্যের জন্য, এই লিঙ্কগুলি অনুসরণ করুন: Ruby API ক্লায়েন্ট এবং Ruby Auth Library

API এ অনুমোদিত কল করুন

আপনি যখন API-তে কল করেন, তখন আপনার ব্যক্তিগত কী এবং নিম্নলিখিত OAuth স্কোপের সাহায্যে আপনার পরিষেবা অ্যাকাউন্ট অনুমোদন করতে একটি অনুমোদিত API কল করার প্রস্তুতি দেখুন: https://www.googleapis.com/auth/mapsbooking

API কোটা

API আপডেটে প্রতি 60 সেকেন্ডে 1,500টি অনুরোধের কোটা বা গড়ে প্রতি সেকেন্ডে 25টি অনুরোধ থাকে। যখন একটি কোটা অতিক্রম করা হয় (যা হতে পারে যখন আপনি আপনার অংশীদার পোর্টালে সঠিক Google ক্লাউড প্রকল্প নম্বর যোগ করেননি), Google নিম্নলিখিত ত্রুটি বার্তার সাথে প্রতিক্রিয়া জানায়:

{
  "error": {
    "code": 429,
    "message": "Insufficient tokens for quota ...",
    "status": "RESOURCE_EXHAUSTED",
    "details": [...]
  }
}

এটি পরিচালনা করতে, এটি সফল না হওয়া পর্যন্ত দ্রুতগতিতে বড় বিরতিতে কলটি আবার চেষ্টা করুন। আপনি যদি নিয়মিতভাবে ReplaceServiceAvailability দিয়ে কোটা শেষ করেন, তাহলে API কলের সংখ্যা কমাতে BatchReplaceServiceAvailabily এ স্যুইচ করুন। এই পদ্ধতিটি আপনাকে একক API কলে একাধিক পরিষেবা আপডেট করতে দেয়।

স্যান্ডবক্স এবং উত্পাদনের শেষ পয়েন্ট

আপনি API এর মাধ্যমে স্যান্ডবক্স এবং উত্পাদন পরিবেশ উভয়েই কল করতে পারেন। আপনি আপনার Google ক্লাউড প্রকল্পে উভয় API সক্রিয় করেছেন তা নিশ্চিত করুন৷ এই উভয় এপিআই একই সুযোগ ব্যবহার করে, কিন্তু তাদের আলাদা শেষ পয়েন্ট রয়েছে।

উত্পাদনের শেষ পয়েন্ট: https://mapsbooking.googleapis.com/

স্যান্ডবক্স এন্ডপয়েন্ট: https://partnerdev-mapsbooking.googleapis.com/

কিভাবে এন্ডপয়েন্ট স্যুইচ করতে হয় তার জাভাতে একটি উদাহরণ নিচে দেওয়া হল:

    // This block of code is for OAuth and is the same for prod and sandbox.
    GoogleCredential
      .fromStream(new FileInputStream(...))
      .createScoped(Collections.singleton("https://www.googleapis.com/auth/mapsbooking"))

    // This block of code sets the endpoint. This is what you'd change to connect to the sandbox.
    new GoogleMapsBookingAPI.Builder(...)
      .setApplicationName(...)
      .setRootUrl("https://partnerdev-mapsbooking.googleapis.com/") // you add this to change the endpoint to use partnerdev.
      .build()