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

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

इस गाइड में, इंटेंट के रिस्पॉन्स के कुछ उदाहरण दिए गए हैं, जो गड़बड़ियों को ठीक करते हैं. गड़बड़ी और अपवादों के लिए मान्य 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 भेजने के बाद, रिपोर्ट स्थिति वाले डिवाइसों के लिए ऑफ़लाइन स्थिति भेजनी होगी.

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

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

इस उदाहरण में, लॉक डिवाइस से 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, उपयोगकर्ता को "डिवाइस की बैटरी कम है" का संकेत देगा.

उदाहरण 3: गड़बड़ी के बारे में अपने-आप मिलने वाली सूचनाएं

कुछ मामलों में, उपयोगकर्ताओं को गड़बड़ी के बारे में सूचना देना मददगार हो सकता है. खास तौर पर, उन फ़ंक्शन के लिए जिन्हें उपयोगकर्ता अपने-आप पूरा करने की उम्मीद करते हैं. अपने-आप मिलने वाली सूचनाओं की सुविधा देने वाली विशेषताओं के लिए, 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 लोगों को "डिवाइस का दरवाज़ा खुला है" बताएगा. एक ही पेलोड में, सूचनाओं के साथ-साथ डिवाइस से जुड़ी स्थितियां भेजी जा सकती हैं.

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

फ़ॉलो-अप सूचनाओं की सुविधा देने वाले Trait से जुड़े निर्देशों के लिए, अगर आपने 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 के बारे में ज़्यादा जानकारी के लिए, गड़बड़ियां और अपवाद रेफ़रंस दस्तावेज़ देखें.