Report State एक अहम सुविधा है, जो
Home कार्रवाई के ज़रिए उपयोगकर्ता के डिवाइस की स्थिति,
Google Home Graph
rather than waiting for a
QUERY
intent. को अपने-आप रिपोर्ट करने की सुविधा देती है
Report State, Google को उपयोगकर्ता के डिवाइसों की स्थिति की जानकारी देता है. इसके लिए, agentUserId
से जुड़े खास डिवाइस की जानकारी दी जाती है. इसे मूल SYNC
अनुरोध में भेजा जाता है. जब
Google Assistant
wants to take an action
that requires understanding the current state of a device, it can simply look
up the state information in the
Home Graph instead
of issuing a QUERY
intent to various third-party clouds prior to issuing the
EXECUTE
intent.
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 एपीआई चालू करें
-
Google Cloud Console , go to the HomeGraph API page. में
HomeGraph एपीआई पेज पर जाएं - वह प्रोजेक्ट चुनें जो smart home project ID. से मिलता-जुलता हो
- चालू करें पर क्लिक करें.
सेवा खाता कुंजी बनाएं
Google Cloud Console से सेवा खाता कुंजी जनरेट करने के लिए इन निर्देशों का पालन करें:
-
Google Cloud Console में, सेवा खाता बनाएं कुंजी पेज पर जाएं.
सेवा खाता बनाने वाले मुख्य पेज पर जाएं - सेवा खाते की सूची में से, नया सेवा खाता चुनें.
- सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें.
- सेवा खाता आईडी फ़ील्ड में, एक आईडी डालें.
भूमिका सूची से, सेवा खाते > सेवा खाता टोकन क्रिएटर चुनें.
कुंजी टाइप के लिए, JSON विकल्प चुनें.
- बनाएं पर क्लिक करें. एक JSON फ़ाइल, जिसमें आपके कंप्यूटर पर डाउनलोड किए गए मुख्य बटन मौजूद होते हैं.
एपीआई को कॉल करें
नीचे दिए टैब से कोई विकल्प चुनें:
HTTP
Home Graph एक HTTP एंडपॉइंट देता है
- JSON वेब टोकन (JWT) बनाने के लिए, डाउनलोड किए गए सेवा खाते की JSON फ़ाइल का इस्तेमाल करें. ज़्यादा जानकारी के लिए, सेवा खाते का इस्तेमाल करके पुष्टि करना देखें.
- oauth2l का इस्तेमाल करके,
https://www.googleapis.com/auth/homegraph
स्कोप की मदद से OAuth 2.0 ऐक्सेस टोकन पाएं: agentUserId
की मदद से JSON के लिए अनुरोध करें. रिपोर्ट स्थिति और सूचना के लिए JSON अनुरोध का एक नमूना यहां दिया गया है:- Google Home ग्राफ़ एंडपॉइंट पर रिपोर्ट की स्थिति और सूचना JSON के साथ-साथ, अपने एचटीटीपी POST अनुरोध के टोकन को जोड़ें. यहां एक उदाहरण के तौर पर
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 एंडपॉइंट उपलब्ध कराता है
- होम ग्राफ़ एपीआई के लिए, प्रोटोकॉल बफ़र की सेवा की परिभाषा पाएं.
- इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए, क्लाइंट स्टब जनरेट करने के लिए, जीआरपीसी डेवलपर के दस्तावेज़ फ़ॉलो करें.
- reportStateAndNotification तरीके को कॉल करें.
Node.js
Google API Node.js क्लाइंट 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 } } } } } });
Java
Java के लिए HomeGraph एपीआई क्लाइंट लाइब्रेरी, होम ग्राफ़ एपीआई के लिए बाइंडिंग उपलब्ध कराती है.
- ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके,
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); }
टेस्ट रिपोर्ट की स्थिति
अपनी कार्रवाई को सर्टिफ़िकेशन के लिए तैयार करने के लिए, टेस्ट करना ज़रूरी है Report State.
ऐसा करने के लिए, हमारा सुझाव है कि आप Home Graph व्यूअर टूल का इस्तेमाल करें. यह एक ऐसा वेब ऐप्लिकेशन है जिसे डाउनलोड या डिप्लॉय करने की ज़रूरत नहीं होती है.
Report State डैशबोर्ड अब भी उपलब्ध है, लेकिन यह बंद है और अब काम नहीं करता.
स्टेट डैशबोर्ड की शिकायत करें
ज़रूरी शर्तें
अपनी कार्रवाई को टेस्ट करने से पहले, आपको अपनी सेवा खाता कुंजी
और अपनी agentUserId
की ज़रूरत होगी. अगर आपके पास पहले से ही अपनी सेवा खाता कुंजी है और
agentUserId
देखें
Report State
डैशबोर्ड देखें.
रिपोर्ट स्टेट डैशबोर्ड को डिप्लॉय करना
अपने प्रोजेक्ट के लिए सेवा खाता कुंजी और एजेंट का यूज़र आईडी मिलने के बाद,
Report State
डैशबोर्ड से सबसे नया वर्शन डाउनलोड करके डिप्लॉय करें.
नया वर्शन डाउनलोड करने के बाद, शामिल की गई README.MD
फ़ाइल में दिए गए निर्देशों का पालन करें.
Report State डैशबोर्ड डिप्लॉय करने के बाद, इस यूआरएल के डैशबोर्ड को ऐक्सेस करें. इसकी जगह, your_project_id को अपने प्रोजेक्ट आईडी से बदलें:
http://<your-project-id>.appspot.com
डैशबोर्ड पर, ये काम करें:
- अपने खाते की मुख्य फ़ाइल चुनें
- अपना agentsUserId जोड़ें
इसके बाद, सूची पर क्लिक करें.
आपके सभी डिवाइस सूची में शामिल हैं. सूची में जानकारी भरने के बाद, रीफ़्रेश करें बटन का इस्तेमाल करके, डिवाइस की स्थितियां अपडेट की जा सकती हैं. डिवाइस की स्थिति में कोई बदलाव होने पर, पंक्ति हरे रंग से हाइलाइट हो जाती है.
गड़बड़ी के जवाब
Report State पर कॉल करते समय आपको इनमें से कोई एक गड़बड़ी का जवाब मिल सकता है. ये जवाब, एचटीटीपी स्टेटस कोड के तौर पर दिखते हैं.
400 Bad Request
- अमान्य सिंटैक्स के कारण सर्वर क्लाइंट का अनुरोध पूरा नहीं कर सका. इसकी आम वजहों में, स्ट्रिंग की वैल्यू के लिए, गलत JSON या "" के बजायnull
का इस्तेमाल करना शामिल है.404 Not Found
- अनुरोध किया गया संसाधन नहीं मिला, लेकिन हो सकता है कि वह आने वाले समय में उपलब्ध हो. आम तौर पर, इसका मतलब है कि हमें अनुरोध किया गया डिवाइस नहीं मिल रहा है. इसका मतलब यह भी हो सकता है कि उपयोगकर्ता का खाता Google से जुड़ा हुआ नहीं है या हमें अमान्यagentUserId
मिला है. पक्का करें किagentUserId
सिंक रिस्पॉन्स में दी गई वैल्यू से मेल खाता हो. साथ ही, आप इंटेंट के मुताबिक डिसकनेक्ट कर रहे हों.