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

গুগল অ্যাসিস্ট্যান্টের সাথে প্রোডাকশন কোয়ালিটির ইন্টিগ্রেশন তৈরি করার জন্য ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশনের ডিবাগিং টুলগুলো শেখা একটি গুরুত্বপূর্ণ পদক্ষেপ। সহজ মনিটরিং এবং ডিবাগিংয়ের সুবিধার্থে, আপনার ইন্টিগ্রেশনগুলোর সমস্যা শনাক্ত ও সমাধান করতে সাহায্য করার জন্য গুগল ক্লাউড প্ল্যাটফর্ম (GCP)-এর মেট্রিক্স অ্যান্ড লগিং এবং স্মার্ট হোমের জন্য টেস্ট স্যুট উপলব্ধ রয়েছে।
পূর্বশর্ত
- ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশন ডেভেলপার গাইড তৈরি করুন পড়ুন
- স্মার্ট হোম ডিভাইসগুলিকে গুগল অ্যাসিস্ট্যান্ট কোডল্যাবে সংযুক্ত করুন।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আপনি ২টি ত্রুটিসহ একটি ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশন ডেপ্লয় করবেন এবং এটিকে অ্যাসিস্ট্যান্টের সাথে সংযুক্ত করবেন। এরপর, স্মার্ট হোমের জন্য টেস্ট স্যুট এবং গুগল ক্লাউড প্ল্যাটফর্ম (GCP)-এর মেট্রিক্স ও লগিং ব্যবহার করে ইন্টিগ্রেশনটির ত্রুটিগুলো ডিবাগ করবেন।
আপনি যা শিখবেন
- প্রোডাকশন সমস্যা শনাক্ত ও সমাধান করতে GCP মেট্রিক্স এবং লগিং কীভাবে ব্যবহার করবেন
- স্মার্ট হোমের ফাংশনাল এবং এপিআই সমস্যা শনাক্ত করতে টেস্ট স্যুট কীভাবে ব্যবহার করবেন
আপনার যা যা লাগবে
- একটি ওয়েব ব্রাউজার, যেমন গুগল ক্রোম
- গুগল হোম অ্যাপ ইনস্টল করা একটি iOS বা Android ডিভাইস
- Node.js সংস্করণ ২৪ বা তার পরবর্তী
- একটি গুগল ক্লাউড বিলিং অ্যাকাউন্ট
২. ত্রুটিপূর্ণ অ্যাপটি চালান
সোর্স কোডটি নিন
আপনার ডেভেলপমেন্ট মেশিনে এই কোডল্যাবের নমুনাটি ডাউনলোড করতে নিচের লিঙ্কে ক্লিক করুন:
...অথবা আপনি কমান্ড লাইন থেকে গিটহাব রিপোজিটরিটি ক্লোন করতে পারেন:
$ git clone https://github.com/google-home/smarthome-debug.git
প্রকল্পটি সম্পর্কে
ওয়াশার অ্যাপটিতে নিম্নলিখিত সাবডিরেক্টরিগুলো রয়েছে:
-
public: স্মার্ট ওয়াশারের অবস্থা সহজে নিয়ন্ত্রণ ও পর্যবেক্ষণ করার জন্য একটি ফ্রন্টএন্ড ইউআই। -
functions: একটি সম্পূর্ণরূপে বাস্তবায়িত ক্লাউড পরিষেবা যা ক্লাউড ফাংশনস ফর ফায়ারবেস এবং ফায়ারবেস রিয়েলটাইম ডেটাবেস ব্যবহার করে স্মার্ট ওয়াশারটি পরিচালনা করে।
ফায়ারবেসের সাথে সংযোগ করুন
আপনার ডেভেলপমেন্ট মেশিনে টার্মিনাল খুলুন। washer-faulty ডিরেক্টরিতে যান, তারপর Connect smart home devices to the Google Assistant কোডল্যাবে তৈরি আপনার ইন্টিগ্রেশন প্রজেক্ট দিয়ে Firebase CLI সেট আপ করুন।
$ cd washer-faulty $ firebase use <firebase-project-id>
ফায়ারবেসে স্থাপন করুন
functions ফোল্ডারে যান এবং npm.
$ cd functions $ npm install
দ্রষ্টব্য: আপনি যদি নীচের বার্তাটি দেখতে পান, তবে আপনি এটি উপেক্ষা করে এগিয়ে যেতে পারেন। এই সতর্কতাটি কিছু পুরোনো নির্ভরতার কারণে দেখা দিয়েছে এবং আপনি এখানে আরও বিস্তারিত জানতে পারবেন।
found 5 high severity vulnerabilities run `npm audit fix` to fix them, or `npm audit` for details
এখন যেহেতু আপনি ডিপেন্ডেন্সিগুলো ইনস্টল করে আপনার প্রজেক্ট কনফিগার করেছেন, আপনি ত্রুটিপূর্ণ ওয়াশার অ্যাপটি ডিপ্লয় করার জন্য প্রস্তুত।
$ firebase deploy
কনসোল আউটপুটটি আপনি দেখতে পাবেন:
... ✔ Deploy complete! Project Console: https://console.firebase.google.com/project/<Firebase-project-id>/overview Hosting URL: https://<Firebase-project-id>.firebaseapp.com
হোমগ্রাফ আপডেট করুন
ওয়েব অ্যাপটি দেখার জন্য আপনার ব্রাউজারে হোস্টিং ইউআরএল ( https://<firebase-project-id>.firebaseapp.com ) খুলুন। ওয়েব ইউআই-তে, রিফ্রেশ- এ ক্লিক করুন।
Request Sync ব্যবহার করে ত্রুটিপূর্ণ ওয়াশার অ্যাপ থেকে সর্বশেষ ডিভাইস মেটাডেটা দিয়ে HomeGraph আপডেট করার বাটন।

Google Home অ্যাপটি খুলুন এবং যাচাই করুন যে আপনি 'Faulty Washer' নামের ওয়াশার ডিভাইসটি দেখতে পাচ্ছেন কিনা।

৩. আপনার ইন্টিগ্রেশন পরীক্ষা করুন
আপনার প্রজেক্টটি ডেপ্লয় করার পর, পরীক্ষা করে দেখুন যে আপনার ইন্টিগ্রেশনটি ওয়াশারটিকে নিয়ন্ত্রণ করছে কিনা।
ওয়াশারটি পরীক্ষা করুন
আপনার ফোনের মাধ্যমে নিম্নলিখিত ভয়েস কমান্ডগুলির যেকোনো একটি ব্যবহার করে মানের পরিবর্তনটি পরীক্ষা করুন:
"হে গুগল, আমার ওয়াশারটা চালু করো।"
"হে গুগল, আমার ওয়াশারটা চালু করো।"
"হে গুগল, আমার ওয়াশারটা থামাও।"
"হে গুগল, আমার ওয়াশারটি আবার চালু করো।"
"হে গুগল, আমার ওয়াশারটা বন্ধ করো।"
আপনি লক্ষ্য করবেন, ওয়াশারটি পজ বা রিজুম করার সময় অ্যাসিস্ট্যান্ট ভয়েসের মাধ্যমে জানায় যে কিছু একটা সমস্যা হয়েছে।
দুঃখিত, আমি <প্রকল্পের প্রদর্শিত নাম>-এর সাথে যোগাযোগ করতে পারিনি।
এই সমস্যাটি ডিবাগ করার জন্য, এর মূল কারণটি চিহ্নিত ও শনাক্ত করতে প্রথমে ত্রুটিটি সম্পর্কে আরও তথ্যের প্রয়োজন।
স্মার্টহোম অ্যানালিটিক্স ড্যাশবোর্ড
ত্রুটিগুলো খতিয়ে দেখার জন্য একটি ভালো জায়গা হলো স্মার্টহোম অ্যানালিটিক্স ড্যাশবোর্ড , যা আপনার ক্লাউড ফুলফিলমেন্টের জন্য ব্যবহার (Usage) এবং স্বাস্থ্য (Health) মেট্রিক্সের চার্ট একত্রিত করে।
- ব্যবহারের মেট্রিক্স আপনার ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশনের ব্যবহারের প্রবণতা প্রতিফলিত করে, যার মধ্যে দৈনিক সক্রিয় ব্যবহারকারীর সংখ্যা এবং আপনার ফুলফিলমেন্টের জন্য মোট অনুরোধের সংখ্যা অন্তর্ভুক্ত রয়েছে।
- হেলথ মেট্রিক্স আপনাকে আপনার ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশনে অস্বাভাবিকতার ঘটনা নিরীক্ষণ করতে সাহায্য করে, যার মধ্যে রিকোয়েস্ট ল্যাটেন্সি, সফলতার শতাংশ এবং ত্রুটির বিস্তারিত বিবরণ অন্তর্ভুক্ত।
ত্রুটির কারণ নির্দিষ্ট করতে, প্রজেক্ট ড্যাশবোর্ডে প্রবেশ করার জন্য নিচের ধাপগুলো অনুসরণ করুন।
- ডেভেলপার কনসোলে , প্রজেক্টস পৃষ্ঠায় যান।
- আপনার স্মার্ট হোম প্রকল্পটি নির্বাচন করুন।
- বাম মেনুতে থাকা অ্যানালিটিক্স ট্যাবে ক্লিক করুন।

- এটি আপনাকে গুগল ক্লাউডে আপনার প্রোজেক্টের ড্যাশবোর্ডগুলোর একটি তালিকায় নিয়ে যাবে। গুগল হোম অ্যানালিটিক্স - ক্লাউড ইন্টিগ্রেশন ড্যাশবোর্ডটি নির্বাচন করুন।

- হাইলাইট করা সময়সীমার ত্রুটি কোডগুলো দেখতে, 'Cloud Fulfillment Errors - Status Breakdown ' চার্টটি পর্যন্ত স্ক্রল করুন।

PARTNER_RESPONSE_MISSING_DEVICE এরর কোডটি মূল কারণ সম্পর্কে একটি ইঙ্গিত দেয়। এরপর, আরও বিস্তারিত তথ্যের জন্য এরর কোডটির উপর ভিত্তি করে ইভেন্ট লগগুলো সংগ্রহ করুন।
ইভেন্ট লগ অ্যাক্সেস করুন
ত্রুটি সম্পর্কে আরও বিস্তারিত জানতে, ক্লাউড লগিং ব্যবহার করে আপনার ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশনের ইভেন্ট লগগুলো দেখুন।
গুগল ক্লাউড প্ল্যাটফর্মে নেভিগেশন মেনু খুলুন এবং Operations-এর অধীনে Logging > Logs Explorer নির্বাচন করে আপনার প্রোজেক্টের ইভেন্ট লগগুলো অ্যাক্সেস করুন। বিকল্পভাবে, আপনি সার্চ বক্সে Logs Explorer লিখে সার্চ করতে পারেন।
'Search all fields' ইনপুট ফিল্ডে PARTNER_RESPONSE_MISSING_DEVICE কোয়েরিটি লিখুন এবং 'Run Query'-তে ক্লিক করুন। কোয়েরির সাথে মিলে যাওয়া লগগুলো 'Results' বিভাগে প্রদর্শিত হবে।

এরর লগে একটি স্মার্ট হোম ইভেন্ট দেখা যাচ্ছে, যার এররের বিবরণ নিম্নরূপ:
- ব্যবহারকারীর গৃহীত পদক্ষেপটি হলো "ওয়াশার পুনরায় চালু করা" (
actionType:"STARTSTOP_UNPAUSE"), যা সাম্প্রতিক ব্যর্থ ভয়েস কমান্ডের সাথে সঙ্গতিপূর্ণ। - সংশ্লিষ্ট ডিবাগিং বার্তাটি হলো "
JSON response does not include device."
ডিবাগিং বার্তার উপর ভিত্তি করে, আপনার খতিয়ে দেখা উচিত কেন ওয়াশার অ্যাপটি EXECUTE রেসপন্সে সঠিক ডিভাইসটি অন্তর্ভুক্ত করছে না।
ত্রুটির মূল কারণ শনাক্ত করুন
functions/index.js ফাইলে, EXECUTE হ্যান্ডলারটি ( onExecute অ্যারের মধ্যে) খুঁজুন, যেটি প্রতিটি কমান্ডের স্ট্যাটাস এবং নতুন ডিভাইসের অবস্থা রিটার্ন করে। একটি EXECUTE রেসপন্সে ডিভাইস আইডি যুক্ত হওয়া updateDevice ফাংশনের রিজলভিং-এর উপর নির্ভর করে:
index.js
app.onExecute(async (body) => {
...
for (const command of intent.payload.commands) {
for (const device of command.devices) {
for (const execution of command.execution) {
executePromises.push(
updateDevice(execution, device.id)
.then((data) => {
result.ids.push(device.id);
Object.assign(result.states, data);
})
.catch((e) =>
functions.logger.error('EXECUTE',
device.id, e.message)));
}
}
}
আরও পরীক্ষা করে দেখুন updateDevice ফাংশনটি ওয়াশারে পজ / রিজুম কীভাবে পরিচালনা করে, এবং আপনি দেখতে পাবেন যে পজ / রিজুম কমান্ডের জন্য মেলানোর স্ট্রিংটি ভুল:
index.js
const updateDevice = async (execution, deviceId) => {
const {params, command} = execution;
let state; let ref;
switch (command) {
...
case 'action.devices.commands.PauseUnpausePause':
const data = await queryDevice(deviceId);
state = (data.isPaused === false && data.isRunning === false)
? {isRunning: false, isPaused: false}
: {isRunning: !params.pause, isPaused: params.pause};
ref = getFirebaseRef().child(deviceId).child('StartStop');
break;
}
return ref.update(state)
.then(() => state);
};
ত্রুটিটি সংশোধন করুন
এখন যেহেতু আপনি ত্রুটির মূল কারণটি শনাক্ত করেছেন, আপনি পজ / রিজুম কমান্ডের জন্য স্ট্রিংটি সংশোধন করতে পারেন:
index.js
const updateDevice = async (execution, deviceId) => {
const {params, command} = execution;
let state; let ref;
switch (command) {
...
case 'action.devices.commands.PauseUnpause':
const data = await queryDevice(deviceId);
state = (data.isPaused === false && data.isRunning === false)
? {isRunning: false, isPaused: false}
: {isRunning: !params.pause, isPaused: params.pause};
ref = getFirebaseRef().child(deviceId).child('StartStop');
break;
}
return ref.update(state)
.then(() => state);
};
আপনার সমাধান পরীক্ষা করুন
Firebase CLI ব্যবহার করে আপডেট করা কোডটি ডিপ্লয় করুন:
firebase deploy --only functions
নিচের ভয়েস কমান্ডগুলো আবার চেষ্টা করুন, এবং আপনি দেখবেন যে ওয়াশারটি পজ বা রিজুম করলে অ্যাসিস্ট্যান্ট এখন সঠিকভাবে সাড়া দিচ্ছে।
"হে গুগল, আমার ওয়াশারটা থামাও।"
=>
অবশ্যই, ওয়াশারটা থামানো হচ্ছে।
"হে গুগল, আমার ওয়াশারটি আবার চালু করো।"
=>
বুঝেছি, ওয়াশারটি আবার চালু করছি।
প্রশ্ন করার মাধ্যমেও আপনি আপনার ওয়াশারের বর্তমান অবস্থা যাচাই করতে পারেন।
"হে গুগল, আমার ওয়াশারটা কি চালু আছে?"
গুগল, আমার ওয়াশারটা কি চলছে?
"হে গুগল, আমার ওয়াশারটি কোন সাইকেলে চলছে?"
৪. টেস্ট স্যুটের মাধ্যমে আপনার ইন্টিগ্রেশন পরীক্ষা করুন।
ম্যানুয়ালি পরীক্ষা করার পাশাপাশি, আপনি আপনার ইন্টিগ্রেশনের সাথে যুক্ত ডিভাইসের ধরন এবং বৈশিষ্ট্যের উপর ভিত্তি করে ইউজ কেসগুলো যাচাই করতে স্মার্ট হোমের জন্য স্বয়ংক্রিয় টেস্ট স্যুট ব্যবহার করতে পারেন। এই টেস্ট স্যুটটি আপনার ইন্টিগ্রেশনের সমস্যা শনাক্ত করার জন্য একাধিক পরীক্ষা চালায় এবং ইভেন্ট লগে প্রবেশ করার আগে আপনার ডিবাগিং প্রক্রিয়াকে দ্রুততর করতে ব্যর্থ টেস্ট কেসগুলোর জন্য তথ্যপূর্ণ বার্তা দেখায়।
স্মার্ট হোমের জন্য টেস্ট স্যুট চালান
টেস্ট স্যুটের মাধ্যমে আপনার ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশন পরীক্ষা করতে এই নির্দেশাবলী অনুসরণ করুন:
- আপনার ওয়েব ব্রাউজারে স্মার্ট হোমের টেস্ট স্যুটটি খুলুন।
- উপরের ডান কোণায় থাকা বাটনটি ব্যবহার করে গুগলে সাইন ইন করুন। এর ফলে টেস্ট স্যুটটি সরাসরি গুগল অ্যাসিস্ট্যান্টের কাছে কমান্ডগুলো পাঠাতে পারবে।
- প্রজেক্ট আইডি ফিল্ডে আপনার ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশনের প্রজেক্ট আইডিটি লিখুন। এরপর এগিয়ে যেতে NEXT বাটনে ক্লিক করুন।
- টেস্ট সেটিংস ধাপে, আপনি টেস্ট স্যুটে ওয়াশারটির ডিভাইসের ধরন এবং বৈশিষ্ট্যগুলির তালিকা দেখতে পাবেন।

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

আপনার ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশনের ব্যর্থতা ডিবাগ করার জন্য, আপনাকে প্রথমে এরর মেসেজটি বিশ্লেষণ করে ত্রুটির মূল কারণ শনাক্ত করতে হবে।
ত্রুটির বার্তা বিশ্লেষণ করুন
ডেভেলপারদের মূল কারণ শনাক্ত করতে সাহায্য করার জন্য, টেস্ট স্যুট প্রতিটি ব্যর্থ টেস্ট কেসের জন্য ত্রুটির বার্তা প্রদর্শন করে, যা ব্যর্থতার কারণ নির্দেশ করে।
উপরের প্রথম ব্যর্থ টেস্ট কেসটির ক্ষেত্রে,

এর ত্রুটি বার্তা অনুযায়ী, টেস্ট স্যুট আপনার ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশন থেকে রিপোর্ট করা স্টেটগুলোতে "isPause": true আশা করে, কিন্তু প্রকৃত স্টেটগুলোতে কেবল "isPause": false রয়েছে।
এছাড়াও, দ্বিতীয় ব্যর্থ টেস্ট কেসের ত্রুটি বার্তাটি নির্দেশ করে যে আপনার ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশন থেকে প্রাপ্ত QUERY প্রতিক্রিয়ার স্টেটগুলির মধ্যে "isPause": true অন্তর্ভুক্ত রয়েছে, যা আপনার ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশন থেকে রিপোর্ট করা স্টেটগুলির "isPause": false থেকে ভিন্ন।

উভয় এরর মেসেজ অনুযায়ী, আপনার ইন্টিগ্রেশন রিপোর্টের স্টেট ' isPaused সঠিক ভ্যালু দিয়ে আছে কিনা, তা আপনাকে চেক করতে হবে।
ত্রুটির মূল কারণ শনাক্ত করুন
functions/index.js খুলুন, যেখানে reportstate ফাংশনটি রয়েছে, যা রিপোর্ট স্টেট ব্যবহার করে হোম গ্রাফে স্টেটের পরিবর্তনগুলো পোস্ট করে। রিপোর্ট স্টেট পেলোডটি পরীক্ষা করে দেখুন, আপনি দেখতে পাবেন যে পেলোডটিতে isPaused স্টেটটি নেই, অথচ টেস্ট স্যুটটি ব্যর্থ টেস্ট কেসগুলোতে ঠিক এই স্টেটটিই খুঁজেছিল।
index.js
exports.reportstate = functions.database.ref('{deviceId}').onWrite(
async (change, context) => {
...
const requestBody = {
requestId: 'ff36a3cc', /* Any unique ID */
agentUserId: USER_ID,
payload: {
devices: {
states: {
/* Report the current state of our washer */
[context.params.deviceId]: {
online: snapshot.online,
on: snapshot.OnOff.on,
isRunning: snapshot.StartStop.isRunning,
currentRunCycle: [{
currentCycle: 'rinse',
nextCycle: 'spin',
lang: 'en',
}],
currentTotalRemainingTime: 1212,
currentCycleRemainingTime: 301,
},
},
},
},
};
const res = await homegraph.devices.reportStateAndNotification({
requestBody,
});
...
});
ত্রুটিটি সংশোধন করুন
এখন যেহেতু আপনি ত্রুটির মূল কারণটি শনাক্ত করেছেন, `Report State` পেলোডে isPaused স্টেটটি যোগ করে functions/index.js সংশোধন করুন:
index.js
exports.reportstate = functions.database.ref('{deviceId}').onWrite(
async (change, context) => {
...
const requestBody = {
requestId: 'ff36a3cc', /* Any unique ID */
agentUserId: USER_ID,
payload: {
devices: {
states: {
/* Report the current state of our washer */
[context.params.deviceId]: {
online: snapshot.online,
on: snapshot.OnOff.on,
isPaused: snapshot.StartStop.isPaused,
isRunning: snapshot.StartStop.isRunning,
currentRunCycle: [{
currentCycle: 'rinse',
nextCycle: 'spin',
lang: 'en',
}],
currentTotalRemainingTime: 1212,
currentCycleRemainingTime: 301,
},
},
},
},
};
...
});
আপনার সমাধান পরীক্ষা করুন
Firebase CLI ব্যবহার করে আপডেট করা কোডটি ডিপ্লয় করুন:
$ firebase deploy --only functions
স্মার্ট হোমের জন্য টেস্ট স্যুটটি পুনরায় চালান, এবং আপনি দেখতে পাবেন যে সমস্ত টেস্ট কেস পাস হয়েছে।

৫. অভিনন্দন

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