スマートホームデバッガーを使用する



スマートホームデバッガーを使用する

スマートホームデバッガーを使って、スマートホームスキルのテストやデバッグができます。スマートホームデバッガーでは、Alexaがスキルから受け取るChangeReportAddOrUpdateReportDeleteReportといったイベントを確認できます。JSONや処理エラーも含まれます。その他のテストツールの詳細については、スマートホームスキルのテストとデバッグを参照してください。

AlexaスキルにAlexa.RTCSessionControllerインターフェースを実装している場合、WebRTC向けスマートホームデバッガーを使用するも参照してください。

ChangeReportイベントで、Alexaにプロアクティブに状態をレポートします。プロアクティブにレポートするプロパティは検出応答で特定します。変更レポートの詳細については、状態および変更レポートについてを参照してください。

前提条件

スマートホームデバッガーを使用するには、スマートホームスキルがAlexaにChangeReportAddOrUpdateReportDeleteReportのいずれかのイベントを送信する必要があります。

スマートホームデバッガーにアクセスする

スマートホームデバッガーの使用方法

  1. Alexa開発者コンソールを開いて、ログインします。

  2. スマートホームデバイスに関連付けられたスマートホームスキルを開きます。

  3. テストページを開きます。

  4. スキルのテストを有効にします。

  5. ページ上部で、デバイスのログスマートホームデバッガーを選択します。

  6. ページのスマートホームデバッガーセクションで、スマートホームデバッガーをオンに切り替えます。

この手順を完了すると、AlexaへのChangeReportAddOrUpdateReportDeleteReportのイベント送信時に 、イベント情報がデバイスログに追加されます。

イベントを確認する

スマートホームデバッガーに、Alexa開発者コンソールへのサインインに使用したAmazonアカウントについて、Alexaがスキルから受信したChangeReportAddOrUpdateReportDeleteReportのイベントが表示されます。デバイスログの各イベントには、Alexaが受信したイベントに関する詳細が記載されたJSONドキュメントが含まれています。以下は、スマートホームデバッガーの図です。

スマートホームデバッガー
スマートホームデバッガー

スマートホームデバッガーで問題が発生した場合は、Alexa開発者向け問い合わせ窓口ページからお問い合わください。

ChangeReportイベントが正常に処理された例

以下は、Alexaが正常に処理できたChangeReportイベントがスマートホームデバッガーに記録された例です。

{
  "header": {
    "customerId": "<カスタマーID>",
    “skillId”: “<スキルID>”,
    "skillStage": "development",
    "eventType": "SmartHomeChangeReportSuccess",
    "messageId": "<メッセージID>",
    "applianceId": "ALL"
  },
  "payload": {
    "request": {
      "event": {
        "header": {
          "namespace": "Alexa",
          "name": "ChangeReport",
          "messageId": "<メッセージID>",
          "payloadVersion": "3"
        },
        "endpoint": {
          "scope": {
            "type": "BearerToken",
            "token": "<OAuth2ベアラートークン>"
          },
          "endpointId": "<エンドポイントID>"
        },
        "payload": {
          "change": {
            "cause": {
              "type": "PHYSICAL_INTERACTION"
            },
            "properties": [
              {
                "namespace": "Alexa.BrightnessController",
                "name": "brightness",
                "value": 75,
                "timeOfSample": "2017-02-03T16:20:50.52Z",
                "uncertaintyInMilliseconds": 0
              }
            ]
          }
        }
      },
      "context": {
        "properties": [
          {
            "namespace": "Alexa.PowerController",
            "name": "powerState",
            "value": "ON",
            "timeOfSample": "2017-07-03T16:20:50.52Z",
            "uncertaintyInMilliseconds": 60000
          },
          {
            "namespace": "Alexa.EndpointHealth",
            "name": "connectivity",
            "value": {
              "value": "OK"
            },
            "timeOfSample": "2017-07-03T16:20:50.52Z",
            "uncertaintyInMilliseconds": 0
          }
        ]
      }
    }
  }
}

ChangeReportイベントがエラーになった例

