सिंक करने का अनुरोध करने पर, Google के किसी भी उपयोगकर्ता के लिए, किसी अनुरोध को पूरा करने के लिए, SYNC
का अनुरोध ट्रिगर होता है. ऐसा उन डिवाइसों के लिए होता है जिन पर agentUserId
से जुड़े उपयोगकर्ता तय किए गए हों, जिन्हें आपने सिंक करने के मूल अनुरोध में भेजा था. इससे, आपको अपने उपयोगकर्ताओं को अलग करने और
उन्हें फिर से जोड़े बिना, उनके डिवाइस को अपडेट करने की सुविधा मिलती है. इस आइडेंटिफ़ायर से जुड़े सभी उपयोगकर्ताओं को एक SYNC
अनुरोध मिलेगा.
आपको SYNC
अनुरोध ट्रिगर करना होगा:
- अगर उपयोगकर्ता कोई नया डिवाइस जोड़ता है.
- अगर उपयोगकर्ता किसी मौजूदा डिवाइस को हटाता है.
- अगर उपयोगकर्ता किसी मौजूदा डिवाइस का नाम बदलता है, तो:
- अगर किसी नए तरह का डिवाइस जोड़ा जाता है, तो डिवाइस की खासियत या नई डिवाइस सुविधा जोड़ी जाती है.
शुरू करना
अनुरोध सिंक करें लागू करने के लिए, इन चरणों का पालन करें:
Google HomeGraph एपीआई चालू करें
-
Google Cloud Console, go to the HomeGraph API page. में
HomeGraph एपीआई पेज पर जाएं - वह प्रोजेक्ट चुनें जो आपके smart home प्रोजेक्ट आईडी से मेल खाता हो.
- चालू करें पर क्लिक करें.
सेवा खाता कुंजी बनाएं
Google Cloud Console से सेवा खाता कुंजी जनरेट करने के लिए, इन निर्देशों का पालन करें:
-
Google Cloud Console में, सेवा खाता बनाएं पेज पर जाएं.
सेवा खाता बनाने वाले मुख्य पेज पर जाएं - सेवा खाते की सूची में से, नया सेवा खाता चुनें.
- सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें.
- सेवा खाता आईडी फ़ील्ड में, एक आईडी डालें.
भूमिका सूची से, सेवा खाते > सेवा खाता टोकन क्रिएटर चुनें.
कुंजी टाइप के लिए, JSON विकल्प चुनें.
- बनाएं पर क्लिक करें. एक JSON फ़ाइल, जिसमें आपके कंप्यूटर पर डाउनलोड किए गए मुख्य बटन मौजूद होते हैं.
एपीआई को कॉल करें
HTTP
Home ग्राफ़ एपीआई, एचटीटीपी एंडपॉइंट उपलब्ध कराता है
- JSON वेब टोकन (JWT) बनाने के लिए, डाउनलोड किए गए सेवा खाते की JSON फ़ाइल का इस्तेमाल करें. ज़्यादा जानकारी के लिए, सेवा खाते का इस्तेमाल करके पुष्टि करना देखें.
- oauth2l का इस्तेमाल करके,
https://www.googleapis.com/auth/homegraph
स्कोप की मदद से OAuth 2.0 ऐक्सेस टोकन पाएं: agentUserId
की मदद से JSON के लिए अनुरोध करें. यहां सिंक करने के अनुरोध के लिए, JSON के अनुरोध का नमूना दिया गया है:- अनुरोध सिंक करने वाले JSON कोड और एचटीटीपी POST
अनुरोध के टोकन को Google Home ग्राफ़ एंडपॉइंट पर जोड़ें. यहां एक उदाहरण के तौर पर
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 ग्राफ़ एपीआई, gRPC एंडपॉइंट उपलब्ध कराता है
- होम ग्राफ़ एपीआई के लिए, प्रोटोकॉल बफ़र की सेवा की परिभाषा पाएं.
- इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए, क्लाइंट स्टब जनरेट करने के लिए, जीआरपीसी डेवलपर के दस्तावेज़ फ़ॉलो करें.
- RequestSync तरीके को कॉल करें.
Node.js
Google API Node.js क्लाइंट, होम ग्राफ़ एपीआई के लिए बाइंडिंग उपलब्ध कराता है.
- ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके,
google.homegraph
की सेवा शुरू करें. requestSync
वाले तरीके को RequestSyncDeviceRequest के साथ कॉल करें. इससे, खाली RequestSyncDeviceResponse के साथ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 एपीआई क्लाइंट लाइब्रेरी, होम ग्राफ़ एपीआई के लिए बाइंडिंग उपलब्ध कराती है.
- ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके,
HomeGraphApiService
को शुरू करें. requestSync
वाले तरीके कोRequestSyncDevicesRequest
के साथ कॉल करें. इससे खाली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
, आपके सिंक रिस्पॉन्स में दी गई वैल्यू से मेल खाता हो. साथ ही, आप डिसकनेक्ट इंटेंट को सही तरीके से मैनेज कर रहे हों.429 Too Many Requests
- बताए गएagentUserId
के लिए, एक साथ सिंक करने के, तय किए गए अनुरोधों की संख्या की सीमा पार हो गई है. कॉलर एक ही समय पर सिंक करने का सिर्फ़ एक अनुरोध जारी कर सकता है. हालांकि, ऐसा तब नहीं होता, जबasync
फ़्लैग सही पर सेट हो.