WiseN

Amazon Connect 기반 컨택센터 통계 대시보드 구현 및 SSO 연동

Nov 08, 2022   |   AWS

작성자_최성우 (Seongwoo Choi)

페이스북 공유하기 트위터 공유하기
Blog thumbnail

Amazon Connect는 사용하기 쉬운 옴니 채널 기반의 클라우드 컨택센터 서비스이며, 큰 규모의 비즈니스로 쉽게 확장 가능합니다. 고객 데이터 및 상담사(에이전트)의 고객 상담 데이터의 수집과 활용이 손쉬워 시스템 운영 및 상담 업무 운영 두 가지 측면에서 동시에 이점을 가져갈 수 있는 서비스입니다. 이번 포스팅에서는 Amazon Connect와 연계하여 컨택센터의 통계 대시보드를 구현하고, AWS IAM Identity Center를 통해 싱글 사인온으로 Amazon Connect 콘솔에 접근할 수 있는 방안을 제공합니다.​ 

 

  

Amazon Connect는 connect instance 콘솔에서 아래와 같이 데이터 스트리밍 기능을 제공하고 있습니다.

 

 

연락처 추적 레코드(CTR)는 Amazon Kinesis Data Firehose 혹은 Kinesis Data Stream, 상담원 이벤트(agent event)는 Amazon Kinesis Data Stream을 통해 스트리밍할 수 있게 제공하고 있습니다.

- CTR logs : 통화 개수, CTR(날짜별), 평균 통화 유지 시간 등을 로깅

- Agent logs : 평균 ACW(After Call Work), 상담원 수, 상담원 상태 등을 로깅

 


 

CTR을 위한 Kinesis Data Firehose에서 위와 같이 OpenSearch(ElasticSearch) Service를 대상으로 지정할 수 있으며, 특정 인덱스 prefix를 대상으로 레코드가 drop되도록 할 수 있습니다. 또한 Index rotation 주기 설정을 통해 작은 샤드가 과하지 않게 생성되도록 설정이 가능합니다.

 


 

OpenSearch에 적절한 레코드를 삽입할 수 있도록 위와 같은 IAM Policy를 Kinesis Access IAM Role에 연결합니다. 해당 Role은 Agent event를 위한 IAM Role로도 동시에 활용됩니다.

 

Agent event는 Kinesis Data Stream으로만 스트림이 가능한데, Kinesis Data Stream의 경우 OpenSearch로 바로 인덱스를 삽입할 수 없기 때문에, Kinesis Data Stream 생성 이후 Kinesis Data Fiehose를 추가로 생성하여 연결해 주어야 합니다. Kinesis Data Firehose의 소스를 Kinesis Data Streams로 지정함으로써 둘 간의 연결이 가능합니다. CTR log를 구현한 것과 같이 식별 가능한 인덱스와 rotation 주기를 설정합니다.

 

CTR logs와 Agent logs만으로도 충분히 유용한 월간 통계 대시보드 구성이 가능합니다. 여기에 더하여, 컨택센터 관리자는 현재 콜 대기열(Call Queue)가 얼마나 쌓여 있는지, 현재 대기열에서 실시간으로 대기 중인 통화 수를 확인하고 싶어 할 수 있습니다. Amazon EventBridge는 AWS 서비스 내에서 발생한 이벤트를 캡처하여 특정 작업을 수행할 수 있도록 할 수 있으며, Amazon Connect의 콜 발생 이벤트 또한 AWS 서비스 이벤트로 분류됩니다. 콜이 발생했다는 이벤트인 Contact events 규칙에 매치될 경우 Lambda 함수를 실행할 수 있게 됩니다. Lambda는 기존에 존재하는 OpenSearch Index를 삭제하고, 현재 대기열에 남아 있는 콜 수로 갱신하는 로직을 작동합니다. 이때, Amazon Connect API 중 get_current_metric_data 를 호출하여 실시간 메트릭을 받아올 수 있습니다. 결괏값은 Connect Console에서 확인 가능한 대기열 내 통화 수(CONTACTS_IN_QUEUE)와 예약된 통화 수(CONTACTS_SCHEDULED)를 더한 값인 실시간 메트릭 값과 동일한 값을 반환합니다.

 


 

대시보드는 OpenSearch 및 Kibana(OpenSearch Dashboard)를 통해 구현합니다. 대시보드의 각 지표들은 다음과 같은 정보를 담고 있습니다.

- Number of Call : Unique한 ContactID를 카운트합니다.

- CTRs(Contact Trace Records) : Unique한 ContactID를 Daily Timestamp(일간)에 따라 막대그래프로 시각화합니다.

- Average ACW(After Contact Work) : 통화 작업 후 평균 시간을 명시합니다. (발신 연락처 제외)

