【Amazon Connect】ラストエージェントルーティング実装

記事タイトルとURLをコピーする

はじめに

こんにちは、サーバーワークスのディベロップメントサービス2課の池田です。
今回は、Amazon Connectを活用して「ラストエージェントルーティング」を実装する方法についてご紹介します。

ラストエージェントルーティングとは

ラストエージェントルーティングとは、以前対応したオペレーターに再度お客様の電話をルーティングする仕組みです。
amazon connectでは通常、お客様がコールセンターに電話をかけ直すと、待ち時間の長いオペレーターに繋がります。
しかし、特定のオペレーターが前回の対応を行っている場合、対応履歴やお客様のニーズを理解しているため、同じオペレーターが対応する方が迅速かつ的確なサポートを提供できます。

前提条件

  • Amazon Connectのインスタンスが作成済みであること
  • AWS CLIが利用可能であること
  • AWS SAMがインストール済みであること

実装概要

フロー図

このフロー図は、Amazon Connectにおける「ラストエージェントルーティング」の実装概要を示しています。お客様からの着信があると、以下の手順に従って担当オペレーターの確認およびルーティングが行われます。

  1. 情報取得ラムダの実行
    最初に、着信があると情報取得ラムダが起動し、DynamoDBからお客様の電話番号に紐付いた前回の担当オペレーター情報(agent名)を取得します。

  2. DBデータ確認
    DynamoDBにお客様の情報が登録されているかを確認します。登録があれば次のステップに進み、なければデフォルトキューにルーティングされます。

  3. エージェントの対応確認
    担当オペレーターが現在対応可能かどうかを確認します。対応可能であれば、担当オペレーターのキューにルーティングされます。不在の場合はデフォルトキューに設定されます。

  4. 情報登録ラムダの実行
    通話が終了した際に、情報登録ラムダが実行され、お客様の電話番号と対応したオペレーターのagent名をDynamoDBに保存します。これにより、次回の着信時に同じオペレーターへルーティングできるようになります。

  5. 通話開始
    ルーティングが完了した後、通話が開始されます。

この仕組みにより、再度の問い合わせでもお客様が前回のオペレーターにスムーズに繋がることが可能となり、顧客満足度の向上と対応時間の短縮が期待できます。

手順

以下は、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コンソールで問い合わせフローの設定を行います。以下の手順に従って、ラストエージェントルーティングを実装していきます。

  1. 問い合わせフローの編集: まず、Amazon Connectコンソールでラストエージェントルーティングを適用したい問い合わせフローを選択して編集します。

  2. Lambda関数の呼び出し (情報取得): 最初に、AWS Lambda関数を呼び出すブロックを追加します。このブロックでは、デプロイした last-agent-get_customer_data 関数を設定し、DynamoDBから顧客の前回対応オペレーター情報を取得します。関数の入力パラメータには、顧客の電話番号を動的に設定します。これにより、問い合わせ時に顧客の電話番号を基にDynamoDBから前回のオペレーター情報が取得されます。

  3. 人員確認: 次に、「人員確認」ブロックを追加します。このブロックでは、取得したオペレーター情報に基づいて、該当のオペレーターが現在対応可能かどうかを確認します。設定では、チェックするキューを「エージェント別」に選択し、動的に設定します。名前空間は「外部」、キーは lastAgent として設定することで、DynamoDBから取得したオペレーター情報を基に動的に確認を行います。

  4. 作業キュー設定: 「人員確認」ブロックの結果が「利用可能」の場合、次に「作業キュー設定」ブロックを追加します。このブロックでは、取得したオペレーターを基に動的にキューを設定します。キューは「エージェント別」を選択し、動的に設定します。名前空間は「外部」、キーは lastAgent を使用することで、前回のオペレーターにルーティングされます。利用可能でない、またはエラーの時は、任意のキューに設定するブロックを作成します。

  5. Lambda関数の呼び出し (情報登録)Default customer whisperフローに、AWS Lambda関数を呼び出すブロックを追加します。ここでは、 last-agent-upsert_customer_data 関数を設定し、今回対応したオペレーターの情報をDynamoDBに登録します。関数の入力パラメータには、オペレーターのユーザー名を動的に設定します。これにより、次回の問い合わせ時にもスムーズに前回のオペレーターにルーティングできるようになります。

おわり

この記事では、Amazon Connectでのラストエージェントルーティングの仕組みと実装方法を解説しました。
再問い合わせの際に前回対応したオペレーターに繋げることで、顧客の満足度向上と対応の効率化が期待できます。
この記事が、Amazon Connectでのラストエージェントルーティング導入の参考になれば幸いです。
ご不明点があれば、ぜひコメントでお知らせください。