前回までの流れ
最近 Amazon Connect の検証をしておりまして、検証で作成した環境のご紹介となります。以前、下記のように ガバメントクラウド関連のドキュメントが格納されているGCAS を検索するためのアプリを作成しました。
このアプリでは、チャットシステムを通じて Amazon Bedrock に接続し、回答を取得しています。Amazon Bedrockのナレッジベース機能を使って RAG 構成を組み、事前にGCASドキュメントを格納しました。
このRAGベースのチャットに加えて、「電話によるインターフェース」も試してみたのが前回の記事でした。
前回は、以下のように「質問に対して回答するだけ」のシンプルな構成でしたが、今回はこれを拡張しています。
今回追加機能
今回の拡張では、ユーザーの質問内容を Amazon Bedrock で判別し、以下のようなフローを実現しました。
処理内容 | 説明 |
---|---|
オペレーターへの転送 | ガバメントクラウド以外の質問、またはオペレーター対応を希望する場合は、電話をオペレーターへ転送 |
自動応答+メール送付 | ガバメントクラウドに関する質問であれば、電話で回答しつつ、その内容をユーザーにメールで送信 |
DynamoDBに記録 | 全処理をDynamoDBに記録 |
構成図と処理の流れ
1. ユーザーからの着信で Amazon Connect のフローが開始されます。
2. 発信元電話番号とメールアドレスの対応表を DynamoDB に事前登録しておきます。
3. 電話番号を取得後、Lambda関数で対応するメールアドレスを取得し、Lex を呼び出します。
4. Lexで音声を文字起こしし、その後次のLambda関数を実行します。
5. LambdaでBedrockを用いて質問の内容を分類します。
-
ガバメントクラウド関連の場合:ナレッジベースから回答を取得
-
関連しない場合:オペレーターへ電話転送
6. 取得した回答を音声で伝えるとともに、Amazon SNS 経由でメール送信します。
7. 対応履歴を DynamoDB に記録します。
ガバメントクラウドに関する質問をしてみる
電話をかけると、まず「ご質問をどうぞ」というプロンプトが流れます。ユーザーが質問をすると、今回は ガバメントクラウドに関する内容 だったため、音声で回答が返ってくると同時に、下記のようなメールも届きました。
音声認識では「公共サード」となっていますが、実際の回答はしっかりと「公共SaaS」に関する内容でした。
ガバメントクラウド以外の質問をしてみる
関係のない質問をしたところ、Amazon Connectのルーティング設定に従い、あらかじめ指定していたオペレーターの電話番号へ転送されました。DynamoDBには以下のように記録が追加されていました。
まとめ
Amazon Connect、Bedrock、DynamoDBなどを活用して、問い合わせ内容の切り分けから回答、記録までの一連の処理を実装してみました。電話を中心とした運用業務はまだまだ多く存在するため、今後も引き続き検証を実施し、実運用に耐えうるレベルまでブラッシュアップしていければと思います。