以下は、リクエストにエラーが含まれているためにAlexaが正常に処理できなかったChangeReportイベントがスマートホームデバッガーに記録された例です。詳細については、イベントエラーについてを参照してください。

{
  "header": {
    "customerId": "<カスタマーID>",
    “skillId”: “<スキルID>”,
    "skillStage": "development",
    "eventType": "SmartHomeChangeReportFailure",
    "messageId": "<メッセージID>",
    "applianceId": "ALL"
  },
  "payload": {
    "errors": [
      {
        "code": "Duplicate_Payload_Property",
        "message": "duplicate property in the payload for brightness property"
      }
    ],
    "proactiveStateRequest": {
      "event": {
        "header": {
          "namespace": "Alexa",
          "name": "ChangeReport",
          "messageId": "<メッセージID>",
          "payloadVersion": "3"
        },
        "endpoint": {
          "scope": {
            "type": "BearerToken",
            "token": "<OAuth2ベアラートークン>"
          },
          "endpointId": "<エンドポイントID>"
        },
        "payload": {
          "change": {
            "cause": {
              "type": "PHYSICAL_INTERACTION"
            },
            "properties": [
              {
                "namespace": "Alexa.BrightnessController",
                "name": "brightness",
                "value": 75,
                "timeOfSample": "2017-02-03T16:20:50.52Z",
                "uncertaintyInMilliseconds": 0
              },
              {
                "namespace": "Alexa.BrightnessController",
                "name": "brightness",
                "value": 75,
                "timeOfSample": "2017-02-03T16:20:50.52Z",
                "uncertaintyInMilliseconds": 0
              }
            ]
          }
        }
      },
      "context": {
        "properties": [
          {
            "namespace": "Alexa.PowerController",
            "name": "powerState",
            "value": "ON",
            "timeOfSample": "2017-07-03T16:20:50.52Z",
            "uncertaintyInMilliseconds": 60000
          },
          {
            "namespace": "Alexa.EndpointHealth",
            "name": "connectivity",
            "value": {
              "value": "OK"
            },
            "timeOfSample": "2017-07-03T16:20:50.52Z",
            "uncertaintyInMilliseconds": 0
          }
        ]
      }
    }
  }
}

イベントエラーについて

スキルからAlexaイベントゲートウェイにChangeReportAddOrUpdateReportDeleteReportのいずれかのイベントが送信されると、ゲートウェイからHTTP応答を受け取ります。考えられるHTTP応答の完全なリストについては、イベントゲートウェイにイベントを送信するを参照してください。

スキルがゲートウェイから202 Accepted応答を受信した場合、Alexaがイベントリクエストを正常に受信したことを意味します。ただし、イベントにAlexaの正常処理を妨げるエラーが含まれる場合があります。この場合、デバッガーのログに、ペイロードにエラー配列を含むSmartHomeChangeReportFailureSmartHomeAddOrUpdateReportFailureSmartHomeDeleteReportFailureのいずれかのイベントが出力されます。

変更レポートのエラー

次の表は、スマートホームデバッガーに表示される可能性のあるSmartHomeChangeReportFailureのエラーコードのリストです。

