2-3.コールバックの重複防止

コールバックは、顧客がエージェントを待ち続けることなく、また回線を占有することなく折り返し通話を予約できるので、コンタクトセンターにとって重要な機能の1つです。顧客のコールバック予約の順番が来ると、コンタクトセンターは自動で折り返しの電話を発信するので、顧客は待っている間に別の用事や仕事を行うことができます。また、コンタクトセンターにとっても顧客が接続を待っている間の通話コストを削減できるメリットがあります。

ただし、顧客が急いでエージェントと会話を希望する場合、何度もコンタクトセンターへコールを行い、結果として複数のコールバック予約が登録されてしまうことがあります。これを防止できれば、同じ件について何度もコールバックが行われることがなくなるため、顧客とエージェントの双方にメリットがあります。 このセッションでは、Amazon Connect、 AWS Lambda、Amazon DynamoDB を使用して、複数のコールバック登録を防止するソリューションについて説明します。

ソリューション概要

顧客のコールバックリクエストをキャプチャするためのアーキテクチャ

callback このアーキテクチャでは、Amazon DynamoDB を使用して、Callback Database という名前のデータベースにコールバックを要求した顧客のレコードを登録します。 - 顧客がコンタクトセンターにコールすると、Amazon Connect はコールバックをリクエストした電話番号をコンタクト属性として AWS Lambda に渡します。 - 最初に呼び出される Read Callback という名前の AWS Lambda では、顧客の電話番号とキュー名で Callback Database 内の一致するレコードの存在をチェックします。 - すでに該当するレコードがある場合は、コールバックリクエストがキューに入っているため、顧客にコールバックを待つように伝えるメッセージを再生します。 - レコードがない場合は、顧客はコールバックをリクエストできます。リクエストが確認されると、Write Callback という AWS Lambda 関数を使用して、電話番号と Amazon Connect のコンタクト属性 (Contact ID、キュー名、タイムスタンプなど) を Callback Database に書き込みます。

実行済みのコールバックをキャプチャするためのアーキテクチャ

callback このアーキテクチャでは、顧客にコールバックが実行されると、発信ウィスパーフローから Delete Callback という AWS Lambda 関数を呼び出し、Callback Database からカスタマーレコードを削除します。
このワークショップでは、アーキテクチャをシンプルにするため、コールバックの通話が成立したかによらず、コールバックの最初の試行でデータベース内のコールバックエントリを削除しています。 - この AWS Lambda 関数では、まず電話番号とキュー名でエントリを調べます。一致していれば、そのアイテムを削除します。

ラボ手順

AWS CloudFormation を使用して AWS Lamba 関数と Amazon DynamoDB を作成する

AWS CloudFormation テンプレートを使用して AWS IAMロール、AWS Lambda 関数、Amazon DynamoDB (Callback Database)テーブルを作成します。AWS Lambda 関数(readcallback、writecallback、removecallback) は、DynamoDB テーブル内のコールバック先電話番号やその他の情報を読み取り、書き込み、または削除するために使用されます。IAM ロールにより、AWS Lambda 関数がコールバックデータベースへの読み取り、書き込み、または削除するための権限と、Amazon Cloudwatch Logsへのアクセスを許可します。

  1. AWS マネジメントコンソールにログインします。
  2. こちらをクリックして、Callback というスタックを作成します。
  3. パラメータの ConnectInstanceID を、参加者の Amazon Connect インスタンス ID に変更します。
    callback

    Amazon Connect インスタンス IDは、インスタンス設定画面の以下の赤枠部分から確認できます( instance/ の後の文字列)。 callback

  4. チェックボックスをすべて選択した後、スタックを作成 ボタンをクリックします。 callback
  5. 3~5分程度でスタックが CREATE_COMPLETE になることを確認します。
    callback

AWS Lambda 関数を実行するアクセス権限を Amazon Connect に付与する

Amazon Connect インスタンスに、作成した AWS Lambda 関数を呼び出すアクセス権限を付与するには以下の手順に従います。
1. AWS コンソールから開いた Amazon Connect インスタンスの設定画面で、左側のメニューから Contact flows を選択し、AWS Lambda セクションのページの下部までスクロールします。
2. 以下の図に示すように、関数 ドロップダウンメニューで readcallback 関数を選択し、+ AWS Lambda Function をクリックします。
callback 3. writecallback 関数と removecallback 関数についても、手順 2を繰り返します。
4. 正常に処理を実行すると、合計 3 つの AWS Lambda 関数が登録されます。
callback

