अनुरोध सिंक करने की सुविधा, आपके फ़ुलफ़िलमेंट के लिए SYNC
अनुरोध को ट्रिगर करती है. यह अनुरोध, उन सभी Google उपयोगकर्ताओं के लिए होता है जिनके डिवाइसों पर, आपके दिए गए agentUserId
(जिसे आपने मूल सिंक अनुरोध में भेजा था) से जुड़ा कोई डिवाइस है. इससे, उपयोगकर्ताओं के खाते को अनलिंक किए बिना और उसे फिर से लिंक किए बिना, उनके डिवाइसों को अपडेट किया जा सकता है. इस आइडेंटिफ़ायर से लिंक किए गए सभी उपयोगकर्ताओं को SYNC
अनुरोध मिलेगा.
आपको SYNC
अनुरोध ट्रिगर करना होगा:
- अगर उपयोगकर्ता कोई नया डिवाइस जोड़ता है.
- अगर उपयोगकर्ता किसी मौजूदा डिवाइस को हटाता है.
- अगर उपयोगकर्ता किसी मौजूदा डिवाइस का नाम बदलता है.
- अगर आपने डिवाइस का कोई नया टाइप, ट्रैट लागू किया है या डिवाइस की कोई नई सुविधा जोड़ी है.
अपनी प्रोफ़ाइल बनाना शुरू करें
अनुरोध सिंक करने की प्रोसेस लागू करने के लिए, यह तरीका अपनाएं:
Google HomeGraph API को चालू करना
-
Google Cloud Console में, HomeGraph API पेज पर जाएं.
HomeGraph API पेज पर जाएं - वह प्रोजेक्ट चुनें जो आपके smart home प्रोजेक्ट आईडी से मेल खाता हो.
- चालू करें पर क्लिक करें.
सेवा खाते की कुंजी बनाना
Google Cloud Console से सेवा खाते की कुंजी जनरेट करने के लिए, इन निर्देशों का पालन करें:
-
Google Cloud Console में, सेवा खाते की कुंजी बनाएं पेज पर जाएं.
'सेवा खाते की कुंजी बनाएं' पेज पर जाएं - सेवा खाता सूची में से, नया सेवा खाता चुनें.
- सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें.
- सेवा खाता आईडी फ़ील्ड में, आईडी डालें.
भूमिका सूची में, सेवा खाते > सेवा खाता टोकन क्रिएटर चुनें.
कुंजी टाइप के लिए, JSON विकल्प चुनें.
- बनाएं पर क्लिक करें. एक JSON फ़ाइल, जिसमें आपके कंप्यूटर पर डाउनलोड की गई कुंजी शामिल होती है.
एपीआई को कॉल करना
HTTP
Home Graph API, एचटीटीपी एंडपॉइंट उपलब्ध कराता है
- 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
{ "agentUserId": "user-123" }
curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d @request-body.json \ "https://homegraph.googleapis.com/v1/devices:requestSync"
gRPC
होम ग्राफ़ एपीआई एक gRPC एंडपॉइंट उपलब्ध कराता है
- Home Graph API के लिए, प्रोटोकॉल बफ़र सेवा की परिभाषा पाएं.
- इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए क्लाइंट स्टब जनरेट करने के लिए, gRPC डेवलपर दस्तावेज़ में दिया गया तरीका अपनाएं.
- RequestSync तरीके को कॉल करें.
Node.js
Google API Node.js क्लाइंट, होम ग्राफ़ एपीआई के लिए बाइंडिंग उपलब्ध कराता है.
- ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके,
google.homegraph
सेवा को शुरू करें. - RequestSyncDevicesRequest के साथ
requestSync
मेथड को कॉल करें. यह खाली RequestSyncDevicesResponse के साथPromise
दिखाता है.
const homegraphClient = homegraph({ version: 'v1', auth: new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/homegraph' }) }); const res = await homegraphClient.devices.requestSync({ requestBody: { agentUserId: 'PLACEHOLDER-USER-ID', async: false } });
Java
Java के लिए HomeGraph API क्लाइंट लाइब्रेरी, Home Graph API के लिए बाइंडिंग उपलब्ध कराती है.
- ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके,
HomeGraphApiService
को शुरू करें. RequestSyncDevicesRequest
के साथrequestSync
तरीके को कॉल करें. यह खाली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(); // Request sync. RequestSyncDevicesRequest request = new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false); homegraphService.devices().requestSync(request);
गड़बड़ी के रिस्पॉन्स
सिंक करने का अनुरोध करने पर, आपको गड़बड़ी का इनमें से कोई एक जवाब मिल सकता है. ये जवाब, एचटीटीपी स्टेटस कोड के तौर पर मिलते हैं.
400 Bad Request
- अमान्य सिंटैक्स की वजह से, सर्वर क्लाइंट से मिले अनुरोध को प्रोसेस नहीं कर सका. इस गड़बड़ी की सामान्य वजहों में, गलत तरीके से लिखा गया JSON या स्ट्रिंग वैल्यू के लिए "" के बजायnull
का इस्तेमाल करना शामिल है.403 Forbidden
- टोकन को रीफ़्रेश करते समय हुई गड़बड़ी की वजह से, सर्वरagentUserId
के लिए दिए गए अनुरोध को प्रोसेस नहीं कर सका. पक्का करें कि आपका OAuth एंडपॉइंट, टोकन रीफ़्रेश करने के अनुरोधों का सही जवाब देता हो. साथ ही, उपयोगकर्ता के खाते को लिंक करने की स्थिति देखें.404 Not Found
- आपने जिस संसाधन के लिए अनुरोध किया था वह नहीं मिला. हालांकि, आने वाले समय में वह उपलब्ध हो सकता है. आम तौर पर, इसका मतलब यह होता है कि उपयोगकर्ता का खाता Google से लिंक नहीं है या हमें अमान्यagentUserId
मिला है. पक्का करें किagentUserId
, SYNC रिस्पॉन्स में दी गई वैल्यू से मेल खाता हो. साथ ही, यह भी पक्का करें कि DISCONNECT इंटेंट को सही तरीके से मैनेज किया जा रहा हो.429 Too Many Requests
- दिए गएagentUserId
के लिए, एक साथ सिंक करने के अनुरोधों की तय सीमा पार हो गई है. जब तकasync
फ़्लैग को 'सही है' पर सेट नहीं किया जाता, तब तक कॉल करने वाला व्यक्ति एक साथ सिर्फ़ एक सिंक अनुरोध कर सकता है.