Amazon Connect コンタクトフローでAmazon Lexを利用時、スロットタイプ AMAZON. Timeは、発話で時刻をどこまで認識してくれるか調査してみた
はじめに
ConnectとLexでコンタクトセンター向けチャットボットを構築時、ユーザーから時刻を聞き取る場合は、LexのスロットタイプであるAMAZON.Time
を利用すると思います。
このAMAZON.Time
では、普段会話で使う時間の伝え方をどこまで認識するか、構築時に把握する必要がありますので、調査してみました。
まず、調査するための環境の作成方法をご説明します。
調査環境の作成
今回、調査するために、作成したボットとインテントの作成方法を説明します。
ボットの作成
- Lexのコンソール画面から、[ボットの作成]をクリックします。
- [空のボットを作成します]を選択し、ボット名を記載し、下記画像の通りに入力します。
- 日本語を選択し、音声はTakumiを選択し、[完了]をクリックします。
これでボットが作成できました。
インテントの作成
- インテントの[インテントを追加]から[空のインテントを追加]でインテントを作成します。
- インテント名を入力し、サンプル発話に「予約時間」を追加します。
- [スロットを追加]から、スロットタイプ[AMAZON.Time]を選択します。プロンプトと名前も記載します。
- スロット名を
time
としました。
- スロット名を
- [Confirmation]をアクティブにし、確認プロンプトに以下を記載します
{time}でよろしいでしょうか?
- インテントを保存後、Buildすると、インテントのテストが行えます。
コンタクトフローの作成
Connectインスタンスの作成や電話取得は、下記の記事を参考にしてください。
コンタクトフローの作成を解説します。
コンタクトフロー図は、下記のようになります。
音声の設定
音声は、Lexで設定した音声と同じにします。
今回は、Takumiを設定しております。
また、言語属性を設定にチェックをします。
顧客の入力を取得する
下記画像の通り、先程作成したLexボットとインテントを指定します。
Lexボットが表示されない場合、Connectインスタンスの設定で、Amazon Lex ボットを追加されていない可能性がありますので、ご確認ください。
ループ
今回は、1回の通話で多くテストしたかったため、ループを10回設定しました。
テスト方法
上記のコンタクトフローを設定し、電話番号とコンタクトフローを紐付けるとテストができます。
電話をかけて数字を発話して、Lexが認識するかテストができます。
調査結果
調査結果を出します。
調査日(2023年5月)時点でのLexの認識能力のため、今後、認識能力が上がることで、より聞き取ってくれる可能性はあります。
時間指定
発話内容 | Lexの認識 | 判定 |
---|---|---|
9 | - | × |
9時 | - | × |
12 | - | × |
12時 | - | × |
13 | - | × |
13時 | 13:00 | ○ |
13時13分 | 13:13 | ○ |
13時13 | 13:13 | ○ |
13時半 | 13:30 | ○ |
13時13分13秒 | 13:13 | △ |
0時 | 00:00 | ○ |
24時 | - | × |
50分 | - | × |
2時間後 | - | × |
- 13時30分ではなく、13時半と伝えてたところ、半を30分に変換してくれるようです。
- 数字のみは、認識しませんでした。
〇〇時
や〇〇時〇〇分
、〇〇時〇〇
、〇〇時半
と伝える必要があるようです。 - 秒は、認識しないようです。分単位で認識しました。
- あいまいな時刻は、ドキュメント通り認識しません
あいまいな時刻
「9時」が認識されない理由は、厳格には認識していますが、09:00と21:00の2通りあり、どちらに変換すればよいか分からないため、スロット値に入らないようです。
ドキュメントにも2通りある時刻をあいまいな時刻
と表現し、Lambda関数に値を渡して、処理する必要があると記載がありました。
以前、あいまいな時刻を処理するLambdaを構築しましたので、こちらを一読ください。
ただし、「午前9時」にすると、あいまいな時刻ではないので、「9:00」と認識してくれます。
あいまいな時刻の解決が含まれています。ユーザーがあいまいな時刻を入力すると、Amazon Lex は slotDetails イベントの Lambda 属性を使用して、あいまいな時刻の解決を Lambda 関数に渡します。たとえば、ボットからユーザーに配達時間を尋ねたときにユーザーが「10 時」と答えると、この時刻はあいまいです。午前 10:00 なのか午後 10:00 なのかが不明です。この場合、slots マップの値は null となり、slotDetails エンティティには 2 つの可能な時刻の解決が含まれます。
AMや午前がついた場合
発話内容 | Lexの認識 | 判定 |
---|---|---|
AM9 (エーエムキュウ) | 18:09 | × |
AM9時 | - | × |
午前9 | 09:09 | × |
午前9時 | 09:00 | ○ |
AM0 | - | × |
AM12 | - | × |
午前0時 | 00:00 | ○ |
午前12時 | 00:00 | × |
PM0 | - | × |
PM12 | - | × |
午後0時 | 12:00 | ○ |
午後12時 | - | × |
午後15時 | 15:00 | ○ |
正午 | - | × |
明日 | - | × |
今 (14:46) | 14:46 | ○ |
現在 (14:46) | 14:46 | ○ |
AM・PM
は、認識せず、午前・午後
という言い方ですと認識しました。午後12時
は、認識しませんでしたが、午前12時
はなぜか認識しました。。今
や現在
は、現在時刻と認識してくれるので便利ですね。
参考
最後に
ConnectとLexのAMAZON.Timeを使用する際、時刻をどこまで認識してくれるかある程度把握できました。
参考になれば幸いです。