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 में, सेवा खाते की कुंजी बनाएं पेज पर जाएं.
'सेवा खाता कुंजी बनाएं' पेज पर जाएं - सेवा खाता सूची में से, नया सेवा खाता चुनें.
- सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें.
- सेवा खाते का आईडी फ़ील्ड में, कोई आईडी डालें.
भूमिका सूची में, सेवा खाते > सेवा खाता टोकन क्रिएटर चुनें.
कुंजी का टाइप के लिए, JSON विकल्प चुनें.
- बनाएं पर क्लिक करें. आपके कंप्यूटर पर, एक JSON फ़ाइल डाउनलोड होगी. इसमें आपकी कुंजी मौजूद होगी.
एपीआई को कॉल करना
नीचे दिए गए टैब में से कोई विकल्प चुनें:
HTTP
Home Graph, एचटीटीपी एंडपॉइंट उपलब्ध कराता है
- JSON वेब टोकन (JWT) बनाने के लिए, डाउनलोड किए गए सेवा खाते की JSON फ़ाइल का इस्तेमाल करें. ज़्यादा जानकारी के लिए, सेवा खाते का इस्तेमाल करके पुष्टि करना लेख पढ़ें.
- oauth2l का इस्तेमाल करके,
https://www.googleapis.com/auth/homegraph
स्कोप वाला OAuth 2.0 ऐक्सेस टोकन पाएं: agentUserId
की मदद से JSON अनुरोध बनाएं. यहां रिपोर्ट की स्थिति और सूचना के लिए JSON अनुरोध का सैंपल दिया गया है:- Google Home Graph एंडपॉइंट के लिए, अपने एचटीटीपी पोस्ट अनुरोध में, रिपोर्ट की स्थिति और सूचना के 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 क्लाइंट, 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); }
टेस्ट रिपोर्ट की स्थिति
अपने Cloud-to-cloud इंटिग्रेशन को सर्टिफ़िकेट के लिए तैयार करने के लिए, Report State की जांच करना ज़रूरी है.
ऐसा करने के लिए, हमारा सुझाव है कि आप Home Graph व्यूअर टूल का इस्तेमाल करें. यह एक स्टैंडअलोन वेब ऐप्लिकेशन है, जिसे डाउनलोड या डिप्लॉय करने की ज़रूरत नहीं होती.
Report State डैशबोर्ड अब भी उपलब्ध है, लेकिन इसे बंद कर दिया गया है और अब यह काम नहीं करता.
रिपोर्ट की स्थिति का डैशबोर्ड
ज़रूरी शर्तें
Cloud-to-cloud इंटिग्रेशन की जांच करने से पहले, आपके पास अपनी सेवा खाता कुंजी और agentUserId
होनी चाहिए. अगर आपके पास पहले से ही सेवा खाते की कुंजी और agentUserId
है, तो Report State डैशबोर्ड को डिप्लॉय करें देखें.
रिपोर्ट स्टेटस डैशबोर्ड को डिप्लॉय करना
अपने प्रोजेक्ट के लिए, सेवा खाते की कुंजी और एजेंट उपयोगकर्ता आईडी मिलने के बाद, Report State डैशबोर्ड से नया वर्शन डाउनलोड करें और डिप्लॉय करें.
नया वर्शन डाउनलोड करने के बाद, README.MD
फ़ाइल में दिए गए निर्देशों का पालन करें.
Report State डैशबोर्ड को डिप्लॉय करने के बाद, इस यूआरएल से डैशबोर्ड को ऐक्सेस करें. इसके लिए, your_project_id की जगह अपना प्रोजेक्ट आईडी डालें:
http://<your-project-id>.appspot.com
डैशबोर्ड पर, ये काम करें:
- अपनी खाता कुंजी फ़ाइल चुनना
- अपना agentUserId जोड़ें
इसके बाद, सूची पर क्लिक करें.
आपके सभी डिवाइसों की सूची दिखेगी. सूची में जानकारी भरने के बाद, डिवाइस की स्थितियों को अपडेट करने के लिए, रीफ़्रेश करें बटन का इस्तेमाल किया जा सकता है. अगर डिवाइस की स्थिति में कोई बदलाव होता है, तो पंक्ति को हरे रंग में हाइलाइट किया जाता है.
गड़बड़ी के रिस्पॉन्स
Report State को कॉल करते समय, आपको गड़बड़ी का इनमें से कोई एक जवाब मिल सकता है. ये जवाब, एचटीटीपी स्टेटस कोड के तौर पर मिलते हैं.
400 Bad Request
- अमान्य सिंटैक्स की वजह से, सर्वर क्लाइंट से मिले अनुरोध को प्रोसेस नहीं कर सका. इस गड़बड़ी की सामान्य वजहों में, गलत तरीके से लिखा गया JSON या स्ट्रिंग वैल्यू के लिए "" के बजायnull
का इस्तेमाल करना शामिल है.404 Not Found
- आपने जिस संसाधन के लिए अनुरोध किया था वह नहीं मिला. हालांकि, आने वाले समय में वह उपलब्ध हो सकता है. आम तौर पर, इसका मतलब है कि हमें आपका अनुरोध किया गया डिवाइस नहीं मिला. इसका यह भी मतलब हो सकता है कि उपयोगकर्ता का खाता, Google से लिंक न हो या हमें अमान्यagentUserId
मिला हो. पक्का करें किagentUserId
, SYNC रिस्पॉन्स में दी गई वैल्यू से मेल खाता हो. साथ ही, आपने DISCONNECT इंटेंट को सही तरीके से मैनेज किया हो.