상담원이 실시간으로 번호에 플래그를 지정할 수 있도록 Amazon Connect 콜 센터에서 거부 목록을 설정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 5월 24일

Amazon Connect 콜 센터의 상담원이 실시간으로 거부 목록에 번호를 추가하려고 합니다. 또한 수동으로 목록에 숫자를 추가할 수 있기를 원합니다. 어떻게 설정해야 합니까?

간략한 설명

Amazon Connect 콜 센터의 상담원이 실시간으로 거부 목록에 번호를 추가할 수 있도록 하려면 다음을 수행합니다.

참고: DynamoDB 테이블을 직접 편집하여 거부 목록에 번호를 수동으로 추가할 수도 있습니다.

해결 방법

중요: Amazon Connect 인스턴스가 있는 리전과 동일한 AWS 리전에서 다음 단계를 수행해야 합니다.

거부된 번호를 보관하는 DynamoDB 테이블 생성

1.    DynamoDB 콘솔을 엽니다.

2.    [DynamoDB 테이블 생성(Create DynamoDB table)]을 선택합니다. 이어서, 다음 작업을 수행합니다.
[테이블 이름(Table name)]에 DenylistingTable을 입력합니다.
[파티션 키(Partition key)] 패널에서 [기본 키(Primary key)]에 ContactNumber를 입력합니다.
[데이터 유형(Data type)]에서 [문자열(String)]을 선택합니다.
[생성(Create)]을 선택합니다.

참고: 자세한 내용은 콘솔 또는 AWS CLI를 사용하여 테이블에 데이터 쓰기를 참조하세요.

Lambda 함수가 DynamoDB에서 거부된 번호를 조회하거나 추가하도록 허용하는 IAM 역할을 생성합니다.

1.    다음 JSON 정책을 사용하는 IAM 역할 생성:

중요: DynamoDB 권한과 함께 정책에 AWSLambdaBasicExecutionRole이 포함되어 있는지 확인합니다. AWS AWSLambdaBasicExecutionRole이 정책에 포함되어 있지 않으면 함수가 호출되지 않습니다.

Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "cloudwatch:GetInsightRuleReport",
            "Resource": "arn:aws:cloudwatch:*:*:insight-rule/DynamoDBContributorInsights*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "iam:PassedToService": [
                        "application-autoscaling.amazonaws.com",
                        "application-autoscaling.amazonaws.com.cn",
                        "dax.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": [
                        "replication.dynamodb.amazonaws.com",
                        "dax.amazonaws.com",
                        "dynamodb.application-autoscaling.amazonaws.com",
                        "contributorinsights.dynamodb.amazonaws.com",
                        "kinesisreplication.dynamodb.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "cloudwatch:DeleteAlarms",
                "sns:Unsubscribe",
                "dynamodb:*",
                "lambda:GetFunctionConfiguration",
                "datapipeline:CreatePipeline",
                "kinesis:ListStreams",
                "logs:CreateLogStream",
                "kinesis:DescribeStreamSummary",
                "resource-groups:GetGroup",
                "cloudwatch:DescribeAlarmsForMetric",
                "lambda:DeleteFunction",
                "sns:Subscribe",
                "iam:GetRole",
                "application-autoscaling:RegisterScalableTarget",
                "sns:ListSubscriptionsByTopic",
                "datapipeline:ListPipelines",
                "dax:*",
                "lambda:ListFunctions",
                "sns:CreateTopic",
                "application-autoscaling:DeleteScalingPolicy",
                "cloudwatch:GetMetricStatistics",
                "logs:CreateLogGroup",
                "resource-groups:CreateGroup",
                "application-autoscaling:DescribeScalingPolicies",
                "lambda:ListEventSourceMappings",
                "application-autoscaling:PutScalingPolicy",
                "cloudwatch:DescribeAlarms",
                "resource-groups:ListGroupResources",
                "ec2:DescribeSubnets",
                "lambda:DeleteEventSourceMapping",
                "datapipeline:ActivatePipeline",
                "resource-groups:GetGroupQuery",
                "tag:GetResources",
                "sns:DeleteTopic",
                "cloudwatch:GetMetricData",
                "sns:ListTopics",
                "sns:SetTopicAttributes",
                "lambda:CreateEventSourceMapping",
                "datapipeline:DescribePipelines",
                "cloudwatch:ListMetrics",
                "cloudwatch:DescribeAlarmHistory",
                "application-autoscaling:DescribeScalingActivities",
                "kms:DescribeKey",
                "datapipeline:PutPipelineDefinition",
                "application-autoscaling:DescribeScalableTargets",
                "datapipeline:QueryObjects",
                "iam:ListRoles",
                "datapipeline:DescribeObjects",
                "kinesis:DescribeStream",
                "sns:ListSubscriptions",
                "resource-groups:ListGroups",
                "datapipeline:GetPipelineDefinition",
                "logs:PutLogEvents",
                "ec2:DescribeSecurityGroups",
                "resource-groups:DeleteGroup",
                "cloudwatch:PutMetricAlarm",
                "ec2:DescribeVpcs",
                "kms:ListAliases",
                "datapipeline:DeletePipeline",
                "application-autoscaling:DeregisterScalableTarget"
            ],
            "Resource": "*"
        }
    ]
}
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:*",
                "dynamodb:*"
            ],
            "Resource": "*"
        }
    ]
}

