Alexa.ErrorResponseインターフェース 3
Alexaからスキルに送られたリクエストを正常に処理できない場合は、Alexa.ErrorResponse
イベントを返します。エラータイプとその理由を指定してください。応答は同期または非同期のどちらでも可能です。非同期で応答する場合、相関トークンと、認可トークンを含めたスコープを含めます。
エラータイプの値に記載されている一般的なエラーには、Alexa.ErrorResponse
イベントを使用します。必要に応じて、次のいずれかのより具体的なエラーイベントを代わりに使用します:
Alexa.AuthorizationController.ErrorResponse
Alexa.Commissionable.ReportCommissioningInformation.ErrorResponse
Alexa.Cooking.ErrorResponse
Alexa.DataController.ErrorResponse
Alexa.Safety.ErrorResponse
Alexa.SecurityPanelController.ErrorResponse
Alexa.SmartVision.ObjectDetectionSensor.ErrorResponse
Alexa.SmartVision.SnapshotProvider.ErrorResponse
Alexa.ThermostatController.Configuration.ErrorResponse
Alexa.ThermostatController.ErrorResponse
Alexa.ThermostatController.Schedule.ErrorResponse
Alexa.Video.ErrorResponse
ディレクティブを正常に処理できなかった場合は、代わりにAlexa.Response
イベントを使用して応答します。
ErrorResponseイベント
Alexa.ErrorResponse
のペイロードには、エラータイプを指定し、エラー情報のメッセージを含めます。エラータイプの一覧については、エラータイプの値を参照してください。
ErrorResponseイベントの形式
{
"event": {
"header": {
"namespace": "Alexa",
"name": "ErrorResponse",
"messageId": "一意の識別子、バージョン4 UUIDが望ましい",
"correlationToken": "リクエストに一致するopaque相関トークン",
"payloadVersion": "3"
},
"endpoint":{
"endpointId": "エンドポイントID"
},
"payload": {
"type": "エラータイプ",
"message": "エラーメッセージ"
}
}
}
同期的なErrorResponse
Lambda関数からディレクティブに応答する場合、同期応答を送信します。ディレクティブのリクエストの値を設定したcorrelationToken
を含めます。
以下は、Alexaに同期的に送信するエラー応答の例です。エラータイプの一覧については、エラータイプの値を参照してください。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "ErrorResponse",
"messageId": "一意の識別子、バージョン4 UUIDが望ましい",
"correlationToken": "リクエストに一致するopaque相関トークン",
"payloadVersion": "3"
},
"endpoint":{
"endpointId": "エンドポイントID"
},
"payload": {
"type": "ENDPOINT_UNREACHABLE",
"message": "エンドポイント12345にアクセスできません。オフラインの可能性があります"
}
}
}
非同期的なErrorResponse
デバイス制御クラウドからディレクティブに応答する場合、Alexaイベントゲートウェイに非同期応答を送信します。相関トークンと、認可トークンを含めたスコープを含めます。詳細については、イベントゲートウェイにイベントを送信するを参照してください。非同期のAlexa.ErrorResponse
をゲートウェイに送信する際、Alexaは成功か失敗かを示すHTTPステータスコードを送信します。
以下は、Alexaイベントゲートウェイに非同期的に送信するエラー応答の例です。エラータイプの一覧については、エラータイプの値を参照してください。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "ErrorResponse",
"messageId": "一意の識別子、バージョン4 UUIDが望ましい",
"correlationToken": "リクエストに一致するopaque相関トークン",
"payloadVersion": "3"
},
"endpoint":{
"scope":{
"type":"BearerToken",
"token":"access-token-from-Amazon"
},
"endpointId": "エンドポイントID"
},
"payload": {
"type": "ENDPOINT_UNREACHABLE",
"message": "エンドポイント12345にアクセスできません。オフラインの可能性があります。"
}
}
}
HTTPステータスコード
次の表は、スキルがAlexaイベントゲートウェイから受け取る可能性のあるHTTPステータスコードの一覧です。エラーを受け取った場合は、payload
オブジェクトにcode
フィールドとdescription
フィールドが含まれます。これらのフィールドはログ記録の目的でのみ使用してください。
ステータス | ペイロードのコード | 説明 |
---|---|---|
|
— |
リクエストは認可され、メッセージは構文的に有効なイベントでした。ゲートウェイはイベントを受け付け、論理的な検証と処理に進みます。 |
|
|
メッセージが無効です。フィールドがない、値が正しくない、正しいJSON形式ではないことが原因です。ドキュメントと照合して、メッセージにすべての必須フィールドが含まれていることを確認します。 |
|
|
メッセージに認可トークンが含まれていないか、トークンが無効、有効期限切れ、形式が正しくないのいずれかです。トークンを更新して、リクエストを再試行してください。ユーザーがスキルを無効にすると、アクセストークンも無効になります。この場合は、ユーザーが認可を取り消したため、変更レポートの送信も停止できます。 |
|
|
イベントゲートウェイへのアクセスが許可されていません。イベントを正しいリージョンのエンドポイントに送信していることを確認してください。たとえば、北米のイベントは北米のエンドポイントに送信します。 |
|
|
トークンに必要な権限がありません。スキルにAlexaイベントを送信する権限があることを確認してください。詳細については、Alexaイベントゲートウェイへのアクセス権限のリクエストを参照してください。 |
|
|
指定されたIDに関連付けられたアカウントレコードが存在しないか、期限が切れています。このエラーは、イベントの送信が遅すぎた場合や、無効なIDが指定された場合に発生する可能性があります。指定されたIDと認可コードが正しいことを確認してください。 |
|
|
このトークンに関連付けられたスキルIDが見つかりませんでした。このエラーは、スキルが認定中などの異なるステージにある状況でユーザーのアクセストークンが生成された場合に発生します。このユーザーでスキルの無効化と有効化を行ってみてください。 |
|
|
イベントペイロードのサイズが大きすぎます。1回のリクエストで許容されるエンドポイントの最大数は300です。より小さいペイロードでメッセージを送信してください。 |
|
|
リクエスト数が多すぎます。メッセージを再送してください。ただし、再送は最大3回までで、再送の間隔は1秒以上空けてください。 |
|
|
Alexaでエラーが発生したため、メッセージは処理されませんでした。メッセージを再送してください。ただし、再送は最大3回までで、再送の間隔は1秒以上空けてください。問題が解消されない場合、Alexa開発者向け問い合わせ窓口にお問い合わせください。 |
|
|
Alexaがメッセージを受け取れませんでした。メッセージを再送してください。ただし、再送は最大3回までで、再送の間隔は1秒以上空けてください。問題が解消されない場合、Alexa開発者向け問い合わせ窓口にお問い合わせください。 |
応答本文401 Unauthorizedの例
以下は、エラー応答の例です。
HTTP/1.1 400 Bad Request
Date: Wed, 07 Mar 2018 20:25:31 GMT
Connection: close
{
"header": {
"namespace": "System",
"name": "Exception",
"messageId": "90c3fc62-4b2d-460c-9c8b-77251f1698a0"
},
"payload": {
"code": "INVALID_ACCESS_TOKEN_EXCEPTION",
"description": "アクセストークンが無効、有効期限切れ、形式が正しくないのいずれかです。"
}
}
ErrorResponseイベントのペイロードのプロパティ
Event
オブジェクトでAlexa.ErrorResponse
を送信します。event.payload
パラメーターに以下の情報を含めます。
プロパティ | 説明 | 型 | 必須 |
---|---|---|---|
|
エラーのタイプです。Alexaはこれをユーザーと共有します。 |
文字列 |
◯ |
|
エラーを説明するメッセージです。この情報はユーザーには共有されません。 |
文字列 |
◯ |
エラータイプの値
以下の表は、有効なエラータイプと、実行後に返す対応するエラーインターフェースを示しています。各エラータイプのパラメーターの詳細については、参照されるインターフェースを参照してください。特定のエラータイプをトラブルシューティングする際のヒントについては、スマートホームスキルのトラブルシューティングガイドを参照してください。
値 | 説明 | インターフェース |
---|---|---|
|
エンドポイントが既に稼動中であるため、リクエストされた処理を実行できません。 |
|
|
セキュリティシステムの現在の状態は | |
|
ブリッジが到達できない状態であるか、オフラインになっています。たとえば、ブリッジがオフになっている、ユーザーのローカルエリアネットワークから切断されている、ブリッジとデバイス制御クラウドの間の接続が切断されているなどです。 |
|
|
セキュリティパネルには開いているゾーンがあり、ユーザーはセキュリティシステムを起動する前に、ユーザーはこれを回避する必要があります。 | |
|
ユーザーはインターネット経由でデバイスを制御できません。代わりに手動でデバイスを制御する必要があります。 |
|
|
機器のチャイルドロックが有効になっています。 | |
|
サーモスタットデバイスでは設定変更が許可されていません。設定変更を受け入れるには、ユーザーが直接デバイスを操作する必要があります。 | |
|
リクエストされた時間が長すぎるため、機器を安全に実行できません。 | |
|
冷却のロックアウト温度が受け入れ可能な範囲を超えています。 | |
|
冷却の段数が制限を超えています。 | |
|
デバイスではデータの削除がサポートされません。 | |
|
デバイスではデータの取得がサポートされません。 | |
|
ユーザーがカメラアプリでスナップショット機能を無効にしたため、エンドポイントはスナップショットを提供できません。 | |
|
最近ドアが開閉されていないため、機器が空の可能性があります。たとえば、食料がないときに調理を開始しようとした場合などが該当します。 | |
|
機器のドアが開いています。たとえば、ドアが開いているときに調理を開始しようとした場合などが該当します。 | |
|
サーモスタットは、現在のモードで2つの設定値をサポートしていません。 | |
|
エンドポイントが別のアクションを実行中のため、ディレクティブを処理できません。アクションは、Alexaへのリクエストや手動の操作の可能性があります。 |
|
|
たとえば、自動車に接続されていないなどの理由で、現在エンドポイントを制御できません。コネクテッドカーの接続に問題がある場合は、このエラータイプを使用します。 |
|
|
エンドポイントのバッテリー残量が足りないため、ディレクティブを処理できません。 |
|
|
エンドポイントが到達できない状態であるか、オフラインになっています。たとえば、エンドポイントがオフになっている、ユーザーのローカルエリアネットワークから切断されている、エンドポイントとブリッジまたはエンドポイントとデバイス制御クラウドの間の接続が切断されているなどです。 |
|
|
ユーザーが誤ったPINを入力した回数が多すぎます。 | |
|
Alexaが提供する認可資格情報が期限切れです。ユーザーのOAuth2.0アクセストークンが期限切れになっている場合などです。 |
|
|
エンドポイントは到達可能ですが、ローカル接続ができません。Matterの場合は、エンドポイントがデバイスをコミッションモードに変更できなかったことを表します。 | |
|
エンドポイントのファームウェアが期限切れになっているため、ディレクティブを処理できません。 |
|
|
エンドポイントでハードウェアの故障が発生したため、ディレクティブを処理できません。 |
|
|
暖房のロックアウト温度が受け入れ可能な範囲を超えています。 | |
|
暖房の段数が制限を超えています。 | |
|
Alexaには、指定されたアクションをエンドポイントで実行する権限がありません。 |
|
|
ほかのエラータイプでは説明できないエラーが発生しました。ランタイム例外が発生した場合などがこれにあたりますが、可能な場合は、常に具体的なエラータイプを送信することを推奨します。スキルのエラーの場合、指定されるエラータイプが正確であるほど、Alexaが適切な手順や関連性の高い音声応答でユーザーを案内できる精度も高まります。 |
|
|
サーモスタットに十分な容量がありません。このエラーは、ユーザーが大量のスケジュールを設定し、デバイスの制限を超えた場合に発生する可能性があります。 | |
|
Alexaが提供する認可資格情報が無効です。たとえば、ユーザーのデバイス制御クラウドアカウントでOAuth2.0アクセストークンが有効でない場合などです。 |
|
|
指定された補助暖房システムがデバイスでサポートされていません。 | |
|
ディレクティブがこのスキルでサポートされていないか、正しくありません。 |
|
|
HVACシステムのタイプがデバイスでサポートされていません。 | |
|
対象の状態がデバイスでサポートされていません。 | |
|
温度単位がデバイスでサポートされていません。 | |
|
1つ以上の端子接続が無効です。 | |
|
ディレクティブに、ターゲットとするエンドポイントでは無効の値が含まれています。たとえば、暖房モード、チャンネル、リクエストされたオブジェクトクラスなどが無効の場合です。 |
|
|
エンドポイントは、既に最大数のローカルハブにコミッションされています。 | |
|
セットアップに必要な情報がディレクティブにありません。 | |
|
エンドポイントが存在しない、または存在しなくなりました。 |
|
|
エンドポイントが較正中(暖機中など)のため、またはデバイスでまだユーザー設定が行われていないため、ディレクティブを処理できません。 |
|
|
エンドポイントが稼動していません。たとえば、スマートホームスキルが |
|
|
セキュリティパネルは起動と解除の準備ができていません。セキュリティパネルがインスタレーションモードのときに、ユーザーがセキュリティパネルを制御しようとしている場合に、このエラータイプを使用します。 | |
|
現在の操作モードが原因で、エンドポイントはデバイスを指定された値に設定できません。このエラー応答を送信する場合は、デバイスを新しい値に設定できない理由を示す |
|
|
現在のバッテリー状態では、エンドポイントはリクエストを実行できません。 |
|
|
障害物が検知されたため、エンドポイントでディレクティブを処理できません(ユーザーがドアを閉めようとしたときにドアを塞ぐような人や物があった場合など)。 | |
|
エンドポイントはリクエストを処理できません。このエラーを受信すると、Alexaはユーザーにパートナーアプリを確認するようプロンプトを出します。 |
|
|
ユーザーがまだPINコードを設定していません。 | |
|
エンドポイントがサポートしていない電力レベルの操作がリクエストされたため、ディレクティブを処理できません。 |
|
|
機器は予熱する必要があります。 | |
|
温度プローブを挿入する必要があります。 | |
|
リクエストは、エンドポイントまたはブリッジがディレクティブを処理できる最大レートを超えています。 |
|
|
リモート調理は現在、デバイスでサポートされていません。 | |
|
温度プローブを取り外す必要があります。 | |
|
リモート調理が無効になっていたため、調理の前に再度有効にする必要があります。 | |
|
2つの設定値の値が近すぎます。 | |
|
セーフティビームで侵入を検知したためエンドポイントはディレクティブを処理できません(エレベーターのドアが閉まるときにドアのセーフティビームの前を人が横切った場合など)。 | |
|
サブスクリプションが必要なため、リクエストされたオブジェクトクラスは有効にされませんでした。 |
|
|
指定された温度値は、許容される温度の範囲外です。このエラー応答を送信する場合は、オプションとして、有効な温度範囲を示すvalidRangeオブジェクトをペイロードに含めることができます。例については、TEMPERATURE_VALUE_OUT_OF_RANGEを参照してください。 |
|
|
サーモスタットがオフで、オンにできません。 | |
|
パスワード入力時などに許容される失敗回数を超えています。 |
|
|
サーモスタットは、現在のモードで3つの設定値をサポートしていません。 | |
|
PINコードが正しくありません。 |
|
|
セキュリティパネルにアクティブなアラームがあり、ユーザーが起動しようとしています。 | |
|
サーモスタットは、指定されたモードをサポートしていません。 | |
|
セキュリティパネルに問題があります。 | |
|
サーモスタットは、指定されたスケジュールを設定できません。 | |
|
サーモスタットは、デバイスや機器に損傷を与える恐れがあるため、この値を設定できません。 | |
|
指定された値は許容範囲外です。たとえば、ユーザーが100を超えるパーセンテージ値をリクエストした場合にこのエラーを使用できます。温度値には、代わりに |
|
ErrorResponseの例
以下の例は、さまざまなエラータイプのペイロードを示しています。
ENDPOINT_CONTROL_UNAVAILABLE
以下は、ENDPOINT_CONTROL_UNAVAILABLE
エラータイプのエラー応答の例です。制御できない理由を示すreason文字列をペイロードに含めます。エラータイプの一覧については、エラータイプの値を参照してください。
ENDPOINT_LOW_POWER
以下は、ENDPOINT_LOW_POWER
エラータイプのエラー応答の例です。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "ErrorResponse",
"messageId": "一意の識別子、バージョン4 UUIDが望ましい",
"correlationToken": "リクエストに一致するopaque相関トークン",
"payloadVersion": "3"
},
"endpoint": {
"endpointId": "エンドポイントID"
},
"payload": {
"type": "ENDPOINT_LOW_POWER",
"message": "ロックのバッテリー残量が足りません",
"percentageState": 5
}
}
}
NOT_SUPPORTED_IN_CURRENT_MODE
以下は、NOT_SUPPORTED_IN_CURRENT_MODE
エラータイプのエラー応答の例です。
{
"event": {
"header": {
"namespace": "Alexa.ColorTemperatureController",
"name": "ErrorResponse",
"messageId": "一意の識別子、バージョン4 UUIDが望ましい",
"correlationToken": "リクエストに一致するopaque相関トークン",
"payloadVersion": "3"
},
"endpoint": {
"endpointId": "エンドポイントID"
},
"payload": {
"type": "NOT_SUPPORTED_IN_CURRENT_MODE",
"message": "照明は現在、カラーに設定されています。",
"currentDeviceMode": "COLOR"
}
}
}
NOT_SUPPORTED_WITH_CURRENT_BATTERY_CHARGE_STATE
以下は、NOT_SUPPORTED_WITH_CURRENT_BATTERY_CHARGE_STATE
エラータイプのエラー応答の例です。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "ErrorResponse",
"messageId": "一意の識別子、バージョン4 UUIDが望ましい",
"correlationToken": "リクエストに一致するopaque相関トークン",
"payloadVersion": "3"
},
"endpoint": {
"endpointId": "エンドポイントID"
},
"payload": {
"type": "NOT_SUPPORTED_WITH_CURRENT_BATTERY_CHARGE_STATE ",
"message":"車は充電されていました",
"currentChargeState": "ALREADY_CHARGED_TO_REQUIRED_LEVEL",
"currentChargeLevelInPercentage": 75
}
}
}
TEMPERATURE_VALUE_OUT_OF_RANGE
以下は、TEMPERATURE_VALUE_OUT_OF_RANGE
エラータイプのエラー応答の例です。設定可能な最小および最高温度を示すvalidRangeオブジェクトをペイロードに含めます。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "ErrorResponse",
"messageId": "一意の識別子、バージョン4 UUIDが望ましい",
"correlationToken": "リクエストに一致するopaque相関トークン",
"payloadVersion": "3"
},
"endpoint": {
"endpointId": "エンドポイントID"
},
"payload": {
"type": "TEMPERATURE_VALUE_OUT_OF_RANGE",
"message": "リクエストされた温度-15は範囲外です。",
"validRange": {
"minimumValue": {
"value": 15.0,
"scale": "CELSIUS"
},
"maximumValue": {
"value": 30.0,
"scale": "CELSIUS"
}
}
}
}
}
VALUE_OUT_OF_RANGE
以下は、VALUE_OUT_OF_RANGE
エラータイプのエラー応答の例です。設定可能な最小および最高の値を示すvalidRangeオブジェクトをペイロードに含めます。
{
"event": {
"header": {
"namespace": "Alexa",
"name": "ErrorResponse",
"messageId": "一意の識別子、バージョン4 UUIDが望ましい",
"correlationToken": "リクエストに一致するopaque相関トークン",
"payloadVersion": "3"
},
"endpoint":{
"endpointId": "エンドポイントID"
},
"payload": {
"type": "VALUE_OUT_OF_RANGE",
"message": "100を超えるパーセンテージ値は設定できません。",
"validRange": {
"minimumValue": 0,
"maximumValue": 100
}
}
}
}
プロパティとオブジェクト
一部のエラータイプでは、ペイロードに次のオブジェクトが含まれます。詳細については、エラータイプの値を参照してください。
CurrentChargeLevelInPercentageプロパティ
NOT_SUPPORTED_WITH_CURRENT_BATTERY_CHARGE_STATE
エラー応答を送信する際は、currentChargeLevelInPercentage
プロパティをペイロードに含めます。currentChargeLevelInPercentage
は、バッテリーレベルをパーセンテージで示します。有効な値は、 0~100です。このプロパティはオプションです。
以下の例は、CurrentChargeLevelInPercentage
プロパティの例を示しています。
{
"currentChargeLevelInPercentage": "100"
}
CurrentChargeStateプロパティ
NOT_SUPPORTED_WITH_CURRENT_BATTERY_CHARGE_STATE
エラー応答を送信する際は、currentChargeState
プロパティをペイロードに含めます。currentChargeState
は、バッテリーの現在の状態を示します。
以下の表は、バッテリー状態の有効な値を示しています。
バッテリー状態 | 説明 |
---|---|
|
車のバッテリーレベルはリクエストされたレベルより高いです。 |
|
車のバッテリーは充電中です。 |
|
車のバッテリーレベルは100%です。 |
|
車のバッテリーが充電器に接続されていません。 |
理由の値
ENDPOINT_CONTROL_UNAVAILABLE
エラー応答を送信する際は、エンドポイントを制御できない理由を示すreason
文字列をペイロードに含めます。
プロパティ | 説明 |
---|---|
|
ディープスリープモードは、コネクテッドカーなどのエンドポイントのユーザー定義の設定です。ユーザーは、このモードをオフにすることで、この問題を解決できる可能性があります。 |
|
エンドポイントは、ネットワーク接続サービスの範囲外にあります。 |
|
エンドポイントを利用するには、ユーザーがインターネットプランを購入するか有効にする必要があります。 |
|
不明な理由により、デバイス制御クラウドがエンドポイントに接続できません。 |
ValidRangeオブジェクト
VALUE_OUT_OF_RANGE
エラー応答を送信する際は、設定可能な最小および最大の値を示すvalidRange
オブジェクトをペイロードに含めます。このプロパティはオプションです。
以下は、ValidRange
オブジェクトの例です。
{
"validRange": {
"minimumValue": 0,
"maximumValue": 100
}
}
温度を含むValidRangeオブジェクト
TEMPERATURE_VALUE_OUT_OF_RANGE
エラー応答を送信する際は、設定可能な最小および最大の温度を示すvalidRange
オブジェクトをペイロードに含めます。最大値と最小値は、temperatureオブジェクトを含みます。このプロパティはオプションです。
以下は、温度を指定したValidRange
オブジェクトの例です。
{
"validRange": {
"minimumValue": {
"value": 15.0,
"scale": "CELSIUS"
},
"maximumValue": {
"value": 30.0,
"scale": "CELSIUS"
}
}
}
関連トピック
最終更新日: 2024 年 12 月 02 日