خطاها و استثنائات

این سند، خطاها و استثنائات پشتیبانی‌شده رسمی برای دستگاه‌های خانه هوشمند را فهرست می‌کند. لطفاً از این کدهای خطا و استثنائات داده‌شده در پاسخ intent یا در اعلان‌ها (در صورت پیاده‌سازی) استفاده کنید، تا دستیار گوگل (Google Assistant) کاربران نهایی را از مشکلات مربوط به یک دستور یا وضعیت دستگاه مطلع کند. اگر پاسخ حاوی قالب‌بندی نادرست یا errorCode باشد، دستیار گوگل یک پیام خطای عمومی به کاربران می‌دهد، به عنوان مثال، "متاسفیم، دستگاه در حال حاضر در دسترس نیست".

خطاها

شما باید زمانی که مشکلی باعث عدم موفقیت در اجرای درخواست یا پرس و جو می‌شود، یک کد خطا را برگردانید. برای مثال، اگر قفل در گیر کرده و نمی‌توان آن را قفل یا باز کرد، باید خطایی در مورد این وضعیت به کاربر برگردانده شود.

کدهای خطا می‌توانند در سطح دستگاه یا در سطح سراسری ضمیمه شوند. برای مثال، اگر کاربری چراغ‌های زیادی از یک ارائه‌دهنده داشته باشد و آنها توسط یک هاب کنترل شوند، وقتی کاربر درخواست خاموش کردن همه چراغ‌های خود را می‌دهد، ارائه‌دهنده ممکن است اگر یک چراغ آفلاین باشد، خطای سطح دستگاه را برگرداند، یا اگر کل هاب آفلاین باشد و هیچ چراغی قابل کنترل نباشد، خطای سطح سراسری را برگرداند. اگر همه دستگاه‌ها آفلاین باشند، تفاوتی بین استفاده از خطاهای سطح سراسری یا سطح دستگاه وجود ندارد.

به طور خلاصه:

  • خطای سطح سراسری: تمام دستگاه‌های موجود در پاسخ، خطای یکسانی دارند.
  • خطای سطح محلی: پاسخ ترکیبی با موارد خطا و موفقیت

خطاهای سطح جهانی

قطعه کد JSON زیر نحوه‌ی برگرداندن خطاهای سطح سراسری را در پاسخ QUERY یا EXECUTE نشان می‌دهد.

مثالی از خطای سطح جهانی deviceOffline به دلیل آفلاین بودن هاب:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "deviceOffline",
    "status" : "ERROR"
  }
}

نمونه‌ای از خطای سطح جهانی inSoftwareUpdate به دلیل بروز رسانی hub:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "inSoftwareUpdate",
    "status" : "ERROR"
  }
}

خطاهای سطح دستگاه

پاسخ پرس و جو

قطعه کد JSON زیر نحوه‌ی برگرداندن خطاهای سطح دستگاه را در پاسخ QUERY نشان می‌دهد.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      },
      "device-id-2": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      }
    }
  }
}

اجرای پاسخ

قطعه کد JSON زیر نحوه‌ی برگرداندن خطاهای سطح دستگاه در پاسخ EXECUTE را نشان می‌دهد.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "device-id-1"
        ],
        "status": "ERROR",
        "errorCode": "deviceOffline"
      },
      {
        "ids": [
          "device-id-2"
        ],
        "status": "SUCCESS",
        "states": {
          "on": true,
          "online": true
        }
      }
    ]
  }
}

اعلان‌های دارای خطا

اطلاع رسانی پیشگیرانه

قطعه کد JSON زیر نحوه گزارش خطاهای سطح دستگاه را در یک اعلان پیشگیرانه نشان می‌دهد.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id-1",
  "eventId": "unique-event-id-1",
  "payload": {
    "devices": {
      "notifications": {
        "device-id-1": {
          "RunCycle": {
            "priority": 0,
            "status": "FAILURE",
            "errorCode": "deviceDoorOpen"
          }
        }
      }
    }
  }
}

