স্থানীয় পরিপূর্ণতা

লোকাল হোম এসডিকে (Local Home SDK) স্মার্ট হোম ইন্টেন্টগুলোকে রাউট করার জন্য একটি লোকাল ফুলফিলমেন্ট পাথ যোগ করে গুগল অ্যাসিস্ট্যান্টের সাথে আপনার স্মার্ট হোম ইন্টিগ্রেশনকে আরও উন্নত করে।

লোকাল হোম এসডিকে দুটি সক্ষমতা প্রদান করে: লোকাল এক্সিকিউশন এবং লোকাল কোয়েরি।

  • ক্লাউড এপিআই কল করার পরিবর্তে, লোকাল এক্সিকিউশন স্থানীয় ফুলফিলমেন্ট পাথের মাধ্যমে EXEC ইন্টেন্ট পাঠিয়ে কমান্ড সম্পন্ন করার সুবিধা দেয়। উদাহরণস্বরূপ, 'আলো জ্বালান' অনুরোধটি লোকাল এক্সিকিউশনের মাধ্যমে পরিচালনা করা যেতে পারে।
  • লোকাল কোয়েরি স্থানীয় ফুলফিলমেন্ট পাথের মাধ্যমে QUERY ইন্টেন্ট পাঠিয়ে ডিভাইসের অবস্থা সম্পর্কিত কোয়েরি পরিচালনা করার ক্ষমতা প্রদান করে। উদাহরণস্বরূপ, লোকাল কোয়েরি কোনো ক্লাউড এপিআই কল না করেই 'আমার লাইট কি জ্বলছে?' এই কোয়েরিটি পূরণ করতে পারে।

এই SDK আপনাকে TypeScript বা JavaScript ব্যবহার করে একটি লোকাল ফুলফিলমেন্ট অ্যাপ লিখতে দেয়, যাতে আপনার স্মার্ট হোম ব্যবসার লজিক থাকে। Google Home বা Google Nest ডিভাইসগুলো ডিভাইসেই আপনার অ্যাপটি লোড ও রান করতে পারে। আপনার অ্যাপটি বিদ্যমান প্রোটোকল ব্যবহার করে, একটি লোকাল এরিয়া নেটওয়ার্ক (LAN)-এর মাধ্যমে Wi-Fi দ্বারা আপনার বিদ্যমান স্মার্ট ডিভাইসগুলোর সাথে সরাসরি যোগাযোগ করে ব্যবহারকারীর কমান্ডগুলো সম্পন্ন করে।

এসডিকে-এর সংযোজন আপনার Cloud-to-cloud ইন্টিগ্রেশনের কর্মক্ষমতা উন্নত করে, যার মধ্যে রয়েছে কম ল্যাটেন্সি এবং উচ্চতর নির্ভরযোগ্যতা। সেকেন্ডারি ইউজার ভেরিফিকেশন ব্যবহারকারী ডিভাইসগুলো ছাড়া অন্য সব ধরনের ডিভাইস এবং ডিভাইসের বৈশিষ্ট্যের জন্য লোকাল ফুলফিলমেন্ট সমর্থিত।

নির্মাণ শুরু করুন, নমুনাটি চেষ্টা করে দেখুন।

এটি কীভাবে কাজ করে তা বুঝুন

আপনার ক্লাউড ফুলফিলমেন্ট থেকে SYNC রেসপন্স পাওয়ার পর, লোকাল হোম প্ল্যাটফর্মটি অ্যাসিস্ট্যান্টের সাথে সংযুক্ত স্মার্ট ডিভাইসগুলো খুঁজে বের করার জন্য mDNS, UDP ব্রডকাস্ট বা UPnP ব্যবহার করে ব্যবহারকারীর লোকাল এরিয়া নেটওয়ার্ক স্ক্যান করে।

প্ল্যাটফর্মটি ডিভাইসটি স্থানীয়ভাবে নিয়ন্ত্রণযোগ্য কিনা তা নির্ধারণ করতে একটি IDENTIFY ইন্টেন্ট পাঠায়। এটি পূর্ববর্তী SYNC রেসপন্স থেকে প্রাপ্ত ডিভাইস আইডিগুলোর সাথে IDENTIFY রেসপন্সে থাকা ডিভাইস আইডি তুলনা করে। যদি শনাক্তকৃত ডিভাইসটি একটি হাব বা ব্রিজ হয়, তবে প্ল্যাটফর্মটি একটি REACHABLE_DEVICES ইন্টেন্ট পাঠায় এবং স্থানীয়ভাবে যোগাযোগের জন্য হাবটিকে প্রক্সি ডিভাইস হিসেবে ব্যবহার করে।

যখন প্ল্যাটফর্মটি কোনো স্থানীয় ডিভাইস নিশ্চিত করার সাড়া পায়, তখন এটি ব্যবহারকারীর গুগল হোম বা গুগল নেস্ট ডিভাইসে একটি স্থানীয় ফুলফিলমেন্ট পাথ স্থাপন করে এবং পরবর্তীতে স্থানীয় ফুলফিলমেন্টের জন্য ব্যবহারকারীর কমান্ডগুলো প্রেরণ করে।

