Amazon Connectコンタクトセンターのエージェントが特定の電話番号に発信できないようにするにはどうすればよいですか?

最終更新日:2021-12-16

Amazon Connect コンタクトセンターのエージェントが特定の国や割増料金の電話番号に電話をかけないようにしたいです。このような電話を防ぐにはどうすればよいですか?

簡単な説明

アウトバウンドウィスパーフローの問い合わせフローで、ダイヤルされた電話番号が許可されているかどうかを確認する AWS Lambda 関数を呼び出します。電話番号が許可されていない場合は、Amazon Connect StopContact API を使用して問い合わせを停止してください。

注:この記事のソリューションには、次の制限があります:

  • キューに入れられたコールバックをブロックすることはできません。エージェントがコールバックを開始すると、アウトバウンドウィスパーフローを通過したコンタクト ID は実際のコンタクト ID ではありません。
  • Lambda関数の呼び出しに失敗した場合,呼び出しをブロックすることはできません。関数が失敗した場合、問い合わせは問い合わせフローのエラーブランチに続き、コールは停止されません。
  • これは基本的な例です。稼働環境では、ユースケースとエージェントのダイヤル許可に合わせてセットアップをカスタマイズします。

解決方法

Lambda 関数の作成

1.    任意のランタイムを使用して、Lambda 関数を作成します。以下について、Amazon Connect からの着信 JSON リクエストをチェックする関数ロジックを含めます。

  • エージェントユーザー名 ("Attributes" で)
  • 現在の問い合わせ ID ("ContactId")
  • ダイヤルされた電話番号 ("CustomerEndpoint" で)
  • 最初の問い合わせ ID ("InitialContactId")
  • コンタクトセンターの Amazon リソースネーム (ARN) (「instanCearn」)

詳細については、使用可能な連絡先属性のリストとその JSONPath リファレンスを参照してください。Lambda 関数に対する JSON リクエストの例については、問い合わせフローから Lambda 関数を呼び出すを参照してください。

ヒント: ユースケースに応じて、関数コードに特定のロジックを追加します。たとえば、エージェントのダイヤル許可の内部データベースに対して問い合わせ属性を確認できます。詳細については、Lambda 関数と属性を参照してください。

2.    関数には、Amazon Connect StopContact APIへの呼び出しも含まれていることを確認してください。API 呼び出しで、停止する問い合わせの「ContactId」と「InstanceId」を指定します。

重要:StopContact API を呼び出すための十分なアクセス許可を持つ関数の実行ロール に AWS Identity and Access Management (IAM) ポリシーをアタッチする必要があります。次の JSON ポリシードキュメントの例には、API を呼び出すための基本的な許可が含まれています:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "StopContactPermission",
            "Effect": "Allow",
            "Action": "connect:StopContact",
            "Resource": "*"
        }
    ]
}

Python (Boto3) 関数コードの例

注: このコード例には、ブロックする番号を識別する条件が含まれています。その番号がリクエストされたコールバック番号である場合、関数は API エラーとパススルーを処理します。

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0

import boto3
from botocore.exceptions import ClientError
connect = boto3.client('connect')

def lambda_handler(event, context):
    response = {
            'phoneNumberBlockerMessage': 'Passing through AmazonConnectPhoneNumberBlocker. No contact is blocked.'
    }

    try:
            if event['Details']['ContactData']['CustomerEndpoint']['Address'] == '<telephone-number-condition>':
                # Stop contact here

                connect.stop_contact(
                    ContactId = event['Details']['ContactData']['InitialContactId'],
                    InstanceId = event['Details']['ContactData']['InstanceARN'].split('/')[1]
                )
                response = {
                    'phoneNumberBlockerMessage': 'Call is blocked.'
                }
    except ClientError as e:
            if e.response['Error']['Code'] == 'ContactNotFoundException':
                response = {
                    'phoneNumberBlockerMessage': 'This is either a callback contact or contact ID does not exist, contact pass through.'
                }
            else:
                # Handle other error
                pass
    return response

Lambda 関数をインスタンスに追加する

