アプリのみの統合に関するトラブルシューティングとデバッグ
このセクションでは、よく発生するエラーと、そのトラブルシューティングおよびデバッグの方法を説明します。一般的なデバッグ手法として、adbコマンドを実行してログを監視する方法があります。Alexaおよび自然言語解析では、多くの機能がバックグラウンドで実行されるため、デバッグにはこれ以外の分析ツールが必要になることがあります。
- ログの表示
- アプリが発話にまったく応答しない
- Alexaがタイトルを認識しない
- ブロードキャストメッセージのエラー
- DynamicCapabilityReporterのエラー
- APIキーのエラー
- 証明書のフィンガープリントのエラー
- Alexaが「申し訳ありません。何らかの問題が発生しました」と応答する
- Alexaがトランスポートコントロールに適切に応答しない
- Alexaコマンドでアクションが実行されない
ログの表示
デバッグの最初の手順は、問題を特定することです。問題を特定するには、ログを確認する以外に最良の方法はありません。ログは、Android Studio内またはターミナルのgrepコマンドを使用して監視できます。実行するコマンドの詳細については、ログでディレクティブを確認するためのコマンドを参照してください。以下に簡単な概要を示します。
adb logcat | grep "AppAgent" -i
- アプリがインストールされたときおよび開かれたときにレポートされた機能を確認します。adb logcat | grep "AlexaDirectiveReceiver" -i
- ユーザーがテスト発話を行ったときに、アプリがAlexaから受け取ったメッセージを確認します。
成功のログの例については、詳細なログの説明(「手順10: 発話をテストしてログを確認する」)を参照してください。
アプリが発話にまったく応答しない
アプリが発話にまったく応答しない場合は、Fire TVデバイスで使用されているFire OSのバージョンにVSK Agentが含まれていることを確認してください。Fire TVの設定([設定] > [My Fire TV] または [デバイスとソフトウェア] > [バージョン情報])を開いて、最新のビルドを確認します(具体的なビルド情報がここに追加される予定です)。 Package Browserというアプリ(注:これはAmazonと提携していないサードパーティのアプリです)をインストールして、VSK Agentをサポートする適切なパッケージがインストールされていることを確認することもできます(パッケージ情報は近日公開されます)。
Alexaがタイトルを認識しない
Alexaがカタログのタイトルを認識しない場合は、まずカタログ統合のすべての手順を完了していることを確認してください。サンプルアプリを使用している場合は、IMDbに存在するタイトルでテストを行っていることを確認してください。
タイトルが適切に取り込まれていても、Alexaで一部のタイトルの解釈がうまく行われない場合、その特定のタイトルの自然言語理解(NLU)の問題がAlexaで発生している可能性があります。Amazonの担当者が社内の診断ツールを使用することにより、発話がAlexaによって正しく解析されているかどうかを確認することができます。ビデオコンテンツのエンティティタイプ(その地域のスポーツチームや俳優の名前など)に認識できないものがある場合、Alexaはすべてのエンティティタイプについて100%理解できるわけではないことを覚えておいてください。ある国または地域でVSKをリリースするために、Alexaが理解する必要があるのは、その地域のエンティティタイプの約75%です。
ブロードキャストメッセージのエラー
サンプルアプリでBroadcastReceiverのサンプルコード(AlexaDirectiveReceiver
というクラス)を使用した場合、そのクラスには、発生し得るさまざまなエラーを通知するエラーメッセージが用意されています。次の表で、出力される可能性のあるエラーメッセージについて簡単に説明します。
エラーメッセージ | 理由 |
---|---|
「Unknown Alexa Directive.Sending a failure response intent to the VSK Agent」(不明なAlexaディレクティブです。エラーレスポンスのインテントをVSK Agentに送信します) | 対応する処理ロジックが存在しないディレクティブを受信しました。 |
「Received an empty directive from the VSK Agent」(VSK Agentから空のディレクティブを受信しました) | ディレクティブを処理するロジックで、ディレクティブ名が認識されません。 |
「Unknown Intent from the VSK Agent」(VSK Agentからの不明なインテントです) | VSK Agentに機能を報告する方法に問題があります。 |
「Error sending pending intent to the VSK agent」(VSK AgentへのPendingIntentの送信でエラーが発生しました) | VSK AgentにPendingIntentを返送するコードに問題があります。 |
「Invalid json for SearchAndPlay payload」(SearchAndPlayペイロードに対して無効なJSONです) | SearchAndPlay ディレクティブのペイロードを取得するコードのロジックに問題があります。 |
「Invalid json for Seek payload」(Seekペイロードに対して無効なJSONです) | SeekController ペイロードの位置情報を取得するコードに問題があります。 |
DynamicCapabilityReporterのエラー
サンプルアプリのDynamicCapabilityReporter
クラスを使用している場合、動的機能のレポートに関連するエラーに対して、「Failed reporting dynamic capabilities to the VSK agent」(動的機能をVSK Agentにレポートできませんでした)というエラーメッセージが表示されます。
APIキーのエラー
無効なAPIキーに関するメッセージ、またはFire TVでAPIキーのデコードができなかったことを示すメッセージが表示される場合、Androidでアプリに署名する際に、手順9: アプリに署名してセキュリティプロファイルを構成するで構成したカスタマイズされたデバッグ鍵が使用されていません。
APIキーは有効であっても、Android Studioが正しい署名構成でアプリに署名していない可能性があります。デバッグ署名構成にJavaキーストア(.jks)の詳細が指定されていることを確認してください。また、アプリの署名に使用された.jksの署名を使用してAPIキーが作成されたことも確認してください。
証明書のフィンガープリントのエラー
APIKeyDecoder: Failed to decode: Decoding failed: certificate fingerprint can't be verified!
と表示される場合、セキュリティプロファイルのフィンガープリント認証に問題があります。セキュリティプロファイルがアプリのパッケージ名に関連付けられていることを確認してください。手順9: アプリに署名してセキュリティプロファイルを構成するを参照してください。
Alexaが「申し訳ありません。何らかの問題が発生しました」と応答する
この場合は、無効なコードなど(JSONブロックの構文が無効であるなど)、さまざまなエラーの可能性があります。最近コードに変更を加えた場合は、コードを以前のバージョンに戻して、このメッセージが発生しなくなるかどうかを確認してください。その後、少しずつ変更を加えていき、問題の原因となっている箇所を特定してください。
Alexaがトランスポートコントロールに適切に応答しない
一時停止、早送りなどのトランスポートコントロールの発話でアプリをテストしていて、Alexaが「すみません、ちょっとわかりません」と応答する場合、内部ツールを使用してクラウド上のAlexaの潜在的な問題を調査するよう、Amazonの担当者に依頼する必要があります。たとえば、ビデオスピーチレットでは、リクエストがメディアプレーヤーやほかのビデオクライアントから開始されたことが検出できないと、トランスポートコントロールリクエストが拒否されることがあります。これは開発者自身が修正できる問題ではありません。
Alexaコマンドでアクションが実行されない
ディレクティブの処理ロジックを確認してください。Alexa自体は、ビデオの取得や再生の開始は行いません。Alexaはアプリにディレクティブを送信するだけです。ディレクティブを処理するロジックは、開発者が実装する必要があります(手順8: ディレクティブに応答するを参照してください)。