Report State হল একটি গুরুত্বপূর্ণ ফিচার যা
Google Home অ্যাকশনকে QUERY ইনটেন্টের জন্য অপেক্ষা না করে
ব্যবহারকারীর ডিভাইসের লেটেস্ট স্ট্যাটাস Google Home Graph-এ প্রোঅ্যাক্টিভভাবে রিপোর্ট করতে
দেয়।
Report State Google-কে ব্যবহারকারীর ডিভাইসের স্ট্যাটাস সম্পর্কে রিপোর্ট করে
যার সাথে নির্দিষ্ট agentUserId যুক্ত থাকে (আসল 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 কল করা হলে সেই বৈশিষ্ট্যের সব ডেটা ওভাররাইট করে। যেমন, আপনি যদি StartStop ট্রেইটের জন্য
স্টেট রিপোর্ট করেন, তাহলে পেলোডে
isRunning এবং isPaused, দুটিরই ভ্যালু অন্তর্ভুক্ত করতে হবে।
শুরু করুন
Report State প্রয়োগ করতে, এই ধাপগুলি অনুসরণ করুন:
Google HomeGraph API চালু করা
-
Google Cloud Console-এ, HomeGraph API পৃষ্ঠায় যান।
HomeGraph API পৃষ্ঠায় যান - আপনার smart home প্রোজেক্ট আইডির সাথে মেলে এমন প্রোজেক্ট বেছে নিন।
- চালু করুন বিকল্পে ক্লিক করুন।
পরিষেবা অ্যাকাউন্টের 'কী' তৈরি করা
Google Cloud Console থেকে পরিষেবা অ্যাকাউন্টের 'কী' জেনারেট করতে এইসব নির্দেশাবলী অনুসরণ করুন:
-
Google Cloud Console-এ, পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যান।
পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যান।পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যাওয়ার আগে আপনাকে কোনও প্রোজেক্ট বেছে নিতে হতে পারে।
পরিষেবা অ্যাকাউন্ট তৈরি করুন বিকল্পে ক্লিক করুন।
পরিষেবা অ্যাকাউন্টের নাম ফিল্ডে, একটি নাম লিখুন।
পরিষেবা অ্যাকাউন্ট আইডি ফিল্ডে, একটি আইডি লিখুন।
পরিষেবা অ্যাকাউন্টের বিবরণ ফিল্ডে, একটি বিবরণ লিখুন।
তৈরি করুন ও চালিয়ে যান বিকল্পে ক্লিক করুন।
ভূমিকা ড্রপডাউন থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট OpenID Connect আইডেন্টিটি টোকেন ক্রিয়েটর বেছে নিন।
চালিয়ে যান বিকল্পে ক্লিক করুন।
হয়ে গেছে বিকল্পে ক্লিক করুন।
পরিষেবা অ্যাকাউন্টের তালিকা থেকে আপনি এইমাত্র যে পরিষেবা অ্যাকাউন্ট তৈরি করেছেন সেটি বেছে নিন এবং অ্যাকশন মেনু থেকে কী ম্যানেজ করুন বিকল্প বেছে নিন।
কী যোগ করুন > নতুন কী তৈরি করুন বিকল্প বেছে নিন।
কী-এর ধরন-এর জন্য, JSON বিকল্প বেছে নিন।
তৈরি করুন বিকল্পে ক্লিক করুন। আপনার কম্পিউটারে ডাউনলোড করা 'কী' সহ JSON ফাইল।
API কল করুন
নিচের ট্যাব থেকে একটি বিকল্প বেছে নিন:
HTTP
Home Graph একটি HTTP এন্ডপয়েন্ট প্রদান করে
- JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইল ব্যবহার করুন। আরও তথ্যের জন্য, সার্ভিস অ্যাকাউন্ট ব্যবহার করে যাচাইকরণ করা দেখুন।
- oauth2l ব্যবহার করে
https://www.googleapis.com/auth/homegraphস্কোপ সহ OAuth 2.0 অ্যাক্সেস টোকেন পান: agentUserId-এর সাহায্যে JSON অনুরোধ তৈরি করুন। রিপোর্ট স্টেট ও বিজ্ঞপ্তির জন্য JSON অনুরোধের নমুনা এখানে দেওয়া হল:- Google Home Graph এন্ডপয়েন্টে আপনার HTTP POST অনুরোধে রিপোর্ট স্টেট এবং বিজ্ঞপ্তি JSON এবং টোকেন একত্রিত করুন। এখানে একটি উদাহরণ দেওয়া হল যে কীভাবে
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 এন্ডপয়েন্ট প্রদান করে
- Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবার সংজ্ঞা পান।
- কাজ করে এমন ভাষার মধ্যে কোনও একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC ডেভেলপার ডকুমেন্টেশন ফলো করুন।
- ReportStateAndNotification মেথড কল করুন।
Node.js
Google APIs Node.js Client Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে
google.homegraphপরিষেবা শুরু করুন। - ReportStateAndNotificationRequest-এর সাথে
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 } } } } } });
Java
Java-র জন্য HomeGraph API ক্লায়েন্ট লাইব্রেরি Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।
- অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে
HomeGraphApiServiceশুরু করুন। ReportStateAndNotificationRequest-এর সাথেreportStateAndNotificationমেথড কল করুন। এটি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).execute(); }
পরীক্ষার রিপোর্ট স্টেট
সার্টিফিকেশনের জন্য আপনার Cloud-to-cloud ইন্টিগ্রেশন রেডি করতে, Report State টেস্ট করা গুরুত্বপূর্ণ।
এটি করার জন্য, আমরা Home Graph Viewer টুল ব্যবহার করার সাজেশন দিই, যা একটি স্ট্যান্ডঅ্যালোন ওয়েব অ্যাপ এবং এটি ডাউনলোড বা ডেপ্লয় করার প্রয়োজন হয় না।
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
ড্যাশবোর্ডে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
- আপনার অ্যাকাউন্ট কী ফাইল বেছে নিন
- আপনার agentUserId যোগ করুন
তারপর, তালিকা বিকল্পে ক্লিক করুন।
আপনার সব ডিভাইসের তালিকা দেখানো হয়েছে। তালিকাটি তৈরি হয়ে গেলে, আপনি রিফ্রেশ করুন বোতামটি ব্যবহার করে ডিভাইসের স্ট্যাটাস আপডেট করতে পারবেন। ডিভাইসের স্ট্যাটাসে কোনও পরিবর্তন হলে, সংশ্লিষ্ট সারিটি সবুজ রঙে হাইলাইট করা হয়।
রাজ্য সংক্রান্ত অসঙ্গতির বিষয়ে অভিযোগ জানান
কোয়েরি-ভিত্তিক রিপোর্ট স্টেট অ্যাকুরেসি পরিমাপ করে যে কোনও ডিভাইসের জন্য লেটেস্ট রিপোর্ট স্টেট কতটা ভালোভাবে ডিভাইসের স্ট্যাটাসের সাথে মেলে যখন কোনও ব্যবহারকারী এটির জন্য কোয়েরি করেন। এই ভ্যালু ৯৯.৫% হবে বলে আশা করা হচ্ছে। আপনার প্রোজেক্টের রিপোর্ট স্টেট অ্যাকুরেসি-এর বর্তমান স্ট্যাটাস সম্পর্কে আরও জানতে, ডিভাইস হেলথ - স্টেট অ্যাকুরেসি দেখুন। এছাড়াও, আপনি Logs Explorer থেকে স্টেট ডিসক্রিপেন্সি লগ রিপোর্ট করুন বিকল্পের বিবরণ দেখতে পারবেন।
রাজ্য সংক্রান্ত অমিল রিপোর্ট করার লগ-এর একটি উদাহরণ এখানে দেওয়া হল:
{
"insertId": "abcdefgh",
"jsonPayload": {
"reportStateLog": {
"result": "INACCURATE",
"detailedAccuracyResult": "DETAILED_ACCURACY_RESULT_INACCURATE",
"isOffline": false,
"queriedTime": "2026-01-17T03:22:01.732938Z",
"reportedTime": "2024-11-30T15:24:34.052751Z",
"agentId": "google-smart-home-agent-id-example",
"requestId": "84920571364829501736",
"queryReportStateDifferences": {
"queryState": "on_off \t {\n on: true\n}\n",
"reportState": "on_off \t {\n on: false\n}\n"
},
"traitName": "TRAIT_ON_OFF",
"snapshotTime": "2026-01-17T03:22:01.732938Z",
"isMissingField": false,
"deviceType": "action.devices.types.OUTLET",
"stateName": "on",
"deviceId": "sample-device-id",
"accuracy": "INACCURATE"
}
},
"resource": {
"type": "assistant_action_project",
"labels": {
"project_id": "google-smart-home-agent-id-example"
}
},
"timestamp": "2026-01-17T07:16:13.712708257Z",
"severity": "ERROR",
"logName": "projects/google-smart-home-agent-id-example/logs/assistant_smarthome%2Fassistant_smarthome_logs",
"receiveTimestamp": "2026-01-17T07:16:13.712708257Z"
}রিপোর্ট স্টেট ডিসক্রিপেন্সি লগ ফিল্ডের সংজ্ঞা
| ফিল্ডের নাম | সংজ্ঞা |
|---|---|
detailedAccuracyResult |
রিপোর্ট স্টেট পেলোড এবং QUERY ইনটেন্ট রেসপন্সের মধ্যে নির্দিষ্ট অমিল ব্যাখ্যা করে একটি ডায়াগনস্টিক সারাংশ। |
queriedTime |
ফুলফিলমেন্ট প্রদানকারীর থেকে Google যখন QUERY উত্তর পেয়েছে সেই সঠিক টাইমস্ট্যাম্প। |
reportedTime |
Google-এর মাধ্যমে রিপোর্ট স্টেট বিজ্ঞপ্তি সঠিকভাবে পাওয়ার সঠিক টাইমস্ট্যাম্প। |
agentId |
আপনার প্রোজেক্টের জন্য অনন্য শনাক্তকারী (সাধারণত Google Home Developer Console-এ প্রোজেক্ট আইডি)। |
requestId |
নির্দিষ্ট QUERY ইনটেন্ট রেসপন্সের সাথে যুক্ত অনন্য কোরিলেশন আইডি। |
queryReportStateDifferences |
একটি অবজেক্ট বা তালিকা যা নির্দিষ্ট ডিভাইসের স্টেট অ্যাট্রিবিউট হাইলাইট করে যা QUERY রেসপন্স এবং রিপোর্ট স্টেট ডেটার মধ্যে আলাদা। |
এরর রেসপন্স
Report State কল করার সময় আপনি নিম্নলিখিত সমস্যার উত্তরগুলির মধ্যে একটি পেতে পারেন। এইসব উত্তর HTTP স্ট্যাটাস কোড হিসেবে পাওয়া যায়।
400 ত্রুটিযুক্ত অনুরোধ
ভুল সিনট্যাক্স-এর কারণে ক্লায়েন্টের পাঠানো অনুরোধ সার্ভার প্রসেস করতে পারেনি। সাধারণত ভুল ফর্ম্যাটের JSON বা স্ট্রিং ভ্যালুর জন্য ""-এর পরিবর্তে null
ব্যবহার করার কারণে এটি হয়।
404 পাওয়া যায়নি
অনুরোধ করা রিসোর্স খুঁজে পাওয়া যায়নি, তবে ভবিষ্যতে উপলভ্য হতে পারে।
সাধারণত, এর অর্থ হল আমরা অনুরোধ করা ডিভাইসটি খুঁজে পাচ্ছি না। এছাড়াও, এর অর্থ হতে পারে যে
ব্যবহারকারীর অ্যাকাউন্ট Google-এর সাথে লিঙ্ক করা নেই অথবা আমরা ভুল
agentUserId পেয়েছি। agentUserId আপনার SYNC উত্তরে দেওয়া ভ্যালুর সাথে মিলছে কিনা এবং আপনি DISCONNECT ইনটেন্ট সঠিকভাবে ম্যানেজ করছেন কিনা তা নিশ্চিত করুন।
404 NOT_FOUND সমস্যার কারণে ReportState কল ব্যর্থ হলে, এটি আপনার ক্লাউড এবং Home Graph-এর মধ্যে সিঙ্ক করার ক্ষেত্রে অমিলকে নির্দেশ করে।
Home Graph থেকে কোনও ডিভাইস সরিয়ে দেওয়া হলে অথবা কোনও ব্যবহারকারী তার অ্যাকাউন্ট আনলিঙ্ক করলে এটি হতে পারে।
রিপোর্ট স্টেট থেকে 404 সংক্রান্ত সমস্যা সমাধান করতে, নিম্নলিখিত পদ্ধতি ব্যবহার করুন:
- ব্যবহারকারীর অ্যাকাউন্টের স্ট্যাটাস চেক করুন: 404 ত্রুটি দেখিয়েছে এমন
agentUserId-এর জন্যdevices.syncকল করুন। এটি নির্ধারণ করতে সাহায্য করে যে সমস্যাটি পুরো ব্যবহারকারীর অ্যাকাউন্টের জন্য নাকি কোনও নির্দিষ্ট ডিভাইসের জন্য।SYNCযদি 404 সমস্যার মেসেজ দেখায়, তাহলে ব্যবহারকারীর অ্যাকাউন্ট আর Google-এর সাথে লিঙ্ক করা নেই। এই ব্যবহারকারীর ডিভাইসের জন্য স্ট্যাটাস রিপোর্ট করা এবং সিঙ্ক করার অনুরোধ পাঠানো বন্ধ করুন।SYNCযদি ২০০ OK রিটার্ন করে, তাহলে ব্যবহারকারীর অ্যাকাউন্ট এখনও লিঙ্ক করা আছে, যার অর্থ হল ৪০৪ সমস্যাটি ডিভাইস-নির্দিষ্ট।
- ডিভাইসের তালিকা রিকনসাইল করা:
SYNCযদি ২০০ OK রিটার্ন করে, তাহলে আপনাকে শনাক্ত করতে হবে যে কোন ডিভাইস(গুলি) Google-এর কাছে আর পরিচিত নয়। আমরা সাজেস্ট করি যে আপনি ব্যবহারকারীর জন্য Google-এর কাছে থাকা ডিভাইসের তালিকা আপনার ডিভাইস ডেটাবেসের সাথে তুলনা করুন এবং আপনার সিস্টেমে এমন ডিভাইস শনাক্ত করুন যা Google-এর তালিকায় নেই। কোনও ডিভাইস Google-এর সাথে সিঙ্ক করা উচিত কিন্তু এখনও Google-এর সাথে শেয়ার করা হয়নি, তাহলে ডিভাইসটি Google-এর সাথে সিঙ্ক করা আছে কিনা তা নিশ্চিত করতেSYNCব্যবহার করুন। Google থেকে কোনও ডিভাইস আনলিঙ্ক করতে হলে, সেই নির্দিষ্ট ডিভাইসের জন্য স্ট্যাটাস রিপোর্ট করা বন্ধ করুন এবং সেইagentUserId-এর অধীনে থাকা অন্যান্য সঠিক ডিভাইসের জন্য রিপোর্ট করা চালিয়ে যান।
অনলাইন ও অফলাইন স্ট্যাটাস রিপোর্টিং
কোনও ডিভাইস অফলাইন থাকলে, ডিভাইসের আচরণের পাঁচ মিনিটের মধ্যে আপনাকে <code{"online": code="" dir="ltr" false}<="" translate="no"> রিপোর্ট স্টেট-এ রিপোর্ট করতে হবে। বিপরীতভাবে, কোনও ডিভাইস অনলাইন অবস্থায় ফিরে এলে, আপনাকে ডিভাইসের আচরণের পাঁচ মিনিটের মধ্যে রিপোর্ট স্টেট-এ <code{"online": code="" dir="ltr" translate="no" true}<=""> রিপোর্ট করতে হবে। কোনও ডিভাইস আবার অনলাইন হলে, পার্টনারকেreportStateAndNotification API ব্যবহার করে ডিভাইসের বর্তমান স্ট্যাটাস
রিপোর্ট করতে হবে।
এই উদাহরণে দেখা যাচ্ছে যে light ডিভাইসের ধরন অনলাইন আছে এবং
বর্তমান ডিভাইসের সব স্ট্যাটাস রিপোর্ট করে।
"requestId": "test-request-id",
"agentUserId": "agent-user-1",
"payload":{
"devices": {
"states": {
"device-id-1": {
"brightness": 65,
"on": true,
"online": true
}
"notifications": {},
}
}
}