Report State হল একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা Google Home অ্যাকশনকে ব্যবহারকারীর ডিভাইসের সর্বশেষ স্থিতিকে Google Home Graph ফেরত রিপোর্ট করতে দেয়, QUERY উদ্দেশ্যের জন্য অপেক্ষা না করে।
Report State তাদের সাথে যুক্ত নির্দিষ্ট agentUserId সহ ব্যবহারকারী ডিভাইসগুলির অবস্থা Google-কে রিপোর্ট করে (মূল SYNC অনুরোধে পাঠানো হয়েছে)। যখন Google Assistant এমন একটি পদক্ষেপ নিতে চায় যার জন্য একটি ডিভাইসের বর্তমান অবস্থা বোঝার প্রয়োজন হয়, তখন এটি EXECUTE অভিপ্রায় ইস্যু করার আগে বিভিন্ন তৃতীয় পক্ষের ক্লাউডকে একটি QUERY অভিপ্রায় ইস্যু করার পরিবর্তে Home Graph রাজ্যের তথ্য দেখতে পারে৷
Report State ব্যতীত, একটি লিভিং রুমে একাধিক প্রদানকারীর কাছ থেকে আলো দেওয়া, Ok Google, কমান্ড আমার লিভিং রুম উজ্জ্বল করার জন্য একাধিক ক্লাউডে পাঠানো একাধিক QUERY ইন্টেন্টের সমাধান করা প্রয়োজন, যা পূর্বে রিপোর্ট করা হয়েছে তার উপর ভিত্তি করে কেবল বর্তমান উজ্জ্বলতার মানগুলি সন্ধান করার বিপরীতে৷ সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য, ডিভাইসে রাউন্ড-ট্রিপের প্রয়োজন ছাড়াই Assistant ডিভাইসের বর্তমান অবস্থা থাকতে হবে।
একটি ডিভাইসের জন্য প্রাথমিক SYNC অনুসরণ করে, প্ল্যাটফর্মটি একটি QUERY উদ্দেশ্য পাঠায় যা Home Graph পপুলেট করার জন্য ডিভাইসের অবস্থা সংগ্রহ করে। সেই বিন্দুর পরে, Home Graph শুধুমাত্র সেই স্টেট সঞ্চয় করে যা Report State সাথে পাঠানো হয়।
Report State কল করার সময়, প্রদত্ত বৈশিষ্ট্যের জন্য সম্পূর্ণ রাজ্য ডেটা প্রদান নিশ্চিত করুন। Home Graph প্রতি-বৈশিষ্ট্যের ভিত্তিতে রাজ্যগুলিকে আপডেট করে এবং যখন একটি Report State কল করা হয় তখন সেই বৈশিষ্ট্যের জন্য সমস্ত ডেটা ওভাররাইট করে৷ উদাহরণস্বরূপ, যদি আপনি স্টার্টস্টপ বৈশিষ্ট্যের জন্য রিপোর্ট করছেন, পেলোডে isRunning এবং isPaused উভয়ের মান অন্তর্ভুক্ত করতে হবে।
শুরু করুন
Report State বাস্তবায়ন করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
Google HomeGraph API সক্ষম করুন
Google Cloud Console , HomeGraph API পৃষ্ঠাতে যান।
HomeGraph API পৃষ্ঠায় যান- আপনার smart home প্রোজেক্ট আইডির সাথে মেলে এমন প্রজেক্ট নির্বাচন করুন।
- ENABLE এ ক্লিক করুন।
একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করুন
Google Cloud Console থেকে একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করতে এই নির্দেশাবলী অনুসরণ করুন:
Google Cloud Console , পরিষেবা অ্যাকাউন্ট পৃষ্ঠাতে যান৷
পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যান ।আপনাকে পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় নিয়ে যাওয়ার আগে আপনাকে একটি প্রকল্প নির্বাচন করতে হতে পারে৷
পরিষেবা অ্যাকাউন্ট তৈরি করুন ক্লিক করুন।
পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
পরিষেবা অ্যাকাউন্টের বিবরণ ক্ষেত্রে, একটি বিবরণ লিখুন।
তৈরি করুন এবং চালিয়ে যান ক্লিক করুন।
ভূমিকা ড্রপডাউন থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট OpenID কানেক্ট আইডেন্টিটি টোকেন ক্রিয়েটর নির্বাচন করুন।
অবিরত ক্লিক করুন.
সম্পন্ন ক্লিক করুন.
পরিষেবা অ্যাকাউন্টের তালিকা থেকে আপনি যে পরিষেবা অ্যাকাউন্টটি তৈরি করেছেন তা নির্বাচন করুন এবং অ্যাকশন মেনু থেকে কী পরিচালনা করুন নির্বাচন করুন।
কী যোগ করুন > নতুন কী তৈরি করুন নির্বাচন করুন।
কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।
তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷
API কল করুন
নীচের ট্যাব থেকে একটি বিকল্প নির্বাচন করুন:
HTTP
Home Graph একটি HTTP এন্ডপয়েন্ট প্রদান করে
- একটি JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করুন। আরও তথ্যের জন্য, একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
- oauth2l ব্যবহার করে
https://www.googleapis.com/auth/homegraphস্কোপের সাথে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান: agentUserIdদিয়ে JSON অনুরোধ তৈরি করুন। প্রতিবেদনের অবস্থা এবং বিজ্ঞপ্তির জন্য এখানে একটি নমুনা JSON অনুরোধ রয়েছে:- রিপোর্ট স্টেট এবং নোটিফিকেশন JSON এবং আপনার HTTP POST অনুরোধে Google Home Graph এন্ডপয়েন্টে টোকেন একত্রিত করুন। একটি পরীক্ষা হিসাবে
curlব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করা যায় তার একটি উদাহরণ এখানে রয়েছে:
oauth2l fetch --credentials service-account.json \ --scope https://www.googleapis.com/auth/homegraph
{ "requestId": "123ABC", "agentUserId": "user-123", "payload": { "devices": { "states": { "light-123": { "on": true } } } } }
curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d @request-body.json \ "https://homegraph.googleapis.com/v1/devices:reportStateAndNotification"
gRPC
Home Graph একটি gRPC শেষ পয়েন্ট প্রদান করে
- হোম গ্রাফ API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
- সমর্থিত ভাষার একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC বিকাশকারী ডকুমেন্টেশন অনুসরণ করুন।
- ReportStateAndNotification পদ্ধতিতে কল করুন।
Node.js
Google APIs Node.js ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
google.homegraphপরিষেবা শুরু করুন। -
reportStateAndNotificationসহ reportStateAndNotification পদ্ধতিতে কল করুন। এটি ReportStateAndNotificationResponse-এর সাথে একটিPromiseপ্রদান করে।
const homegraphClient = homegraph({ version: 'v1', auth: new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/homegraph' }) }); const res = await homegraphClient.devices.reportStateAndNotification({ requestBody: { agentUserId: 'PLACEHOLDER-USER-ID', requestId: 'PLACEHOLDER-REQUEST-ID', payload: { devices: { states: { "PLACEHOLDER-DEVICE-ID": { on: true } } } } } });
জাভা
জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি হোম গ্রাফ API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে
HomeGraphApiServiceআরম্ভ করুন। -
reportStateAndNotificationসহReportStateAndNotificationRequestপদ্ধতিতে কল করুন। এটি একটিReportStateAndNotificationResponseপ্রদান করে।
// Get Application Default credentials. GoogleCredentials credentials = GoogleCredentials.getApplicationDefault() .createScoped(List.of("https://www.googleapis.com/auth/homegraph")); // Create Home Graph service client. HomeGraphService homegraphService = new HomeGraphService.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), new HttpCredentialsAdapter(credentials)) .setApplicationName("HomeGraphExample/1.0") .build(); // Build device state payload. Map<?, ?> states = Map.of("on", true); // Report device state. ReportStateAndNotificationRequest request = new ReportStateAndNotificationRequest() .setRequestId("PLACEHOLDER-REQUEST-ID") .setAgentUserId("PLACEHOLDER-USER-ID") .setPayload( new StateAndNotificationPayload() .setDevices( new ReportStateAndNotificationDevice() .setStates(Map.of("PLACEHOLDER-DEVICE-ID", states)))); homegraphService.devices().reportStateAndNotification(request); }
টেস্ট রিপোর্ট স্টেট
আপনার Cloud-to-cloud ইন্টিগ্রেশন সার্টিফিকেশনের জন্য প্রস্তুত করার জন্য, Report State পরীক্ষা করা গুরুত্বপূর্ণ।
এটি করার জন্য, আমরা Home Graph ভিউয়ার টুল ব্যবহার করার পরামর্শ দিই, যা একটি স্বতন্ত্র ওয়েব অ্যাপ যার ডাউনলোড বা স্থাপনার প্রয়োজন নেই।
Report State ড্যাশবোর্ড এখনও উপলব্ধ, কিন্তু অবমূল্যায়িত এবং আর সমর্থিত নয়৷
রিপোর্ট রাজ্য ড্যাশবোর্ড
পূর্বশর্ত
আপনার Cloud-to-cloud ইন্টিগ্রেশন পরীক্ষা করতে সক্ষম হওয়ার আগে, আপনার পরিষেবা অ্যাকাউন্ট কী এবং আপনার agentUserId প্রয়োজন। আপনার যদি ইতিমধ্যেই আপনার পরিষেবা অ্যাকাউন্ট কী এবং agentUserId থাকে তাহলে Report State ড্যাশবোর্ড স্থাপন করুন দেখুন।
রিপোর্ট স্টেট ড্যাশবোর্ড স্থাপন করুন
আপনার প্রোজেক্টের জন্য সার্ভিস অ্যাকাউন্ট কী এবং এজেন্ট ইউজার আইডি হয়ে গেলে, Report State ড্যাশবোর্ড থেকে সর্বশেষ সংস্করণ ডাউনলোড করুন এবং স্থাপন করুন। আপনি সর্বশেষ সংস্করণটি ডাউনলোড করার পরে, অন্তর্ভুক্ত README.MD ফাইল থেকে নির্দেশাবলী অনুসরণ করুন৷
আপনি Report State ড্যাশবোর্ড স্থাপন করার পরে, নিম্নলিখিত URL থেকে ড্যাশবোর্ড অ্যাক্সেস করুন (আপনার প্রকল্প আইডি দিয়ে your_project_id প্রতিস্থাপন করুন):
http://<your-project-id>.appspot.com
ড্যাশবোর্ডে, নিম্নলিখিতগুলি করুন:
- আপনার অ্যাকাউন্ট কী ফাইল নির্বাচন করুন
- আপনার এজেন্ট ইউজারআইডি যোগ করুন
তারপর, তালিকা ক্লিক করুন.
আপনার ডিভাইস সব তালিকাভুক্ত করা হয়. একবার তালিকাটি জনবহুল হয়ে গেলে, আপনি ডিভাইসের অবস্থা আপডেট করতে রিফ্রেশ বোতামটি ব্যবহার করতে পারেন। ডিভাইসের অবস্থার পরিবর্তন হলে, সারিটি সবুজ রঙে হাইলাইট করা হয়।
রিপোর্ট রাষ্ট্র অসঙ্গতি
ক্যোয়ারী-ভিত্তিক প্রতিবেদনের অবস্থার নির্ভুলতা পরিমাপ করে যে কোনো ডিভাইসের জন্য সর্বশেষ প্রতিবেদনের অবস্থা কতটা ভালোভাবে মেলে ডিভাইসটির অবস্থার সাথে যখন কোনো ব্যবহারকারী প্রশ্ন করে। এই মান 99.5% হবে বলে আশা করা হচ্ছে।
ত্রুটি প্রতিক্রিয়া
Report State কল করার সময় আপনি নিম্নলিখিত ত্রুটি প্রতিক্রিয়াগুলির মধ্যে একটি পেতে পারেন। এই প্রতিক্রিয়াগুলি HTTP স্ট্যাটাস কোডের আকারে আসে।
-
400 Bad Request- অবৈধ সিনট্যাক্সের কারণে সার্ভার ক্লায়েন্টের পাঠানো অনুরোধ প্রক্রিয়া করতে অক্ষম ছিল। সাধারণ কারণগুলির মধ্যে রয়েছে বিকৃত JSON বা স্ট্রিং মানের জন্য "" এর পরিবর্তেnullব্যবহার করা। -
404 Not Found- অনুরোধ করা সম্পদ খুঁজে পাওয়া যায়নি কিন্তু ভবিষ্যতে উপলব্ধ হতে পারে. সাধারণত, এর মানে হল যে আমরা অনুরোধ করা ডিভাইসটি খুঁজে পাচ্ছি না। এর মানে এমনও হতে পারে যে ব্যবহারকারীর অ্যাকাউন্টটি Google-এর সাথে লিঙ্ক করা হয়নি বা আমরা একটি অবৈধagentUserIdপেয়েছি। নিশ্চিত করুন যেagentUserIdআপনার SYNC প্রতিক্রিয়াতে প্রদত্ত মানের সাথে মেলে এবং আপনি সঠিকভাবে সংযোগ বিচ্ছিন্ন করার উদ্দেশ্য পরিচালনা করছেন৷
অনলাইন এবং অফলাইন রাষ্ট্র রিপোর্টিং
যখন একটি ডিভাইস অফলাইনে থাকে, তখন আপনার রিপোর্ট করা উচিত ডিভাইসের আচরণের পাঁচ মিনিটের মধ্যে স্টেট রিপোর্ট করতে। বিপরীতভাবে, যখন একটি ডিভাইস একটি অনলাইন অবস্থায় ফিরে আসে, তখন আপনার রিপোর্ট করা উচিত ডিভাইসের আচরণের পাঁচ মিনিটের মধ্যে স্টেট রিপোর্ট করতে। যখনই একটি ডিভাইস অনলাইনে ফিরে আসে, তখন অংশীদারকে reportStateAndNotification API ব্যবহার করে বর্তমান ডিভাইসের সমস্ত অবস্থার রিপোর্ট করতে হবে। এই উদাহরণটি দেখায় যে একটি light ডিভাইসের ধরন অনলাইন, এবং সমস্ত বর্তমান ডিভাইসের অবস্থা রিপোর্ট করে। "requestId": "test-request-id",
"agentUserId": "agent-user-1",
"payload":{
"devices": {
"states": {
"device-id-1": {
"brightness": 65,
"on": true,
"online": true
}
"notifications": {},
}
}
}