DynamoDB 테이블에 거부된 번호를 저장하는 Lambda 함수(함수 A)를 생성합니다.

다음 Python 코드를 사용하여 Lambda 함수를 생성하고 이전에 생성된 역할 연결:

Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

import json
import boto3 

client = boto3.client('dynamodb')

def lambda_handler(event, context):
    response = client.put_item(
    TableName='DenylistingTable',
    Item={
        'ContactNumber':{
            'S':event['Details']['ContactData']['CustomerEndpoint']['Address']
        }
    }
    )
    
    return{'Success':True}

DynamoDB 테이블을 쿼리하는 두 번째 Lambda 함수(함수 B)를 생성하여 수신 호출이 거부 목록의 번호인지 확인합니다.

다음 Python 코드를 사용하여 두 번째 Lambda 함수를 생성하고 이전에 생성된 역할 연결:

Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

import json
import boto3 

client = boto3.client('dynamodb')

def lambda_handler(event, context):
    
    response = client.query(
        TableName="DenylistingTable",
        Select= 'ALL_ATTRIBUTES',
        KeyConditionExpression='ContactNumber = :ConNum',
        ExpressionAttributeValues={":ConNum":{
            "S": event['Details']['ContactData']['CustomerEndpoint']['Address']
        }}
        )
    if (len(response['Items']) == 0):
        return {'Success':'false'}
    else:
        return {'Success':'true'}

Amazon Connect 인스턴스에 Lambda 함수(함수 A 및 함수 B) 추가

1.    Amazon Connect 콘솔을 엽니다.

2.    [인스턴스 별칭(Instance Alias)] 열에서 Amazon Connect 인스턴스의 이름을 선택합니다.

3.    왼쪽 탐색 창에서 [고객 응대 흐름(Contact flows)]을 선택합니다.

4.    [AWS Lambda] 섹션에서 [함수(Function)] 드롭다운 목록을 클릭합니다. 그런 다음 함수 A의 이름을 선택합니다.
참고: [함수(Function)] 드롭다운 목록에는 Amazon Connect 인스턴스와 동일한 AWS 리전에 있는 함수의 이름만 나열됩니다. 함수가 나열되어 있지 않으면 올바른 리전에서 [새 Lambda 함수 생성(Create a new Lambda function)]을 선택하여 새 함수를 생성합니다.

5.    [Lambda 함수 추가(Add Lambda Function)]를 선택합니다. 그런 다음 함수의 Amazon 리소스 이름(ARN)이 Lambda 함수에 추가되어 있는지 확인합니다.

6.    1~5단계를 반복하여 Amazon Connect 인스턴스에 함수 B를 추가합니다. 4단계에서 함수 B의 이름을 선택해야 합니다.

자세한 내용은 AWS Lambda 함수 호출을 참조하세요.

인바운드 고객 응대 흐름 생성

요청된 번호와 연관된 새 인바운드 고객 응대 흐름을 생성합니다. [고객 응대 흐름 생성(Create contact flow)]을 선택하면 고객 응대 흐름 디자이너가 열립니다.

고객 응대 흐름 디자이너에서 다음을 수행합니다.

참고: 다음은 기본 인바운드 고객 응대 흐름의 예입니다. 사용 사례에 대한 블록을 추가하거나 편집할 수 있습니다.

로깅 동작 설정 블록 추가

중요: 아직 켜지 않은 경우 인스턴스에 대한 고객 응대 흐름 로깅을 켭니다.

Amazon Connect CloudWatch Logs에서 고객 응대 흐름 로그를 켜려면 로깅 동작 설정 블록을 사용합니다.

1.    [설정(Set)]을 선택합니다.

2.    [로깅 동작 설정(Set logging behavior)] 블록을 [진입점(Entry point)] 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다.

3.    블록 제목(로깅 동작 설정)을 선택합니다. 블록의 설정 메뉴가 열립니다.

4.    [활성화(Enable)]를 선택합니다.

AWS Lambda 함수 호출 블록 추가

함수 B를 호출하고 수신 호출이 거부 목록의 번호인지 확인하려면 AWS Lambda 함수 호출 블록을 사용합니다.

1.    [통합(Integrate)]을 선택합니다.

