सिंक का अनुरोध करें. यह ऐसे किसी भी Google उपयोगकर्ता के डिवाइस पर SYNC
अनुरोध को ट्रिगर करता है जिसमें बताए गए डिवाइस agentUserId
होते हैं (जिसे आपने मूल सिंक अनुरोध में भेजा था). इससे आप उपयोगकर्ताओं के खातों को अनलिंक और
फिर से लिंक किए बिना उनके डिवाइस अपडेट कर सकते हैं. इस आइडेंटिफ़ायर से जुड़े सभी उपयोगकर्ताओं
को SYNC
अनुरोध मिलेगा.
आपको SYNC
अनुरोध ट्रिगर करना होगा:
- अगर कोई व्यक्ति किसी नए डिवाइस को जोड़ता है.
- अगर उपयोगकर्ता किसी मौजूदा डिवाइस को हटाता है.
- अगर उपयोगकर्ता किसी मौजूदा डिवाइस का नाम बदलता है.
- अगर डिवाइस का कोई नया टाइप, Trait लागू किया जाता है या डिवाइस की कोई नई सुविधा जोड़ी जाती है.
शुरू करें
अनुरोध सिंक करने की सुविधा लागू करने के लिए, यह तरीका अपनाएं:
Google HomeGraph एपीआई को चालू करें
-
Google Cloud Console में, HomeGraph एपीआई पेज पर जाएं.
HomeGraph API पेज पर जाएं - वह प्रोजेक्ट चुनें जो आपके smart home प्रोजेक्ट आईडी से मेल खाता हो.
- चालू करें पर क्लिक करें.
सेवा खाता कुंजी बनाएं
Google Cloud Console से सेवा खाता कुंजी जनरेट करने के लिए, इन निर्देशों का पालन करें:
-
Google Cloud Console में, सेवा खाता कुंजी बनाएं पेज पर जाएं.
'सेवा खाता बनाएं' पेज पर जाएं - सेवा खाते की सूची से, नया सेवा खाता चुनें.
- सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें.
- सेवा खाता आईडी फ़ील्ड में, कोई आईडी डालें.
भूमिका की सूची में, सेवा खाते > सेवा खाता टोकन क्रिएटर चुनें.
कुंजी टाइप के लिए, JSON विकल्प चुनें.
- बनाएं पर क्लिक करें. एक JSON फ़ाइल, जिसमें आपके कंप्यूटर पर डाउनलोड किए गए पासकोड होते हैं.
एपीआई को कॉल करें
HTTP
होम ग्राफ़ एपीआई एक एचटीटीपी एंडपॉइंट उपलब्ध कराता है
- JSON वेब टोकन (JWT) बनाने के लिए, डाउनलोड किए गए सेवा खाते की JSON फ़ाइल का इस्तेमाल करें. ज़्यादा जानकारी के लिए, सेवा खाते का इस्तेमाल करके पुष्टि करना देखें.
- oauth2l का इस्तेमाल करके,
https://www.googleapis.com/auth/homegraph
स्कोप वाला OAuth 2.0 ऐक्सेस टोकन पाएं: agentUserId
की मदद से JSON अनुरोध बनाएं. यहां अनुरोध सिंक के लिए JSON अनुरोध का एक नमूना दिया गया है:- 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
होम ग्राफ़ एपीआई एक gRPC एंडपॉइंट उपलब्ध कराता है
- होम ग्राफ़ एपीआई के लिए, प्रोटोकॉल बफ़र सेवा की परिभाषा जानें.
- इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए क्लाइंट स्टब जनरेट करने के लिए, 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 एपीआई क्लाइंट लाइब्रेरी, होम ग्राफ़ एपीआई के लिए बाइंडिंग उपलब्ध कराती है.
- ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके,
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
फ़्लैग 'सही' पर सेट नहीं होता, तब तक कॉलर सिर्फ़ एक साथ सिंक करने का अनुरोध कर सकता है.