Amazon Web Services 한국 블로그

Amazon Lex의 신규 음성 입력 기능을 통한 Amazon Connect 연동하기

Amazon Connect는 셀프 서비스 클라우드 기반 콜센터 서비스로 저렴한 비용으로 더 나은 고객 서비스를 쉽게 제공있고, Amazon Lex는 음성 및 텍스트를 사용하여 대화식 인터페이스를 구축하는 서비스입니다.

이 두 가지 서비스를 통합하여, Lex 자동 음성 인식(ASR) 및 자연어 처리 및 인식(NLU) 기능을 활용하여, 고객에게 훌륭한 서비스 경험을 제공 할 수 있습니다. 두 가지 통합을 위해 Lex팀은 8kHz 음성 입력을 받을 수 있는 기능을 추가했습니다. 이를 통해 챗봇이 고객 요청의 대부분을 처리할 수 있게 되고, 고객들이 기다리는 시간도 줄일 수 있습니다.

이 글에서는 사용자가 고객 센터에 전화를 하고, Connect를 통해 들어온 음성 입력에 대해 Lex가 처리한 후, 이를 AWS Lambda 함수를 구성하는 코드를 살펴 보겠습니다. 샘플 예제는 ‘개발자들이 좋아하는 코드 편집기’에 대한 질문으로 미국 전화 번호 614-569-4019로 전화하여, 원하는 코드 편집기를 선택할 수 있습니다. (미국 번호라서 전화 비용이 들어갈 수도 있음을 양해 바랍니다.) 투표 결과는 http://best-editor-ever.s3-website-us-east-1.amazonaws.com/ 에서 볼 수 있습니다.


이 샘플 예제에 대해 간단하게 설명해 보겠습니다.

Amazon Lex
우선 Amazon Lex에서 VoteEditor라는 봇을 만들고, 여기에 원하는 코드 편집기를 투표할 수 있는 Slot을 만듭니다.

AWS Lambda

Lambda 함수도 매우 간단합니다. 먼저 투표를 저장하기 위해 Amazon DynamoDB 테이블을 생성합니다. 그런 다음 Lex(build_response)에 응답하는 헬퍼 메소드를 만들 것입니다. 이를 통해 Lex 기반 응답 형식으로 메시지를 감싸게 됩니다.


def lambda_handler(event, context):
    if 'ConnectToAgent' == event['currentIntent']['name']:
        return build_response("Ok, connecting you to an agent.")
    elif 'VoteEditor' == event['currentIntent']['name']:
        editor = event['currentIntent']['slots']['editor']
        resp = ddb.update_item(
            Key={"name": editor.lower()},
            UpdateExpression="SET votes = :incr + if_not_exists(votes, :default)",
            ExpressionAttributeValues={":incr": 1, ":default": 0},
            ReturnValues="ALL_NEW"
        )
        msg = "Awesome, now {} has {} votes!".format(
            resp['Attributes']['name'],
            resp['Attributes']['votes'])
        return build_response(msg)

코드를 잠깐 살펴 보면, 선택한 편집기에 대해 표가 없으면 1로 만들고, 편집기가 있으면 +1을 하는 코드로서   계속 진행하기 전에 Lex 콘솔을 통해 작동하는지 테스트 할 수 있습니다.

Amazon Connect
Amazon Contact Flow에서 Lex 봇을 사용하려면 먼저 Amazon Connect 인스턴스에 접근 권한이 있어야합니다.  콘솔에서 “Contact Flows”로 이동하여,  Lex 섹션에서 봇을 추가 할 수 있습니다.

이제 Amazon Connect 인스턴스가 Lex 봇을 호출 할 수 있게 되었으므로 Lex 봇을 포함하는 새로운 Contact Flow를 만들 수 있습니다. “Interact”카테고리에서 “Get customer input”위젯을 통해 봇을 추가합니다.

위젯을 사용하면 전화기의 숫자 키 또는 “Amazon Lex”탭에서 voiceinput을 가져 와서 Lex 서비스로 전달하기위한 “DTMF”탭을 사용할 수 있습니다. Lex 탭을 사용하여 몇 가지 구성을 사용합니다.

많은 옵션이 있지만, 사용하고자하는 봇 (봇의 버전 포함),  사용하려는 멘토,  소개글 등을 추가합니다. 최종 고객 요청 처리 흐름은 아래와 같습니다.

실생활에서 이러한 서비스 조합은 많은 부분을 구현할 수 있습니다. 실제 고객 상담원과 대화를 하기 전에, 사용자의 정보를 수집하고 대화에 필요한 정보를 수집할 수도 있습니다. Amazon Lex의 8KHz 음성 입력 기능을 통해서 좀 더 유연한 고객의 정보를 입력 받을 수 있다는 점은 매우 중요합니다.

마지막으로, Amazon Connect는 외부 개발자로 사용할 수 있는 것과 동일한 PostContent 엔드 포인트를 사용하므로 Lex에서 8kHz 기능을 활용하려면 Amazon Connect 사용자 일 필요는 없습니다.

좀 더 세부 사항은 기술 문서API 참조 문서를 살펴 보시기 바랍니다.

Randall

이 글은 New – Amazon Connect and Amazon Lex Integration 의 한국어 번역 편집본입니다.