যখন কোনো ব্যবহারকারী এমন একটি Cloud-to-cloud ইন্টিগ্রেশন চালু করেন যার একটি লোকাল ফুলফিলমেন্ট পাথ রয়েছে, তখন অ্যাসিস্ট্যান্ট ক্লাউড ফুলফিলমেন্টের পরিবর্তে গুগল হোম বা গুগল নেস্ট ডিভাইসে EXECUTE ইন্টেন্ট অথবা QUERY ইন্টেন্ট পাঠায়। এরপর ডিভাইসটি ইন্টেন্টটি প্রসেস করার জন্য লোকাল ফুলফিলমেন্ট অ্যাপটি চালায়।

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

কোন গুগল হোম বা গুগল নেস্ট ডিভাইস থেকে কমান্ডটি ট্রিগার করা হবে, তা বেছে নেওয়ার ক্ষেত্রে লোকাল হোম প্ল্যাটফর্মটি অনির্দিষ্ট। EXECUTE এবং QUERY ইন্টেন্টগুলো টার্গেট ডিভাইসের মতো একই হোম গ্রাফ কাঠামোতে সংজ্ঞায়িত যেকোনো গুগল হোম বা গুগল নেস্ট ডিভাইসের মাধ্যমে আসতে পারে।

স্থানীয় পরিপূর্ণতা অ্যাপ

লোকাল ফুলফিলমেন্ট অ্যাপটিতে লোকাল হোম প্ল্যাটফর্ম দ্বারা প্রেরিত ইনটেন্টগুলো প্রসেস করার এবং লোকাল এরিয়া নেটওয়ার্কের মাধ্যমে আপনার স্মার্ট ডিভাইস অ্যাক্সেস করার বিজনেস লজিক থাকে। লোকাল ফুলফিলমেন্ট ইন্টিগ্রেট করার জন্য আপনার হার্ডওয়্যারে কোনো পরিবর্তনের প্রয়োজন নেই। অ্যাপটি HTTP, TCP, বা UDP সহ অ্যাপ্লিকেশন-লেয়ার প্রোটোকলের মাধ্যমে স্মার্ট ডিভাইসে কন্ট্রোল কমান্ড পাঠিয়ে Cloud-to-cloud ইন্টিগ্রেশন অনুরোধগুলো পূরণ করে। যদি লোকাল ফুলফিলমেন্ট পাথটি ব্যর্থ হয়, তবে আপনার ক্লাউড ফুলফিলমেন্ট একটি ফলব্যাক এক্সিকিউশন পাথ হিসাবে ব্যবহৃত হয়।

অ্যাপটি তৈরিতে সহায়তা করার জন্য, লোকাল হোম এসডিকে এই দুটি প্রধান ক্লাস প্রদান করে:

  • DeviceManager : TCP, UDP সকেট বা HTTP অনুরোধ ব্যবহার করে স্মার্ট ডিভাইসের সাথে যোগাযোগের পদ্ধতি প্রদান করে।
  • App : স্থানীয়ভাবে নিয়ন্ত্রণযোগ্য ডিভাইসগুলি খুঁজে পাওয়ার পর Google যে ইন্টেন্টগুলি পাঠায় ( IDENTIFY , REACHABLE_DEVICES ), সেগুলির জন্য হ্যান্ডলার সংযুক্ত করার পদ্ধতি প্রদান করে। এই ক্লাসটি ব্যবহারকারীর কমান্ডও পালন করে ( EXECUTE ), এবং ডিভাইসের বর্তমান অবস্থা সম্পর্কে ব্যবহারকারীর প্রশ্নের উত্তর দেয় ( QUERY )।

ডেভেলপমেন্টের সময়, আপনি আপনার নিজস্ব হোস্টিং সার্ভার বা লোকাল ডেভেলপমেন্ট মেশিনে অ্যাপটি লোড করে বিল্ড ও টেস্ট করতে পারেন। প্রোডাকশনের সময়, গুগল ব্যবহারকারীর গুগল হোম বা গুগল নেস্ট ডিভাইসে একটি সুরক্ষিত জাভাস্ক্রিপ্ট স্যান্ডবক্স পরিবেশে আপনার অ্যাপটি হোস্ট করে।

রিপোর্ট স্টেট এপিআই বর্তমানে লোকাল ফুলফিলমেন্টের জন্য সমর্থিত নয়। এই অনুরোধগুলি প্রক্রিয়া করার জন্য গুগল আপনার ক্লাউড ফুলফিলমেন্টের উপর নির্ভর করে।

অ্যাপ্লিকেশন জীবনচক্র

যখন লোকাল হোম প্ল্যাটফর্ম প্রজেক্ট স্ক্যান কনফিগারেশনের সাথে মেলে এমন নতুন স্থানীয় ডিভাইস খুঁজে পায়, অথবা পূর্বে শনাক্ত করা কোনো ডিভাইসের সাথে সম্পর্কিত ডেলিভারির জন্য অপেক্ষমাণ অভিপ্রায় থাকে, তখন আপনার স্থানীয় ফুলফিলমেন্ট অ্যাপটি চাহিদা অনুযায়ী লোড হয়।

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

