Amazon Web Services ブログ
チャットで問い合わせ中の顧客にキューにおける待機位置を表示する
このブログは「Displaying position in queue for chat customers」を翻訳したものです。
顧客がチャットを使用してサポートに連絡する時、エージェントのサポートが必要になる場合が多くあります。エージェントがいつサポートを開始できるかの予定を提示することで、顧客のエンゲージメントを維持しやすくなります。そしてコンタクトセンターは、顧客にキューの中のどの位置で待機しているかを把握させることができます。今回のソリューションでは、Amazon Connect チャットを使用して Amazon Connect ベースのコンタクトセンターに問い合わせをした際に、顧客にその待機位置の情報を提供することで、顧客エンゲージメントを高めることが可能となります。
ソリューション概要
このソリューションではイベント駆動型アーキテクチャを構築し、キュー内の各問い合わせの待機位置を追跡し続けます。このソリューションでは以下のコンポーネントが使用されます。
- Amazon Connect
- Amazon Connect コンタクトフロー
- AWS Lambda
- Amazon DynamoDB
- Amazon EventBridge ルール
前提条件
この手順を実施するためには、以下の前提条件が必要となります:
- AWS アカウント を持っていること
- Amazon Connect インスタンスが作成済みであること
- Lambda、DynamoDB、および EventBridge に精通していること
アーキテクチャ
このソリューションで実行される各イベントは、以下の順序となります:
- 顧客がチャットのセッションを開始し、それにより Amazon Connect コンタクトフローを実行する Amazon Connect の問い合わせが開始されます。
- 顧客がキューに追加された時に、Customer Queue Flow が実行されます。このフローは、宛先キーを “operation”、値を “add” として Lambda 関数を実行します。
- Lambda 関数は DynamoDB テーブルに新しいレコードを作成します。ContactId が各チャットセッションで一意となるため、パーティションキーとして指定されます。現在時刻も項目の一つとして追加され、ソートキーとして使用されます。
- Queue Flow は待機ブロックによってループし、プロンプトの再生ブロックによってキュー内での待機位置が記載されたメッセージを顧客に送ります。
- 顧客がエージェントに繋がった時に、Customer Whisper Flow が実行されます。このフローは、宛先キーを “operation”、値を “delete” として Lambda 関数を実行します。
- Lambda 関数はイベントペイロードからContactIdを取得し、DynamoDB テーブルから顧客のレコードを削除します。
- EventBridge ルールが operation パラメータを “maintain” として Lambda 関数を毎分実行し、以下の処理を実行します。
- 切断された顧客のレコードを削除
- タイムスタンプに基づいて顧客の待機位置を更新
デプロイ手順
ステップ 1:Amazon Connect のリソース情報を取得
- AWS マネージメントコンソールにサインインし、Amazon Connect コンソールに移動します。
- Amazon Connect インスタンスのインスタンス ID を特定し、記録します。
- Amazon Connect インスタンスにログインします。
- Amazon Connect インスタンスの BasicQueue のARNを特定します。
- Amazon Connect インスタンスの Sample Disconnect Flow のARNを特定します。
ステップ 2:AWS CloudFormation テンプレートを起動
このテンプレートでは、このソリューションに必要となる以下のリソースを作成します:
- 1 つの Lambda 関数 – ChatPositionInQueueLambda
- 1 つの DynamoDB テーブル – ChatPositionInQueueDB
- 3 つの Amazon Connect コンタクトフロー
- PositionInQueueChatFlow
- PositionInQueueCustomerQueueAddRecordFlow
- PositionInQueueCustomerWhisperRemoveRecordFlow
- 1 つの EventBridge ルール – PositionInQueueEventRule
- Lambda 関数から DynamoDB テーブルへのアクセスを許可する1つの IAM ロール
- Amazon Connect から Lambda 関数を実行する 1 つのアクセス権限
- EventBridge ルールから Lambda 関数を実行する 1 つのアクセス権限
次の手順に従い、Amazon Connect インスタンスがデプロイされている AWS リージョンにテンプレートをデプロイします。
- AWS マネージメントコンソールにログインします。
- をクリックし、ソリューションのデプロイを開始します。次へをクリックします。
- スタックの名前(例:ConnectChatPositionInQBlog)、ステップ 1 で記録した Amazon Connect インスタンス ID、BasicQueue ARN、Simple Disconnect Flow ARN を入力します。次へをクリックします。
- ページ下部までスクロールし、次へをクリックします。
- ページ下部までスクロールして IAM リソース作成の承認にチェックを入れ、送信をクリックします。リソースの作成には数分かかることがあります。
- CloudFormation スタックのデプロイが完了したことを確認します。
ステップ 3:キューの設定とテスト
- Amazon Connect ダッシュボードからルーティングプロファイルに移動します。
- Basic Routing Profile を検索します。検索結果をクリックして設定画面を開きます。
- Basic Routing Profile に BasicQueue が設定されていることを確認します。また、ルーティングプロファイルでチャットが有効になっていることを確認します。
- Amazon Connect ダッシュボードからチャットをテストを開きます。
- テスト設定を開き、問い合わせフローの欄に CloudFormation スタックで作成された PositionInQueueChat コンタクトフローを指定します。
- 別のブラウザで手順 2、3 を実施することで、複数ユーザでシミュレーションできます。
- ここまでの設定により、以下のように各顧客の待機位置がチャット内で通知されるようになります。
キュー内の顧客の待機位置 0 1 2 3 顧客のチャット画面のスクリーンショット - 前に並んでいる顧客のチャットがエージェントによって応答されたら、顧客の待機位置が更新されてチャットにも反映されます。
クリーンアップ
- CloudFormation コンソールに移動し、ConnectChatPositionInQBlog スタックを選択して削除をクリックします。
- 確認画面でスタックの削除を選択し、スタックを削除します。
- Amazon CloudWatch Logs コンソールに移動します。ChatPositionInQueueLambda のロググループを選択し、削除します。
追加情報
コンタクトフローのプロンプトを変更したり、待機ブロックの待機時間を変更したりすることで、ユースケースに合わせて本ソリューションをカスタマイズできます。このソリューションは音声通話にも適用できます。
まとめ
本記事では、Lambda 関数、DynamoDB テーブル、コンタクトフロー、IAM ロール、EventBridge ルールを含むCloudFormation スタックをデプロイすることで、チャットにキューの待機位置を表示するソリューションを実践しました。
本ソリューションは、追加の変更無く、チャットチャネルが有効になっている複数のキューの場合でも正常に動作します。
Amazon Connect のデプロイに関するソリューションの支援が必要な場合は、AWS プロフェッショナルサービスまたは数多くの Amazon Connect パートナーに連絡することができます。
このブログの翻訳はソリューションアーキテクトの 泉 航 が担当しました。原文はこちらです。