सिंक करने का अनुरोध करने पर, Google के किसी भी ऐसे उपयोगकर्ता के लिए SYNC अनुरोध ट्रिगर होता है जिसके पास ऐसे डिवाइस हैं जिनसे agentUserId जुड़ा है. यह वही agentUserId है जिसे आपने सिंक करने के मूल अनुरोध में भेजा था. इससे उपयोगकर्ताओं के डिवाइसों को अपडेट किया जा सकता है. इसके लिए, उनके खाते को अनलिंक और फिर से लिंक करने की ज़रूरत नहीं होती. इस आइडेंटिफ़ायर से लिंक किए गए सभी उपयोगकर्ताओं को SYNC अनुरोध मिलेगा.
आपको SYNC अनुरोध ट्रिगर करना होगा:
- जब उपयोगकर्ता कोई नया डिवाइस जोड़ता है.
- अगर उपयोगकर्ता किसी मौजूदा डिवाइस को हटाता है.
- अगर उपयोगकर्ता किसी मौजूदा डिवाइस का नाम बदलता है.
- जब कोई नया डिवाइस टाइप, ट्रेट लागू की जाती है या डिवाइस की कोई नई सुविधा जोड़ी जाती है.
अपनी प्रोफ़ाइल बनाना शुरू करें
सिंक करने का अनुरोध करने की सुविधा लागू करने के लिए, यह तरीका अपनाएं:
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 API, एचटीटीपी एंडपॉइंट उपलब्ध कराता है
- डाउनलोड की गई सेवा खाते की JSON फ़ाइल का इस्तेमाल करके, JSON वेब टोकन (JWT) बनाएं. ज़्यादा जानकारी के लिए, सेवा खाते का इस्तेमाल करके पुष्टि करना लेख पढ़ें.
- oauth2l का इस्तेमाल करके,
https://www.googleapis.com/auth/homegraphस्कोप के साथ OAuth 2.0 का ऐक्सेस टोकन पाएं: agentUserIdकी मदद से, JSON फ़ॉर्मैट में अनुरोध बनाएं. सिंक करने का अनुरोध करने के लिए, JSON फ़ॉर्मैट में अनुरोध का एक सैंपल यहां दिया गया है:- Google Home Graph एंडपॉइंट पर एचटीटीपी POST अनुरोध में, 'सिंक करने का अनुरोध' 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
Home Graph API, gRPC एंडपॉइंट उपलब्ध कराता है
- Home Graph API के लिए, प्रोटोकॉल बफ़र सेवा की परिभाषा पाएं.
- इस्तेमाल की जा सकने वाली किसी भाषा के लिए क्लाइंट स्टब जनरेट करने के लिए, gRPC डेवलपर दस्तावेज़ में दिया गया तरीका अपनाएं.
- RequestSync तरीके को कॉल करें.
Node.js
Google APIs Node.js Client, Home Graph API के लिए बाइंडिंग उपलब्ध कराता है.
- ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके,
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);
गड़बड़ी के रिस्पॉन्स
Request Sync को कॉल करने पर, आपको गड़बड़ी के ये जवाब मिल सकते हैं. ये जवाब, एचटीटीपी स्टेटस कोड के तौर पर मिलते हैं.
400 Bad Request- अमान्य सिंटैक्स की वजह से सर्वर, क्लाइंट के भेजे गए अनुरोध को प्रोसेस नहीं कर सका. इसकी सामान्य वजहों में, गलत तरीके से बनाया गया JSON या स्ट्रिंग वैल्यू के लिए "" के बजायnullका इस्तेमाल करना शामिल है.403 Forbidden- टोकन को रीफ़्रेश करते समय हुई गड़बड़ी की वजह से, सर्वर दिए गएagentUserIdके अनुरोध को प्रोसेस नहीं कर सका. पक्का करें कि आपका OAuth एंडपॉइंट, रीफ़्रेश टोकन के अनुरोधों का सही तरीके से जवाब देता हो. साथ ही, उपयोगकर्ता के खाते को लिंक करने की स्थिति की जांच करता हो.404 Not Found- अनुरोध किया गया संसाधन नहीं मिला, लेकिन हो सकता है कि आने वाले समय में यह उपलब्ध हो. आम तौर पर, इसका मतलब यह होता है कि उपयोगकर्ता का खाता Google से लिंक नहीं है या हमें अमान्यagentUserIdमिला है. पक्का करें किagentUserIdकी वैल्यू, SYNC रिस्पॉन्स में दी गई वैल्यू से मेल खाती हो. साथ ही, DISCONNECT इंटेंट को सही तरीके से हैंडल किया जा रहा हो.429 Too Many Requests- दी गईagentUserIdके लिए, एक साथ सिंक करने के अनुरोधों की ज़्यादा से ज़्यादा संख्या पार हो गई है. कॉल करने वाला व्यक्ति, एक साथ सिर्फ़ एक सिंक करने का अनुरोध कर सकता है. हालांकि, ऐसा तब तक किया जा सकता है, जब तकasyncफ़्लैग को 'सही है' पर सेट न किया गया हो.