सिंक करने का अनुरोध करें

Request Sync, Google के किसी भी उपयोगकर्ता के लिए, आपके फ़ुलफ़िलमेंट को SYNC अनुरोध ट्रिगर करता है. इसके लिए, उपयोगकर्ता के पास ऐसे डिवाइस होने चाहिए जिनसे agentUserId जुड़ा हो. यह वही है जिसे आपने ओरिजनल SYNC अनुरोध में भेजा था. इससे उपयोगकर्ताओं के खाते को अनलिंक और फिर से लिंक किए बिना, उनके डिवाइसों को अपडेट किया जा सकता है. इस आइडेंटिफ़ायर से जुड़े सभी उपयोगकर्ताओं को SYNC का अनुरोध मिलेगा.

आपको SYNC का अनुरोध ट्रिगर करना होगा:

  • अगर उपयोगकर्ता कोई नया डिवाइस जोड़ता है.
  • अगर उपयोगकर्ता किसी मौजूदा डिवाइस को हटाता है.
  • अगर उपयोगकर्ता किसी मौजूदा डिवाइस का नाम बदलता है.
  • अगर आपने कोई नया डिवाइस टाइप, ट्रेट या डिवाइस की नई सुविधा जोड़ी है.

अपनी प्रोफ़ाइल बनाना शुरू करें

सिंक करने का अनुरोध लागू करने के लिए, यह तरीका अपनाएं:

Google HomeGraph API को चालू करना

  1. Google Cloud Console में, HomeGraph API पेज पर जाएं.

    HomeGraph API पेज पर जाएं
  2. वह प्रोजेक्ट चुनें जो आपके smart home प्रोजेक्ट आईडी से मैच करता हो.
  3. चालू करें पर क्लिक करें.

सेवा खाते की कुंजी बनाना

Google Cloud Console से सेवा खाते की कुंजी जनरेट करने के लिए, यह तरीका अपनाएं:

ध्यान दें: यह तरीका अपनाते समय, पक्का करें कि सही GCP प्रोजेक्ट का इस्तेमाल किया जा रहा हो. यह वही प्रोजेक्ट है जो आपके smart home प्रोजेक्ट आईडी से मैच करता है.
  1. Google Cloud Console में, सेवा खाते पेज पर जाएं.

    सर्विस खातों वाले पेज पर जाएं.

    सेवा खातों वाले पेज पर जाने से पहले, आपको कोई प्रोजेक्ट चुनना पड़ सकता है.

  2. सेवा खाता बनाएं पर क्लिक करें.

  3. सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें.

  4. सेवा खाता आईडी फ़ील्ड में, कोई आईडी डालें.

  5. सेवा खाते की जानकारी फ़ील्ड में, जानकारी डालें.

  6. बनाएं और जारी रखें पर क्लिक करें.

  7. भूमिका ड्रॉपडाउन से, सेवा खाते > सेवा खाता OpenID Connect आइडेंटिटी टोकन क्रिएटर को चुनें.

  8. जारी रखें पर क्लिक करें.

  9. हो गया पर क्लिक करें.

  10. सेवा खातों की सूची से, वह सेवा खाता चुनें जिसे आपने अभी-अभी बनाया है. इसके बाद, कार्रवाइयां मेन्यू से कुंजियां मैनेज करें को चुनें.

  11. कुंजी जोड़ें > नई कुंजी बनाएं को चुनें.

  12. कुंजी का टाइप के लिए, JSON विकल्प चुनें.

  13. बनाएं पर क्लिक करें. आपके कंप्यूटर पर एक JSON फ़ाइल डाउनलोड होगी, जिसमें आपकी कुंजी मौजूद होगी.

सेवा खाते की कुंजियां बनाने के बारे में ज़्यादा जानकारी और निर्देश पाने के लिए, Google Cloud Console के सहायता केंद्र की साइट पर, सेवा खाते की कुंजियां बनाना और मिटाना लेख पढ़ें.

एपीआई को कॉल करना

HTTP

Home Graph API, एचटीटीपी एंडपॉइंट उपलब्ध कराता है

  1. JSON वेब टोकन (JWT) बनाने के लिए, डाउनलोड की गई सेवा खाते की JSON फ़ाइल का इस्तेमाल करें. ज़्यादा जानकारी के लिए, सेवा खाते का इस्तेमाल करके पुष्टि करना लेख पढ़ें.
  2. oauth2l का इस्तेमाल करके, https://www.googleapis.com/auth/homegraph स्कोप के साथ OAuth 2.0 का ऐक्सेस टोकन हासिल करें:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId का इस्तेमाल करके, JSON अनुरोध बनाएं. यहां सिंक करने के अनुरोध के लिए, JSON अनुरोध का एक सैंपल दिया गया है:
  5. {
      "agentUserId": "user-123"
    }
  6. Google Home Graph एंडपॉइंट पर किए जाने वाले एचटीटीपी पोस्ट अनुरोध में, सिंक करने के अनुरोध वाले JSON और टोकन को शामिल करें. यहां एक उदाहरण दिया गया है, जिसमें टेस्ट के तौर पर curl का इस्तेमाल करके, कमांड लाइन में अनुरोध करने का तरीका बताया गया है:
  7. 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 एंडपॉइंट उपलब्ध कराता है

  1. Home Graph API के लिए, प्रोटोकॉल बफ़र सेवा की परिभाषा पाएं.
  2. इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए क्लाइंट स्टब जनरेट करने के लिए, gRPC डेवलपर दस्तावेज़ में दिया गया तरीका अपनाएं.
  3. RequestSync तरीके को कॉल करें.

Node.js

Google APIs Node.js Client, Home Graph API के लिए बाइंडिंग उपलब्ध कराता है.

  1. ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके, google.homegraph सेवा को शुरू करें.
  2. 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 के लिए बाइंडिंग उपलब्ध कराती है.

  1. ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके, HomeGraphApiService को शुरू करें.
  2. 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 फ़्लैग को 'सही है' पर सेट किया गया है, तो एक से ज़्यादा अनुरोध किए जा सकते हैं.