स्मार्ट होम ऐक्शन बनाने का तरीका जानने की नई जगह, Google Home डेवलपर सेंटर में आपका स्वागत है. ध्यान दें: Actions कंसोल में कार्रवाइयां बनाना जारी रहेगा.

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

आपको मेरी यह बात गाँठ बाँध लेनी चाहिए कि आप क्रिएटर हैं, इसलिए आप एक आर्टिस्ट हैं और आर्टिस्ट को इंस्पायर्ड होना चाहिए.

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

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

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

शुरू करना

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

Google HomeGraph एपीआई चालू करें

  1. Google Cloud Console में, HomeGraph एपीआई पेज पर जाएं.

    HomeGraph एपीआई पेज पर जाएं
  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 वेब टोकन (JWT) बनाने के लिए, डाउनलोड किए गए सेवा खाते की JSON फ़ाइल का इस्तेमाल करें. ज़्यादा जानकारी के लिए, सेवा खाते का इस्तेमाल करके पुष्टि करना देखें.
  2. oauth2l का इस्तेमाल करके, OAuth 2.0 ऐक्सेस टोकन पाने के लिए, https://www.googleapis.com/auth/homegraph का इस्तेमाल करें:
  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 ग्राफ़ एंडपॉइंट पर, अनुरोध सिंक JSON और अपने एचटीटीपी POST अनुरोध के टोकन को जोड़ें. यहां एक उदाहरण के तौर पर 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. अनुरोध सिंक करने के डिवाइसों के अनुरोध वाले तरीके requestSync को कॉल करें. ऐसा करने पर, Promise को एक खाली RequestSyncDeviceResponse के साथ दिखाया जाता है.
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 - सर्वर अमान्य सिंटैक्स की वजह से क्लाइंट के भेजे गए अनुरोध को प्रोसेस नहीं कर सका. इसकी सामान्य वजहों में, स्ट्रिंग की वैल्यू के लिए "{0/}" के बजाय, गलत JSON या null का इस्तेमाल करना शामिल है.
  • 403 Forbidden - सर्वर को रीफ़्रेश करने के दौरान हुई गड़बड़ी की वजह से, agentUserId के लिए किया गया अनुरोध प्रोसेस नहीं किया जा सका. पक्का करें कि आपका OAuth एंडपॉइंट टोकन के अनुरोधों को रीफ़्रेश करने के लिए सही तरीके से जवाब देता है. साथ ही, उपयोगकर्ता के खाता जोड़ने की स्थिति देखें.
  • 404 Not Found - अनुरोध किया गया संसाधन नहीं मिल सका लेकिन यह आने वाले समय में उपलब्ध हो सकता है. आम तौर पर, इसका मतलब यह है कि उपयोगकर्ता खाता Google से लिंक नहीं है या हमें अमान्य agentUserId मिला है. पक्का करें कि agentUserId, आपके सिंक रिस्पॉन्स में दी गई वैल्यू से मेल खाता हो. साथ ही, यह भी पक्का करें कि आप डिसकनेक्ट इंटेंट को सही तरीके से हैंडल कर रहे हों.
  • 429 Too Many Requests - दिए गए agentUserId के लिए, एक साथ सिंक करने के लिए तय किए गए अनुरोधों की तय सीमा पार हो गई है. कॉलर जब तक सही फ़्लैग async पर सेट नहीं होता, तब तक वह सिर्फ़ एक साथ सिंक करने का अनुरोध कर सकता है.