সমস্যা ও ব্যতিক্রম হ্যান্ডেল করা

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

এই গাইড, সমস্যার সমাধান করে এমন উদ্দেশ্য সংক্রান্ত উত্তরের কিছু উদাহরণ প্রদান করে। সমস্যা ও ব্যতিক্রমের জন্য সঠিক errorCode ভ্যালু পর্যালোচনা করতে সমস্যা ও ব্যতিক্রম দেখুন।

উদাহরণ ১: EXECUTE ইনটেন্টের জন্য সমস্যার উত্তর

কোনও এন্ড-ইউজারের বসার ঘরে দুটি স্মার্ট লাইট ইনস্টল করা আছে। ব্যবহারকারী কমান্ড ইস্যু করেছেন "বসার ঘরের আলো জ্বালাও" এবং Google আপনার ফুলফিলমেন্ট URL-এ একটি 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 সহ উত্তর দেয়।

আগে যেভাবে বর্ণনা করা হয়েছে, সেই অনুযায়ী লক করা ডিভাইস থেকে কীভাবে EXECUTE উত্তর সহ exceptionCode পাঠাতে হয় তা এই উদাহরণে দেখানো হয়েছে:

{
  "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 প্রোঅ্যাক্টিভ বিজ্ঞপ্তি প্রয়োগ করে থাকেন।

স্মার্ট ড্রায়ার চলছে এবং সাইকেল সম্পূর্ণ হওয়ার আগে কেউ দরজা খুলে দিয়েছেন। আপনি 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 ব্যবহারকারীকে "ডিভাইসের দরজা খোলা হয়েছে" প্রম্পট দেখায়। আপনি একই পেলোডের মধ্যে বিজ্ঞপ্তি সহ সংশ্লিষ্ট ডিভাইসের স্ট্যাটাস পাঠাতে পারবেন।

উদাহরণ ৪: ফলো-আপ বিজ্ঞপ্তি

যেসব ট্রেট কমান্ড ফলো-আপ বিজ্ঞপ্তি কাজ করে, সেগুলির ক্ষেত্রে কোনও সমস্যা বা ব্যতিক্রম ঘটলে, আপনি ব্যবহারকারীকে একটি ফলো-আপ বিজ্ঞপ্তি পাঠাতে পারেন, যদি আপনি 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 জানতে, সমস্যা ও ব্যতিক্রম রেফারেন্স ডকুমেন্টেশন দেখুন।