Amazon Connect のコンタクトフローをインポートして設定する

  1. こちらからコンタクトフローのzipファイルをダウンロードします。
  2. Amazon Connect コンソールにログインします。
  3. Amazon Connect コンソールの左側メニューから、ルーティング > 問い合わせフロー の順に選択します。
  4. 右上の コンタクトフローの作成 ボタンをクリックします。
  5. 右上のドロップダウンをクリックし、フローのインポート を選択します。
  6. 選択 ボタンをクリックし、上記の手順 1 でダウンロードした zip を展開したフォルダ内にある Callback_J ファイルを選択します。
  7. フローがインポートされます。警告マークのついている作業キューの設定ブロックをクリックし、参加者の環境のキューに変更し、Save します。 callback
  8. 最初の AWS Lambda 関数を呼び出す ブロックをクリックし、ドロップダウンリストから readcallback を選択し、Save します。 callback
  9. 2番目のAWS Lambda 関数を呼び出す ブロックをクリックし、ドロップダウンリストから readcallback を選択し、Save します。 callback
  10. 3番目の AWS Lambda 関数を呼び出す ブロックをクリックし、ドロップダウンリストから writecallback を選択し、Save します。
    callback
  11. コンタクトフローを保存して、公開します。

Amazon Connect 発信ウィスパーフローをインポートして設定する

  1. Callback_Outbound というコンタクトフローをダウンロードします。
  2. Amazon Connect コンソールの左側で、ルーティング > 問い合わせフロー を選択します。
  3. コンタクトフローの作成 ドロップダウンメニューをクリックし、発信ウィスパーフローの作成 を選択します。 callback
  4. 右上のドロップダウンをクリックし、フローのインポート を選択します。
  5. 選択ボタンをクリックし、上記の手順1でダウンロードしたzipを展開したフォルダ内にある Callback_Outbound ファイルを選択します。
  6. フローがインポートされます。AWS Lambda 関数を呼び出す のブロックをクリックし、ドロップダウンリストから removecallback を選択し、Save します。 callback
  7. コンタクトフローを保存して公開します。

発信ウィスパーフローをキューに関連付ける

  1. Amazon Connect コンソールで、左側のナビゲーションバーから ルーティング > キュー を選択します。
  2. コールバックを受信するキューを選択します。
  3. 新しく作成された Callback Outbound という名前のコンタクトフローを アウトバウンドウィスパーフロー ドロップダウンに割り当てます。
  4. アウトバウンド発信者 ID 番号 が、インスタンスで取得した電話番号に設定されていることを確認します。
  5. 右上にある 保存 をクリックします。
    callback

電話番号を連絡先フローに関連付ける

  1. Amazon Connect コンソールで、左側のナビゲーションバーから ルーティング > 電話番号 を選択します。
  2. コールバックに使用する電話番号を選択します。
  3. 問い合わせフロー/ IVR ドロップダウンメニューから、Callback に関連付けて、保存 を選択します。
    callback

ソリューションのテスト

セットアップの準備が整ったので、ソリューションをテストしてみましょう。
1. 現在 Amazon Connect を使用しているブラウザからシークレットタブを開くか、あるいは CCP をサポートする別のブラウザを起動します。インスタンスの Access URL から CCP を開き、エージェントとして作成したユーザーでログインした後、Offline 状態にします。
1. Callback コンタクトフローに設定した電話番号に電話をかけます。
1. すべてのエージェントが通話中であることを示すメッセージが再生されます。1 を押すとコールバック、何も押さないとそのままエージェントに繋がるのを待つことになります。今回は 1 を押します。
1. コールした番号にコールバックする場合は 1 を、別の番号にコールバックする場合は 2 を押します。 - 2 を押した場合は電話番号の入力を要求されますので、コールバックを希望する番号を入力します。 1. 入力が正常に受け付けられると、通話が終了します。

顧客の電話番号は DynamoDB データベースの Callback テーブルに書き込まれます。この状態で2回目の呼び出しを行うとどのような動作になるか確認しましょう。

  1. Callback コンタクトフローに設定した電話番号に電話をかけます。
  2. 前回と同様の操作を行い、コールバックを希望します。
    • テストに使用した番号以外へのコールバックを希望した場合、2回目も同じ番号の登録操作を行います。
  3. すでにコールバックが登録されていることを示すメッセージが聞こえるはずです。

コールバックを重複して登録できないことを確認しました。続いてエージェントでコールバックを受信しましょう。

  1. エージェントのステータスを Avaliable に変更します。コールバックが CCP に着信するので、コールを受信します。
    • コールバックキューへ転送するブロックにて初回ディレイを60秒に設定しているため、コールバック着信までに時間がかかる場合があります
  2. コールバックが処理されると、コールバック要求のエントリがテーブルから削除されることを確認します。
    • 今回の環境では、顧客がコールバックを受信したか否かにかかわらず、エントリが削除されます。

このラボでは、DynamoDB テーブル内のコールバックを確認することで、同じ発信者による重複コールバックの登録を回避し、コンタクトセンターの生産性を向上させるソリューションを実装しました。