پاسخ پیگیری

قطعه کد JSON زیر نحوه گزارش خطاهای سطح دستگاه را در یک پاسخ تکمیلی نشان می‌دهد.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id-1",
  "eventId": "unique-event-id-1",
  "payload": {
    "devices": {
      "notifications": {
        "device-id-1": {
          "LockUnlock": {
            "priority": 0,
            "followUpResponse": {
              "status": "FAILURE",
              "errorCode": "deviceJammingDetected",
              "followUpToken": "PLACEHOLDER"
            }
          }
        }
      }
    }
  }
}

لیست خطاها

خطاهای زیر TTS مربوطه را در دستگاه ایجاد می‌کنند.

  • aboveMaximumLightEffectsDuration : این بیشتر از حداکثر مدت زمان ۱ ساعت است. لطفاً دوباره امتحان کنید.
  • aboveMaximumTimerDuration : من فقط می‌توانم <device(s)> را تا <time period> تنظیم کنم.
  • actionNotAvailable : متاسفیم، به نظر می‌رسد که در حال حاضر نمی‌توانم این کار را انجام دهم.
  • actionUnavailableWhileRunning : <device(s)> <is/are> در حال حاضر در حال اجرا است، بنابراین نمی‌توانم هیچ تغییری ایجاد کنم.
  • alreadyArmed : <دستگاه(ها)> <is/are> از قبل مسلح شده است.
  • alreadyAtMax : <device(s)> <is/are> از قبل روی حداکثر دما تنظیم شده است.
  • alreadyAtMin : <device(s)> <is/are> از قبل روی حداقل دما تنظیم شده است.
  • alreadyClosed : <دستگاه(ها)> <is/are> از قبل بسته شده است.
  • از قبل خلع سلاح شده : <دستگاه(ها)> <is/are> قبلاً خلع سلاح شده است.
  • از قبل متصل شده : <دستگاه(ها)> <is/are> قبلاً متصل شده است.
  • alreadyInState : <device(s)> <is/are> از قبل در آن وضعیت است.
  • از قبل قفل شده است : <دستگاه(ها)> <هست/هست> از قبل قفل شده است.
  • alreadyOff : <دستگاه(ها)> <هست/هست> از قبل خاموش است.
  • alreadyOn : <دستگاه(ها)> <is/are> از قبل روشن است.
  • alreadyOpen : <دستگاه(ها)> <هست/هست> از قبل باز است.
  • alreadyPaused : <device(s)> <is/are> قبلاً متوقف شده است.
  • alreadyStarted : <device(s)> <is/are> از قبل شروع شده است.
  • alreadyStopped : <دستگاه(ها)> <is/are> از قبل متوقف شده است.
  • از قبل قفل‌گشایی شده : <دستگاه(ها)> <هست/هست> از قبل قفل‌گشایی شده است.
  • نام مبهم منطقه : متاسفیم، <device(s)> نمی‌تواند تشخیص دهد منظور شما کدام منطقه است. لطفاً مطمئن شوید که مناطق شما نام‌های منحصر به فردی دارند و دوباره امتحان کنید.
  • amountAboveLimit : این مقدار بیشتر از مقداری است که <device(s)> می‌تواند پشتیبانی کند.
  • appLaunchFailed : متاسفیم، اجرای <app name> روی <device(s)> ناموفق بود.
  • armFailure : <device(s)> قابل مسلح شدن نبود.
  • armLevelNeeded : مطمئن نیستم <device(s)> را روی کدام سطح تنظیم کنم. سعی کنید بگویید "<device(s)> را روی <low security> تنظیم کن" یا "<device(s)> را روی <high ​​security> تنظیم کن"
  • خطای authFailure : به نظر نمی‌رسد به <device(s)> دسترسی پیدا کنم. برنامه را بررسی کنید تا مطمئن شوید <device/devices> <is/are> شما به طور کامل تنظیم شده است.
  • bagFull : <device(s)> <has/have> <a full bag/full bags>. لطفاً <it/them> را خالی کنید و دوباره امتحان کنید.
  • حداقل مدت زمان جلوه‌های نوری زیر : این کمتر از حداقل مدت زمان ۵ دقیقه است. لطفاً دوباره امتحان کنید.
  • belowMinimumTimerDuration : من نمی‌توانم <device(s)> را برای چنین مدت کوتاهی تنظیم کنم. لطفاً دوباره امتحان کنید.
  • binFull : <دستگاه(ها)> <دارای/دارند> <یک سطل پر/سطل‌های پر>.
  • cancelArmingRestricted : متاسفیم، نتوانستم مسلح کردن <دستگاه(ها)> را لغو کنم.
  • cancelTooLate : متاسفیم، برای لغو خیلی دیر شده است. به جای آن از <device(s)> یا برنامه استفاده کنید.
  • channelSwitchFailed : متاسفیم، تغییر به کانال <channel name> ناموفق بود. لطفاً بعداً دوباره امتحان کنید.
  • مشکل شارژر : متاسفیم، به نظر می‌رسد که <دستگاه(ها)> <دارای/دارند> <یک مشکل شارژر/مشکلات شارژر> است.
  • commandInsertFailed : پردازش دستورات برای <device(s)> امکان‌پذیر نیست.
  • باتری از کار افتاده : <دستگاه(ها)> <دارای/دارند> <باتری از کار افتاده/باتری‌های از کار افتاده>.
  • degreesOutOfRange : درجه‌های درخواستی خارج از محدوده <device(s)> هستند.
  • deviceAlertNeedsAssistance : <دستگاه(ها)> یک هشدار فعال <دارد/دارد> و <نیاز(های)> به کمک شما دارد.
  • deviceAtExtremeTemperature : <دستگاه(ها)> <در دمای بسیار بالا/دمای بسیار بالا> <است/هستند>.
  • deviceBusy : متاسفیم، به نظر می‌رسد <device(s)> در حال حاضر کاری انجام می‌دهد.
  • deviceCharging : متاسفیم، به نظر می‌رسد <device(s)> نمی‌تواند این کار را انجام دهد زیرا (ha_shared.ItsTheyre size=$item.devices.total_device_count) در حال شارژ شدن است.
  • deviceClockged : متاسفیم، به نظر می‌رسد <device(s)> مسدود شده است.
  • deviceCurrentlyDispensing : <device(s)> در حال حاضر چیزی را توزیع می‌کند.
  • deviceDoorOpen : درب روی <device(s)> باز است. لطفاً آن را ببندید و دوباره امتحان کنید.
  • deviceHandleClosed : این دسته روی <device(s)> بسته است. لطفاً آن را باز کنید و دوباره امتحان کنید.
  • deviceJammingDetected : <دستگاه(ها)> <است/هستند> مسدود شده است.
  • درب دستگاه باز است : درب روی <دستگاه(ها)> باز است. لطفاً آن را ببندید و دوباره امتحان کنید.
  • دستگاه نیاز به تعمیر دارد : <دستگاه(ها)> <نیاز(ها)> نیاز به تعمیر دارد. لطفاً با نمایندگی خدمات محلی خود تماس بگیرید.
  • deviceNotDocked : متاسفیم، به نظر می‌رسد <device(s)> <is't/arent> متصل شده است. لطفاً <it/them> را متصل کنید و دوباره امتحان کنید.
  • deviceNotFound : <device(s)> <is/are>n't available. شاید بخواهید دوباره تنظیمات <it/them> را امتحان کنید.
  • deviceNotMounted : متاسفیم، به نظر می‌رسد <device(s)> نمی‌تواند این کار را انجام دهد زیرا <it/they> <is/are> نصب نشده است.
  • دستگاه آماده نیست : <دستگاه(ها)> <هست/هست>آماده نیست.
  • گیر کردن دستگاه : <دستگاه(ها)> <is/are> گیر کرده و به کمک شما نیاز دارد.
  • دستگاه دستکاری شده : <دستگاه(ها)> <دستکاری شده است/دارد>.
  • خاموش شدن دستگاه به دلیل حرارت بالا : متاسفیم، به نظر می‌رسد <دستگاه(ها)> به دلیل دمای بسیار بالا خاموش شده است.
  • directResponseOnlyUnreachable : <دستگاه(ها)> <از کنترل از راه دور پشتیبانی نمی‌کند/نمی‌کند>.
  • disarmFailure : <device(s)> قابل خلع سلاح نبود.
  • discreteOnlyOpenClose : متاسفیم، <device(s)> فقط می‌تواند به طور کامل باز یا بسته شود.
  • dispenseAmountAboveLimit : <device(s)> نمی‌تواند چنین مقدار زیادی را توزیع کند.
  • dispenseAmountBelowLimit : <device(s)> نمی‌تواند چنین مقدار کمی را توزیع کند.
  • dispenseAmountRemainingExceeded : <device(s)> به اندازه کافی <dispense item> برای انجام این کار ندارد.
  • dispenseFractionalAmountNotSupported : <device(s)> نمی‌تواند کسری از <dispense item> را توزیع کند.
  • dispenseFractionalUnitNotSupported : <device(s)> از کسرهای آن واحد برای <dispense item> پشتیبانی نمی‌کند.
  • dispenseUnitNotSupported : <device(s)> از آن واحد برای <dispense item> پشتیبانی نمی‌کند.
  • doorClosedTooLong : مدتی است که درِ <device(s)> باز نشده است. لطفاً در را باز کنید، مطمئن شوید چیزی داخل آن است و دوباره امتحان کنید.
  • emergencyHeatOn : <دستگاه(ها)> <در حالت گرمای اضطراری> <است/هستند>، بنابراین <آن/آنها> باید به صورت دستی تنظیم شوند.
  • faultyBattery : <دستگاه(ها)> <دارای/دارند> <یک باتری معیوب/باتری‌های معیوب>.
  • floorUnreachable : <device(s)> نمی‌تواند به آن اتاق دسترسی پیدا کند. لطفاً <it/them> را به طبقه سمت راست منتقل کنید و دوباره امتحان کنید.
  • functionNotSupported : در واقع، <device(s)> <از آن قابلیت پشتیبانی نمی‌کند/نمی‌کند>.
  • genericDispenseNotSupported : باید بدانم چه چیزی می‌خواهید توزیع کنید. لطفاً دوباره با نام کالا امتحان کنید.
  • hardError : متاسفیم، مشکلی پیش آمده و من قادر به کنترل دستگاه خانگی شما نیستم.
  • hardError : متاسفیم، مشکلی پیش آمده و من قادر به کنترل دستگاه خانگی شما نیستم.
  • inAutoMode : <device(s)> <is/are> در حال حاضر روی حالت خودکار تنظیم شده است. برای تغییر دما، باید <it/them> را به حالت دیگری تغییر دهید.
  • inAwayMode : <device(s)> <is/are> در حال حاضر روی حالت عدم دسترسی تنظیم شده است. برای کنترل ترموستات خود، باید با استفاده از برنامه Nest روی تلفن، تبلت یا رایانه، آن را به صورت دستی به حالت خانه تغییر دهید.
  • inDryMode : <device(s)> <is/are> در حال حاضر روی حالت خشک تنظیم شده است. برای تغییر دما، باید <it/them> را به حالت دیگری تغییر دهید.
  • inEcoMode : <device(s)> <is/are> در حال حاضر روی حالت اقتصادی تنظیم شده است. برای تغییر دما، باید <it/them> را به حالت دیگری تغییر دهید.
  • inFanOnlyMode : <device(s)> <is/are> در حال حاضر روی حالت فقط فن تنظیم شده است. برای تغییر دما، باید <it/them> را به حالت دیگری تغییر دهید.
  • inHeatOrCool : <دستگاه(ها)> <در حالت گرمایش/سرمایش> نیست.
  • inHumidifierMode : <device(s)> <is/are> در حال حاضر روی حالت رطوبت‌ساز تنظیم شده است. برای تغییر دما، باید <it/them> را به حالت دیگری تغییر دهید.
  • inOffMode : <device(s)> <is/are> در حال حاضر خاموش است. برای تغییر دما، باید <it/them> را به حالت دیگری تغییر دهید.
  • inPurifierMode : <device(s)> <is/are> در حال حاضر روی حالت تصفیه تنظیم شده است. برای تغییر دما، باید <it/them> را به حالت دیگری تغییر دهید.
  • inSleepMode : <device(s)> <is/are> در حالت خواب. لطفاً بعداً دوباره امتحان کنید.
  • inSoftwareUpdate : <device(s)> <is/are> در حال حاضر در حال به‌روزرسانی نرم‌افزاری است.
  • خطای lockFailure : <دستگاه(ها)> قفل نشد.
  • وضعیت قفل‌شده : <دستگاه(ها)> <هست/هست> در حال حاضر قفل است.
  • lockedToRange : آن دما خارج از محدوده قفل‌شده در <device(s)> است.
  • باتری کم : <دستگاه(ها)> <دارای/دارند> باتری کم.
  • maxSettingReached : <device(s)> <is/are> قبلاً روی بالاترین تنظیمات تنظیم شده است.
  • maxSpeedReached : <device(s)> <is/are> از قبل روی حداکثر سرعت تنظیم شده است.
  • minSettingReached : <device(s)> <is/are> از قبل روی کمترین مقدار تنظیم شده است.
  • minSpeedReached : <device(s)> <is/are> از قبل روی حداقل سرعت تنظیم شده است.
  • monitoringServiceConnectionLost : <device(s)> اتصال <its/their> خود را به سرویس مانیتورینگ از دست داده است.
  • needsAttachment : متاسفیم، به نظر می‌رسد <device(s)> <is/are> پیوست مورد نیاز را ندارد. لطفاً آن را جایگزین کنید و دوباره امتحان کنید.
  • needsBin : متاسفیم، به نظر می‌رسد <device(s)> <is/are> سطل زباله‌ای ندارد. لطفاً آن را جایگزین کنید و دوباره امتحان کنید.
  • needsPads : <دستگاه(ها)> <نیاز(ها)> پدهای جدید.
  • needsSoftwareUpdate : <دستگاه(ها)> <نیاز(ها)> یک به‌روزرسانی نرم‌افزاری.
  • نیاز به آب : <دستگاه(ها)> <نیاز(ها)> آب.
  • networkProfileNotRecognized : متاسفیم، من "<network profile>" را در <device(s)> تشخیص نمی‌دهم.
  • networkSpeedTestInProgress : من در حال حاضر <network> <speed/speeds>> را آزمایش می‌کنم.
  • noAvailableApp : متاسفیم، به نظر می‌رسد <app name> در دسترس نیست.
  • noAvailableChannel : متاسفیم، به نظر می‌رسد کانال <channel name> در دسترس نیست.
  • noChannelSubscription : متاسفیم، شما در حال حاضر در کانال <channel name> مشترک نیستید.
  • noTimerExists : متاسفیم، به نظر می‌رسد هیچ تایمری روی <device(s)> تنظیم نشده است.
  • notSupported : متاسفیم، این حالت برای <device(s)> در دسترس نیست.
  • انسداد شناسایی شد : <دستگاه(ها)> یک انسداد را شناسایی کرد.
  • آفلاین، deviceOffline : متاسفیم، به نظر می‌رسد <device(s)> <is/are>در حال حاضر در دسترس نیست.
  • onRequiresMode : لطفاً مشخص کنید که می‌خواهید کدام حالت را فعال کنید.
  • passphraseIncorrect : متاسفیم، به نظر می‌رسد پین نادرست است.
  • percentOutOfRange : متاسفیم، نمی‌توانم <device(s)> را روی <percent> تنظیم کنم.
  • پین نادرست : (عبارت عبور نادرست)
  • rainDetected : من <device(s)> را باز نکردم چون باران شناسایی شده بود.
  • rangeTooClose : این دماها برای محدوده گرمایش-سرمایش <دستگاه(ها)> خیلی نزدیک هستند. دماهایی را انتخاب کنید که از هم دورتر باشند.
  • پیوند مجدد الزامی : متاسفیم، به نظر می‌رسد مشکلی برای حساب شما پیش آمده است. لطفاً از برنامه Google Home یا Assistant خود برای پیوند مجدد <دستگاه(ها)> استفاده کنید.
  • غیرفعال‌سازی تنظیم از راه دور :
    • پارامتر اختیاری errorCodeReason
    • currentlyArmed - متاسفیم، از آنجایی که امنیت از قبل مسلح شده است، برای ایجاد هرگونه تغییر باید از <دستگاه(ها)> یا برنامه استفاده کنید.
    • remoteUnlockNotAllowed - متاسفیم، نمی‌توانم <دستگاه(ها)> را از راه دور باز کنم.
    • remoteControlOff - این عملکرد در حال حاضر غیرفعال است. لطفاً کنترل از راه دور را روی <device(s)> فعال کنید و دوباره امتحان کنید.
    • childSafetyModeActive - این اقدام برای <device(s)> غیرفعال است در حالی که حالت ایمنی کودک فعال است.
  • roomsOnDifferentFloors : <device(s)> نمی‌تواند به آن اتاق‌ها دسترسی پیدا کند زیرا در طبقات مختلف هستند.
  • safetyShutOff : <device(s)> <is/are> در حالت خاموش کردن ایمن است، بنابراین <it/they> باید به صورت دستی تنظیم شود.
  • sceneCannotBeApplied : متاسفیم، <device(s)> قابل اعمال نیست.
  • محدودیت امنیتی : <دستگاه(ها)> <دارای/دارند> یک محدودیت امنیتی.
  • softwareUpdateNotAvailable : متاسفیم، هیچ به‌روزرسانی نرم‌افزاری روی <device(s)> موجود نیست.
  • startRequiresTime : برای انجام این کار، باید به من بگویید که می‌خواهید <device(s)> چه مدت اجرا شود.
  • هنوز در حال خنک شدن است : <دستگاه(ها)> <هست/هست> هنوز در حال خنک شدن است.
  • stillWarmingUp : <دستگاه(ها)> <هست/هست> هنوز در حال گرم شدن است.
  • streamUnavailable : متاسفیم، به نظر می‌رسد که پخش جریانی در حال حاضر از <device(s)> در دسترس نیست.
  • پخش‌نشدنی : متاسفیم، در حال حاضر نمی‌توانم پخش جریانی را از <دستگاه(ها)> پخش کنم.
  • مخزن خالی : <دستگاه(ها)> <دارای/دارند> <یک مخزن خالی/مخازن خالی>. لطفاً <آن/مخازن> را پر کنید و دوباره امتحان کنید.
  • targetAlreadyReached : ببخشید، به نظر می‌رسد که دمای فعلی همین الان است.
  • timerValueOutOfRange : <device(s)> را نمی‌توان برای آن مدت زمان تنظیم کرد.
  • tooManyFailedAttempts : متاسفیم، تلاش‌های ناموفق زیادی انجام شده است. لطفاً برای تکمیل آن اقدام به برنامه دستگاه خود بروید.
  • transientError : متاسفیم، مشکلی در کنترل <device(s)> پیش آمده است. لطفاً دوباره امتحان کنید.
  • خاموش، دستگاه خاموش : <دستگاه(ها)> <در حال حاضر خاموش است/هست>.
  • unableToLocateDevice : من نتوانستم <device(s)> را پیدا کنم.
  • unknownFoodPreset : <device(s)> از آن تنظیمات غذایی پشتیبانی نمی‌کند.
  • unlockFailure : <device(s)> نتوانست قفلش را باز کند.
  • unpausableState : <device(s)> در حال حاضر قابل مکث نیست.
  • کاربر لغو شد : باشه
  • valueOutOfRange : <device(s)> نمی‌تواند روی آن دما تنظیم شود.

