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