गड़बड़ियों और अपवादों को मैनेज करना

जब डिवाइस या अनुरोध उम्मीद के मुताबिक काम नहीं करते, तो गड़बड़ी को ठीक करने और उपयोगकर्ताओं के साथ बातचीत करने की सुविधा देना ज़रूरी है. इससे उन्हें यह समझने में मदद मिलती है कि क्या हुआ है. साथ ही, जब भी संभव हो, गड़बड़ी को ठीक करने का तरीका भी पता चलता है. पक्का करें कि आपने गड़बड़ी की संभावित स्थितियों और उन पर आपके डिवाइस के जवाब देने के तरीके के बारे में सोच लिया हो: अगर कोई उपयोगकर्ता किसी टास्क के दौरान रुकावट डालता है, तो क्या होगा? अगर कोई उपयोगकर्ता किसी डिवाइस के ऑफ़लाइन होने पर, उससे कोई कार्रवाई करने का अनुरोध करता है, तो क्या होगा? इन समस्याओं को ध्यान में रखकर, उपयोगकर्ताओं को इनसे निपटने में मदद करने से, उन्हें बेहतर अनुभव मिलता है. साथ ही, वे आपके डिवाइसों का इस्तेमाल करते समय परेशान नहीं होते.

इस गाइड में, गड़बड़ियों को ठीक करने वाले इंटेंट रिस्पॉन्स के कुछ उदाहरण दिए गए हैं. गड़बड़ी और अपवादों के लिए मान्य errorCode वैल्यू की समीक्षा करने के लिए, गड़बड़ियां और अपवाद देखें.

पहला उदाहरण: EXECUTE इंटेंट के लिए गड़बड़ी का जवाब

असली उपयोगकर्ता ने अपने लिविंग रूम में दो स्मार्ट लाइटें इंस्टॉल की हैं. उपयोगकर्ता "लिविंग रूम की लाइटें चालू करो" निर्देश देता है और Google आपके फ़ुलफ़िलमेंट यूआरएल पर EXECUTE इंटेंट भेजता है. आपको पता चला कि उपयोगकर्ता के डिवाइस ऑफ़लाइन हैं और उन्हें कंट्रोल नहीं किया जा सकता. इसलिए, आपका फ़ुलफ़िलमेंट status ERROR और errorCode deviceOffline के साथ EXECUTE रिस्पॉन्स दिखाता है.

इस उदाहरण में, लाइट डिवाइस से errorCode के साथ EXECUTE रिस्पॉन्स देने का तरीका बताया गया है. इसके बारे में पहले बताया गया है:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "light-device-id-1"
        ],
        "status": "ERROR",
        "errorCode": "deviceOffline"
      },
      {
        "ids": [
          "light-device-id-2"
        ],
        "status": "ERROR",
        "errorCode": "deviceOffline"
      }
    ]
  }
}

जवाब मिलने के बाद, Google Assistant उपयोगकर्ता को "डिवाइस अभी उपलब्ध नहीं है" प्रॉम्प्ट दिखाता है. याद रखें कि EXECUTE के जवाब में errorCode deviceOffline भेजने के बाद भी, आपको रिपोर्ट स्टेट में डिवाइसों के लिए ऑफ़लाइन स्टेटस भेजना होगा.

उदाहरण 2: EXECUTE इंटेंट के लिए, नॉन-ब्लॉकिंग अपवाद

कोई उपयोगकर्ता Assistant का इस्तेमाल करके, अपने घर के मुख्य दरवाज़े पर लगे स्मार्ट लॉक को लॉक करने की कोशिश करता है. लॉक को कंट्रोल किया जा सकता है, लेकिन आपको पता चलता है कि डिवाइस की बैटरी कम है. इसलिए, कार्रवाई पूरी होने पर EXECUTE रिस्पॉन्स मिलता है. इसमें status SUCCESS और exceptionCode lowBattery शामिल होते हैं.