2.    [AWS Lambda 함수 호출(Invoke AWS Lambda function)] 블록을 [로깅 동작 설정(Set logging behavior)] 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다.

3.    블록 제목(Invoke AWS Lambda function)을 선택합니다. 블록의 설정 메뉴가 열립니다.

4.    함수 B의 이름을 선택합니다.

5.    [저장(Save)]을 선택합니다.

통화 속성 확인 블록 추가

번호가 거부 목록에 추가되었는지 여부를 확인하려면 고객 응대 속성 확인 블록을 사용합니다.

1.    [분기(Branch)]를 선택합니다.

2.    [고객 응대 속성 확인(Check contact attributes)] 블록을 [AWS Lambda 함수 호출(Invoke AWS Lambda function)] 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다.

3.    블록 제목(고객 응대 속성 확인)을 선택합니다. 블록의 설정 메뉴가 열립니다.

4.    [유형(Type)]에서 [외부(External)]를 선택합니다.

5.    [속성(Attribute)]에 대해 [성공(Success)]을 선택합니다.

6.    두 개의 파라미터가 작성되도록 [다른 파라미터 추가(Add another Parameter)]를 두 번 선택합니다.

7.    [확인할 조건(Conditions to check)]에서 두 파라미터 모두에 대해 [같음(Equals)]을 선택합니다. 그런 다음 첫 번째 파라미터의 값에 true를 입력합니다. 두 번째 파라미터의 값에 false를 입력합니다.

8.    [저장(Save)]을 선택합니다.

프롬프트 재생 블록 추가

거부 목록 요청 오류가 발생할 때 상담원에게 알리는 프롬프트를 재생하려면 프롬프트 재생 블록을 사용합니다.

1. [상호 작용(Interact)]을 선택합니다.

2.    [프롬프트 재생(Play prompt)] 블록을 [AWS Lambda 함수 호출(Invoke AWS Lambda function)] 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다. 그런 다음 프롬프트 재생 블록을 AWS Lambda 호출 함수 블록의 오류 출력에 연결합니다.

3.    블록 제목(프롬프트 재생)을 선택합니다. 블록의 설정 메뉴가 열립니다.

4.    [프롬프트(Prompts)]에서 [텍스트 음성 변환(Text-to-speech)]을 선택합니다. 그리고 다음 중 하나를 선택합니다.
[텍스트 입력(Enter text)]을 선택하면 실제와 같은 오디오 메시지로 텍스트를 재생할 수 있습니다.
-또는-
[동적으로 입력(Enter dynamically)]을 선택하면 .wav 파일을 업로드하여 녹음된 오디오 메시지를 재생할 수 있습니다.

5.    [저장(Save)]을 선택합니다.

대기열로 전송 블록 추가

고객 응대 흐름을 종료하고 통화를 일반 고객 대기열 흐름으로 전달하려면 대기열로 전송 블록을 사용합니다.

1.    [종료/전달(Terminate/Transfer)]을 선택합니다.

2.    대기열로 전송 블록을 프롬프트 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다.

참고: 이 사용 사례의 경우 대기열로 전송 블록에 대해 구성할 설정이 없습니다.

연결 해제 블록 추가

수신 전화가 거부 목록에 있는 번호에서 오는 경우 고객 응대 흐름에서 발신자 연결을 해제하려면 연결 해제 블록을 추가합니다.

1.    [종료/전달(Terminate/Transfer)]을 선택합니다.

2.    연결 해제 블록을 대기열로 전송 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다.

참고: 이 사용 사례의 경우 연결 해제 블록에 대해 구성할 설정이 없습니다.

고객 응대 흐름 활성화

1.    흐름의 초안을 저장하려면 [저장(Save)]을 선택합니다.

2.    흐름을 활성화하려면 [게시(Publish)]를 선택합니다.

상담원이 실시간으로 거부 목록에 번호를 추가할 수 있는 대기열로 전송 흐름 생성

새 대기열로 전송 흐름을 생성합니다. [고객 응대 흐름 생성(Create contact flow)]을 선택하면 고객 응대 흐름 디자이너가 열립니다.

고객 응대 흐름 디자이너에서 다음을 수행합니다.

프롬프트 재생 블록 추가

상담원에게 번호가 거부 목록에 추가되고 있음을 알리려면 프롬프트 재생 블록을 사용합니다.

1.    [상호 작용(Interact)]을 선택합니다.

2.    프롬프트 재생 블록을 진입점 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다.

3.    블록 제목(프롬프트 재생)을 선택합니다. 블록의 설정 메뉴가 열립니다.

4.    [프롬프트(Prompts)]에서 [텍스트 음성 변환(Text-to-speech)]을 선택합니다. 그런 다음 [텍스트 입력(Enter text)] 또는 [동적으로 입력(Enter dynamically)]을 선택하여 오디오 메시지를 만듭니다.

