Report State একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা Google Home অ্যাকশনকে ব্যবহারকারীর ডিভাইসের সর্বশেষ অবস্থা QUERY ইনটেন্টের জন্য অপেক্ষা করার পরিবর্তে সক্রিয়ভাবে Google Home Graph রিপোর্ট করতে দেয়।
 Report State ব্যবহারকারীর ডিভাইসের অবস্থা Google-কে রিপোর্ট করে, যাদের সাথে নির্দিষ্ট agentUserId যুক্ত থাকে (মূল SYNC অনুরোধে পাঠানো হয়)। যখন Google Assistant এমন কোনও পদক্ষেপ নিতে চায় যার জন্য কোনও ডিভাইসের বর্তমান অবস্থা বোঝার প্রয়োজন হয়, তখন এটি EXECUTE intent ইস্যু করার আগে বিভিন্ন তৃতীয়-পক্ষের ক্লাউডে QUERY intent ইস্যু করার পরিবর্তে কেবল Home Graph এ অবস্থা তথ্য দেখতে পারে।
 Report State ছাড়া, একটি লিভিং রুমে একাধিক প্রোভাইডার থেকে আলো দেওয়া হলে, Ok Google, brighten my living room কমান্ডটি একাধিক ক্লাউডে পাঠানো একাধিক QUERY ইন্টেন্ট সমাধান করতে হবে, পূর্বে রিপোর্ট করা তথ্যের উপর ভিত্তি করে কেবল বর্তমান উজ্জ্বলতার মানগুলি দেখার পরিবর্তে। সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য, Assistant ডিভাইসের বর্তমান অবস্থা জানা প্রয়োজন, ডিভাইসে ঘুরে দেখার প্রয়োজন নেই।
 একটি ডিভাইসের প্রাথমিক SYNC এর পরে, প্ল্যাটফর্মটি একটি QUERY ইন্টেন্ট পাঠায় যা ডিভাইসের অবস্থা সংগ্রহ করে Home Graph পূরণ করে। এই বিন্দুর পরে, Home Graph শুধুমাত্র Report State সহ পাঠানো অবস্থা সংরক্ষণ করে।
 Report State কল করার সময়, একটি নির্দিষ্ট বৈশিষ্ট্যের জন্য সম্পূর্ণ স্টেট ডেটা প্রদান করতে ভুলবেন না। Home Graph প্রতি-ট্রেট ভিত্তিতে স্টেট আপডেট করে এবং যখন একটি Report State কল করা হয় তখন সেই বৈশিষ্ট্যের জন্য সমস্ত ডেটা ওভাররাইট করে। উদাহরণস্বরূপ, যদি আপনি StartStop বৈশিষ্ট্যের জন্য স্টেট রিপোর্ট করেন, তাহলে পেলোডে isRunning এবং isPaused উভয়ের জন্য মান অন্তর্ভুক্ত করতে হবে।
