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

Cloud-to-cloud

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

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

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

शुरू करें

Request 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 फ़ाइल का इस्तेमाल करके, JSON Web Token (JWT) बनाएं. ज़्यादा जानकारी के लिए, सेवा खाते का इस्तेमाल करके पुष्टि करना लेख पढ़ें.
  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 अनुरोध बनाएं. Request Sync के लिए, JSON अनुरोध का एक उदाहरण यहां दिया गया है:
  5. {
      "agentUserId": "user-123"
    }
  6. Google Home Graph के एंडपॉइंट पर, अपने एचटीटीपी POST अनुरोध में, Request Sync 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. requestSync तरीके को RequestSyncDevicesRequest के साथ कॉल करें. यह, खाली 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);
    

गड़बड़ी के जवाब

Request Sync को कॉल करने पर, आपको गड़बड़ी के ये जवाब मिल सकते हैं. ये जवाब, एचटीटीपी स्टेटस कोड के तौर पर मिलते हैं.

  • 400 Bad Request - सिंटैक्स अमान्य होने की वजह से, सर्वर, क्लाइंट के भेजे गए अनुरोध को प्रोसेस नहीं कर सका. इसकी सामान्य वजहों में, गलत तरीके से बनाया गया JSON या स्ट्रिंग वैल्यू के लिए "" के बजाय null का इस्तेमाल करना शामिल है.
  • 403 Forbidden - टोकन को रीफ़्रेश करते समय गड़बड़ी होने की वजह से, सर्वर, दिए गए agentUserId के लिए अनुरोध को प्रोसेस नहीं कर सका. पक्का करें कि आपका OAuth एंडपॉइंट, रीफ़्रेश टोकन के अनुरोधों का सही तरीके से जवाब दे. साथ ही, उपयोगकर्ता के खाते को लिंक करने की स्थिति की जांच करें.
  • 404 Not Found - अनुरोध किया गया संसाधन नहीं मिला . हालांकि, यह आने वाले समय में उपलब्ध हो सकता है. आम तौर पर, इसका मतलब है कि उपयोगकर्ता का खाता, Google से लिंक नहीं है या हमें अमान्य agentUserId मिला है. पक्का करें कि agentUserId आपके SYNC जवाब में दी गई वैल्यू से मेल खाता हो. साथ ही, आपने DISCONNECT इंटेंट को सही तरीके से हैंडल किया हो.
  • 429 Too Many Requests - दिए गए agentUserId के लिए, एक साथ सिंक करने के अनुरोधों की ज़्यादा से ज़्यादा संख्या पार हो गई है. अनुरोध करने वाला व्यक्ति, एक साथ सिंक करने का सिर्फ़ एक अनुरोध कर सकता है. हालांकि, अगर async फ़्लैग को 'सही' पर सेट किया गया है, तो एक से ज़्यादा अनुरोध किए जा सकते हैं.