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

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

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

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

शुरू करें

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

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

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

    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 वेब टोकन (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 ग्राफ़ के एंडपॉइंट में, अपने एचटीटीपी पोस्ट अनुरोध में दिए गए टोकन सिंक करने का अनुरोध और टोकन को जोड़ें. इस उदाहरण में बताया गया है कि टेस्ट के तौर पर, 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. requestSync वाले तरीके को RequestSyncDevicesRequest से कॉल करें. यह खाली 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 फ़्लैग 'सही' पर सेट नहीं होता, तब तक कॉलर सिर्फ़ एक साथ सिंक करने का अनुरोध कर सकता है.