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

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

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

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

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

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