kun432's blog

Alexaなどスマートスピーカーの話題中心に、Voiceflowの日本語情報を発信してます。たまにAWSやkubernetesなど。

〜スマートスピーカーやVoiceflowの記事は右メニューのカテゴリからどうぞ。〜

Amazon Lex V2を試してみる

f:id:kun432:20210427220639p:plain

またちょっと間が空いてしまいましたが、今日やっていたJAWS PANKRATION 2021でAmazon Lex V2がAmazon Connect連携にも対応した、ということを知ったので少し触ってみました。

以前書いたV1の記事は以下をご覧ください。

目次

ボットの作成

Lexの基本は以前抑えてあるので、今回は早速触っていきます。Lexのページから"Get Started"をクリックします。

f:id:kun432:20211121030326j:plain

上にもあるようにV2コンソールがデフォルトになっていますね。

f:id:kun432:20211121034404j:plain

ではボットを作成してみます。「ボットを作成」をクリックします。

f:id:kun432:20211121034806j:plain

作成するボットの設定を行います。各項目を順番に見ていきましょう。

f:id:kun432:20211121035012j:plain

作成方法は、ゼロから対話モデル(インテント、スロットなど)を作成するか、テンプレートから作成するかになります。テンプレートから作成する場合は、V1にもあったBookTripなどのテンプレートを利用することができます。今回もまずはBookTripテンプレートを使ってみましょう。

f:id:kun432:20211121040459j:plain

ボット名を適当に設定します。今回は"BookTripJP"にしました。

f:id:kun432:20211121040609j:plain

IAMロールの設定です。今回は専用に新しいロールを作成します。

f:id:kun432:20211121040807j:plain

アメリカの子供向けサイトの規制に関する法律の設定です。日本なのでここは「いいえ」で。

f:id:kun432:20211121040847j:plain

あとは一旦デフォルトで。「次へ」をクリックします。

f:id:kun432:20211121100116j:plain

ボットの言語を設定します。たしかv1はボット単位で言語は一つだったような記憶がありますが、v2では「別の言語を追加する」を使うと、複数の言語を同時に設定することもできるみたいですね。

f:id:kun432:20211121100753p:plain

とりあえず、今回は日本語だけにしましょう。

f:id:kun432:20211121100737j:plain

BookTripサンプルのボットができました。

インテントの設定

ボットの作成直後はインテントの設定画面が表示されています。色々見てみましょう。

f:id:kun432:20211121100946j:plain

左のメニューにはインテントが表示されていて、それぞれのインテントの設定を切り替えることができます。

f:id:kun432:20211121101432j:plain

というかインテント設定画面、深いところにありますね・・・まあプロジェクト作成直後だからインテントとかスロットの設定から始めるだろうとは思うんだけど、違うメニューに飛んだら最初はなかなか戻ってこれない。

f:id:kun432:20211121101709j:plain

インテント設定画面の一番上には会話フローイメージが表示されます。ハッピーパスかな。

f:id:kun432:20211121110612p:plain

ハッピーパス以外の失敗時のメッセージなども表示されますし、それぞれクリックして直接設定に飛べます。これはとてもわかり易いですね。

f:id:kun432:20211121110701p:plain

サンプル発話の登録です。下の入力欄で発話のバリーションを登録します。スロットも普通に呼び出せます。

f:id:kun432:20211121111052j:plain

なれてくると、プレーンテキストのほうがやりやすいかもですね。コピペも使えますしね。

f:id:kun432:20211121111219j:plain

スロットの設定

スロットの設定は、サンプル発話の下にあります。スロット名、タイプ、スロット収集時の発話例などが表示されていてとてもわかりやすいですね。

f:id:kun432:20211123232508p:plain

右上からスロットを作成できます。

f:id:kun432:20211123233421j:plain

新規作成の場合はこんな感じです。

f:id:kun432:20211123233430p:plain

使用できるスロットタイプはこんな感じです。

f:id:kun432:20211123233925p:plain

v1のときよく見てなかったですが、Alexaよりも使えるものは少ないですね。ただ、AMAZON.AlphaNumeric(アルファベットと数字の組み合わせ、例えば型番とかに使える)とかAMAZON.EmailAddress(メールアドレス)とか、Alexaになくて非常に有用なものもあります。これはAlexaにもほしい!

一旦スロットを作成すると詳細オプションというのが出てきます。

f:id:kun432:20211123234948j:plain

ここで、

  • スロットタイプを作成
  • スロット収集時のボットからの発話バリエーションの追加
  • スロット収集時のサンプル発話の追加

など、より細かい設定ができますね。SSMLやカードを使った応答を返したい場合などはここで設定ができます。

f:id:kun432:20211123235259p:plain

その他、スロット収集が完了したときの確認や確認に対してユーザが拒否した場合の応答、Lambdaでバックエンドに渡したい場合の設定などが以下で設定できます。ここは詳細を割愛します。

f:id:kun432:20211124000637p:plain

対話モデルのビルドとテスト

一通り設定が終わったら、一番下にある「構築」をクリックして対話モデルをビルドします。少しだけ時間がかかります。

f:id:kun432:20211124000847j:plain

ビルドが成功したら、テストが実行できるようになるのでテストしてみましょう。「テスト」をクリックします。

f:id:kun432:20211124001022j:plain

右下にテスト用のダイアログが開きました。ここで対話内容をテキストや音声で入力して、想定した対話フローになるかを確認すればOKです。

f:id:kun432:20211124001334p:plain

音声の場合は、Alexaのテストとは操作がちょっと違いますので少し触れておきます。

最初にマイクのアイコンをクリックします。

f:id:kun432:20211124001450j:plain

「開いています」と表示されるとマイクがオープンします。ここで発話を行い、発話後にチェックマークをクリックするとマイクがクローズして、発話した内容で入力が行われます。入力を途中でやめる場合はバツマークをクリックすればOKです。

f:id:kun432:20211124001605j:plain

ここはv1だとなぜか変な動きになったりしていたところで、v2で試してみた限りは特に問題なく動作していますね。

また「検査」をクリックすると、対話のやり取りの中でのスロット収集状況を確認できます。

f:id:kun432:20211124002121j:plain

さらに歯車アイコンをクリックすると、

  • バックエンドのLambdaを選択
  • CloudWatch Logsへのテキストログの保存
  • S3へのオーディオログの保存

なんかもインスタントに設定ができるみたいです。

f:id:kun432:20211124002645j:plain

まとめ

サンプルで少しいじってみただけですが、v1に比べると随分とわかりやすくなってて良いですね。もう少し色々触ってみたいと思います。