アウトバウンドウィスパ問い合わせーフローを作成する

重要: 問い合わせフローを作成するには、セキュリティプロファイルに十分な許可を持つユーザーとして Amazon Connect インスタンスにログインする必要があります。

1.    アクセス URL (https://alias.my.connect.aws/connect/login -または- https://alias.awsapps.com/connect/login) を使用して Amazon Connect インスタンスにログインします。
重要: aliasインスタンスのエイリアスに置き換えます。

2.    ナビゲーションペインで、ルーティングにカーソルを合わせ、問い合わせフローを選択します。

3.    問い合わせフロー ページで、[問い合わせフローの作成] の横にある矢印アイコンを選択し、アウトバウンドウィスパーフローの作成 をクリックします。

4.    問い合わせフローデザイナーの 名前の入力で、問い合わせフローの名前を入力します。(例: アウトバウンドウィスパー (停止))。

5.    [保存] を選択します。

詳細については、「新しい問い合わせフローの作成」を参照してください。

問い合わせ属性の設定ブロックを追加する

このブロックを設定して、Lambda に送信して解析するエージェントのユーザー名を取得します。

1.    問い合わせフローデザイナーで、[Set] (設定) を展開します。

2.    問い合わせ属性の設定ブロックをキャンバスにドラッグアンドドロップします。

3.    ブロックのタイトルを選択します (問い合わせ属性の設定)。ブロックの設定メニューが開きます。

4.    [保存する属性] で、[属性の使用] を選択します。次に、以下を実行します:
[宛先キー] には、キー名を入力します。たとえば、agent_username です。
[タイプ] では、[エージェント] を選択します。
[属性] では、[ユーザー名] を選択します。

5.    [保存] を選択します。

AWS Lambda 関数の呼び出しブロックを追加する

1.    問い合わせフローデザイナーで、[統合] を展開します。

2.    [AWS Lambda 関数の呼び出し] ブロックをキャンバスにドラッグアンドドロップします。

3.    ブロックのタイトルを選択します (AWS Lambda 関数の呼び出し)。ブロックの設定メニューが開きます。

4.    [関数 ARN] で、[関数の選択] を選択します。次に、インスタンスに追加した Lambda 関数を選択します。

5.    (オプション) [タイムアウト (最大 8 秒)] に、Amazon Connect がタイムアウトする前に Lambda からの応答の取得を待機する秒数を入力します。

6.    [保存] を選択します。

詳細については、「問い合わせフローから Lambda 関数を呼び出す」を参照してください。

アウトバウンドウィスパーフローを終了する

1.    ユースケースに合わせて、必要に応じてアウトバウンドウィスパーフローに問い合わせブロックを追加して接続します。
注: ユースケースの例については、問い合わせフローのサンプルを参照してください。

2.    問い合わせフローのすべてのコネクタをブロックに接続します。[問い合わせ属性の設定] ブロックの [成功] ノードを [AWS Lambda 関数の呼び出し] ブロックに必ず接続してください。少なくとも次のブロックを使用する必要があります:
[エントリポイント] > [問い合わせ属性の設定] > [AWS Lambda 関数の呼び出し] > [フローの終了/再開]

3.    [Save] (保存) を選択して、問い合わせフローのドラフトを保存します。

4.    [Publish] (発行) を選択して、問い合わせフローをアクティブにします。

アウトバウンドウィスパーフローでキューを設定する

エージェントが割り当てられているルーティングプロファイルで、デフォルトのアウトバウンドキューを特定します。詳細については、「ルーティングプロファイルの作成」を参照してください。

キューを編集するには、次の操作を行います:

1.    Amazon Connect インスタンスのの左側のナビゲーションペインで、[ルーティング] にマウスを合わせ、[キュー] をクリックします。

2.    [キュー] ページで、デフォルトのアウトバウンドキューとして識別したキューの名前をクリックします。

3.    [キューの編集] ページで、[アウトバウンドウィスパーフロー (オプション)] メニューから作成したアウトバウンドウィスパーフローを選択します。

4.    [保存] を選択します。