শুরু করুন
Report State বাস্তবায়ন করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
গুগল হোমগ্রাফ এপিআই সক্ষম করুন
- Google Cloud Console , হোমগ্রাফ এপিআই পৃষ্ঠায় যান। হোমগ্রাফ এপিআই পৃষ্ঠায় যান।
- আপনার smart home প্রজেক্ট আইডির সাথে মেলে এমন প্রজেক্টটি নির্বাচন করুন।
- সক্রিয় করুন ক্লিক করুন।
একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করুন
Google Cloud Console থেকে একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করতে এই নির্দেশাবলী অনুসরণ করুন:
- Google Cloud Console , পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যান। পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যান ।- পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যাওয়ার আগে আপনাকে একটি প্রকল্প নির্বাচন করতে হতে পারে। 
- পরিষেবা অ্যাকাউন্ট তৈরি করুন ক্লিক করুন। 
- পরিষেবা অ্যাকাউন্টের নাম ক্ষেত্রে, একটি নাম লিখুন। 
- পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন। 
- পরিষেবা অ্যাকাউন্টের বিবরণ ক্ষেত্রে, একটি বিবরণ লিখুন। 
- তৈরি করুন এবং চালিয়ে যান ক্লিক করুন। 
- Role ড্রপডাউন থেকে, Service Accounts > Service Account OpenID Connect Identity Token Creator নির্বাচন করুন। 
- চালিয়ে যান ক্লিক করুন। 
- সম্পন্ন ক্লিক করুন। 
- পরিষেবা অ্যাকাউন্টের তালিকা থেকে আপনার তৈরি করা পরিষেবা অ্যাকাউন্টটি নির্বাচন করুন এবং অ্যাকশন মেনু থেকে Manage keys নির্বাচন করুন। 
- কী যোগ করুন > নতুন কী তৈরি করুন নির্বাচন করুন। 
- কী টাইপের জন্য, JSON বিকল্পটি নির্বাচন করুন। 
- তৈরি করুন এ ক্লিক করুন। একটি JSON ফাইল যাতে আপনার কম্পিউটারে ডাউনলোড করা কীগুলি থাকে। 
API-তে কল করুন
নিচের ট্যাবগুলি থেকে একটি বিকল্প নির্বাচন করুন:
HTTP সম্পর্কে
Home Graph একটি HTTP এন্ডপয়েন্ট প্রদান করে
- ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করে একটি JSON ওয়েব টোকেন (JWT) তৈরি করুন। আরও তথ্যের জন্য, পরিষেবা অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ দেখুন।
-  oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraphস্কোপের সাহায্যে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
- agentUserIdব্যবহার করে JSON অনুরোধ তৈরি করুন। রিপোর্ট স্টেট এবং নোটিফিকেশনের জন্য এখানে একটি নমুনা JSON অনুরোধ দেওয়া হল:
- আপনার HTTP POST অনুরোধের টোকেনটি Google Home Graph এন্ডপয়েন্টে Report State এবং Notification 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"
জিআরপিসি
Home Graph একটি gRPC এন্ডপয়েন্ট প্রদান করে
- হোম গ্রাফ API-এর জন্য প্রোটোকল বাফার পরিষেবার সংজ্ঞা পান।
- সমর্থিত ভাষার জন্য ক্লায়েন্ট স্টাব তৈরি করতে gRPC ডেভেলপার ডকুমেন্টেশন অনুসরণ করুন।
- ReportStateAndNotification পদ্ধতিতে কল করুন।
নোড.জেএস
গুগল এপিআই নোড.জেএস ক্লায়েন্ট Home Graph এপিআই-এর জন্য বাইন্ডিং প্রদান করে।
-  অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে 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 } } } } } });
জাভা
জাভার জন্য হোমগ্রাফ এপিআই ক্লায়েন্ট লাইব্রেরি হোম গ্রাফ এপিআই-এর জন্য বাইন্ডিং প্রদান করে।
-  অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে 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); }
পরীক্ষার রিপোর্টের অবস্থা
আপনার Cloud-to-cloud ইন্টিগ্রেশন সার্টিফিকেশনের জন্য প্রস্তুত করার জন্য, Report State পরীক্ষা করা গুরুত্বপূর্ণ।
এটি করার জন্য, আমরা Home Graph ভিউয়ার টুল ব্যবহার করার পরামর্শ দিচ্ছি, যা একটি স্বতন্ত্র ওয়েব অ্যাপ যার ডাউনলোড বা স্থাপনের প্রয়োজন হয় না।
Report State ড্যাশবোর্ড এখনও উপলব্ধ, কিন্তু এটি বন্ধ হয়ে গেছে এবং আর সমর্থিত নয়।
রাজ্য ড্যাশবোর্ড রিপোর্ট করুন
পূর্বশর্ত
 আপনার Cloud-to-cloud ইন্টিগ্রেশন পরীক্ষা করার আগে, আপনার পরিষেবা অ্যাকাউন্ট কী এবং আপনার agentUserId প্রয়োজন। যদি আপনার ইতিমধ্যেই আপনার পরিষেবা অ্যাকাউন্ট কী এবং agentUserId থাকে তবে Deploy the Report State Dashboard দেখুন।
রিপোর্ট স্টেট ড্যাশবোর্ড স্থাপন করুন
 আপনার প্রকল্পের জন্য সার্ভিস অ্যাকাউন্ট কী এবং এজেন্ট ব্যবহারকারী আইডি হয়ে গেলে, 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 প্রতিক্রিয়াতে প্রদত্ত মানের সাথে মেলে এবং আপনি DISCONNECT ইন্টেন্টগুলি সঠিকভাবে পরিচালনা করছেন।
অনলাইন এবং অফলাইনে অবস্থা রিপোর্টিং
যখন কোনও ডিভাইস অফলাইন থাকে, তখন আপনার রিপোর্ট করা উচিত ডিভাইসের আচরণের পাঁচ মিনিটের মধ্যে রিপোর্ট স্টেট । বিপরীতভাবে, যখন একটি ডিভাইস অনলাইন অবস্থায় ফিরে আসে, তখন আপনার রিপোর্ট করা উচিত  ডিভাইসের আচরণের পাঁচ মিনিটের মধ্যে রিপোর্ট স্টেট । যখনই কোনও ডিভাইস আবার অনলাইনে আসে, তখন পার্টনারকে reportStateAndNotification API ব্যবহার করে সমস্ত বর্তমান ডিভাইসের অবস্থা রিপোর্ট করতে হবে। এই উদাহরণটি দেখায় যে একটি light ধরণের ডিভাইস অনলাইনে রয়েছে এবং সমস্ত বর্তমান ডিভাইসের অবস্থা রিপোর্ট করে। "requestId": "test-request-id",
  "agentUserId": "agent-user-1",
    "payload":{
      "devices": {
        "states": {
          "device-id-1": {
            "brightness": 65,
            "on": true,
            "online": true
          }
          "notifications": {},
        }
      }
    }
