ত্রুটি এবং ব্যতিক্রমগুলি পরিচালনা করুন

যখন ডিভাইস বা অনুরোধ প্রত্যাশা অনুযায়ী কাজ করে না, তখন আপনার ব্যবহারকারীদের জন্য ভালো ত্রুটি ব্যবস্থাপনা এবং যোগাযোগের ব্যবস্থা করা জরুরি, যাতে তারা বুঝতে পারে কী ঘটেছে এবং সম্ভব হলে, কীভাবে তা সংশোধন করতে হবে। সম্ভাব্য ব্যর্থতার পরিস্থিতিগুলো এবং আপনার ডিভাইসের কীভাবে প্রতিক্রিয়া জানানো উচিত, তা ভালোভাবে ভেবে দেখুন: যদি কোনো ব্যবহারকারী চলমান কোনো কাজে বাধা দেয়? যদি কোনো ব্যবহারকারী অফলাইন থাকা অবস্থায় ডিভাইসটি থেকে কোনো কাজের অনুরোধ করে? এই সমস্যাগুলোর জন্য পরিকল্পনা করা এবং ব্যবহারকারীকে সেগুলো থেকে বেরিয়ে আসতে সাহায্য করা ব্যবহারকারীর হতাশা এড়াতে পারে এবং আপনার ডিভাইসগুলোর জন্য একটি উন্নত মানের অভিজ্ঞতা তৈরি করে।

এই নির্দেশিকায় ত্রুটি পরিচালনা করে এমন কিছু ইন্টেন্ট রেসপন্সের উদাহরণ দেওয়া হয়েছে। ত্রুটি এবং ব্যতিক্রমের জন্য বৈধ errorCode মানগুলো পর্যালোচনা করতে ‘ত্রুটি এবং ব্যতিক্রম’ অংশটি দেখুন।

উদাহরণ ১: EXECUTE ইন্টেন্টের জন্য ত্রুটিপূর্ণ প্রতিক্রিয়া

একজন ব্যবহারকারীর বসার ঘরে দুটি স্মার্ট লাইট লাগানো আছে। ব্যবহারকারী "বসার ঘরের লাইট জ্বালাও" কমান্ডটি দেন এবং গুগল আপনার ফুলফিলমেন্ট ইউআরএল-এ একটি EXECUTE ইন্টেন্ট পাঠায়। আপনি দেখতে পান যে ব্যবহারকারীর ডিভাইসগুলো অফলাইন এবং নিয়ন্ত্রণযোগ্য নয়, তাই আপনার ফুলফিলমেন্টটি ERROR status এবং deviceOffline errorCode সহ একটি 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 ব্যবহার করে তার সামনের দরজার স্মার্ট লকটি লক করার চেষ্টা করেন। আপনি সফলভাবে লকটি নিয়ন্ত্রণ করতে পারলেও দেখতে পান যে ডিভাইসটির ব্যাটারি কম, তাই আপনার ফুলফিলমেন্টটি SUCCESS status এবং lowBattery exceptionCode সহ একটি 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 ব্যবহারকারীকে " ডিভাইসটির ব্যাটারি কম আছে" এই বার্তাটি পাঠায়।

উদাহরণ ৩: সক্রিয় ত্রুটি বিজ্ঞপ্তি

কিছু ক্ষেত্রে, ব্যবহারকারীদের কোনো ত্রুটি সম্পর্কে সতর্ক করা সহায়ক হতে পারে, বিশেষ করে সেইসব ফাংশনের জন্য যা ব্যবহারকারীরা স্বয়ংক্রিয়ভাবে সম্পন্ন হবে বলে আশা করেন। যেসব ট্রেইট প্রোঅ্যাকটিভ নোটিফিকেশন সমর্থন করে, সেগুলোর ক্ষেত্রে আপনি smart home প্রোঅ্যাকটিভ নোটিফিকেশন প্রয়োগ করে থাকলে, ত্রুটি ঘটার সাথে সাথেই ব্যবহারকারীকে আগেভাগে জানাতে পারেন।

একটি স্মার্ট ড্রায়ার চলছে এবং সাইকেলটি শেষ হওয়ার আগেই কেউ দরজা খুলে ফেলল। আপনি একটি errorCode সহ একটি সক্রিয় নোটিফিকেশন পাঠাতে Google Home Graph API-এর 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 জন্য, এরর এবং এক্সেপশন রেফারেন্স ডকুমেন্টেশন দেখুন।