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

अनुरोध सिंक करने की सुविधा, आपके फ़ुलफ़िलमेंट के लिए SYNC अनुरोध को ट्रिगर करती है. यह अनुरोध, उन सभी Google उपयोगकर्ताओं के लिए होता है जिनके डिवाइसों पर, आपके दिए गए agentUserId (जिसे आपने मूल सिंक अनुरोध में भेजा था) से जुड़ा कोई डिवाइस है. इससे, उपयोगकर्ताओं के खाते को अनलिंक किए बिना और उसे फिर से लिंक किए बिना, उनके डिवाइसों को अपडेट किया जा सकता है. इस आइडेंटिफ़ायर से लिंक किए गए सभी उपयोगकर्ताओं को 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. कुंजी टाइप के लिए, JSON विकल्प चुनें.

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

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

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

होम ग्राफ़ एपीआई एक gRPC एंडपॉइंट उपलब्ध कराता है

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

Node.js

Google API Node.js क्लाइंट, होम ग्राफ़ एपीआई के लिए बाइंडिंग उपलब्ध कराता है.

  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 फ़्लैग को 'सही है' पर सेट नहीं किया जाता, तब तक कॉल करने वाला व्यक्ति एक साथ सिर्फ़ एक सिंक अनुरोध कर सकता है.