گزارش وضعیت آنلاین و آفلاین

وقتی دستگاهی آفلاین است، باید گزارش دهید گزارش وضعیت ظرف پنج دقیقه از رفتار دستگاه. برعکس، وقتی دستگاه به حالت آنلاین برمی‌گردد، باید گزارش دهید ظرف پنج دقیقه از رفتار دستگاه، وضعیت را گزارش دهید . هر زمان که یک دستگاه دوباره آنلاین شود، شریک باید تمام وضعیت‌های فعلی دستگاه را با استفاده از API reportStateAndNotification گزارش دهد. این مثال نشان می‌دهد که یک نوع دستگاه light آنلاین است و تمام وضعیت‌های فعلی دستگاه را گزارش می‌دهد.
"requestId": "test-request-id",
  "agentUserId": "agent-user-1",
    "payload":{
      "devices": {
        "states": {
          "device-id-1": {
            "brightness": 65,
            "on": true,
            "online": true
          }
          "notifications": {},
        }
      }
    }

استثنائات

شما باید زمانی که یک مشکل یا هشدار مرتبط با یک دستور وجود دارد، یک استثنا (exception) برگردانید. دستور می‌تواند موفق یا ناموفق باشد.

اگر دستور موفقیت‌آمیز بود (status = "SUCCESS")، با استفاده از ویژگی StatusReport (برای دستگاه‌هایی غیر از دستگاه هدف) یا با برگرداندن یک exceptionCode مناسب (برای دستگاه هدف)، موارد استثنا را گزارش دهید.

