Alexaのスキルを開発する ~その3~ テスト
2019/09/09 |
|
2018/05/21 |
|
2018/01/19 |
|
スキルの作成とLambdaでの処理が完成したのでテストしてみます。
…とすんなり行けばいいんでけど、中々そうはいきません。
どこで問題が起きているのか?開発環境には便利なテスト用ツールが用意されているのでそれらを駆使して調べてみたいと思います。
Amazon Developer Console側での確認
まずはAmazon Developer Consoleで調べてみます。
ログインしてダッシュボードからAlexaの画面に進みます。
Alexaのスキルの一覧が表示されたらテストしたいスキルの”編集”を選択します。
画面上部の”テスト”選択します。
画面左上のステージを”開発中”にします。
その際、警告がでる場合もありますが、”続行”を押します。
テキストボックスに”おみくじ開いて今日の運勢は”と入力して、エンターを押します。すると画面左にLINEのような吹き出しでAlexaとの会話が表示されます。
Lambda側でエラーがあった場合は以下のように”スキルがリクエストに正しく応答できませんでした”と返事してきます。
エラーがあった場合はLambda側で修正します。エラーがなくても返ってきたデータが意図したものかは確認する必要があります。
このテストでは、正確に命令を送ることができるのが利点です。実際に話してテストする場合は誤認識する場合があるので、その可能性を排除できるのはいいと思います。あと、何度もテストする場合、話しかけるよりかはテキスト貼り付けた方が早いというのはありますね。
実機なしでテストできるのもメリットの一つです。
AWS Lambda側での確認
AWS Lambda側では入力データを貼り付けて、テストすることができます。先ほどのAmazon Developer Consoleの”スキルI/O”の”JSON入力”の内容をコピーしておきます。”JSON入力”がAlexaへの命令で、”JSON出力”がAlexaからの返答です。
Lambdaの画面で”テストイベントの選択”を開き、”テストイベントの設定”を選択します。
イベント名を入力、ここでは”IntentRequest”と入力し、その下のボックスに先ほどコピーしたRequestの内容を貼り付けます。そして”作成”を押します。
先ほどの画面に戻るので”テスト”を押すと、処理が実行されて結果が表示されます。正常終了です。
失敗すると赤く表示されます。
いずれの場合も”ログ”をクリックすることでログを見れます。
プログラム中でconsole.log()しておくとその内容がログに出力されるので便利です。前回のプログラムにログを追加してみます。IntentHandlerのhandle()関数に追加してみました。
1 2 3 4 5 6 7 8 9 10 11 |
const IntentHandler = { canHandle(handlerInput) { const request = handlerInput.requestEnvelope.request; return (request.type === 'IntentRequest' && request.intent.name === 'fate'); }, handle(handlerInput) { const request = handlerInput.requestEnvelope.request; var day = request.intent.slots["day"].value; console.log("intent:" + request.intent.name + " slot:" + day); (略) |
受けったインテント名とスロットの内容を出力しています。
CloudWatchからもログを見ることができます。AWSの”サービス”から”CloudWatch”を選びます。
画面左のリストから”ログ”を選択し、表示されたログの一覧からomikujiのログを選択します。
ログの一覧が表示されるので時間を頼りに見たいログを選択します。
するとログが表示されます。先ほど追加したconsole.log()もしっかり表示されてます。
先ほど貼り付けたテストデータのJSONを書き換えることで、色々なテストができます。
Alexaアプリ(スマホ)での確認
最後は実機で確認です。実際にEchoDotに話かけてみます。話しかけて認識された内容はスマホのAlexaアプリで確認できます。
Alexaアプリの”設定”から
”Alexaプライバシー”を選び、
”音声履歴の確認”を選ぶと
実際に認識された会話が表示されます。
あまりにも誤認識が多ければ、発話サンプルを変える等の対応が必要かもしれません。
まずはAlexaのスキル開発の最初の一歩を踏み出せました。