はじめに
AIの活用法が次々と生まれている中で、AIとAWSを融合させればおもしろいことができるのではないかと思い、その前段階として、まずはAWSのみで簡単な対応しかできない簡易コールセンターを構築してみました。
完成イメージ
事前準備
Amazon Connectインスタンスの作成
Amazon Connectのコンソール画面に遷移し、インスタンスを追加する
を押下します。
ステップ1
- ID管理の項目で、
Amazon Connectにユーザーを保存
を選択します。 - アクセスURLには一意なインスタンス名を入力します。
-
次へ
を押下します。
ステップ2
-
管理者を指定
を選択します。 - ユーザー名などを入力します。
-
次へ
を押下します。
ステップ3
- 着信と発信の両方を許可します。
-
次へ
を押下します。
ステップ4
-
Customer Profiles を有効化
のチェックを外します。 -
次へ
を押下します。
ステップ5
- すべての設定と情報を確認します。
-
インスタンスの作成
を押下してインスタンスを作成します。
正常に終了しました。
と表示されたら成功です。
Amazon Connectの開始
今すぐ始める
を押下すると、Amazon Connectのダッシュボードが別のブラウザタブで表示されます。
言語を日本語にします。
この画面の今すぐ始める
を押下します。
電話番号の取得
- 電話番号を取得可能な国を選択します。※日本の電話番号を取得する場合は、AWS サポートからリクエストし、必要書類を提出する必要があります。
- タイプは DID (直通ダイヤル) を選択し、表示されるリストから番号を選択します。
-
次へ
を選択します。
※マイクへのアクセスを許可を求めるメッセージが表示された場合は、オーディオデバイスを確認し、許可を選択してください。 -
次へ
を選択します。 - ダイアログに表示される指示に従って、Amazon Connect インスタンスへの着信通話をテストします。
- テストが完了したら、
次へ
を選択します。
Amazon Polly と Amazon Lex によるインタラクティブな対話
Lex ボットの作成
Lexのコンソール画面に行き、ボットを作成
を押下します。
ボット設定を構成
-
空のボットを選択します。
を選択します。 - 今回ボット名は、
PizzaOrder
と入力します。
IAM アクセス許可 画面で、基本的な Amazon Lex 権限を持つロールを作成します。
を選択します。
- 児童オンラインプライバシー保護法 (COPPA) については、
いいえ
を選択します。 - アイドルセッションのタイムアウトは、デフォルト値のまま
5分
とします。 - 詳細設定 - オプションはデフォルトのまま、
次へ
を押下します。
ボットに言語を追加
- 言語を選択は、
日本語 (JP)
を選択します。 - 音声による対話 は、ニューラルテキスト読み上げの音声の
Takumi
を選択します。 - インテント分類信頼スコアのしきい値は、デフォルト値のまま
0.40
とします。 -
完了
を押下します。 -
ボット (PizzaOrder) が正常に作成されました
と表示されれば成功です。
インテントの作成
- インテント名に
GetPizzaOrder
と入力します。
- プレーンテキストに下記テキストを貼り付け、プレビューを表示します。
ピザを注文したい
ピザを注文する
ピザをください
- スロットセクションは、次のセクションでカスタムスロットのタイプを最初に設定するため、空のままにしておきます。
-
インテントを保存
を押下します。
- Amazon Lex のナビゲーションメニューで、インテントリストに戻るを選択します。
スロットタイプの作成
- スロットタイプを選択します。
- カスタムスロットタイプを構築するため、
スロットタイプを追加
を選択します。 -
空のスロットタイプを追加
を選択します。
- ダイアログボックスが表示されたら、スロットタイプ名に
PizzaSize
と入力し、追加を選択します。
- スロット値の解決で
スロット値に制限
を選択します。 - スロットタイプ値の下に、次の値のタイプを入力して価値を追加を選択します。
スモール
ミディアム
ラージ
また、類似の発言を認識するため、画像のように値も追加します。 -
スロットタイプを保存
を選択します。
前のステップを繰り返して、PizzaCrust と PizzaToppings の2つのスロットタイプを作成します。
ボットスロットの追加
Amazon Lex のナビゲーションメニューで、スロットタイプ
を選択します。
インテント
を選択し、先ほど作成したGetPizzaOrder
を選択します。
スロットの項目までスクロールし、スロットの追加
を選択します。
- スロットを追加ウィンドウで、前の手順で作成したスロットに関する詳細を入力します(下記表参照)。
-
このインデントには必須
チェックボックスにはすべてチェックを入れます。
名前 | スロットタイプ | プロンプト |
---|---|---|
PizzaSize | PizzaSize | ご希望のサイズをお知らせください |
PizzaToppings | PizzaToppings | お好みのトッピングをお知らせください |
PizzaCrust | PizzaCrust | お好みの生地をお知らせください |
スロットセクションに、作成した3つのスロットが含まれていることを確認できます。
フルフィルメントのフルフィルメントが成功した場合の項目で、以下のように入力します。
ご注文を確認します。ピザのサイズは {PizzaSize}、生地は {PizzaCrust}、トッピングは {PizzaToppings}、以上でご注文頂きました。
インテントの保存
を押下します。
Build
を押下すると、設定したボットの構築処理が開始します。
ボット (日本語 (JP)) で言語 PizzaOrder が正常に構築されました
と表示されれば成功です。
ボットのテスト
Test
を押下すると、ボットテスト用インタフェースが開きます。
テスト用インターフェイスを使用して、テスト用の発話を入力し、ボットが想定通りに応答するかどうかを確認することができます。
新しいボットバージョンとエイリアスの公開
Amazon Lex のナビゲーションメニューで、インテントリストに戻るを選択し、ボットのバージョンを選択します。
既存のボットの新しいバージョンを作成するため、バージョンを作成
を選択します。
1 のバージョン PizzaOrder が正常に作成されました
と表示されれば成功です。
次に、デプロイ用の新しいエイリアスを作成する必要があります。
ナビゲーションメニューから、エイリアスを選択し、エイリアスを作成
を選択します。
エイリアスを作成画面で、エイリアス名に PizzaOrderProd
を入力します。
バージョンに関連付ける - オプションで、前の手順で作成したバージョンを選択し、作成
を押下します。
エイリアス (PizzaOrderProd) を正常に作成しました
と表示されれば成功です。
エイリアス名は、Amazon Connect でボットを設定する際に使用しますので、メモしておきます。
Amazon Connect インスタンスに Amazon Lex ボットを追加
Amazon Connect インスタンスにボットを追加
- Amazon Connect サービスを開きます。
- ボットを追加するインスタンスの Amazon Connect インスタンスエイリアスを選択します。
- 左側のナビゲーションバーで問い合わせフローを選択します。
Amazon Lex のセクションで、PizzaOrderボットを作成したリージョンとボット名、作成したエイリアスを選択します。
次に、Amazon Lex ボットを追加
を選択します。
PizzaOrderのボットが、Lex ボットの一覧に表示されます。
これにより、Amazon Connect のコンタクトフローに Lex ボットを統合することができます。
ここまでの手順で、Amazon Connect インスタンスにボットの追加を完了しました。
Lex ボットを使用したコンタクトフローの構築
コンタクトフローの作成
AWS コンソールの Amazon Connect サービスから概要にあるリンクをたどり、Amazon Connect のコンソールを開きます。
ルーティングからフローのページに切り替え、フローの作成
を選択します。
名前の入力欄に、PizzaOrder_Flow
と入力します。
ログ記録動作の設定ブロックをデザインペイン上に移動し、エントリポイントブロックに接続します。
音声の設定ブロックをデザインペイン上に移動し、ログ記録動作の設定ブロックの成功に接続します。
- 言語は、ドロップダウンから
日本語
を選択します。 - 音声は、
Takumi
を選択します。 - 発話スタイルを上書き - ニューラル チェックボックスを選択し、
ニューラル発話スタイル:なし
を選択します。 -
言語属性を設定
を選択します。 -
保存
を押下します。
顧客の入力を取得する
ブロックをデザインペイン上に移動し、音声の設定ブロックの成功に接続します。
顧客の入力を取得ブロックを編集します。
テキスト読み上げまたはチャットテキスト
を選択し、山田ピザにお電話ありがとうございます。どのようなご用件でしょうか?
と入力します。
Amazon Lex
タブを選択し、名前のドロップダウンから PizzaOrder
ボットを選択します。
- エイリアスは
PizzaOrderProd
を選択します。 - インテントの追加をクリックし、
GetPizzaOrder
と入力します。 -
保存
を押下します。
コンタクト属性の設定
ブロックをデザインペイン上に移動します。
顧客の入力を取得するブロックのGetPizzaOrder
の出力に接続します。
- 名前空間 を
ユーザー定義済
として選択します。 - キーに
Size
と入力します。 - 値に
手動で設定
を選択し、$.Lex.Slots.PizzaSize
と入力します。 -
別の属性の追加
を2回選択して、上の手順と同様にCrust
属性と$.Lex.Slots.Crust
、Toppings
属性と$.Lex.Slots.Toppings
の2つを追加します。 - 完了したら、
保存
を押下します。
プロンプトの再生
ブロックをデザインペインに移動します。
コンタクト属性の設定ブロックからの 成功
と エラー
出力に接続します。
- テキスト読み上げまたはチャットテキストを選択し、
できたての $.Attributes.Size $.Attributes.Crust ピザを15分後にお届けします。ご注文ありがとうございました。
というテキストを入力します。 -
保存
を押下します。
プロンプトの再生ブロック
をもう一つデザインペインに追加します。
顧客の入力を取得するブロックのデフォルト
およびエラー
出力に接続します。
-
テキスト読み上げまたはチャットテキストを選択し、申し訳ありません。エラーが発生しました。もう一度おかけ直しください。
というテキストを入力します。 -
保存
を押下します。
切断
ブロックをデザインペイン上に移動し、プロンプトの再生ブロックの成功
、エラー
両方の出力に接続します。
これを2つのプロンプトの再生ブロックの両方に対して行います。
コンタクトフローが完成しました。
想定通りのフローか確認し、右上の公開
を押下します。
コンタクトフローへの電話番号割り当て
画面左側のナビゲーションバーで チャネル
> 電話番号
を選択します。
- インスタンスに割り当てられた電話番号を選択し、前のステップで作成した
PizzaOrder_Flow
を選択します。 -
保存
を選択します。
顧客体験のテスト
割り当てた電話番号に電話をかけます。
すると、ピザが注文(!?)できるようになっています。
ここまでの手順で、Lex ボットを利用したコンタクトフローの構築が完了しました。
まとめ
無事に簡易コールセンターを構築することができました。
ゆくゆくはChatGPTをかけあわせて何か作りたいと思います。