برای مثال، اگر صفحه نمایش پرز خشک‌کن پر شده باشد، کاربر همچنان می‌تواند خشک‌کن خود را روشن کند، اما ممکن است بخواهید در مورد این وضعیت به او هشدار دهید. به طور مشابه، وقتی دستگاهی باتری ضعیفی دارد که خالی نیست، همچنان می‌توانید یک دستور را اجرا کنید، اما باید به او اطلاع دهید که باتری دستگاه ضعیف است.

اگر دستور به دلیل استثنائات با شکست مواجه شود، وضعیت باید "EXCEPTIONS" باشد و استثنائات باید با استفاده از ویژگی StatusReport گزارش شوند.

استثنای غیر مسدودکننده (SUCCESS) در مورد دستگاه هدف

این مثال برای قفل کردن در است:

باتری قفل درب جلو کم است. قفل کردن درب جلو.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isLocked": true,
        "isJammed": false,
        "exceptionCode": "lowBattery"
      }
    }]
  }
}

استثنای غیر مسدودکننده (SUCCESS) در مورد دستگاه دیگری که از StatusReport استفاده می‌کند

این مثال برای فعال کردن یک سیستم امنیتی است: بسیار خب، فعال کردن سیستم امنیتی. پنجره جلو باز است.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isArmed": true,
        "currentArmLevel": "L2",
        "currentStatusReport": [{
          "blocking": false,
          "deviceTarget": "sensor_id1",
          "priority": 0,
          "statusCode": "deviceOpen"
        }]
      }
    }]
  }
}

