সাধারণ
আমাদের ক্লাউড-টু-ক্লাউড ফুলফিলমেন্ট পরিকাঠামোটি কোথায় এবং কোন ভাষায় বাস্তবায়ন করা উচিত?
যতক্ষণ পর্যন্ত এটি আধুনিক SSL (TLS) এবং OAuth 2.0 সমর্থন করে, ততক্ষণ আপনি আপনার পরিকাঠামোটি যেকোনো প্ল্যাটফর্মে এবং আপনার পছন্দের যেকোনো ভাষায় বাস্তবায়ন করতে পারেন। আমরা সুপারিশ করি যে আপনি এটিকে আপনার পরিকাঠামোর বাকি অংশের যতটা সম্ভব কাছাকাছি স্থাপন করুন, যাতে নির্ভরযোগ্যতা বাড়ে এবং প্রকৃত ব্যবহারকারীর ডিভাইসে কার্যকর হওয়ার বিলম্ব কমে।
ডিভাইস আইডিগুলো কি অনন্য হতে হবে?
আইডিগুলো অনন্য হওয়া উচিত। আপনার পরিষেবা জুড়ে যদি অনন্য আইডি না থাকে, তবে অন্তত ব্যবহারকারী-ভিত্তিক আইডিগুলো অবশ্যই অনন্য হতে হবে। ধরুন , একজন ব্যবহারকারীর একাধিক বাড়ি আছে এবং উভয় বাড়িতেই একই ব্যবহারকারীর ইন্টিগ্রেশন রয়েছে। একটি বাড়িতে লাইট জ্বালানোর অনুরোধ করলে, অন্য বাড়ির একই আইডির লাইটটি জ্বলে ওঠা উচিত নয়।
ডিভাইসের নামগুলো কি অনন্য হতে হবে?
নামগুলো অনন্য হতে হবে এমন কোনো বাধ্যবাধকতা নেই, তবে সময়ের সাথে সাথে উন্নত ব্যবহারকারী অভিজ্ঞতার জন্য আমরা সেটআপের পরে খারাপ নামকরণ উন্নত করতে উৎসাহিত করতে পারি।
নামকরণের একটি সংক্ষিপ্ত নির্দেশিকা এখানে দেওয়া হলো:
- নাম এমন হওয়া উচিত যা মানুষ সহজে উচ্চারণ করতে পারে।
- আমরা স্ট্রিং-এর উপসেটগুলিও শনাক্ত করতে পারি, তাই আপনার কাছে 'acme color light' থাকলে আমরা 'acme light'-এর ক্ষেত্রেও সাড়া দেব।
- আমরা পণ্যের জন্য একটি বর্ণনামূলক নামের পাশাপাশি ব্যবহারকারী-নির্ধারিত এক বা একাধিক নামকেও উৎসাহিত করি।
- ব্যবহারকারীদের লাইটগুলোর রুমের নাম দেওয়ার প্রয়োজন নেই, কারণ তার জন্য আমাদের রুম রয়েছে; প্রতিটি রুমের জন্য সেগুলোর স্বতন্ত্র নাম থাকা উচিত, কিন্তু সবকিছু কমান্ড করার জন্য সর্বদা বহুবচন ব্যবহার করা যাবে (উদাহরণস্বরূপ, অফিসের স্কন্স লাইটের দুটি বাল্বের নাম 'উত্তরের আলো' এবং 'পূর্বের আলো', কিন্তু সেগুলোকে শুধু 'লাইট' হিসেবেও কমান্ড করা যাবে)।
ডিভাইসের অবস্থা কত ঘন ঘন আপডেট করা হয়?
QUERY বা EXECUTE-এর মাধ্যমে ক্ষণস্থায়ী অবস্থা জানা যায়, যা ব্যবহারকারী দ্বারা শুরু করা কাজ। যদি ব্যবহারকারী জিজ্ঞাসা করেন 'আলোটা কি জ্বলছে?', অথবা কোনো আলোর উজ্জ্বলতা বাড়াতে চান, তাহলে বর্তমান অবস্থা জানার জন্য আমাদের একটি কোয়েরি করতে হবে।
কোনো ডিভাইসের বর্তমান অবস্থা দিয়ে সরাসরি হোম গ্রাফ আপডেট করা কি সম্ভব?
এ: হ্যাঁ, Report State এপিআই কলটি ব্যবহার করুন।
অ্যাকাউন্ট লিঙ্কিং এবং OAuth
আমাদের কি অ্যাকাউন্ট লিঙ্ক করার প্রয়োজন আছে?
এ: হ্যাঁ, ব্যবহারকারীর ডিভাইসগুলোকে প্রোভাইডারের ক্লাউড সার্ভিসের সাথে সংযুক্ত করার জন্য অ্যাকাউন্ট লিঙ্ক করা আবশ্যক।
OAuth- এর ক্ষেত্রে আমরা প্রতি ১৫.২১৩ ঘণ্টা পর অ্যাক্সেস টোকেনের মেয়াদ শেষ করে দিই, এটা কি ঠিক আছে?
হ্যাঁ , তবে অনুগ্রহ করে বেশ কম মেয়াদের টোকেন দিয়ে পরীক্ষা করুন, যেমন ১০-২০ মিনিট। আমাদের OAuth ক্লায়েন্ট প্রয়োজন অনুযায়ী টোকেন রিফ্রেশ করবে, এবং কম মেয়াদের টোকেন দিয়ে পরীক্ষা করলে প্রমাণিত হবে যে সেটি সঠিকভাবে কাজ করছে।
অভিপ্রায়
প্রশ্ন: SYNC কখন ঘটে?
A: OAuth সম্পন্ন হওয়ার ঠিক পরেই এবং একটি Request Sync কল করার পর SYNC ঘটে।
প্রশ্ন: SYNC কাজ করছে না কেন?
এটি ব্যর্থ হওয়ার বেশ কিছু সাধারণ কারণ রয়েছে ।
আপনি ভুল ধরনের ডিভাইস পাঠাচ্ছেন।
- উদাহরণস্বরূপ, আমরা
action.devices.types.LIGHTআশা করি, কিন্তু আপনিaction.devices.types.Lightপাঠিয়েছেন।
- উদাহরণস্বরূপ, আমরা
আপনি অসমর্থিত ডিভাইসের ধরন পাঠাচ্ছেন।
- উদাহরণস্বরূপ, আপনি
action.devices.types.FLASHLIGHTপাঠালেন – এটি এমন একটি বিষয় যা আমরা সমর্থন করি না।
- উদাহরণস্বরূপ, আপনি
আপনি অবৈধ/অসমর্থিত ফিল্ড পাঠাচ্ছেন।
- উদাহরণস্বরূপ, আপনার এমন একটি ফিল্ড আছে যা আমাদের স্পেসিফিকেশনে নেই।
আপনার SYNC রেসপন্সে আরও কিছু ফরম্যাটিং সমস্যা আছে।
- আপনার বন্ধনীগুলো পরীক্ষা করুন!
আপনি অ্যাকাউন্ট লিঙ্ক করার সমস্যায় পড়েছেন।
- অনুগ্রহ করে যাচাই করুন যে আপনি SYNC অনুরোধের Auth হেডারে একটি বৈধ অ্যাক্সেস টোকেন পাচ্ছেন।
আপনি SYNC অনুরোধটির উত্তর দিতে অনেক বেশি সময় নিচ্ছেন।
- অনুগ্রহ করে নিশ্চিত করুন যে আপনি ৫ সেকেন্ডের মধ্যে SYNC অনুরোধে সাড়া দিচ্ছেন।
প্রশ্ন: “অপেক্ষমান” উত্তর কি গ্রহণযোগ্য?
আপনার ডিভাইসগুলো যদি রিয়েল টাইমে উপলব্ধ থাকে, তবে আমরা ' পেন্ডিং'-এর পরিবর্তে একটি সফল/ব্যর্থ প্রতিক্রিয়াকেই বেশি পছন্দ করব। আপনার যদি 'পেন্ডিং' প্রতিক্রিয়ার প্রয়োজন হয়, তবে অনুগ্রহ করে আমাদের সাথে যোগাযোগ করুন — আমরা জানি যে কিছু কম-পাওয়ারের, নন-রিয়েল-টাইম ডিভাইসের জন্য পেন্ডিং প্রতিক্রিয়া এবং অ্যাসিঙ্ক্রোনাস এক্সিকিউশন মডেলের প্রয়োজন হতে পারে।
পরীক্ষা এবং জমা
আমরা কি একটি ডেভেলপমেন্ট ক্লাউড এনভায়রনমেন্ট সেট আপ করতে পারি?
এ: হ্যাঁ, আপনি চালু না করা ক্লাউড পরিবেশ এবং কনফিগারেশন পরীক্ষা করতে পারেন।
প্রশ্ন: গুগল হোম অ্যাপের হোম কন্ট্রোল বিভাগে আমার অ্যাকশনটি দেখা যাচ্ছে না। কী হচ্ছে?
এ: নিশ্চিত করুন যে আপনি এই প্রকল্পের একজন ডেভেলপার।
রিপোর্ট অবস্থা
রিপোর্ট স্টেট বাস্তবায়নের জন্য কোনো পূর্বশর্ত আছে কি ?
এ: প্রজেক্টটিতে স্মার্ট হোম এপিআই ব্যবহার করতে হবে, OAuth2 সাপোর্ট থাকতে হবে এবং এমন ট্রেইট থাকতে হবে যেগুলোর রিপোর্ট করার মতো স্টেট (অবস্থা) রয়েছে।
প্রশ্ন: আমাদের কত ঘন ঘন একটি ডিভাইসের অবস্থা রিপোর্ট করতে হবে?
এ: গুগল ট্রানজিশন এবং টার্মিনাল স্টেট উভয় বিষয়েই আগ্রহী। তবে, যদি অল্প সময়ের মধ্যে অনেকবার স্টেট পরিবর্তন হয় (উদাহরণস্বরূপ, একজন ব্যবহারকারী এক মিনিটে তিনবার ফ্রিজ খোলে ও বন্ধ করে অথবা ডিমার স্লাইড করে), তাহলে আমাদের শুধু চূড়ান্ত স্টেটটি রিপোর্ট করলেই চলবে।
রিপোর্ট স্টেট কল করার সময় কি ডিভাইসের সম্পূর্ণ অবস্থা পাঠানোর প্রয়োজন আছে?
আংশিক স্টেট আপডেট সমর্থিত নয়, তাই Report State কলে আপডেট হওয়া কোনো নির্দিষ্ট ট্রেইটের সমস্ত ডেটা অন্তর্ভুক্ত করা উচিত। যদি দুটি ট্রেইট কোনো অসামঞ্জস্য তৈরি করে, তবে সেগুলোকে একসাথে রিপোর্ট করা উচিত।
প্রশ্ন: গুগল কি আমার ডিভাইসের অবস্থা জানার জন্য কোয়েরি করতে পারে (অর্থাৎ, ডিভাইসটি পোল করতে পারে)?
এটি একটি ফলব্যাক ব্যবস্থা যা আমরা সুপারিশ করি না। যদি সেই ব্যবহারকারীদের জন্য আমাদের ঘন ঘন কোনো ডিভাইস পোল করার প্রয়োজন হয়, তবে অতিরিক্ত লোড কী হবে তা আমরা নিশ্চিত করতে পারি না। নতুন ভিজ্যুয়াল সারফেসগুলোর কারণেই এই প্রয়োজনটি দেখা দিয়েছে। অজানা লোডের সমস্যা ছাড়াও, এটি ব্যবহারকারীর অভিজ্ঞতাকে নিম্নমানের করে তুলবে। আমরা মনে করি যে প্ল্যাটফর্মের জন্য Report State অত্যন্ত গুরুত্বপূর্ণ।
প্রশ্ন: বর্তমানে কোন বৈশিষ্ট্যগুলো রিপোর্ট স্টেটকে সমর্থন করে?
যেসব পাবলিক ট্রেইটের সাথে স্টেট যুক্ত আছে, তার সবই সমর্থিত। ডিভাইসের অনলাইন স্টেটের যেকোনো পরিবর্তনও রিপোর্ট করা উচিত।
মনে রাখবেন যে সিন (Scene)-এর কোনো স্টেট (state) নেই। তবে, এগুলোর ফলে ডিভাইসগুলোর স্টেট পরিবর্তিত হতে পারে। Google Home Graph এ থাকা কোনো ডিভাইসের স্টেট পরিবর্তিত হলে, তা অবশ্যই রিপোর্ট করতে হবে।
প্রশ্ন: রিপোর্ট স্টেট কি টাইমস্ট্যাম্প পাঠানোর জন্য আবশ্যক?
এ: আমাদের টাইমস্ট্যাম্পের প্রয়োজন নেই; সর্বশেষ প্রেরিত অবস্থাটি পূর্ববর্তী কলগুলোকে বাতিল করে দেবে।
প্রশ্ন: আমি যদি ইতিমধ্যেই Query এবং/অথবা Execute-এ স্টেট পাঠিয়ে থাকি, তাহলে কি আমাকে আলাদাভাবে স্টেট রিপোর্ট করতে হবে?
হোম Home Graph শুধুমাত্র Report State এর মাধ্যমে পাঠানো স্টেটটিই সংরক্ষণ করে। EXECUTE এবং QUERY ইন্টেন্টের প্রতিক্রিয়া হিসাবে যে স্টেটটি ফেরত আসে, তা শুধুমাত্র ব্যবহারকারীকে স্পিচ রেসপন্স দেওয়ার জন্য ব্যবহৃত হয় এবং সংরক্ষণ করা হয় না। ফলে, যদি কোনো EXECUTE বা QUERY ইন্টেন্টের প্রতিক্রিয়া হিসাবে ডিভাইসের নতুন স্টেট ইতিমধ্যেই ফেরত এসে থাকে, তাহলেও Report State কল করা উচিত।
প্রশ্ন: নির্ধারিত সময়সীমার মধ্যে রিপোর্ট স্টেট সম্পূর্ণরূপে বাস্তবায়ন না করার পরিণতি কী?
এর ফলে ব্যবহারকারীর অভিজ্ঞতা খারাপ হবে, উদাহরণস্বরূপ Google Home app (GHA) এবং ভিজ্যুয়াল সারফেসে। এর মানে হলো , স্টেট পোল করার জন্য অনেক QUERY ইন্টেন্ট পাঠানো হবে এবং এর ফলে পার্টনার ক্লাউডের উপর কী পরিমাণ অতিরিক্ত লোড পড়বে, তা আমরা নিশ্চিত করে বলতে পারছি না।
আমি আমাদের রিপোর্ট স্টেট ইমপ্লিমেন্টেশন কীভাবে পরীক্ষা করতে পারি?
এ: হোম গ্রাফ ভিউয়ার ব্যবহার করুন - এটি একটি সেলফ-সার্ভিস টেস্টিং টুল যা আপনাকে Home Graph সংরক্ষিত আপনার ডিভাইসের বর্তমান অবস্থা দেখায়।
প্রশ্ন: আমরা কি রিপোর্ট স্টেটের জন্য একটি র্যান্ডম রিকোয়েস্টআইডি ব্যবহার করতে পারি?
এ: যদি Report State EXECUTE রিকোয়েস্টের মাধ্যমে ট্রিগার হয়, তাহলে পার্টনারদের EXECUTE রিকোয়েস্ট থেকে পাওয়া সেই একই requestId ব্যবহার করার পরামর্শ দেওয়া হয়; অন্যথায়, আপনি যেকোনো একটি র্যান্ডম requestId ব্যবহার করতে পারেন।
প্রশ্ন: যদি কোনো ব্যবহারকারীর একাধিক ডিভাইস থাকে এবং সেগুলোর মধ্যে কোনো একটির অবস্থা পরিবর্তিত হয়, তাহলে কি আমাদের সব ডিভাইসের সর্বশেষ অবস্থা জানাতে হবে?
না। আপনাকে শুধু ওই নির্দিষ্ট ডিভাইসটির অবস্থা জানাতে হবে।
সর্বোত্তম অনুশীলন
কী ধরনের লেটেন্সি গ্রহণযোগ্য?
এ: ১০০০ মিলিসেকেন্ডের কম হওয়া আদর্শ, ২ থেকে ৫ সেকেন্ডের মধ্যে হলে চলবে। যদি আপনার ল্যাটেন্সি ৫ সেকেন্ডের কাছাকাছি থাকে, তাহলে আমাদের সাথে যোগাযোগ করুন।
প্রশ্ন: আমার ভয়েস-অ্যাক্টিভেটেড স্পিকারটি অফলাইনে থাকা অবস্থায় কীভাবে সঠিকভাবে কাজ করাবো?
এ: অফলাইন ডিভাইসগুলির জন্য অফলাইন অবস্থা ফেরত দিন। এই ত্রুটির জন্য আমরা TTS হিসাবে 'এই মুহূর্তে উপলব্ধ নয়' ফেরত দিই। আরও তথ্যের জন্য, ত্রুটি এবং ব্যতিক্রম দেখুন।