যখন ব্যবহারকারী তাদের অ্যাকাউন্ট আনলিঙ্ক করেন অথবা ব্যবহারকারীর agentUserId সাথে যুক্ত লোকাল ফুলফিলমেন্ট সমর্থন করে এমন কোনো ডিভাইস আর অবশিষ্ট থাকে না, তখন লোকাল হোম প্ল্যাটফর্ম একটি নির্দিষ্ট সময় পর্যন্ত নিষ্ক্রিয় থাকার পর আপনার অ্যাপটি আনলোড করে দেয়।

সমর্থিত ডিভাইস

লোকাল হোম প্ল্যাটফর্ম সমর্থিত গুগল হোম বা গুগল নেস্ট ডিভাইসগুলিতে আপনার লোকাল ফুলফিলমেন্ট অ্যাপটি চালায়। নিম্নলিখিত সারণীতে সমর্থিত ডিভাইসগুলি এবং প্রতিটি ডিভাইসে ব্যবহৃত রানটাইম বর্ণনা করা হয়েছে। রানটাইমের প্রয়োজনীয়তা সম্পর্কে আরও জানতে, এক্সিকিউশন এনভায়রনমেন্ট দেখুন।

ডিভাইস প্রকার পরিবেশ
গুগল হোম বক্তা ক্রোম
গুগল হোম মিনি বক্তা ক্রোম
গুগল হোম ম্যাক্স বক্তা ক্রোম
নেস্ট মিনি বক্তা ক্রোম
নেস্ট হাব প্রদর্শন ক্রোম
নেস্ট হাব ম্যাক্স প্রদর্শন ক্রোম
নেস্ট ওয়াইফাই রাউটার নোড.জেএস
পয়েন্ট ক্রোম

কার্যকর করার পরিবেশ

আপনার লোকাল ফুলফিলমেন্ট অ্যাপের এক্সিকিউশন এনভায়রনমেন্ট আপনার ডিভাইসের উপর নির্ভর করে। লোকাল হোম প্ল্যাটফর্ম নিম্নলিখিত রানটাইম এনভায়রনমেন্টগুলো সমর্থন করে:

সোর্স কোড কাঠামো

আমরা সুপারিশ করি যে, লোকাল হোম এসডিকে (Local Home SDK) দ্বারা প্রদত্ত বান্ডলার কনফিগারেশন ব্যবহার করে আপনার ডিপেন্ডেন্সিগুলোকে একটিমাত্র জাভাস্ক্রিপ্ট ফাইলে বান্ডল করুন এবং আপনার সোর্স কোডকে একটি ইমিডিয়েটলি-ইনভোকড ফাংশন এক্সপ্রেশন (IIFE) হিসেবে প্যাকেজ করুন।

বাস্তবায়ন পথ

আপনার স্মার্ট হোম ইন্টিগ্রেশনের জন্য লোকাল হোম এসডিকে ব্যবহার করতে, আপনাকে এই কাজগুলো সম্পাদন করতে হবে:

স্ক্যান কনফিগারেশন সেট আপ করুন অ্যাসিস্ট্যান্ট যাতে স্থানীয়ভাবে নিয়ন্ত্রণযোগ্য ডিভাইসগুলো খুঁজে বের করতে পারে, তার জন্য প্রয়োজনীয় প্যারামিটারগুলো দিয়ে Google Home Developer Console কনফিগার করুন।
আপনার ক্লাউড ফুলফিলমেন্টে SYNC প্রতিক্রিয়া আপডেট করুন আপনার ক্লাউড ফুলফিলমেন্টে, SYNC রিকোয়েস্ট হ্যান্ডলারটি পরিবর্তন করে otherDeviceIds ফিল্ডটিকে সাপোর্ট করান, যা প্ল্যাটফর্মটি একটি লোকাল ফুলফিলমেন্ট পাথ স্থাপন করতে ব্যবহার করে। ঐ ফিল্ডে, স্থানীয়ভাবে নিয়ন্ত্রণযোগ্য ডিভাইসগুলোর আইডি উল্লেখ করুন।
স্থানীয় ফুলফিলমেন্ট অ্যাপটি বাস্তবায়ন করুন IDENTIFY , EXECUTE , এবং QUERY ইন্টেন্টগুলো হ্যান্ডেল করার জন্য লোকাল হোম এসডিকে ব্যবহার করে একটি জাভাস্ক্রিপ্ট অ্যাপ তৈরি করুন। হাব বা ব্রিজ প্রক্সি ডিভাইসগুলোর জন্য, আপনার REACHABLE_DEVICES ইন্টেন্টটিও হ্যান্ডেল করা উচিত।
আপনার অ্যাপ পরীক্ষা ও ডিবাগ করুন Google Home Test Suite ব্যবহার করে আপনার ইন্টিগ্রেশন পরীক্ষা করুন (বা স্ব-প্রত্যয়ন করুন )।

শুরু করার আগে