مسدود کردن استثنا در مورد دستگاه دیگر با استفاده از StatusReport

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "on": true,
        "online": true,
        "status": "EXCEPTIONS",
        "currentStatusReport": [{
            "blocking": true,
            "deviceTarget": "device-id-1",
            "priority": 0,
            "statusCode": "lowBattery"
          },
          {
            "blocking": true,
            "deviceTarget": "front_window_id",
            "priority": 1,
            "statusCode": "deviceOpen"
          },
          {
            "blocking": true,
            "deviceTarget": "back_window_id",
            "priority": 1,
            "statusCode": "deviceOpen"
          }
        ]
      }
    }
  }
}

لیست استثنائات

استثنائات زیر TTS مرتبط را در دستگاه تولید می‌کنند.

  • bagFull : <device(s)> <has/have> <a full bag/full bags>. لطفاً <it/them> را خالی کنید و دوباره امتحان کنید.
  • binFull : <دستگاه(ها)> <دارای/دارند> <یک سطل پر/سطل‌های پر>.
  • کربن مونوکسید شناسایی شد : کربن مونوکسید در <نام خانه> شناسایی شده است.
  • deviceAtExtremeTemperature : <دستگاه(ها)> <در دمای بسیار بالا/دمای بسیار بالا> <است/هستند>.
  • deviceJammingDetected : <دستگاه(ها)> <است/هستند> مسدود شده است.
  • deviceMoved : <دستگاه(ها)> <بود/هستند> منتقل شد.
  • باز بودن دستگاه : <دستگاه(ها)> <هست/هستند> باز است.
  • دستگاه دستکاری شده : <دستگاه(ها)> <دستکاری شده است/دارد>.
  • دستگاه از برق کشیده شده : <دستگاه(ها)> <هست/هست> از برق کشیده شده است.
  • floorUnreachable : <device(s)> نمی‌تواند به آن اتاق دسترسی پیدا کند. لطفاً <it/them> را به طبقه سمت راست منتقل کنید و دوباره امتحان کنید.
  • hardwareFailure : <دستگاه(ها)> <دارای/دارند> مشکل سخت‌افزاری.
  • inSoftwareUpdate : <device(s)> <is/are> در حال حاضر در حال به‌روزرسانی نرم‌افزاری است.
  • isBypassed : <device(s)> <is/are> در حال حاضر بای‌پس شده است.
  • باتری کم : <دستگاه(ها)> <دارای/دارند> باتری کم.
  • تشخیص حرکت : <دستگاه(ها)> <تشخیص(ها)> حرکت.
  • needsPads : <دستگاه(ها)> <نیاز(ها)> پدهای جدید.
  • needsSoftwareUpdate : <دستگاه(ها)> <نیاز(ها)> یک به‌روزرسانی نرم‌افزاری.
  • نیاز به آب : <دستگاه(ها)> <نیاز(ها)> آب.
  • networkJammingDetected : اتصال شبکه خانگی به <دستگاه(ها)> به درستی کار نمی‌کند.
  • noIssuesReported : <device(s)> هیچ مشکلی گزارش نشده است.
  • roomsOnDifferentFloors : <device(s)> نمی‌تواند به آن اتاق‌ها دسترسی پیدا کند زیرا در طبقات مختلف هستند.
  • runCycleFinished : <device(s)> <has/have> اجرا را به پایان رساند.
  • محدودیت امنیتی : <دستگاه(ها)> <دارای/دارند> یک محدودیت امنیتی.
  • smokeDetected : دود در <house name> شناسایی شده است.
  • مخزن خالی : <دستگاه(ها)> <دارای/دارند> <یک مخزن خالی/مخازن خالی>. لطفاً <آن/مخازن> را پر کنید و دوباره امتحان کنید.
  • usingCellularBackup : <دستگاه(ها)> <است/هستند> از پشتیبان‌گیری سلولی استفاده می‌کنند.
  • waterLeakDetected : <دستگاه(ها)> <تشخیص(ها)> نشت آب.