エラーコード 説明
BEARER_TOKEN_NULL_OR_EMPTY ベアラートークンがないか、空です。
CAUSE_NULL payloadcauseオブジェクトがありません。
CAUSE_TYPE_NULL_OR_EMPTY causeオブジェクトにcauseのタイプがないか、タイプが空です。
CLIENT_ID_NOT_AVAILABLE クライアントID(カスタマーID)がありません。
CONTEXT_NULL contextオブジェクトがありません。
CONTEXT_PROPERTIES_EMPTY contextpropertiesオブジェクトが空です。
CONTEXT_PROPERTIES_NULL contextpropertiesオブジェクトがありません。
CONTEXT_PROPERTY_NULL contextpropertiesオブジェクトのプロパティがありません。
DIRECTED_USER_ID_NULL_OR_EMPTY 指示されたユーザーIDがないか、空です。
DUPLICATE_CONTEXT_PROPERTY contextに同一のプロパティが2つあります。
DUPLICATE_PAYLOAD_PROPERTY payloadに同一のプロパティが2つあります。
DUPLICATE_PROPERTY_MISMATCHED_VALUE 単一のプロパティが異なる値で2度レポートされました。
ENDPOINT_ID_BLANK エンドポイントIDが空です。
ENDPOINT_ID_NULL エンドポイントIDがありません。
ENDPOINT_SCOPE_NULL エンドポイントのスコープがありません。
EVENT_ENDPOINT_NULL イベントエンドポイントがありません。
EVENT_HEADER_NULL イベントヘッダーがありません。
EVENT_NULL イベントオブジェクトがありません。
EVENT_PAYLOAD_NULL イベントペイロードがありません。
HEADER_NAME_NULL イベントオブジェクトのヘッダー名がnullです。
HEADER_NAMESPACE_NULL イベントオブジェクトのヘッダー名前空間がnullです。
HEADER_PAYLOAD_VERSION_NULL イベントオブジェクトのヘッダーのペイロードバージョンがnullです。
INVALID_ASYNC_EVENT 非同期応答に相関トークンがありません。
INVALID_CHANGE_REPORT ChangeReportに相関トークンが含まれています。ChangeReportには相関トークンが含まれてはいけません。
INVALID_HEADER_NAMESPACE ヘッダー名前空間には値Alexaが含まれている必要があります。
INVALID_PAYLOAD ペイロードを処理できませんでした。
INVALID_PAYLOAD_VERSION ペイロードを処理できませんでした。
INVALID_PROPERTY プロパティが無効です。
MISSING_TIME_OF_SAMPLE propertiesオブジェクトのtimeOfSampleフィールドがありません。
MISSING_UNCERTAINTY_IN_MILLIS propertiesオブジェクトのuncertaintyInMillisecondsフィールドがありません。
NEGATIVE_TIME_OF_SAMPLE_DIFFERENCE timeOfSampleフィールドに、ChangeReportの受信時刻よりも遅い時刻が含まれています。
NEGATIVE_UNCERTAINTY_IN_MILLIS uncertaintyInMillisecondsフィールドに負の数値が含まれています。この数値は正である必要があります。
PAYLOAD_PROPERTIES_EMPTY payloadpropertiesオブジェクトが空です。
PAYLOAD_PROPERTIES_NULL payloadpropertiesオブジェクトがありません。
PAYLOAD_PROPERTY_NULL payloadpropertiesオブジェクトのプロパティがありません。
REQUEST_NULL リクエストの本文がありません。
SCOPE_INVALID エンドポイントのスコープが無効です。
TIME_OF_SAMPLE_LARGER_THAN_THRESHOLD timeOfSampleフィールドに、ChangeReportの受信時刻から3秒を超えて遅い時刻が含まれています。
UNCERTAINTY_IN_MILLIS_LARGER_THAN_THRESHOLD uncertaintyInMillisecondsフィールドに14,400,000よりも大きい数値が含まれています。
UNKNOWN_PAYLOAD_VERSION ペイロードのバージョンがサポートされていません。
USER_IDENTIFIER_NULL_OR_EMPTY ユーザーIDがないか、空です。

AddOrUpdateレポートのエラー

次の表は、スマートホームデバッガーに表示される可能性のあるSmartHomeAddOrUpdateReportFailureのエラーコードのリストです。

エラーコード 説明
INVALID_REQUEST_EXCEPTION リクエストは、次のいずれかの理由で無効です。
  • イベントのタイプがサポートされていません。
  • ペイロードのバージョンがありません。
  • ペイロードのバージョンがサポートされていません。
  • エンドポイントIDがありません。
  • フレンドリー名がありません。
  • 解析エラーが発生しました。

削除レポートのエラー

次の表は、スマートホームデバッガーに表示される可能性のあるSmartHomeDeleteReportFailureのエラーコードのリストです。

エラーコード 説明
INVALID_REQUEST_EXCEPTION リクエストは、次のいずれかの理由で無効です。
  • イベントのタイプがサポートされていません。
  • ペイロードのバージョンがありません。
  • ペイロードのバージョンがサポートされていません。
  • 解析エラーが発生しました。