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

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

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

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

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

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

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

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

इस उदाहरण में, ड्रायर डिवाइस से पहले बताई गई 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 के बारे में ज़्यादा जानने के लिए, गड़बड़ियां और अपवाद के रेफ़रंस दस्तावेज़ देखें.