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

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

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

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

कोई उपयोगकर्ता, Assistant की मदद से अपने सामने के दरवाज़े पर लगे स्मार्ट लॉक को लॉक करने की कोशिश करता है 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 Assistant उपयोगकर्ता को "device की बैटरी कम है" मैसेज दिखाता है.

तीसरा उदाहरण: बिना मांगे सूचनाएं, जिनमें गड़बड़ी की जानकारी होती है

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

कोई स्मार्ट ड्रायर चल रहा है और कोई व्यक्ति साइकल पूरी होने से पहले ही उसका दरवाज़ा खोल देता है. Google Home Graph API 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 उपयोगकर्ता को "device door is opened" मैसेज दिखाता है. एक ही पेलोड में, सूचनाओं के साथ-साथ डिवाइस के स्टेटस भी भेजे जा सकते हैं.

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

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

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