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

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

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

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

शुरू करें

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

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

होम ग्राफ़ एपीआई एचटीटीपी एंडपॉइंट देता है

  1. JSON Web Token (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. एचटीटीपी पीओएसटी में अनुरोध सिंक करने के JSON और एचटीटीपी पीओएसटी अनुरोध के टोकन को Google Home ग्राफ़ के एंडपॉइंट से जोड़ें. यहां एक उदाहरण में बताया गया है कि टेस्ट के तौर पर, 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. होम ग्राफ़ एपीआई के लिए, प्रोटोकॉल बफ़र सेवा की परिभाषा पाएं.
  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 एपीआई क्लाइंट लाइब्रेरी, होम ग्राफ़ एपीआई के लिए बाइंडिंग उपलब्ध कराती है.

  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, सिंक करने के रिस्पॉन्स में दी गई वैल्यू से मेल खाता हो. साथ ही, डिसकनेक्ट करने के इंटेंट को सही तरीके से मैनेज किया जा रहा हो.
  • 429 Too Many Requests - दिए गए agentUserId के लिए, एक साथ सिंक करने के अनुरोधों की ज़्यादा से ज़्यादा संख्या पार हो गई है. जब तक async फ़्लैग 'सही है' पर सेट नहीं होता, तब तक कॉलर सिर्फ़ एक साथ सिंक करने का एक अनुरोध जारी कर सकता है.