- Calls per Day : Unique한 ContactID를  Daily Timestamp(일간)에 따라 테이블 형식으로 시각화합니다.

- Average Call Duration(Agent Interaction Duration) : 평균 에이전트 상호 작용 시간을 카운트합니다. (발신 연락처 제외)

- Number of Agent : 지정한 기간 중 에이전트 수를 명시합니다. (Connect 콘솔 내 Historical - Agent 열 개수)

- Number of Call in Queue : Connect 콘솔 내 Realtime Metric의 In Queue + Scheduled 통화 수를 명시합니다.​ 

 

다음은 Amazon Connect와 AWS IAM Identity Center를 연동하는 실습입니다.

 

 

 

 

AWS IAM Identity Center(SSO)에서 Connect 애플리케이션을 생성 후 metadata file(xml)을 다운로드합니다. 




애플리케이션을 생성하기 위한 값 중 Relay state는 SSO 콘솔(https://sso-name.awsapps.com/start)에서 앱을 클릭했을 때 연결되는 목적지 url을 명시합니다. Amazon Connect instance를 가리키도록 https://region-id.console.aws.amazon.com/connect/federate/instance-id 와 같이 설정합니다.





AWS IAM 콘솔에 진입하여 좌측 Identity proviers 탭을 클릭하여 SAML을 이용하여 IDP(Identity provier)를 생성합니다. 생성 시 SSO 콘솔에서 다운로드받은 metadata file을 선택하여 업로드합니다. 생성 이후 IDP의 ARN을 메모합니다. 이 값은 이후 IAM Identity Center에서 속성값으로 사용됩니다. IDP 이름은 예시로 Connect-SSO로 명시하였습니다.



다음으로는 AWS IAM 콘솔에서 좌측 IAM Policy를 선택하여 정책을 생성합니다. 위 코드와 같이 권한을 입력하면 되며, 빨간색으로 명시한 부분은 Connect instance의 ARN이 삽입되는 부분입니다. IAM Policy 이름은 예시로 Connect-SSO-Policy로 명시하였습니다. 보안 주체가 연동 사용자이기 때문에 ${aws:userID} 정책 변수를 사용하여 리소스를 명시합니다.



IAM Policy 생성 이후, SAML 2.0 federation을 위한 IAM Role을 생성합니다. IAM Role 생성 클릭 후 SAML 2.0 federation을 선택하고 이전에 만든 SAML IDP를 선택합니다. 프로그래밍 및 콘솔 access를 모두 허용하며, 이전에 만든 IAM Policy(Connect-SSO-Policy)를 선택하여 정책을 연결시켜 줍니다. IAM Role 생성 이후 ARN을 메모합니다. 이 값 역시 IAM Identity Center에서 속성값으로 사용됩니다.



IAM 리소스 생성 작업이 모두 완료되면, AWS IAM Identity Center 콘솔로 접속합니다. 생성한 Connect 애플리케이션을 선택하고 [Edit Attribute Mappings] 항목을 클릭합니다. 아래 값들을 Attribute에 추가합니다. 이때 Subject는 기본 입력값입니다. Role Attribute 맵핑 시 IAM Role과 IAM IDP를 쉼표로 구분하여 나열합니다.
- Subject / ${user:email} / persistent
- https://aws.amazon.com/SAML/Attributes/RoleSessionName / ${user:email} / unspecified
- https://aws.amazon.com/SAML/Attributes/Role  / arn:aws:iam::{account-number}:role/Connect-SSO-Role,arn:aws:iam::{account-number}:saml-provider/Connect-SSO / unspecified

모든 작업이 끝난 이후, Amazon Connect 인스턴스 콘솔에서 IAM Identity Center에서 생성한 사용자 이름과 동일한 이름의 상담원(Agent)를 생성하면 싱글사인온 기반으로 Amazon Connnect 콘솔에 접속할 수 있게 됩니다. ​

 

Amazon Connect로 컨택센터를 운용하며 일어나는 이벤트와 지표를 모두 취합하기 위해 Kinesis Services를 통해 월간 대시보드를 구현하였으며, Amazon EventBridge를 통해 실시간 대기열 수를 구현하는 솔루션을 공유하였습니다. 더하여 AWS IAM Identity Center와 연동함으로써 싱글 사인온 기반으로 효과적으로 접근제어하는 방식을 공유하였습니다. Amazon Connect는 원클릭만으로 쉽게 컨택센터를 구축할 수 있는 강력한 솔루션입니다. 고객과의 상담 데이터를 실시간&배치 기반으로 분석하여 향상된 고객 경험(CX)를 제공할 수 있으며, 더 나아가서 모든 고객 경험을 개인화하고 맥락화할 수 있을 것으로 기대합니다.