5.    [저장(Save)]을 선택합니다.

AWS Lambda 함수 호출 블록 추가

상담원이 CCP를 사용하여 거부 목록에 번호를 추가할 때 함수 A를 호출하려면 AWS Lambda 함수 호출 블록을 사용합니다.

1.    [통합(Integrate)]을 선택합니다.

2.    AWS Lambda 함수 호출 블록을 프롬프트 재생 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다.

3.    블록 제목(Invoke AWS Lambda function)을 선택합니다. 블록의 설정 메뉴가 열립니다.

4.    함수 A의 이름을 선택합니다.

5.    [함수 입력 파라미터(Function input parameters)] 섹션에서 [파라미터 추가(Add a parameter)]를 선택하고 [속성 사용(Use attribute)]을 선택합니다. 그리고 다음을 수행합니다. [대상 키(Destination key)]에서 CustomerNumber를 입력합니다. [유형(Type)]에서 [시스템(System)]을 선택합니다. [속성(Attribute)]에서 [고객 번호(Customer Number)]를 선택합니다.

6.    [저장(Save)]을 선택합니다.

두 번째 프롬프트 재생 블록 추가

상담원에게 거부 목록에 번호가 추가되었음을 알리려면 두 번째 프롬프트 재생 블록을 사용합니다.

1.    [상호 작용(Interact)]을 선택합니다.

2.    [프롬프트 재생(Play prompt)] 블록을 [AWS Lambda 함수 호출(Invoke AWS Lambda function)] 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다. 그런 다음 프롬프트 재생 블록을 AWS Lambda 호출 함수 블록의 성공 출력에 연결합니다.

3.    블록 제목(프롬프트 재생)을 선택합니다. 블록의 설정 메뉴가 열립니다.

4.    [프롬프트(Prompts)]에서 [텍스트 음성 변환(Text-to-speech)]을 선택합니다. 그런 다음 [텍스트 입력(Enter text)] 또는 [동적으로 입력(Enter dynamically)]을 선택하여 오디오 메시지를 만듭니다.

5.    [저장(Save)]을 선택합니다.

세 번째 프롬프트 재생 블록 추가

상담원에게 오류로 인해 거부 목록에 번호가 추가되지 않았음을 알리려면 세 번째 프롬프트 재생 블록을 사용합니다.

1.    [상호 작용(Interact)]을 선택합니다.

2.    [프롬프트 재생(Play prompt)] 블록을 [AWS Lambda 함수 호출(Invoke AWS Lambda function)] 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다. 그런 다음 프롬프트 재생 블록을 AWS Lambda 호출 함수 블록의 오류 출력에 연결합니다.

3.    블록 제목(프롬프트 재생)을 선택합니다. 블록의 설정 메뉴가 열립니다.

4.    [프롬프트(Prompts)]에서 [텍스트 음성 변환(Text-to-speech)]을 선택합니다. 그런 다음 [텍스트 입력(Enter text)] 또는 [동적으로 입력(Enter dynamically)]을 선택하여 오디오 메시지를 만듭니다.

5.    [저장(Save)]을 선택합니다.

연결 해제 블록 추가

고객 응대 흐름에서 상담원 연결을 해제하려면 연결 해제 블록을 추가합니다.

1.    [종료/전달(Terminate/Transfer)]을 선택합니다.

2.    연결 해제 블록을 프롬프트 재생 블록의 오른쪽에 있는 캔버스로 끌어 놓습니다.

3.    모든 흐름의 분기를 연결 해제 블록에 연결합니다.

참고: 이 사용 사례의 경우 연결 해제 블록에 대해 구성할 설정이 없습니다.

대기열로 전송 흐름 활성화

1.    흐름의 초안을 저장하려면 [저장(Save)]을 선택합니다.

2.    흐름을 활성화하려면 [게시(Publish)]를 선택합니다.

상담원이 CCP를 사용하여 거부 목록에 번호를 추가할 수 있는 빠른 연결을 생성합니다.

1.    다음 설정이 있는 Amazon Connect 콘솔을 사용하여 빠른 연결을 생성합니다.
[이름(Name)]에 빠른 연결의 이름을 입력합니다. 예: 거부 목록.
[유형(Type)]에서 [대기열(Queue)]을 선택합니다.
[대상(Destination)]에서 거부 목록 기능을 사용할 대기열의 이름을 입력합니다.

2.    거부 목록 기능에 액세스할 상담원에 할당된 대기열에 빠른 연결을 추가합니다.

이제 상담원이 통화 중일 때 CCP에서 거부 목록 빠른 연결을 사용하여 거부 목록에 번호를 추가할 수 있습니다. 다음에 해당 번호로 Amazon Connect 콜 센터로 전화가 오면 대기열에 배치되지 않고 통화 연결이 자동으로 끊어집니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?