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

Cloud-to-cloud

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

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

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

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