স্থানীয় ফুলফিলমেন্ট

Local Home SDK, স্মার্ট হোম ইনটেন্ট-এর রুটে একটি লোকাল ফুলফিলমেন্ট পাথ যোগ করে Google Assistant-এর সাথে আপনার স্মার্ট হোম জুড়ে দেওয়ার কাজটি উন্নত করে।

Local Home SDK দুটি সুবিধা প্রদান করে: লোকাল এক্সিকিউশন ও লোকাল কোয়েরি।

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

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

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

তৈরি করা শুরু করুন স্যাম্পেল ব্যবহার করে দেখুন

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

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

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

স্থানীয় ডিভাইস কনফার্ম করার উত্তর পেলে, প্ল্যাটফর্মটি ব্যবহারকারীর Google Home বা Google Nest ডিভাইসে স্থানীয় ফুলফিলমেন্ট পাথ তৈরি করে এবং পরে স্থানীয় ফুলফিলমেন্টের জন্য ব্যবহারকারীর কমান্ড রুট করে।

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

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

কোন Google Home বা Google Nest ডিভাইস কমান্ড ট্রিগার করবে তা বেছে নেওয়ার ক্ষেত্রে Local Home প্ল্যাটফর্ম নির্ধারক নয়। EXECUTE এবং QUERY ইনটেন্ট যেকোনও Google Home বা Google Nest ডিভাইস থেকে আসতে পারে যা টার্গেট ডিভাইসের মতো একই Home Graph স্ট্রাকচারে সংজ্ঞায়িত করা হয়েছে।

স্থানীয় ফুলফিলমেন্ট অ্যাপ

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

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

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

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

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

অ্যাপ্লিকেশন লাইফসাইকেল

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

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

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

যেসব ডিভাইসে এটি দেখা যাবে

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

ডিভাইস ধরন পরিবেশ
Google Home স্পিকার Chrome
Google Home Mini স্পিকার Chrome
Google Home Max স্পিকার Chrome
Nest Mini স্পিকার Chrome
Nest Hub ডিসপ্লে Chrome
Nest Hub Max ডিসপ্লে Chrome
Nest Wifi রাউটার Node.js
পয়েন্ট Chrome

এক্সিকিউশন এনভায়রনমেন্ট

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

  • Chrome: আপনার লোকাল ফুলফিলমেন্ট অ্যাপ Chrome ব্রাউজারের window কনটেক্সটের মধ্যে এক্সিকিউট করা হয়, যা Chrome M80 বা তার পরবর্তী ভার্সনে চলে এবং ECMAScript ভার্সন ES2018-এর সাথে কাজ করে।
  • Node.js: আপনার লোকাল ফুলফিলমেন্ট অ্যাপ, Node.js প্রসেসের মধ্যে স্ক্রিপ্ট হিসেবে এক্সিকিউট করা হয়, যা Node v10.x LTS বা তার পরবর্তী ভার্সনে চলে এবং ECMAScript ভার্সন ES2018-এর সাথে কাজ করে।

সোর্স কোড স্ট্রাকচার

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

প্রয়োগ করার পাথ

আপনার স্মার্ট হোম ইন্টিগ্রেশনের জন্য Local Home SDK ব্যবহার করতে, আপনাকে এইসব টাস্ক সম্পূর্ণ করতে হবে:

১ স্ক্যান কনফিগারেশন সেট-আপ করুন Assistant যাতে স্থানীয়ভাবে নিয়ন্ত্রণযোগ্য ডিভাইস খুঁজে পায়, তার জন্য প্রয়োজনীয় প্যারামিটার সহ Google Home Developer Console কনফিগার করুন।
২ আপনার ক্লাউড ফুলফিলমেন্টে সিঙ্ক সম্পর্কিত উত্তর আপডেট করুন আপনার ক্লাউড ফুলফিলমেন্টে, SYNC রিকোয়েস্ট হ্যান্ডলারকে পরিবর্তন করুন যাতে এটি otherDeviceIds ফিল্ডকে সাপোর্ট করে, যা প্ল্যাটফর্মটি একটি লোকাল ফুলফিলমেন্ট পাথ তৈরি করতে ব্যবহার করে। সেই ফিল্ডে, স্থানীয়ভাবে নিয়ন্ত্রণ করা যাবে এমন ডিভাইসের আইডি উল্লেখ করুন।
৩ স্থানীয় ফুলফিলমেন্ট অ্যাপ প্রয়োগ করুন Local Home SDK ব্যবহার করে জাভাস্ক্রিপ্ট অ্যাপ তৈরি করুন যাতে IDENTIFY, EXECUTE ও QUERY ইনটেন্ট ম্যানেজ করা যায়। হাব বা ব্রিজ প্রক্সি ডিভাইসের জন্য, আপনাকে REACHABLE_DEVICES ইনটেন্টও ম্যানেজ করতে হবে।
৪ আপনার অ্যাপ টেস্ট ও ডিবাগ করুন Google Home টেস্ট স্যুট ব্যবহার করে আপনার ইন্টিগ্রেশন পরীক্ষা করুন (বা সেল্ফ-সার্টিফাই করুন)।

শুরু করার আগে