はじめに
こんにちは、サーバーワークスのディベロップメントサービス2課の池田です。
今回は、Amazon Connectを活用して「ラストエージェントルーティング」を実装する方法についてご紹介します。
ラストエージェントルーティングとは
ラストエージェントルーティングとは、以前対応したオペレーターに再度お客様の電話をルーティングする仕組みです。
amazon connectでは通常、お客様がコールセンターに電話をかけ直すと、待ち時間の長いオペレーターに繋がります。
しかし、特定のオペレーターが前回の対応を行っている場合、対応履歴やお客様のニーズを理解しているため、同じオペレーターが対応する方が迅速かつ的確なサポートを提供できます。
前提条件
- Amazon Connectのインスタンスが作成済みであること
- AWS CLIが利用可能であること
- AWS SAMがインストール済みであること
実装概要
このフロー図は、Amazon Connectにおける「ラストエージェントルーティング」の実装概要を示しています。お客様からの着信があると、以下の手順に従って担当オペレーターの確認およびルーティングが行われます。
情報取得ラムダの実行
最初に、着信があると情報取得ラムダが起動し、DynamoDBからお客様の電話番号に紐付いた前回の担当オペレーター情報(agent名)を取得します。DBデータ確認
DynamoDBにお客様の情報が登録されているかを確認します。登録があれば次のステップに進み、なければデフォルトキューにルーティングされます。エージェントの対応確認
担当オペレーターが現在対応可能かどうかを確認します。対応可能であれば、担当オペレーターのキューにルーティングされます。不在の場合はデフォルトキューに設定されます。情報登録ラムダの実行
通話が終了した際に、情報登録ラムダが実行され、お客様の電話番号と対応したオペレーターのagent名をDynamoDBに保存します。これにより、次回の着信時に同じオペレーターへルーティングできるようになります。通話開始
ルーティングが完了した後、通話が開始されます。
この仕組みにより、再度の問い合わせでもお客様が前回のオペレーターにスムーズに繋がることが可能となり、顧客満足度の向上と対応時間の短縮が期待できます。
手順
以下は、Amazon Connectでラストエージェントルーティングを実装する手順です。
1. DynamoDB テーブルの作成
DynamoDB テーブル CustomerData を AWS CLI を使用して作成します。
aws dynamodb create-table \ --table-name CustomerData \ --attribute-definitions AttributeName=phoneNumber,AttributeType=S \ --key-schema AttributeName=phoneNumber,KeyType=HASH \ --billing-mode PAY_PER_REQUEST \ --region ap-northeast-1
2. Lambda 関数の作成
下記二つの関数を作成します。
必要な権限は適宜設定を行なってください。
情報取得関数
この関数は、DynamoDB からお客様の前回対応したエージェントの情報を取得します。
import boto3 import os dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('CustomerData') def lambda_handler(event, context): phoneNumber = event['Details']['Parameters']['phoneNumber'] response = table.get_item(Key={'phoneNumber': phoneNumber}) if 'Item' in response: return { 'phoneNumber': response['Item'].get('phoneNumber'), 'lastAgent': response['Item'].get('lastAgent') } else: return {'Message': 'No record found'}
情報登録関数
この関数は、DynamoDB にお客様の電話番号とオペレーター情報を登録・更新します。
import boto3 import os # DynamoDBリソースを取得 dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('CustomerData') def lambda_handler(event, context): # 顧客の電話番号と最後に担当したエージェントのIDを取得 phoneNumber = event['Details']['ContactData']['CustomerEndpoint']['Address'] lastAgent = event['Details']['Parameters']['lastAgent'] # DynamoDBテーブルから該当する電話番号のアイテムを取得 response = table.get_item(Key={'phoneNumber': phoneNumber}) # アイテムが存在する場合、更新処理を行う if 'Item' in response: table.update_item( Key={'phoneNumber': phoneNumber}, UpdateExpression="SET lastAgent = :agent", ExpressionAttributeValues={ ':agent': lastAgent } ) return {'Message': 'updated'} # アイテムが存在しない場合、新規作成 else: table.put_item( Item={ "phoneNumber": phoneNumber, "lastAgent": lastAgent } ) return {'Message': 'added'}
5. Lambda関数のAmazon Connectへの紐付け
デプロイ後、Lambda関数をAmazon Connectに紐付ける必要があります。作成したLambda関数のARNを元に、以下のコマンドを2回実行してください。 Lambda関数のARNに紐付け:
aws connect associate-lambda-function \ --instance-id <Your-Connect-Instance-ID> \ --function-arn <Your-Lambda-ARN> \ --region "ap-northeast-1"
6. Amazon Connectの設定
デプロイが完了し、Lambda関数がAmazon Connectインスタンスに紐付けられた後、Amazon Connectコンソールで問い合わせフローの設定を行います。以下の手順に従って、ラストエージェントルーティングを実装していきます。
問い合わせフローの編集: まず、Amazon Connectコンソールでラストエージェントルーティングを適用したい問い合わせフローを選択して編集します。
Lambda関数の呼び出し (情報取得): 最初に、AWS Lambda関数を呼び出すブロックを追加します。このブロックでは、デプロイした
last-agent-get_customer_data
関数を設定し、DynamoDBから顧客の前回対応オペレーター情報を取得します。関数の入力パラメータには、顧客の電話番号を動的に設定します。これにより、問い合わせ時に顧客の電話番号を基にDynamoDBから前回のオペレーター情報が取得されます。人員確認: 次に、「人員確認」ブロックを追加します。このブロックでは、取得したオペレーター情報に基づいて、該当のオペレーターが現在対応可能かどうかを確認します。設定では、チェックするキューを「エージェント別」に選択し、動的に設定します。名前空間は「外部」、キーは
lastAgent
として設定することで、DynamoDBから取得したオペレーター情報を基に動的に確認を行います。作業キュー設定: 「人員確認」ブロックの結果が「利用可能」の場合、次に「作業キュー設定」ブロックを追加します。このブロックでは、取得したオペレーターを基に動的にキューを設定します。キューは「エージェント別」を選択し、動的に設定します。名前空間は「外部」、キーは
lastAgent
を使用することで、前回のオペレーターにルーティングされます。利用可能でない、またはエラーの時は、任意のキューに設定するブロックを作成します。Lambda関数の呼び出し (情報登録):
Default customer whisper
フローに、AWS Lambda関数を呼び出すブロックを追加します。ここでは、last-agent-upsert_customer_data
関数を設定し、今回対応したオペレーターの情報をDynamoDBに登録します。関数の入力パラメータには、オペレーターのユーザー名を動的に設定します。これにより、次回の問い合わせ時にもスムーズに前回のオペレーターにルーティングできるようになります。
おわり
この記事では、Amazon Connectでのラストエージェントルーティングの仕組みと実装方法を解説しました。
再問い合わせの際に前回対応したオペレーターに繋げることで、顧客の満足度向上と対応の効率化が期待できます。
この記事が、Amazon Connectでのラストエージェントルーティング導入の参考になれば幸いです。
ご不明点があれば、ぜひコメントでお知らせください。