इस उदाहरण में, लॉक किए गए डिवाइस से exceptionCode के साथ EXECUTE रिस्पॉन्स भेजने का तरीका बताया गया है. इसके बारे में पहले बताया गया है:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["lock-device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isLocked": true,
        "isJammed": false,
        "exceptionCode": "lowBattery"
      }
    }]
  }
}

जवाब मिलने के बाद, Assistant उपयोगकर्ता को "डिवाइस की बैटरी कम है" प्रॉम्प्ट दिखाता है.

तीसरा उदाहरण: गड़बड़ी की सूचनाएं पहले से भेजना

कुछ मामलों में, उपयोगकर्ताओं को गड़बड़ी की सूचना देना मददगार हो सकता है. खास तौर पर, उन फ़ंक्शन के लिए जो उपयोगकर्ताओं को लगता है कि अपने-आप पूरे हो जाएंगे. बिना मांगे सूचनाएं देने की सुविधा वाले ट्रेट के लिए, गड़बड़ी होने पर उपयोगकर्ता को सूचना दी जा सकती है. इसके लिए, आपको smart home बिना मांगे सूचनाएं देने की सुविधा लागू करनी होगी.

स्मार्ट ड्रायर चल रहा है और साइकल पूरा होने से पहले कोई व्यक्ति दरवाज़ा खोल देता है. Google Home Graph एपीआई के reportStateAndNotifications तरीके को कॉल करके, errorCode के साथ बिना मांगे सूचना भेजी जा सकती है:

इस उदाहरण में, ड्रायर डिवाइस से errorCode के साथ बिना मांगे सूचना भेजने का तरीका बताया गया है. इसके बारे में पहले बताया गया है:

POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id",
  "eventId": "unique-event-id",
  "payload": {
    "devices": {
      "notifications": {
        "dryer-device-id": {
          "RunCycle": {
            "priority": 0,
            "status": "FAILURE",
            "errorCode": "deviceDoorOpen"
          }
        }
      },
      "states": {
        "dryer-device-id": {
          "isRunning": false,
          "isPaused": true
        }
      }
    }
  }
}

सूचना मिलने के बाद, Assistant उपयोगकर्ता को "डिवाइस का दरवाज़ा खुला है" प्रॉम्प्ट दिखाता है. एक ही पेलोड में सूचनाओं के साथ-साथ, डिवाइस की संबंधित स्थितियां भी भेजी जा सकती हैं.

चौथा उदाहरण: फ़ॉलो-अप सूचना

फ़ॉलो-अप सूचनाएं भेजने की सुविधा देने वाले ट्रेट के निर्देशों के लिए, गड़बड़ी या अपवाद होने पर उपयोगकर्ता को फ़ॉलो-अप सूचना भेजी जा सकती है. ऐसा तब किया जा सकता है, जब आपने smart home फ़ॉलो-अप सूचनाएं भेजने की सुविधा लागू की हो.

कोई उपयोगकर्ता, गराज का दरवाज़ा बंद करने का निर्देश देता है, लेकिन दरवाज़ा बंद होते समय जाम हो जाता है. errorCode का इस्तेमाल करके, फ़ॉलो-अप सूचना भेजी जा सकती है:

POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id",
  "eventId": "unique-event-id",
  "payload": {
    "devices": {
      "notifications": {
        "door-device-id": {
          "LockUnlock": {
            "priority": 0,
            "followUpResponse": {
              "status": "FAILURE",
              "errorCode": "deviceJammingDetected",
              "followUpToken": "follow-up-token-1"
            }
          }
        }
      },
      "states": {
        "door-device-id": {
          "openPercent": 70
        }
      }
    }
  }
}

सूचना मिलने के बाद, Assistant उपयोगकर्ता को "डिवाइस जाम हो गया है" मैसेज दिखाता है. एक ही पेलोड में सूचनाओं के साथ, डिवाइस की संबंधित स्थितियां भेजी जा सकती हैं.

ज़्यादा जानकारी और ब्यौरे के लिए errorCodes, गड़बड़ियां और अपवाद रेफ़रंस दस्तावेज़ देखें.