アウトバウンドコールにおいて、発信元の電話番号が顧客と同じ市外局番の場合、顧客は着信コールに応答する可能性が高くなります。例えば日本の顧客に US 番号で発信しても電話を取る確率は低いですが、050 番号や 0120 番号で発信することで、電話を取ってもらえる確率は上がります。
Amazon Connect、AWS Lambda、Amazon DynamoDB を組み合わせて活用することで、コンタクトセンターのエージェントが発信番号を手動で操作することなく、発信先の電話番号に応じて自動的に Amazon Connect 側の発信者番号を切り替えてアウトバウンドコールを行うことができます。
以下の図は、ダイナミックアウトバウンドダイヤルの処理の流れを示しています。
この手順を行うには、以下の準備が必要です。
DynamoDB テーブルの作成および更新を行う権限
発信元の番号を切り替えるため、取得可能な国の電話番号を2つ以上取得します(前章の追加準備で電話番号を取得した場合、合計で最低3つの電話番号が必要です)。
DynamoDB のテーブルの読み取り権限を持つIAMポリシーを DDBtblspecificReadAccess
として作成します。ポリシーには以下のJSONを利用します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"dynamodb:BatchGet*",
"dynamodb:DescribeReservedCapacity*",
"dynamodb:DescribeTable",
"dynamodb:Get*",
"dynamodb:Scan",
"dynamodb:List*",
"dynamodb:Query",
"dynamodb:DescribeStream",
"dynamodb:DescribeTimeToLive",
"dynamodb:DescribeLimits"
],
"Resource": "*"
}
]
}
DynamoDB
を検索し、DynamoDB を開きます。
USAreaCodes
という名前でテーブルを作成します。以下の値で設定し、テーブルの作成を選択します。
AreaCode
(文字列)OutboundDialNumber
(文字列)AreaCode
にはテストでコールする先の電話番号を E.164(+12345678901)形式で設定し、OutboundDialNumber
には Amazon Connect で取得した電話番号のうち1つをE.164形式で設定します。項目の作成を選択します。
リージョンにかかわらず、作成直後の Amazon Connect インスタンスでは 090、080、070番号への発信は許可されていません。このワークショップでは Amazon Connect から通話発信を行いますが、携帯電話番号以外に 03 や 050 などの固定電話や、US 番号を無料で取得できるアプリ等を準備できない場合は、前項の追加準備手順に従って、通話先となる US 電話番号を Amazon Connect 上で取得して、テーブルのテストコール先電話番号( AreaCode )として設定してください。
DDBPhoneNumberSearch
という名前で Python 3.9 のランタイムで作成し、以下のコードをペーストして Deploy します。この関数は宛先電話番号に対応する発信元電話番号を DynamoDB テーブルから取得します。import json
import json
import boto3
from boto3 import resource
from boto3.dynamodb.conditions import Key
dynamodb_resource = resource('dynamodb')
areaCodesTable = dynamodb_resource.Table('USAreaCodes')
RET_ERROR = 999
def lambda_handler(event, context):
phoneNumber = event['Details']['ContactData']['CustomerEndpoint']['Address']
# areaCode = (phoneNumber[0:5])[-3:]
areaCode = (phoneNumber)
response = ''
try:
response = retrieveOutboundDialNumber(areaCode)
except Exception as e:
return {
'statusCode': RET_ERROR,
'OutboundDialNumber':str(e)
}
if response != '' :
if 0 < response['Count'] :
return {
'statusCode': response['ResponseMetadata']['HTTPStatusCode'],
'OutboundDialNumber': response['Items'][0]['OutboundDialNumber']
}
else :
return {
'statusCode': RET_ERROR,
'OutboundDialNumber':response['Count']
}
def retrieveOutboundDialNumber(areaCode):
try:
response = areaCodesTable.query(
KeyConditionExpression=Key('AreaCode').eq(areaCode),
ScanIndexForward=False,
Limit=1
)
except Exception as ex:
raise ex
else :
return response
AWSLambdaBasicExecutionRole-****
に加えてDDBtblSpecificReadAccess
を追加してください。
Lambda 関数のテストイベントを任意のイベント名と以下のJSONにより作成して、テストします。CustomerEndpoint
に設定されている+12345678912
はテストで使用する発信先の電話番号に変更します。
リージョンにかかわらず、090、080、070番号への発信は作成直後の Amazon Connect インスタンスでは許可されていません。03、050、US 番号など、発信先として設定可能な電話番号を準備できない場合は、前項の追加準備手順に従い宛先となる US 電話番号を取得して、テストコール先電話番号として設定してください。
{
"Details": {
"ContactData": {
"CustomerEndpoint": {
"Address": "+12345678912"
}
}
}
}
DynamoDB に登録されている宛先電話番号(AreaCode)に対応した発信元電話番号(OutboundDialNumber)と、statusCode=200 が応答されることを確認します。
Amazon Connect インスタンスの設定において、Contact flows メニュー内の AWS Lambda から、前の手順で作成した Lambda 関数 DDBPhoneNumberSearch を登録します。
Amazon Connect の設定管理画面から、問い合わせフロー画面に移動し、発信ウィスパーフローを作成します。このフローは、適切なキューに割り当てられたエージェントがアウトバウンドコールを発信しようとするたびに呼び出されます。以下に、設定するワークフローを示します。
必要に応じてこちらのファイルをインポートすることで、作業時間を省略できます。インポートした場合はAWS Lambda関数を呼び出すボックスでLambdaを再選択する必要があります。
DynamicOutboundDialer
と設定します。DDBPhoneNumberSearch
を呼び出します。外部
、属性値をstatusCode
として、条件を等しい
/200
として設定します。外部
として属性値をOutboundDialNumber
とします。ユーザー > ユーザー管理から、発信テストに使用するエージェントを作成します。
Basic Routing Profile
を指定してください。Agent
,Admin
を付与してください。ルーティング > キューから、Basic Queue を編集します。
この方法を応用することで、例えばアメリカの顧客にはアメリカの番号で発信し、日本の顧客には日本の電話番号で発信することを、エージェントが意識せず自動で切り替えることが可能になります。