ここではスキル開発でよく遭遇するエラーメッセージと、それらの原因と解決方法をご紹介します。
対話モデルとバックエンドサービスの作成が完了後、シミュレータや実機でスキルをテストする際に下記のエラーメッセージに遭遇することがあります。
このエラーは、スキルからのJSONレスポンスが不正な形で送信され、セッションが強制終了したことが原因です。また、スキルを起動するときのLaunchRequest以外のインテントをテストするときにも発生する場合があります。
JSONのレスポンスをデバッグするには、必ずJSONのレスポンスをログに出力して、サンプルのJSONレスポンスと比較してみてください。スキルのエンドポイントがAWS Lambdaの場合、テストイベントを使えばエンドポイント側で発生しているエラーを確認しながらデバッグが可能です。
この問題は、AWS Lambdaを使用しているときに、Alexa Skills Kitのトリガーが追加されていない場合や、AWS Lambda以外のエンドポイントでSSLの設定に誤りがあるときに発生します。
AWS Lambdaを使用している場合はLambda側の設定でAlexa Skills Kitのトリガーが追加されていることをご確認ください。また、独自のエンドポイントを使用している場合、こちらのドキュメントのウェブサービスの要件を満たしていることをご確認ください。
スキルをシミュレータでテストするときは問題なく起動できても、実機でテストするときにこのエラーが発生するケースがあります。よくある原因としては、実機でログインしているアカウントが開発者とは別のアカウントであるため、スキルが見つからず起動できないといったケースがあります。また、スキルの呼び出し名を変更した後、新しい呼び出し名が反映されていないケースもあります。
アカウントが必ず同じリージョンで作成されていることをご確認ください。開発者アカウントは、Alexaアプリへログインするアカウントと同じメールアドレス・パスワードである必要があります。詳しくは 「Alexa 開発者アカウント作成時のハマりどころ」を参照してください。
また、呼び出し名の変更が反映されない場合は、スキルを一度無効にして、再び有効にしてください。開発者コンソールのシミュレータ上でテストしている場合、ステージを「開発中」から「非公開」にして、再び「開発中」にしてください。実機でテストしている場合は、Alexaアプリの履歴で認識された文字列が実際の呼び出し名と一致しているかをご確認ください。
スキルを開発者コンソールのシミュレータでテストするときに、下記のケースが発生するときがあります。
発話プロファイラーを使用して、正しくマッピングされていない発話をご確認ください。このツールによって、どの発話がより正確に認識されるか確認することができ、インテントに正しく入らない発話も明確になります。
スキルをシミュレータでテストするときに、応答がない、または発話がずっと読み込み中の状態から進まないケースがあります。ブラウザやパソコンの設定によりテストシミュレータが正しく動作していない可能性があるため、動作環境を確認してください。
また、開発者のアカウントのリージョンと開発しているスキルのリージョンが異なる場合、実機でスキルを起動しても応答が返ってこないケースもあります。例えば、en-USのスキルをen-UKのデバイスでテストしている場合、言語設定が異なるためスキルが起動できません。