スマートホームスキルのトラブルシューティングガイド
Alexaスマートホームスキルで問題が発生していますか? スキルでエラーが発生した場合は、このガイドで代表的な問題の解決方法を確認してください。
ユーザーが認識したエラーの発生率が高い
運用メトリクスからは、スマートホームやビデオスキルのパフォーマンスに関する貴重な洞察を得ることができます。ユーザーが認識したエラー(UPE)を監視することで、ユーザーエクスペリエンスに影響する問題を特定し、対処することができます。このメトリクスを定期的に分析することで、確実かつ正確に動作するようにスキルを調整およびデバッグできます。
UPEは、Alexa開発者コンソールのレポート>機能ディレクティブページで確認できます。詳細については、スマートホームスキルとビデオスキルの運用メトリクスを表示するを参照してください。
Alexaの例外
問題: SKILL_RESPONSE_TIMEOUT_EXCEPTION
8秒待ってもスキルからの応答がないと、AlexaはSKILL_RESPONSE_TIMEOUT_EXCEPTION
をログに記録します。このエラーは、アマゾンウェブサービス(AWS)のLambda関数へのトラフィックが多い時に発生することがあります。
現象
トラフィックの急増により、Lambda関数が大量のリクエストを同時に受け取っています。たとえば、毎朝午前7時に実行される定型アクションなど、特定の時間に発生するユーザーアクションが原因でトラフィックが急増することがあります。
解決方法
Lamba関数の設定値を大きくする
- Lambdaのメモリ割り当てを256MB以上にし、Lambda関数のタイムアウトを8秒以上に設定します。追加料金は発生しません。
- Lambda関数の最大同時実行数を増やします。スキル開発者は、同時実行環境の最大数の引き上げをリクエストできます。追加料金は発生しません。ピーク時のトラフィックに対応できる最大数を設定してください。
現象
Lambdaトラフィックが引き続きLambdaの最大同時実行数を超過し、負荷を管理するためにLambdaがリクエストを制限(破棄)しています。詳細については、Lambda関数のスケーリングについてを参照してください。
解決方法
同時実行数の上限を増やす
- 最大同時実行数を増やしても十分でない場合、Amazon AWSにバースト時の最大同時実行数の引き上げをリクエストします。バースト時の同時実行数に基づいて、Lambdaは一時的に実行環境をさらに増やし、トラフィックの急増に対応します。
- ピーク時にはプロビジョニング済み同時実行数を使用します。プロビジョニング済み同時実行数を使用すると、トラフィックの急増に対応できるように一連の実行環境をあらかじめ準備しておくことができます。また、コールドスタート時のレイテンシーの回避にも役立ちます。プロビジョニング済み同時実行数には追加料金がかかりますが、バースト時の同時実行数と組み合わせることでピーク時のリクエストの制限を軽減できます。
- プロビジョニング済み同時実行数のコストを削減するには、自動スケーリングを使用し、予想されるトラフィックの急増に先だってプロビジョニング済み実行環境を追加で起動し、トラフィックが落ち着いた時点でスケールダウンします。
問題: INVALID_SKILL_RESPONSE_EXCEPTION
スキルの応答の形式が正しくない場合やJSONの応答定義に準拠していない場合、AlexaはINVALID_SKILL_RESPONSE_EXCEPTIONをログに記録します。
現象
スキルのメトリックスにINVALID_SKILL_RESPONSE_EXCEPTIONエラーが多数報告されます。
解決方法
スキルの応答を検証する
- スキルの応答が成功/エラー応答のインターフェース仕様に準拠していることを確認します。詳細については、スキルでサポートする各インターフェースのドキュメントを参照してください。
- 応答ヘッダーが有効で、
messageId
プロパティとcorrelationToken
プロパティが含まれていることを確認します。応答の相関トークンがリクエストの相関トークンと一致している必要があります。 - エンドポイントが正しいことを確認します。
- 応答ペイロードに不足しているプロパティや余分なプロパティがないことを確認します。
- Alexa開発者コンソールでスマートホームスキルをテストおよびデバッグします。
- ほとんどのスマートホームインターフェースについて、AlexaスマートホームメッセージJSONスキーマを使用して応答ペイロードを検証します。
スキルからのエラー応答
スマートホームスキルは、Alexa.ErrorResponseまたはインターフェースで定義された具体的なエラー応答でディレクティブに応答することで、Alexaにエラーをレポートします。エラータイプとエラーインターフェースの詳細については、エラータイプの値を参照してください。
問題: ENDPOINT_UNREACHABLE
エンドポイントにアクセスできない場合やエンドポイントが一時的にオフラインの場合、ENDPOINT_UNREACHABLE
をレポートします。たとえば、エンドポイントがオフになっている、ユーザーのローカルエリアネットワークから切断されている、エンドポイントとブリッジまたはエンドポイントとデバイス制御クラウドの間の接続が切断されているなどです。
Alexaにデバイスの健全性を知らせるには、Alexa.EndpointHealth
を実装します。デバイスに問題が発生した場合は、Alexa.EndpointHealth
でエラーの原因をレポートして、Alexaがユーザーにデバイスの状態を通知できるようにします。
現象
エンドポイントがオフラインになっているか、ネットワークから切断されています。
解決方法
Alexaにデバイスの状態を知らせる
- エラータイプとして
ENDPOINT_UNREACHABLE
を指定したAlexa.ErrorResponse
でディレクティブに応答します。 payload
にAlexa.EndpointHealth
を含むAlexa.ChangeReport
を送信します。その際、connectivity
プロパティとしてUNREACHABLE
を、reason
プロパティとして接続エラーの理由を設定します。context
プロパティには、他のコントローラーのレポート可能プロパティの最後に確認できた状態を指定します。
現象
デバイスがブリッジまたはハブでAlexaに接続していますが、ブリッジまたはハブがオフラインです。
解決方法
Alexaにデバイスの状態を知らせる
- エラータイプとして
BRIDGE_UNREACHABLE
を指定したAlexa.ErrorResponse
でディレクティブに応答します。 payload
にAlexa.EndpointHealth
を含むAlexa.ChangeReport
を送信します。その際、connectivity
プロパティとしてUNREACHABLE
を、reason
プロパティとして接続エラーの理由を設定します。context
プロパティには、他のコントローラーのレポート可能プロパティの最後に確認できた状態を指定します。
問題: NO_SUCH_ENDPOINT
指定したエンドポイントが存在しないか、長期間アクセスできない場合、このエラーをレポートします。
現象
デバイスに一定時間アクセスできません。
解決方法
デバイスを再接続する
- デバイスを再接続するようアプリからユーザーに通知します。
- エラータイプとして
NO_SUCH_ENDPOINT
を指定したAlexa.ErrorResponse
でディレクティブに応答します。 - デバイスにアクセスできるようになったら、
payload
にAlexa.EndpointHealth
を含むAlexa.ChangeReport
を送信し、connectivity
プロパティとしてOK
を設定します。context
プロパティには、他のコントローラーのレポート可能プロパティの現在の状態を指定します。
使用されていないデバイスを削除する
- デバイスを再接続するようアプリからユーザーに通知します。
- エラータイプとして
NO_SUCH_ENDPOINT
を指定したAlexa.ErrorResponse
でディレクティブに応答します。 - デバイスが使用されていないことを確認したら、
Alexa.DeleteReport
を送信して、AlexaがユーザーのAmazonアカウントとAlexaアプリからエンドポイントを削除できるようにします。1年以上使用されていないデバイスは削除することを推奨します。
現象
システムのアカウントからユーザーが削除したデバイスに関連するディレクティブを、スキルが受け取ります。以前に送信したAlexa.DeleteReport
レポートが失敗した可能性があります。
解決方法
ユーザーアカウントに存在しないデバイスを削除する
- エラータイプとして
NO_SUCH_ENDPOINT
を指定したAlexa.ErrorResponse
でディレクティブに応答します。 - ユーザーのAmazonアカウントからデバイスを削除するには、
Alexa.DeleteReport
を送信して、AlexaがユーザーのアカウントとAlexaアプリからエンドポイントを削除できるようにします。
問題: INTERNAL_ERROR
他のエラータイプのいずれにも該当しないエラーが発生した場合(ランタイムの例外など)、INTERNAL_ERROR
をレポートします。ただし、このエラータイプはなるべく使用しないでください。可能な場合は具体的なエラータイプを送信することを推奨します。エラータイプが正確なほど、Alexaは正しい手順や関連性の高い音声メッセージでユーザーをより適切に誘導することができます。
より具体的なエラータイプを判断する
- デバイスでサポートされない想定外のディレクティブをスキルが受け取った場合、
INVALID_DIRECTIVE
で応答します。 - ハードウェア障害が原因でエンドポイントがディレクティブを受け入れていない場合、
HARDWARE_MALFUNCTION
をレポートします。 - エンドポイントにファームウェアのアップデートが必要な場合、
FIRMWARE_OUT_OF_DATE
をレポートします。 - アクセストークンの形式が正しくないか無効なディレクティブについては、
INVALID_AUTHORIZATION_CREDENTIAL
をレポートします。この場合、AlexaはAlexaスキルを再リンクするようユーザーに指示できます。 - アクセストークンが含まれていない、またはトークンの有効期限が切れているディレクティブについては、
EXPIRED_AUTHORIZATION_CREDENTIAL
を返します。この場合、AlexaはAlexaスキルを再リンクするようユーザーに指示できます。 - スキルが短期間に大量のリクエストを受け取っている場合、
RATE_LIMIT_EXCEEDED
を返します。 - レポートするエラータイプについて不明な点がある場合は、Alexa開発者サポートにお問い合わせください。
関連トピック
最終更新日: 2025 年 03 月 07 日