

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Lex V2에서 봇 성능 모니터링
<a name="monitoring-bot-performance"></a>

모니터링은 Amazon Lex V2 챗봇의 안정성, 가용성 및 성능을 유지하는 데 중요합니다. 이 주제에서는 대화 로그를 사용하여 사용자와 챗봇 간의 대화를 모니터링하고, 발화 통계를 사용하여 봇이 감지하고 놓치는 발화와 Amazon CloudWatch Logs 및를 사용하여 Amazon Lex V2 AWS CloudTrail 를 모니터링하는 방법을 설명합니다. 또한 Amazon Lex V2 런타임 및 채널 연결 지표에 대해서도 설명합니다.

이러한 도구와 지표를 사용하여 봇의 성능을 개선하기 위해 취할 수 있는 지침과 조치를 알아봅니다.

**Topics**
+ [Analytics를 통한 비즈니스 성과 측정](analytics.md)
+ [Lex V2 봇에 대한 대화 로그 활성화](enabling-logs.md)
+ [Lex V2의 오류 로그로 오류 로깅](error-logs.md)
+ [Lex V2의 운영 지표 모니터링](monitoring-operational-metrics.md)
+ [Test Workbench를 통한 Lex V2 봇 성능 평가](test-workbench.md)

# Analytics를 통한 비즈니스 성과 측정
<a name="analytics"></a>

Analytics를 사용하면 봇과 고객 상호 작용의 성공률 및 실패율과 관련된 지표로 봇의 성능을 평가할 수 있습니다. 또한 봇과 고객 간의 대화 흐름 패턴을 시각화할 수 있습니다. Analytics는 이러한 지표를 그래프와 차트로 요약하여 환경을 간소화합니다. Analytics는 결과를 필터링하여 의도, 슬롯, 발화 및 대화와 관련된 이슈 및 문제를 식별하는 데 도움이 되는 도구를 제공합니다. 이 데이터를 사용하여 봇을 반복하고 개선하여 더 나은 고객 경험을 만들 수 있습니다.

**참고**  
사용자가 Analytics에 액세스하려면 [AWS 관리형 정책: AmazonLexFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonLexFullAccess) 또는 분석 API 권한이 포함된 사용자 지정 정책을 IAM 역할에 연결해야 합니다. 사용자 지정 정책으로 사용자 권한을 처리하는 방법에 대한 자세한 내용은 [분석을 위한 액세스 권한 관리](analytics-permissions.md)를 참조하세요. [AWS 관리형 정책: AmazonLexReadOnly](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonLexReadOnly)가 고객의 IAM 역할에 연결되어 있는 경우, 오류가 표시되며 사용자가 Analytics 대시보드에 액세스할 수 있도록 사용자의 IAM 역할에 추가해야 하는 누락된 권한이 표시됩니다.

**Analytics 액세스 방법**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/lexv2/home](https://console.aws.amazon.com/lexv2/home) Amazon Lex V2 콘솔을 엽니다.

1. 탐색 창의 **봇** 아래에서 애널리틱스에서 보려는 봇을 선택합니다.

1. **Analytics**에서 확인할 섹션을 선택합니다.

**Topics**
+ [주요 정의](analytics-key-definitions.md)
+ [결과 필터링](analytics-filter.md)
+ [개요: 봇 성능 요약](analytics-overview.md)
+ [대화 대시보드: 봇 대화 요약](conversation-dashboard.md)
+ [성과 대시보드: 봇의 의도와 발화 지표에 대한 요약](performance-dashboard.md)
+ [분석을 위한 API 사용](analytics-api.md)
+ [분석을 위한 액세스 권한 관리](analytics-permissions.md)

# 주요 정의
<a name="analytics-key-definitions"></a>

이 주제에서는 봇 분석을 해석하는 데 도움이 되는 주요 정의를 제공합니다. 이러한 정의는 **의도**, **슬롯**, **대화**, **발화**라는 네 가지 컨텍스트에서의 봇 성능과 관련이 있습니다. 다음 필드는 여러 성능 지표와 관련이 있습니다.
+ [`Intent` 객체의 `state` 필드](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_Intent.html#lexv2-Type-runtime_Intent-state).
+ [SessionState](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html) 객체 내의 [`dialogAction` 객체의 `type` 필드](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_DialogAction.html#lexv2-Type-runtime_DialogAction-type).

## 의도
<a name="analytics-key-definitions-intents"></a>

Amazon Lex V2는 다음과 같은 방식으로 의도를 분류합니다.
+ **성공** – 봇이 의도를 성공적으로 처리했습니다. 다음 상황 중 하나가 참이어야 합니다.
  + 의도 `state`는 `ReadyForFulfillment`이고, `dialogAction`의 `type`은 `Close`입니다.
  + 의도 `state`는 `Fulfilled`이고, `dialogAction`의 `type`은 `Close`입니다.
+ **실패** – 봇이 의도를 처리하지 못했습니다. 의도 상태. 다음 상황 중 하나가 참이어야 합니다.
  + 의도 `state`는 `Failed`이고, `dialogAction`의 `type`은 `Close`입니다(예: 사용자가 확인 프롬프트를 거부한 경우).
  + 봇은 의도가 완료되기 전에 `AMAZON.FallbackIntent`로 전환합니다.
+ **전환됨** – 원래 의도가 *성공* 또는 *실패*로 분류되기 전에 봇이 다른 의도를 인식하고 대신 해당 의도로 전환합니다.
+ **중단** – 의도가 *성공* 또는 *실패*로 분류되기 전에 고객이 응답하지 않습니다.

## Slots
<a name="analytics-key-definitions-slots"></a>

Amazon Lex V2는 다음과 같은 방식으로 슬롯을 분류합니다.
+ **성공** – 봇이 슬롯을 가득 채우고 다른 슬롯으로 성공적으로 전환하거나 확인 단계를 진행했습니다.
+ **실패** – 최대 재시도 횟수에 도달했는데도 봇이 슬롯을 채우지 못했습니다.
+ **중단** – 슬롯이 *성공* 또는 *실패*로 분류되기 전에 고객이 응답하지 않거나 다른 의도로 전환합니다.

## 대화
<a name="analytics-key-definitions-conversations"></a>

고객이 Amazon Lex V2에 런타임 직접 호출을 할 때 [https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html#lexv2-runtime_PutSession-request-sessionId](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_PutSession.html#lexv2-runtime_PutSession-request-sessionId)를 제공하면 Amazon Lex V2가 [https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html#lexv2-Type-runtime_SessionState-originatingRequestId](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html#lexv2-Type-runtime_SessionState-originatingRequestId)를 생성합니다. 봇에 대해 설정한 세션 제한 시간([https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBot.html#lexv2-CreateBot-request-idleSessionTTLInSeconds](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBot.html#lexv2-CreateBot-request-idleSessionTTLInSeconds)) 내에 고객이 응답하지 않으면 세션이 만료됩니다. 고객이 동일한 `sessionId`를 사용하여 세션으로 돌아오면 Amazon Lex V2는 새로운 `originatingRequestId`를 생성합니다.

분석에서 *대화*는 `sessionId`와 `originatingRequestId`의 고유한 조합입니다. Amazon Lex V2는 다음과 같은 방식으로 대화를 분류합니다.
+ **성공** – 대화의 최종 의도는 *성공*으로 분류됩니다.
+ **실패** – 대화의 최종 의도가 *실패*했습니다. Amazon Lex V2의 기본값이 [AMAZON.FallbackIntent](built-in-intent-fallback.md)인 경우에도 대화가 *실패*합니다.
+ **중단** – 대화가 *성공* 또는 *실패*로 분류되기 전에 고객이 응답하지 않습니다.

## 표현
<a name="analytics-key-definitions-utterances"></a>

Amazon Lex V2는 다음과 같은 방식으로 발화를 분류합니다.
+ **감지됨** – Amazon Lex V2가 해당 발화를 봇용으로 구성된 의도를 간접적으로 호출하려는 시도로 인식합니다.
+ **놓침** – Amazon Lex V2가 발화를 인식하지 못합니다.

# 결과 필터링
<a name="analytics-filter"></a>

각 페이지 상단에서 봇 분석 결과를 필터링할 수 있습니다.

다음 파라미터를 기준으로 필터링할 수 있습니다.
+ **시간** - 상대 또는 절대 시간 범위를 기준으로 결과를 필터링할 수 있습니다. 시작 및 종료 시간을 선택하면 Amazon Lex V2에서 시작 시간 *이후에* 시작되고 종료 시간 *이전에* 종료된 대화를 검색합니다.
  + **상대 범위** – 지난 날의 결과를 보려면 **1d**를, 지난 주의 경우 **1w**를, 지난 달의 경우 **1m**을 선택합니다.

    추가 옵션을 보려면 **사용자 지정**을 선택하고 **상대 범위** 메뉴에서 기간을 선택하세요. 기간을 더 세밀하게 제어하려면 **사용자 지정 범위**를 선택하고 **기간** 필드에 숫자를 입력한 다음 드롭다운 메뉴에서 **시간 단위**를 선택합니다.
  + **절대 범위** - **사용자 지정**을 선택하고 **절대 범위** 메뉴를 선택하여 지정한 시간 범위 내의 대화를 필터링합니다. 달력에서 시작일과 종료일을 선택하거나 YYYY/MM/DD 형식으로 입력할 수 있습니다.
**참고**  
분석 시간 범위에는 다음과 같은 제한 사항이 있습니다.  
시작 날짜는 현재 날짜로부터 최근 365일 이내여야 합니다.
종료 날짜는 시작 날짜로부터 1달 이내여야 합니다.
+ **봇 필터** – 로캘, 별칭, 봇 버전별로 필터링하려면 **모든 로캘**, **모든 별칭**, **모든 버전**이라는 레이블이 붙은 드롭다운 메뉴를 선택합니다.
+ **양식** – 기어 아이콘을 선택하고 **양식** 드롭다운 메뉴를 선택하여 **음성** 또는 **텍스트**에 대한 결과를 표시할지 여부를 선택합니다.
+ **채널** - 기어 아이콘을 선택하고 **채널** 드롭다운 메뉴를 선택하여 결과를 표시할 채널을 선택합니다. 채널 통합에 대한 자세한 내용은 [Amazon Lex V2 봇을 메시징 플랫폼과 통합](deploying-messaging-platform.md) 및 [Amazon Connect 고객 센터](https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-contact-centers.html)를 참조하세요.

# 개요: 봇 성능 요약
<a name="analytics-overview"></a>

개요 페이지에는 대화, 발화 인식, 의도 사용에 대한 봇의 성과가 요약되어 있습니다. 이 개요는 다음 섹션으로 구성됩니다.
+ [대화 성과](#conversations-performance)
+ [발화 인식률](#utterance-recognition-rate)
+ [대화 성과 기록](#conversation-performance-history)
+ [가장 많이 사용된 의도 5개](#top-five-used-intents)
+ [가장 많이 실패한 의도 5개](#top-five-failed-intents)

## 대화 성과
<a name="conversations-performance"></a>

이 차트를 사용하여 *성공*, *실패*, *중단*으로 분류된 대화의 수와 비율을 추적할 수 있습니다. 대화 목록에 액세스하려면 **모든 대화 보기**를 선택하여 드롭다운 메뉴를 표시합니다. 봇과의 모든 사용자 대화 목록을 보거나 특정 결과(*성공*, *실패* 또는 *중단*)가 있는 대화를 필터링하도록 선택할 수 있습니다. 이 링크를 클릭하면 **대화 대시보드**의 **대화** 하위 섹션으로 이동합니다. 자세한 내용은 [대화](conversation-dashboard.md#conversations) 단원을 참조하세요.

다음 이미지와 같이 해당 결과를 포함한 대화의 수와 비율이 표시된 상자를 표시하려면 차트의 한 부분을 마우스로 가리키면 됩니다.

![\[대화의 성과를 시각화하는 도넛형 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/analytics/conversation-performance.png)




## 발화 인식률
<a name="utterance-recognition-rate"></a>

이 차트를 사용하여 봇이 **감지**하고 **놓친** 발화의 수와 비율을 추적하세요. 발화 목록에 액세스하려면 **발화 보기**를 선택하여 드롭다운 메뉴를 표시합니다. 모든 사용자 발화 목록을 보거나 특정 결과(*놓침* 또는 *감지됨*)가 포함된 발화를 필터링하도록 선택할 수 있습니다. 이 링크를 클릭하면 **성과 대시보드**의 **발화 인식** 하위 섹션으로 이동합니다. 자세한 내용은 **발화 보기**를 참조하여 [발화 인식](performance-dashboard.md#utterance-recognition)으로 이동하세요.

다음 이미지와 같이 발화의 수와 비율이 표시된 상자를 표시하려면 차트의 한 부분을 마우스로 가리키면 됩니다.

![\[봇의 발화 인식 성능을 시각화하는 도넛형 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/analytics/utterance-recognition-rate.png)


## 대화 성과 기록
<a name="conversation-performance-history"></a>

이 그래프를 사용하면 필터에서 설정한 시간 범위 동안 *성공*, *실패*, *중단*으로 분류된 대화의 비율을 추적할 수 있습니다. 일정 시간 동안 특정 결과가 나온 대화의 비율을 보려면 다음 이미지와 같이 해당 간격 위로 마우스를 가져갑니다.

![\[시간 경과에 따른 봇의 대화 성과를 추적하는 선 그래프.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/analytics/conversation-performance-history.png)


## 가장 많이 사용된 의도 5개
<a name="top-five-used-intents"></a>

이 차트를 사용하여 고객이 봇에 사용한 상위 5개의 의도를 식별하세요. 다음 이미지와 같이 막대 위로 마우스를 가져가면 봇이 해당 의도를 인식한 횟수를 확인할 수 있습니다.

![\[고객이 봇에서 가장 많이 사용한 의도 5개를 보여주는 막대 그래프.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/analytics/top-five-intents.png)


**모든 의도 보기**를 선택하여 **성과 대시보드**의 **의도 성능** 하위 섹션으로 이동합니다. 이 섹션에서 봇의 의도 처리 성능 지표를 볼 수 있습니다. 자세한 내용은 [의도 성과](performance-dashboard.md#intent-performance) 단원을 참조하세요.

## 가장 많이 실패한 의도 5개
<a name="top-five-failed-intents"></a>

이 차트를 사용하여 봇이 처리하지 못한 상위 5개의 의도를 식별하세요(실패한 의도의 정의는 [의도](analytics-key-definitions.md#analytics-key-definitions-intents) 참조). 다음 이미지와 같이 막대 위에 커서를 올리면 봇이 해당 의도를 처리하지 못한 횟수를 확인할 수 있습니다.

![\[봇이 처리하지 못한 상위 5개의 의도를 보여주는 막대 그래프.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/analytics/top-five-failed-intents.png)


**실패한 의도 보기**를 선택하여 **성과 대시보드**의 **의도 성과** 하위 섹션으로 이동하면 봇이 처리하지 못한 의도의 지표를 볼 수 있습니다. 자세한 내용은 [의도 성과](performance-dashboard.md#intent-performance) 단원을 참조하세요.

# 대화 대시보드: 봇 대화 요약
<a name="conversation-dashboard"></a>

대화 대시보드는 봇과의 고객 대화(*대화* 정의는 [대화](analytics-key-definitions.md#analytics-key-definitions-conversations) 참조)에 대한 지표를 시각화합니다.

**요약**에는 봇과의 사용자 대화에 대한 다음 정보가 포함됩니다. 수치는 필터 설정을 기반으로 계산됩니다.
+ **전체 대화** – 봇과의 총 대화 수입니다.
+ **평균 대화 시간** – 사용자가 봇과 대화한 평균 시간(분 및 초). 형식은 mm:ss입니다.
+ **대화당 평균 턴 수** – 대화가 지속된 평균 턴 수입니다.

**대화 수** 및 **메시지 수** 섹션에는 각각 필터에서 지정한 시간 범위 동안의 대화 및 메시지 수를 각각 보여주는 그래프가 포함되어 있습니다. 특정 시간 세그먼트에 마우스를 갖다 대면 해당 세그먼트에 있는 대화 또는 메시지 수를 확인할 수 있습니다. 시간 세그먼트의 크기는 지정한 시간 범위에 따라 달라집니다.
+ 1주 미만 - 각 시간마다 개수가 표시됩니다.
+ 1주 이상 – 각 날짜의 개수가 표시됩니다.

다음 이미지에서 마우스로 확인하는 예를 참조하세요.

![\[주어진 시간대의 각 시간당 대화 수를 보여주는 선 그래프.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/analytics/conversation-count.png)


**대화 시간** 섹션에는 필터에서 지정한 시간 범위 내에서 매일 2시간 간격으로 봇과 고객 간에 이루어진 대화 수가 표시됩니다. 더 어둡게 표시된 셀은 더 많은 대화가 이루어진 시간을 나타냅니다. 셀 위로 마우스를 가져가면 해당 시간대부터 시작하여 2시간 동안의 대화 수가 표시됩니다. 예를 들어, 다음 이미지의 동작은 UTC 기준 오후 4시에서 오후 6시 사이에 발생한 대화 수를 보여줍니다.

![\[각 2시간 간격의 대화 수를 요일별로 시각화하는 히트맵.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/analytics/time-of-conversations.png)


**대화 대시보드**에는 **대화 흐름**과 **대화**라는 두 가지 도구가 있습니다. 왼쪽 탐색 창의 **대화 대시보드**에서 도구를 선택하여 도구에 액세스할 수 있습니다.

## 대화 흐름
<a name="conversation-flows"></a>

**대화 흐름**을 사용하면 고객이 봇과 대화할 때 취하는 의도의 순서를 시각화할 수 있습니다. 각 의도 아래에는 대화의 해당 시점에서 해당 의도를 간접적으로 호출한 대화의 비율과 개수가 나와 있습니다. 상단에서 **대화 비율**과 **대화 수**를 선택하여 백분율과 개수를 전환할 수 있습니다. 기본적으로 대화의 해당 시점에서 가장 많이 발생하는 5개의 의도가 빈도의 내림차순으로 표시됩니다. 모든 의도를 표시하려면 **\$1 기타**를 선택합니다.

의도를 선택하여 분기의 새 열로 확장하면 대화의 해당 시점에 취해진 의도 목록이 내림차순으로 정렬되어 표시됩니다.

대화 흐름에서 노드를 선택하면 아래 창을 확장하여 해당 의도 순서를 따른 대화 목록을 표시할 수 있습니다. 대화에 해당하는 **세션 ID**를 선택하면 해당 대화에 대한 세부 정보를 볼 수 있습니다. 다음 이미지는 대화 흐름과 아래쪽의 확장된 **대화** 창을 보여줍니다.

![\[고객이 봇과 대화할 때 취하는 의도의 다양한 순서를 시각화하는 흐름 차트입니다.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/analytics/conversation-flow.png)


## 대화
<a name="conversations"></a>

**대화** 도구에는 봇의 대화 목록이 표시됩니다. 열을 선택하여 해당 열을 기준으로 오름차순 또는 내림차순으로 정렬할 수 있습니다.

결과별로 대화를 필터링하려면 **모든 결과**를 선택하고 **성공**, **실패** 또는 **중단**을 선택합니다.

**대화를 기간별로 필터링하는 방법**

1. **기간별 대화 필터링**이라고 표시된 검색창을 선택합니다.

1. 다음 방법 중 하나로 필터를 정의합니다.
   + 사전 정의된 옵션을 사용합니다.

     1. **기간**을 선택합니다.

     1. = (equals), > (greater than), < (less than) 연산자 중에서 선택합니다.

     1. 시간 길이를 선택합니다.
   + “Duration \$1operator\$1 \$1number\$1 sec” 형식으로 입력합니다. 예를 들어, 30초 이상 지속된 모든 대화를 검색하려면 **Duration > 30 sec**을 입력하세요. 시간 길이를 초 단위로 지정합니다.

메타데이터, 의도 사용, 대화 기록 등 세션에 대한 세부 정보를 보려면 대화의 **세션 ID**를 선택합니다.

**참고**  
대화는 `sessionId`와 `originatingRequestId`의 고유한 조합이므로 테이블에 같은 `sessionId`가 여러 번 나타날 수 있습니다.

**세부 정보** 섹션에는 다음과 같은 메타데이터가 포함되어 있습니다.
+ **타임스탬프** - 대화 날짜 및 시작 시간을 지정합니다. 시간은 hh:mm:ss 형식입니다.
+ **지속 시간** - 대화가 얼마나 오래 지속되었는지를 mm:ss 형식으로 지정합니다. 지속 시간에는 세션 제한 시간(`idleSessionTTLInSeconds`)이 포함되지 않습니다.
+ **결과** *- 대화가 *성공*, *실패* 또는 중단*으로 분류되는지 지정합니다. 이러한 결과에 대한 자세한 내용은 [대화](analytics-key-definitions.md#analytics-key-definitions-conversations)를 참조하세요.
+ **모드** - 대화가 `Speech`, `Text` 또는 `DTMF`(터치톤 키패드 누름)이었는지 지정합니다. 여러 모드로 구성된 대화는 `Multimode`입니다.
+ **채널** - 해당하는 경우 대화가 진행된 채널을 지정합니다. [Amazon Lex V2 봇을 메시징 플랫폼과 통합](deploying-messaging-platform.md) 단원을 참조하세요.
+ **언어** - 봇의 언어를 지정합니다.

대화에서 봇이 이끌어낸 의도는 **세부 정보** 아래에 나와 있습니다. 의도 편집기에서 해당 의도로 이동하려면 **Go to Intent**를 선택합니다. **Snap to Transcript**를 선택하면 봇이 의도를 유도한 첫 번째 인스턴스로 **대화 기록**을 자동으로 스크롤합니다.

의도 이름 옆의 오른쪽 화살표를 선택하면 슬롯 이름, 봇이 각 슬롯에 대해 유도한 값, 봇이 각 슬롯을 추출하려고 시도한 횟수 등 의도에 대해 유도된 슬롯에 대한 세부 정보를 볼 수 있습니다.

**대화 기록**을 통해 대화 발화 및 의도와 슬롯을 유도하는 봇의 행동을 검토할 수 있습니다. 왼쪽에 사용자의 말이 표시되고 오른쪽에 봇 말이 표시됩니다. **Filter transcripts in this session**이라고 표시된 검색 창을 사용하여 대화 기록에서 텍스트를 찾을 수 있습니다. **Showing:** 옆에는 각 대화 턴에 따라 세 가지 정보가 표시되며, 표시 여부를 선택할 수 있습니다.
+ **타임스탬프** – 발화 시간을 지정합니다.
+ **의도 상태** - 봇이 발화 중에 이끌어내는 의도와 해당 의도의 결과(해당하는 경우)를 지정합니다. 다음과 같은 의도 상태가 가능합니다:
  + 호출된 의도: *의도 이름* – 봇이 고객이 간접적으로 호출하려는 의도를 식별했습니다.
  + 전환된 의도: *의도 이름* – 봇이 발화에 따라 다른 의도로 전환했습니다.
  + *의도 이름*: 성공 – 봇이 의도를 처리했습니다.
+ **슬롯 상태** - 봇이 발화 중에 끌어내는 슬롯(해당하는 경우)과 고객이 제공하는 값을 지정합니다.

# 성과 대시보드: 봇의 의도와 발화 지표에 대한 요약
<a name="performance-dashboard"></a>

성과 대시보드에서 봇의 의도 처리 및 발화 인식 성능에 대한 세부 정보를 볼 수 있습니다.

**의도 성능 분석** 섹션에는 봇이 의도를 간접적으로 호출한 총 횟수가 표시되며, 의도를 *성공*, *실패*, *중단*, *전환*으로 분류한 횟수와 백분율로 분류됩니다. 이러한 정의에 대한 설명은 [의도](analytics-key-definitions.md#analytics-key-definitions-intents)를 참조하세요. 다음 이미지와 같이 차트의 한 부분을 마우스로 가리키면 해당 결과가 나온 대화 수와 백분율이 표시된 상자가 표시됩니다.

![\[봇의 다양한 의도 처리 결과를 보여주는 도넛형 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/analytics/intent-performance-breakdowns.png)


**모든 의도 보기**를 선택하면 봇이 유도한 의도 목록을 보도록 선택할 수 있는 드롭다운 메뉴가 나타납니다. 특정 결과(*성공*, *실패*, *중단* 또는 *전환*)가 있는 의도를 보도록 선택할 수도 있습니다. 이 링크를 클릭하면 **성과 대시보드**의 **의도 성과** 하위 섹션으로 이동합니다. 자세한 내용은 [의도 성과](#intent-performance) 단원을 참조하세요.

**발화 인식** 섹션에는 *놓치고* *감지*한 발화 수가 요약되어 있습니다. **세부 정보 보기**를 선택하여 봇의 발화 목록으로 이동합니다. 놓친 발화 목록을 보려면 **놓친 발화**에서 숫자를 선택하고, **감지된 발화** 아래에서 숫자를 선택하면 봇이 감지한 발화 목록을 볼 수 있습니다. 자세한 내용은 [발화 인식](#utterance-recognition) 단원을 참조하세요.

왼쪽 사이드바의 **성과 대시보드**에서 **의도 성과** 및 **발화 인식**을 선택하면 봇의 의도와 발화에 대한 세부 정보를 볼 수 있습니다.

## 의도 성과
<a name="intent-performance"></a>

이 대시보드는 봇에 사용된 의도의 성과를 빈도의 내림차순으로 요약합니다. 각 의도 옆의 막대는 해당 의도가 *성공*, *실패*, *중단*, *전환*으로 분류된 횟수를 시각화합니다. 이러한 정의에 대한 설명은 [의도](analytics-key-definitions.md#analytics-key-definitions-intents)를 참조하세요. 막대의 한 부분에 마우스를 갖다 대면 다음 이미지와 같이 해당 의도를 사용한 대화의 수가 해당 결과로 나타납니다.

![\[봇의 다양한 의도 이행 결과를 보여주는 막대형 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/analytics/intent-performance.png)


**참고**  
대시보드에는 일련의 필터 설정에 대한 상위 1,000개의 결과가 표시됩니다. 보다 구체적인 결과를 얻으려면 세분화된 필터 설정을 구성하세요.

차트 상단의 **성공**, **실패**, **중단**, **전환** 확인란으로 확인하려는 의도 상태를 전환할 수 있습니다.

**표시** 오른쪽에 있는 드롭다운 메뉴를 선택하여 표시할 의도 수와 의도를 빈도의 오름차순 또는 내림차순으로 표시할지 여부를 조정합니다.

의도 이름을 선택하면 **의도 성능 분석**, **슬롯 성능**, **의도 스위치**의 세 가지 차트가 표시된 페이지로 이동합니다.

**의도 성능 분석** 섹션에는 봇이 의도를 사용한 총 횟수가 표시되며, 의도 처리가 *성공*, *실패*, *중단*, *전환*으로 분류된 횟수와 백분율로 분류됩니다. 이러한 정의에 대한 설명은 [의도](analytics-key-definitions.md#analytics-key-definitions-intents)를 참조하세요. 차트의 한 부분에 마우스를 갖다 대면 의도 처리로 해당 결과가 나온 횟수와 비율을 확인할 수 있습니다.

**슬롯 성과** 섹션에는 현재 의도에 속하는 슬롯에 대한 지표가 표시됩니다. 열을 기준으로 정렬하려면 해당 열을 한 번 선택하여 오름차순으로 정렬하고 두 번 선택하면 내림차순으로 정렬됩니다. 검색 창을 사용하여 특정 슬롯을 찾거나 페이지 번호 버튼을 사용하여 슬롯을 탐색할 수 있습니다.

**참고**  
대시보드에는 일련의 필터 설정에 대한 상위 1,000개의 결과가 표시됩니다. 보다 구체적인 결과를 얻으려면 세분화된 필터 설정을 구성하세요.

**의도 전환** 섹션에는 봇이 현재 의도에서 다른 의도로 전환한 인스턴스가 다음 정보와 함께 나열됩니다.
+ **단계** – 봇이 의도를 전환한 대화 단계입니다.
+ **의도 전환 대상** – 봇이 현재 의도를 전환한 대상 의도입니다.
+ **세션 수** – **단계**와 **의도 전환 대상** 조합이 발생한 세션 수입니다.

**참고**  
대시보드에는 일련의 필터 설정에 대한 상위 1,000개의 결과가 표시됩니다. 보다 구체적인 결과를 얻으려면 세분화된 필터 설정을 구성하세요.

## 발화 인식
<a name="utterance-recognition"></a>

이 페이지는 봇이 *놓치고* *감지*한 모든 발화를 나열하고 봇을 훈련시키는 데 도움이 되는 샘플 발화를 의도에 추가할 수 있는 도구를 제공합니다. 이러한 정의에 대한 설명은 [표현](analytics-key-definitions.md#analytics-key-definitions-utterances)를 참조하세요. 상단의 탭을 사용하여 **놓친 발화** 목록과 **감지된 발화** 목록 사이를 전환할 수 있습니다.

**참고**  
대시보드에는 일련의 필터 설정에 대한 상위 1,000개의 결과가 표시됩니다. 보다 구체적인 결과를 얻으려면 세분화된 필터 설정을 구성하세요.

의도에 발화를 추가하는 방법:

1. 의도에 대한 샘플 발화로 추가하려는 발화 옆의 체크박스를 선택합니다.

1. **의도에 추가**를 선택하고 **의도** 아래 드롭다운 메뉴에서 발화를 추가하려는 의도를 선택합니다.

1. **추가**를 선택합니다.

# 분석을 위한 API 사용
<a name="analytics-api"></a>

이 섹션에서는 봇에 대한 분석을 검색하는 데 사용하는 API 작업에 대해 설명합니다.

**참고**  
[ListSutteranceMetrics](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListUtteranceMetrics.html) 및 [ListUtteranceAnalyticsData](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListUtteranceAnalyticsData.html)를 사용하려면 IAM 역할에 발화 관련 분석에 대한 액세스를 제공하는 [ListAggregatedUtterances](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListAggregatedUtterances.html) 작업을 수행할 수 있는 권한이 있어야 합니다. IAM 역할에 적용되는 IAM 정책 및 세부 정보는 [Lex V2 대화에서 발화 통계 보기](#monitoring-utterances) 단원을 참조하세요.
+ 다음 API 작업은 봇에 대한 요약 지표를 검색합니다.
  + [ListSessionMetrics](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListSessionMetrics.html)
  + [ListIntentMetrics](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListIntentMetrics.html)
  + [ListIntentStageMetrics](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListIntentStageMetrics.html)
  + [ListUtteranceMetrics](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListUtteranceMetrics.html)
+ 다음 API 작업은 세션 및 발화에 대한 메타데이터 목록을 가져옵니다.
  + [ListSessionAnalyticsData](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListSessionAnalyticsData.html)
  + [ListUtteranceAnalyticsData](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListUtteranceAnalyticsData.html)
+ [ListIntentPaths](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListIntentPaths.html) 작업은 고객이 봇과 대화할 때 취하는 의도 순서에 대한 지표를 검색합니다.

## 결과 필터링
<a name="analytics-api-filters"></a>

Analytics API 요청에는 `startTime` 및 `endTime`을 지정해야 합니다. API는 `startTime` *이후*에 시작되어 `endTime` *이전*에 종료된 세션, 의도, 의도 단계 또는 발화를 반환합니다.

`filters`는 Analytics API 요청의 선택적 필드입니다. [AnalyticsSessionFilter](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsSessionFilter.html), [AnalyticsIntentFilter](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentFilter.html), [AnalyticsIntentStageFilter](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentStageFilter.html) 또는 [AnalyticsUtteranceFilter](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsUtteranceFilter.html) 객체의 목록에 매핑됩니다. 각 객체에서 필드를 사용하여 필터링 기준으로 사용할 식을 만드세요. 예를 들어 목록에 다음 필터를 추가하면 봇은 30초 이상의 대화를 검색합니다.

```
{
    "name": "Duration",
    "operator": "GT",
    "value": "30 sec",
}
```

## 봇에 대한 지표 검색
<a name="analytics-api-metrics"></a>

`ListSessionMetrics`, `ListIntentMetrics`, `ListIntentStageMetrics` 및 `ListUtteranceMetrics` 작업을 사용하여 *세션*, *의도*, *의도 단계* 및 *발화*에 대한 요약 지표를 검색할 수 있습니다.

이러한 작업의 경우 다음 필수 필드를 채우세요.
+ 결과를 검색하려는 시간 범위를 정의하려면 `startTime` 및 `endTime`을 입력합니다.
+ `metrics`에서 계산하려는 지표를 [AnalyticsSessionMetric](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsSessionMetric.html), [AnalyticsIntentMetric](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentMetric.html), [AnalyticsIntentStageMetric](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentStageMetric.html) 또는 [AnalyticsUtteranceMetric](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsUtteranceMetric.html) 객체 목록으로 지정합니다. 각 객체에서 `name` 필드를 사용하여 계산할 메트릭을 지정하고, `statistic` 필드를 사용하여 `Sum`, `Average` 또는 `Max` 수치를 계산할지 여부를 지정하고, `order` 필드를 사용하여 결과를 `Ascending` 또는 `Descending` 순서로 정렬할지 여부를 지정합니다.
**참고**  
`metrics`와 `binBy` 객체 모두 `order` 필드를 포함합니다. 두 객체 중 하나에만 정렬 `order`를 지정할 수 있습니다.

요청의 나머지 필드는 선택 사항입니다. 다음과 같은 방법으로 결과를 필터링하고 구성할 수 있습니다.
+ **결과 필터링** - `filters` 필드를 사용하여 결과를 필터링합니다. 자세한 내용은 [결과 필터링](#analytics-api-filters) 단원을 참조하세요.
+ **범주별 결과 그룹화** – `groupBy` 필드, 즉 단일 [AnalyticsSessionResult](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsSessionResult.html), [AnalyticsIntentResult](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentResult.html), [AnalyticsIntentStageResult](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentStageResult.html) 또는 [AnalyticsUtteranceResult](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsUtteranceResult.html) 객체가 포함된 목록을 지정합니다. 객체에서 결과를 그룹화할 범주가 있는 `name` 필드를 지정합니다.

  요청에 `groupBy` 필드를 지정한 경우 응답의 `results` 객체에는 `groupByKeys`, 요청에 지정한 `name`과 `value` 필드에 해당 카테고리의 멤버가 각각 포함된 [AnalyticsSessionGroupByKey](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsSessionGroupByKey.html), [AnalyticsIntentGroupByKey](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentGroupByKey.html), [AnalyticsIntentStageGroupByKey](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentStageGroupByKey.html) 또는 [AnalyticsUtteranceGroupByKey](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsUtteranceGroupByKey.html) 객체 목록이 포함되어 있습니다.
+ **시간별 결과 이진화** – `binBy` 필드, 즉 단일 [AnalyticsBinBySpecification](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsBinBySpecification.html) 객체가 포함된 목록을 지정합니다. 객체에서 대화가 시작된 시점을 기준으로 결과를 범주화하려면 `ConversationStartTime`을 사용하여 `name` 필드를 지정하고, 발화가 발생한 시점을 기준으로 결과를 범주화하려면 `UtteranceTimestamp`를 사용하여 이름 필드를 지정합니다. `interval` 필드에서 결과를 구간화할 시간 간격을 지정하고, `order` 필드에서 `Ascending` 또는 `Descending` 순서로 정렬할지 여부를 지정합니다.

  요청에서 `binBy` 필드를 지정하는 경우 응답의 `results` 객체에는 각각 요청에서 지정한 `name`과 `value` 필드에서 해당 구간을 정의하는 시간 간격을 가진 [AnalyticsBinKey](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsBinKey.html) 객체 목록인 `binKeys`가 포함됩니다.
**참고**  
`metrics`와 `binBy` 객체 모두 `order` 필드를 포함합니다. 두 객체 중 하나에만 정렬 `order`를 지정할 수 있습니다.

다음 필드를 사용하여 응답 표시를 처리하세요.
+ `maxResults` 필드에 1에서 1,000 사이의 숫자를 지정하여 단일 응답에서 반환되는 결과 수를 제한하세요.
+ 결과 수가 `maxResults` 필드에 지정한 수보다 많으면 응답에 `nextToken`이 포함됩니다. 요청을 다시 하되, `nextToken` 필드에서 이 값을 사용하면 다음 일괄 결과를 반환할 수 있습니다.

`ListUtteranceMetrics`를 사용하는 경우 `attributes` 필드에 반환할 속성을 지정할 수 있습니다. 이 필드는 단일 [AnalyticSutteranceAttribute](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsUtteranceAttribute.html) 객체를 포함하는 목록에 매핑됩니다. 발화 당시 Amazon Lex V2가 사용 중인 의도를 반환하려면 `name` 필드에 `LastUsedIntent`를 지정하세요.

응답에서 `results` 필드는 [AnalyticsSessionResult](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsSessionResult.html), [AnalyticsIntentResult](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentResult.html), [AnalyticsIntentStageResult](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsIntentStageResult.html) 또는 [AnalyticsUtteranceResult](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_AnalyticsUtteranceResult.html) 객체의 목록에 매핑됩니다. 각 객체에는 지정한 메서드에서 만든 구간차원 또는 그룹 외에도 요청한 지표에 대한 요약 통계 값을 반환하는 `metrics` 필드가 포함되어 있습니다.

## 봇의 세션 및 발화에 대한 메타데이터 검색
<a name="analytics-api-metadata"></a>

[ListSessionAnalyticsData](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListSessionAnalyticsData.html) 및 [ListUtteranceAnalyticsData](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListUtteranceAnalyticsData.html) 작업을 사용하여 개별 세션 및 발화에 대한 메타데이터를 검색할 수 있습니다.

필수 `startTime` 및 `endTime` 필드를 입력하여 결과를 검색할 시간 범위를 정의합니다.

요청의 나머지 필드는 선택 사항입니다. 결과를 필터링하고 정렬하는 방법:
+ **결과 필터링** - `filters` 필드를 사용하여 결과를 필터링합니다. 자세한 내용은 [결과 필터링](#analytics-api-filters) 단원을 참조하세요.
+ **결과 정렬** – [SessionDataSortBy](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_SessionDataSortBy.html) 또는 [UtteranceDataSortBy](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UtteranceDataSortBy.html) 객체가 포함된 `sortBy` 필드를 사용하여 결과를 정렬합니다. `name` 필드에 정렬할 값을 지정하고 `order` 필드에 `Ascending` 또는 `Descending` 순서로 정렬할지 여부를 지정합니다.

다음 필드를 사용하여 응답 표시를 처리하세요.
+ `maxResults` 필드에 1에서 1,000 사이의 숫자를 지정하여 단일 응답에서 반환되는 결과 수를 제한하세요.
+ 결과 수가 `maxResults` 필드에 지정한 수보다 많으면 응답에 `nextToken`이 포함됩니다. 요청을 다시 하되, `nextToken` 필드에서 이 값을 사용하면 다음 일괄 결과를 반환할 수 있습니다.

응답에서 `sessions` 또는 `utterances` 필드는 [SessionSpecification](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_SessionSpecification.html) 또는 [UtteranceSpecification](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UtteranceSpecification.html) 객체 목록에 매핑됩니다. 각 객체에는 단일 세션 또는 발화에 대한 메타데이터가 들어 있습니다.

## 의도 경로 분석 데이터 검색
<a name="analytics-api-paths"></a>

[ListIntentPaths](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_ListIntentPaths.html) 작업을 사용하면 고객이 봇과 대화할 때 취하는 의도 순서에 대한 메트릭을 검색할 수 있습니다.

이 작업을 수행하려면 다음 필수 필드를 채우세요.
+ 결과를 검색하려는 시간 범위를 정의하려면 `startTime` 및 `endTime`을 입력합니다.
+ `intentPath`를 제공하여 지표를 검색할 의도의 순서를 정의합니다. 경로에 있는 의도를 슬래시로 구분합니다. 예를 들어 `intentPath` 필드에 **/BookCar/BookHotel**을 입력하면 사용자가 해당 순서로 `BookCar` 및 `BookHotel` 의도를 간접적으로 호출한 횟수에 대한 세부 정보가 표시됩니다.

선택적인 `filters` 필드를 사용하여 결과를 필터링할 수 있습니다. 자세한 내용은 [결과 필터링](#analytics-api-filters) 섹션을 참조하세요.

## Lex V2 대화에서 발화 통계 보기
<a name="monitoring-utterances"></a>



발화 통계를 사용하여 사용자가 봇에 보내는 발화를 확인할 수 있습니다. Amazon Lex V2에서 성공적으로 감지한 발화와 감지하지 못한 발화를 모두 볼 수 있습니다. 이 정보를 사용하여 봇을 조정하는 데 도움을 줄 수 있습니다.

예를 들어, 사용자가 Amazon Lex V2에서 놓친 내용을 보내는 것을 발견한 경우 해당 발화를 의도에 추가할 수 있습니다. 의도의 초안 버전이 새 말로 업데이트되므로 봇에 배포하기 전에 테스트할 수 있습니다.

Amazon Lex V2가 해당 발화를 봇용으로 구성된 의도를 간접적으로 호출하려는 시도로 인식하면 발화가 감지됩니다. Amazon Lex V2가 표현을 인식하지 못하고 대신 `AMAZON.FallbackIntent`를 간접적으로 호출하면 표현을 놓친 것입니다.

발화 통계는 `ListUtteranceMetrics` API와 `ListAggregatedUtterance` API를 사용하여 볼 수 있습니다.

다음 조건에서는 `ListUtteranceMetrics` API를 사용하여 발화 통계가 생성되지 않습니다.
+ 콘솔을 사용하여 봇을 만들 때는 Child Online Privacy Protection Act 설정이 **예**로 설정되었고, `CreateBot` 작업을 통해 봇을 만들 때는 `childDirected` 필드가 true로 설정되었습니다.

`ListUtteranceMetrics` API는 다음과 같은 추가 기능을 제공합니다.
+ 감지된 발화에 대한 매핑된 의도와 같은 추가 정보를 확인할 수 있습니다.
+ 더 많은 필터링 기능(채널 및 모드 포함).
+ 보존 날짜 범위 연장(30일).
+ 데이터 스토리지를 옵트아웃한 경우에도 API를 사용할 수 있습니다. 놓친 발화 및 감지된 발화에 대한 콘솔 기능은 `ListUtteranceMetrics` API에 따라 달라집니다.

다음 조건에서는 `ListAggregatedUtterance` API를 사용하여 발화 통계가 생성되지 않습니다.
+ 콘솔을 사용하여 봇을 만들 때는 Child Online Privacy Protection Act 설정이 **예**로 설정되었고, `CreateBot` 작업을 통해 봇을 만들 때는 `childDirected` 필드가 true로 설정되었습니다.
+ 하나 이상의 슬롯에서 슬롯 난독화 기능을 사용하고 있습니다.
+ Amazon Lex 개선에 참여하지 않기로 선택했습니다.

`ListAggregatedUtterance` API는 다음과 같은 기능을 제공합니다.
+ 사용 가능한 세부 정보가 적습니다(발화에 대해 매핑된 의도 없음).
+ 제한된 필터링 기능(채널 및 모드 제외).
+ 짧은 보존 날짜 범위(15일).

발화 통계를 사용하면 봇 상호 작용에서 해당 발화가 마지막으로 사용된 시간과 함께 특정 발화가 감지되었는지 또는 누락되었는지 확인할 수 있습니다.

Amazon Lex V2는 사용자가 봇과 상호 작용하는 동안 지속적으로 발화를 저장합니다. 콘솔 또는 `ListAggregatedUtterances` 작업을 사용하여 통계를 쿼리할 수 있습니다. 데이터 보존 기간은 15일이며, 사용자가 데이터 스토리지에서 옵트아웃한 경우에는 사용할 수 없습니다. `DeleteUtterances` 작업을 사용하거나 데이터 스토리지에서 옵트아웃하여 발화를 삭제할 수 있습니다. AWS 계정을 닫으면 모든 발화가 삭제됩니다. 저장된 발화는 서버에서 관리하는 키로 암호화됩니다.

봇 버전을 삭제하면 `ListUtteranceMetrics`를 사용하여 최대 30일 동안 버전에 대한 발화 통계를 사용할 수 있고 `ListAggregatedUtterances`를 사용하여 15일 동안 사용할 수 있습니다. Amazon Lex V2 콘솔에서는 삭제된 버전에 대한 통계를 볼 수 없습니다. 삭제된 버전의 통계를 보려면 `ListAggregatedUtterances` 및 `ListUtteranceMetrics` 작업을 모두 사용할 수 있습니다.

`ListAggregatedUtterances` 및 `ListUtteranceMetrics` API 모두에서 발화는 발화 텍스트를 기준으로 집계됩니다. 예를 들어 고객이 “피자를 주문하고 싶어요”라는 문구를 사용한 모든 인스턴스는 응답에서 동일한 행으로 집계됩니다. [RecognizEtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) 작업을 사용할 때 사용되는 텍스트는 입력 대화 기록입니다.

`ListAggregatedUtterances` 및 `ListUtteranceMetrics` API를 사용하려면 다음 정책을 역할에 적용하세요.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListAggregatedUtterancesPolicy",
            "Effect": "Allow",
            "Action": "lex:ListAggregatedUtterances",
            "Resource": "*"
        }
    ]
}
```

------

# 분석을 위한 액세스 권한 관리
<a name="analytics-permissions"></a>

사용자에게 분석 액세스 권한을 제공하려면 역할을 분석을 위해 API 작업을 직접적으로 호출하도록 허용하는 정책을 IAM 역할에 연결하세요. [AWS 관리형 정책: AmazonLexFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonLexFullAccess)를 IAM 역할에 연결하여 Amazon Lex API 작업에 대한 전체 액세스 권한을 제공하거나 분석 권한만 허용하는 사용자 지정 정책을 만들어 IAM 역할에 연결할 수 있습니다.

**분석 권한이 포함된 사용자 지정 정책을 생성하는 방법**

1. 먼저 IAM 역할을 생성해야 하는 경우 [IAM 사용자에게 권한을 위임하는 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)의 단계를 따르세요.

1. [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)의 단계에 따라 다음 JSON 객체를 사용하여 정책을 생성합니다. IAM 역할의 특정 봇에 대한 분석 액세스를 활성화하려면 각 봇의 ARN을 `Resource` 필드에 추가하세요. *리전*, *계정 ID*, *BOTID*를 봇에 해당하는 값으로 바꾸세요. 명령문 식별자인 *AnalyticsActionss*를 원하는 이름으로 바꿀 수도 있습니다.

1. [IAM ID 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)의 단계에 따라 생성한 정책을 분석 권한을 부여하려는 역할에 연결합니다.

1. 이제 역할에는 지정한 봇에 대한 분석을 볼 수 있는 권한이 있어야 합니다.

# Lex V2 봇에 대한 대화 로그 활성화
<a name="enabling-logs"></a>

대화 로그를 사용하여 봇과의 사용자 대화를 저장하세요. 이러한 로그를 검토하여 봇과 사용자 간의 상호 작용과 관련된 문제를 식별하고 이러한 인사이트를 바탕으로 봇의 행동을 수정하세요. 또한 이 섹션에서는 슬롯 값을 난독화하여 사용자의 개인 정보를 보호하는 방법에 대해서도 설명합니다.

**Topics**
+ [Lex V2에서 대화 로그를 사용한 대화 로깅](conversation-logs.md)
+ [Lex V2에서 대화 로그의 슬롯 값 가리기](monitoring-obfuscate.md)
+ [Lex V2에서 선택적 대화 로그 캡처](monitoring-selective-logging.md)

# Lex V2에서 대화 로그를 사용한 대화 로깅
<a name="conversation-logs"></a>

*대화 로그*를 활성화하여 봇 상호 작용을 저장합니다. 이러한 로그를 사용하여 봇의 성능을 검토하고 대화 관련 문제를 해결할 수 있습니다. [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) 작업에 대한 텍스트를 기록할 수 있습니다. [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) 작업에 대한 텍스트와 오디오를 모두 기록할 수 있습니다. 대화 로그를 활성화하면 사용자가 봇과 나누는 대화를 자세히 볼 수 있습니다.

예를 들어 봇이 있는 세션에는 세션 ID가 있습니다. 이 ID를 사용하여 사용자 표현 및 해당 봇 응답을 포함한 대화의 기록을 가져올 수 있습니다. 또한 표현에 대한 의도 이름 및 슬롯 값과 같은 메타 데이터를 얻을 수 있습니다.

**참고**  
어린이 온라인 사생활 보호법(COPPA)이 적용되는 봇과의 대화 로그는 사용할 수 없습니다.

대화 로그는 별칭에 대해 구성됩니다. 각 별칭은 텍스트 및 오디오 로그에 대해 서로 다른 설정을 가질 수 있습니다. 각 별칭에 대해 텍스트 로그, 오디오 로그 또는 둘 다를 사용하도록 설정할 수 있습니다. 텍스트 로그는 텍스트 입력, 오디오 입력 기록 및 관련 메타 데이터를 CloudWatch Logs에 저장합니다. 오디오 로그는 오디오 입력을 Amazon S3에 저장합니다. AWS KMS 고객 관리형 CMK를 사용하여 텍스트 및 오디오 로그의 암호화를 활성화할 수 있습니다.

로깅을 구성하려면 콘솔 또는 [CreateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotAlias.html) 또는 [UpdateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateBotAlias.html) 작업을 사용하세요. 별칭에 대한 대화 로그를 활성화한 후, 해당 별칭에 대해 [RecognizeText](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html) 또는 [RecognizeUtterance](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeUtterance.html) 작업을 사용하면 구성된 CloudWatch Logs 그룹 또는 S3 버킷에 텍스트 또는 오디오 표현이 기록됩니다.

**Topics**
+ [대화 로그에 대한 IAM 정책](conversation-logs-policies.md)
+ [Lex V2 봇의 대화 로그 구성](conversation-logs-configure.md)
+ [Lex V2에서 Amazon CloudWatch Logs를 사용한 텍스트 로그 보기](conversation-logs-cw.md)
+ [Amazon S3에서 오디오 로그에 액세스](conversation-logs-s3.md)
+ [CloudWatch 지표를 통해 대화 로그 상태 모니터링](conversation-logs-monitoring.md)

# 대화 로그에 대한 IAM 정책
<a name="conversation-logs-policies"></a>

선택하는 로깅 유형에 따라, Amazon Lex V2는 Amazon CloudWatch Logs 및 S3(Amazon Simple Storage Service) 버킷을 사용해 로그를 보관할 권한이 필요합니다. Amazon Lex V2가 이러한 리소스에 액세스할 수 있도록 AWS Identity and Access Management 역할 및 권한을 생성해야 합니다.

## 대화 로그에 대한 IAM 역할 및 정책 생성
<a name="conversation-logs-role-and-policy"></a>

대화 로그를 활성화하려면, CloudWatch Logs 및 Amazon S3 에 대한 쓰기 권한을 부여해야 합니다. S3 객체에 대해 객체 암호화를 활성화하는 경우 객체를 암호화하는 데 사용되는 AWS KMS 키에 액세스 권한을 부여해야 합니다.

IAM 콘솔, IAM API 또는를 사용하여 역할 및 정책을 AWS Command Line Interface 생성할 수 있습니다. 여기에 나온 지침에서는 AWS CLI를 사용하여 역할과 정책을 생성합니다.

**참고**  
다음 코드는 Linux 및 MacOS 용으로 형식이 지정됩니다. Windows의 경우 Linux 줄 연속 문자(\$1)를 캐럿(^)으로 바꿉니다.



**대화 로그에 대한 IAM 역할 을 만들려면**

1. **LexConversationLogsAssumeRolePolicyDocument.json**이라는 현재 디렉터리에 문서를 만들고 다음 코드를 추가한 다음 저장합니다. 이 정책 문서는 Amazon Lex V2를 역할에 대한 신뢰할 수 있는 엔터티로써 추가합니다. 이렇게 하면 Amazon Lex V2가 역할을 수임하여 대화 로그에 대해 구성된 리소스에 로그를 전달할 수 있습니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lexv2.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. AWS CLI에서 다음 명령을 실행하여 대화 로그에 대한 IAM 역할을 생성합니다.

   ```
   aws iam create-role \
       --role-name role-name \
       --assume-role-policy-document file://LexConversationLogsAssumeRolePolicyDocument.json
   ```

그런 다음 Amazon Lex V2가 CloudWatch Logs 에 쓸 수 있도록 하는 정책을 만들어 역할에 연결합니다.

**대화 텍스트를 CloudWatch Logs에 로깅하기 위한 IAM 정책을 만들려면**

1. **LexConversationLogsCloudWatchLogsPolicy.json**이라는 현재 디렉터리에 문서를 만들고 다음 IAM 정책 을 추가한 다음 저장합니다.

1. AWS CLI에서 CloudWatch Logs 로그 그룹에 쓰기 권한을 부여하는 IAM 정책을 생성합니다.

   ```
   aws iam create-policy \
       --policy-name cloudwatch-policy-name \
       --policy-document file://LexConversationLogsCloudWatchLogsPolicy.json
   ```

1. 대화 로그에 대해 생성한 IAM 역할 에 정책을 연결합니다.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws:iam::account-id:policy/cloudwatch-policy-name \
       --role-name role-name
   ```

S3 버킷에 오디오를 로깅하는 경우 Amazon Lex V2가 버킷에 쓸 수 있도록 허용하는 정책을 생성합니다.

**S3 버킷에 오디오를 로깅하기 위한 IAM 정책을 만들려면**

1. **LexConversationLogsS3Policy.json**이라는 현재 디렉터리에 문서를 만들고 다음의 정책을 추가한 후 저장합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                 "s3:PutObject"
             ],
             "Resource": "arn:aws:s3:::bucket-name/*"
         }
     ]
   }
   ```

------

1. AWS CLI에서 S3 버킷에 쓰기 권한을 부여하는 IAM 정책을 생성합니다.

   ```
   aws iam create-policy \
       --policy-name s3-policy-name \
       --policy-document file://LexConversationLogsS3Policy.json
   ```

1. 대화 로그에 대해 생성한 역할에 정책을 연결합니다.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws:iam::account-id:policy/s3-policy-name \
       --role-name role-name
   ```

## IAM 역할 전달 권한 부여
<a name="conversation-logs-pass-role"></a>

콘솔 AWS Command Line Interface, 또는 AWS SDK를 사용하여 대화 로그에 사용할 IAM 역할을 지정하는 경우 대화 로그를 지정하는 사용자는 Amazon Lex V2에 역할을 전달할 권한이 있어야 합니다. 사용자가 역할을 Amazon Lex V2에 전달하도록 하려면 사용자의 IAM 사용자, 역할 또는 그룹에 `PassRole` 권한을 부여해야 합니다.

다음 정책은 사용자, 역할 또는 그룹에게 부여할 권한을 정의합니다. `iam:AssociatedResourceArn` 및 `iam:PassedToService` 조건 키를 사용해 권한 범위를 제한할 수 있습니다. 자세한 내용은 [ AWS Identity and Access Management 사용 설명서의 AWS 서비스에 역할을 전달할 수 있는 사용자 권한 부여 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) 및 [ IAM 및 AWS STS 조건 컨텍스트 키를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html). *AWS Identity and Access Management *

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/role-name",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "lexv2.amazonaws.com"
                },
                "StringLike": {
                    "iam:AssociatedResourceARN": "arn:aws:lex:region:123456789012:bot:bot-name:bot-alias"
                }
            }
        }
    ]
}
```

------

# Lex V2 봇의 대화 로그 구성
<a name="conversation-logs-configure"></a>

콘솔 또는 `CreateBotAlias` 또는 `UpdateBotAlias` 작업의 `conversationLogSettings` 필드를 사용하여 대화 로그를 활성화 및 비활성화합니다. 오디오 로그, 텍스트 로그 또는 둘 다 설정하거나 해제할 수 있습니다. 새 봇 세션에서 로깅이 시작됩니다. 로그 설정에 대한 변경 사항은 활성 세션에 반영되지 않습니다.

텍스트 로그를 저장하려면 AWS 계정에서 Amazon CloudWatch Logs 로그 그룹을 사용합니다. 유효한 로그 그룹 어느 것이든 사용할 수 있습니다. 로그 그룹은 Amazon Lex V2 봇과 동일한 리전에 있어야 합니다. CloudWatch 로그 로그 그룹 생성에 대한 자세한 내용을 알아보려면 *Amazon CloudWatch Logs 사용 설명서*의 [로그 그룹 및 로그 스트림 작업](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)을 참조하세요.

오디오 로그를 저장하려면 AWS 계정에 Amazon S3 버킷을 사용합니다. 유효한 S3 버킷 어느 것이든 사용할 수 있습니다. 버킷은 Amazon Lex V2 봇과 동일한 리전에 있어야 합니다. Amazon S3 버킷에 대한 자세한 내용은 *Amazon Simple Storage Service 시작 가이드*의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html)을 참조하세요.

콘솔을 사용하여 대화 로그를 관리하면 콘솔이 로그 그룹 및 S3 버킷에 액세스할 수 있도록 서비스 역할을 업데이트합니다.

콘솔을 사용하지 않는 경우, Amazon Lex V2가 구성된 로그 그룹 또는 버킷에 쓸 수 있도록 하는 정책을 IAM 역할 에 제공해야 합니다. 를 사용하여 서비스 연결 역할을 생성하는 경우 다음 예제와 같이 `custom-suffix` 옵션을 사용하여 역할에 사용자 지정 접미사를 추가 AWS Command Line Interface해야 합니다. 자세한 내용은 [대화 로그에 대한 IAM 역할 및 정책 생성](conversation-logs-policies.md#conversation-logs-role-and-policy) 단원을 참조하십시오.

```
aws iam create-service-linked-role \
    --aws-service-name lexv2.amazon.aws.com \
    --custom-suffix suffix
```

대화 로그를 활성화하는 데 사용하는 IAM 역할에 `iam:PassRole` 권한이 있어야 합니다. 다음 정책이 역할에 연결되어야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/role"
        }
    ]
}
```

------

## 대화 로그 활성화
<a name="conversation-logs-enable"></a>

**콘솔을 사용하여 로그를 활성화하려면**

1. [https://console.aws.amazon.com/lexv2](https://console.aws.amazon.com/lexv2)에서 Amazon Lex V2 콘솔을 엽니다.

1. 목록에서 봇을 선택합니다.

1. 왼쪽 메뉴에서 **별칭**을 선택합니다.

1. 별칭 목록에서 대화 로그를 구성할 별칭을 선택합니다.

1. **대화 로그** 섹션에서 **대화 로그 관리**를 선택합니다.

1. 텍스트 로그의 경우 **활성화**를 선택한 다음 Amazon CloudWatch Logs 로그 그룹 이름을 입력합니다.

1. 오디오 로그의 경우 **활성화**를 선택한 다음 S3 버킷 정보를 입력합니다.

1. 선택 사항. 오디오 로그를 암호화하려면 암호화에 사용할 AWS KMS 키를 선택합니다.

1. **저장**을 선택하여 대화 로깅을 시작합니다. 필요한 경우 Amazon Lex V2는 CloudWatch Logs 로그 그룹 및 선택한 S3 버킷에 액세스할 수 있는 권한으로 서비스 역할을 업데이트합니다.

## Lex V2에서 대화 로그 비활성화
<a name="conversation-logs-disable"></a>

**콘솔을 사용하여 로그를 해제하려면**

1. [https://console.aws.amazon.com/lexv2](https://console.aws.amazon.com/lexv2)에서 Amazon Lex V2 콘솔을 엽니다.

1. 목록에서 봇을 선택합니다.

1. 왼쪽 메뉴에서 **별칭**을 선택합니다.

1. 별칭 목록에서 대화 로그를 구성할 별칭을 선택합니다.

1. **대화 로그** 섹션에서 **대화 로그 관리**를 선택합니다.

1. 텍스트 로깅, 오디오 로깅 또는 둘 다를 비활성화하여 로깅을 끕니다.

1. 대화 로깅을 중지하려면 **저장**을 선택합니다.

# Lex V2에서 Amazon CloudWatch Logs를 사용한 텍스트 로그 보기
<a name="conversation-logs-cw"></a>

Amazon Lex V2는 Amazon CloudWatch Logs의 사용자 대화에 대한 텍스트 로그를 저장합니다. 로그를 보려면 콘솔이나 API를 사용하세요. 자세한 내용은 [필터 패턴을 사용한 로그 데이터 검색](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SearchDataFilterPattern.html) 및 *Amazon CloudWatch Logs 사용자 가이드*의 [CloudWatch Logs Insights 쿼리 구문](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)을 참조하세요.

**Amazon Lex V2 콘솔을 사용하여 로그를 보려면**

1. [https://console.aws.amazon.com/lexv2](https://console.aws.amazon.com/lexv2)에서 Amazon Lex V2 콘솔을 엽니다.

1. 목록에서 봇을 선택합니다.

1. 왼쪽 메뉴에서 **분석**을 선택한 다음 **CloudWatch 지표**를 선택합니다.

1. **CloudWatch 지표** 페이지에서 봇에 대한 지표를 확인하세요.

CloudWatch 콘솔이나 API를 사용하여 로그 항목을 볼 수도 있습니다. 로그 항목을 찾으려면 별칭에 대해 구성한 로그 그룹으로 이동합니다. Amazon Lex V2 콘솔 또는 [DescribeBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_DescribeBotAlias.html) 작업을 사용하여 로그의 로그 스트림 접두사를 찾을 수 있습니다.

사용자 발화에 대한 로그 항목은 여러 로그 스트림에서 찾을 수 있습니다. 대화의 표현에는 지정된 접두사가 있는 로그 스트림 중 하나의 항목이 있습니다. 로그 스트림의 항목에는 다음 정보가 있습니다.

메시지 버전  
메시지 스키마 버전입니다.

bot  
고객이 상호 작용하는 봇에 대한 세부 정보입니다.

messages  
봇이 사용자에게 다시 보낸 응답입니다.

utteranceContext  
이 발화 처리에 관한 정보입니다.  
+ `runtimeHints`—사용자 입력을 기록하고 해석하는 데 사용되는 런타임 컨텍스트입니다. 자세한 내용은 [대화에서 런타임 힌트를 통한 슬롯 값 인식 개선](using-hints.md) 단원을 참조하세요.
+ `slotElicitationStyle`—사용자 입력을 해석하는 데 사용되는 슬롯 유도 스타일입니다. 자세한 내용은 [대화하는 동안 맞춤법 스타일을 사용하여 슬롯 값 캡처](spelling-styles.md) 단원을 참조하세요.

sessionState  
사용자와 봇 간의 현재 대화 상태입니다. 자세한 내용은 [Amazon Lex V2 봇 대화 이해](managing-conversations.md) 단원을 참조하세요.

해석  
Amazon Lex V2에서 사용자의 의견을 만족시킬 수 있다고 판단한 의도 목록입니다. [신뢰도 점수를 사용하여 대화 정확도 향상](confidence-scores.md).

interpretationSource  
슬롯이 Amazon Lex V2 또는 Amazon Bedrock에 의해 확인되는지 여부를 나타냅니다. 값: Lex \$1 Bedrock

sessionId  
대화를 진행 중인 사용자 세션의 식별자입니다.

inputTranscript  
사용자의 입력 내용에 대한 트랜스크립션입니다.  
+ 텍스트 입력의 경우 사용자가 입력한 텍스트입니다. DTMF 입력의 경우 사용자가 입력하는 키입니다.
+ 음성 입력의 경우, 이 텍스트는 의도를 간접적으로 호출하거나 슬롯을 채우기 위해 Amazon Lex V2가 사용자 표현을 변환하는 텍스트입니다.

rawInputTranscript  
텍스트 처리가 적용되기 전 사용자 입력의 원본 대화 기록입니다. 참고: 텍스트 처리는 en-US 및 en-GB 로캘에만 해당됩니다.

transcriptions  
사용자 입력의 잠재적 트랜스크립션 목록입니다. 자세한 내용은 [음성 트랜스크립션 신뢰도 점수를 사용하여 Lex V2 봇에서 대화 향상](using-transcript-confidence-scores.md) 단원을 참조하세요.

rawTranscription  
음성 트랜스크립션 신뢰도 점수 사용. 자세한 내용은 [음성 트랜스크립션 신뢰도 점수를 사용하여 Lex V2 봇에서 대화 향상](using-transcript-confidence-scores.md) 단원을 참조하세요.

missedUtterance  
Amazon Lex V2가 사용자의 발화를 인식할 수 있었는지 여부를 나타냅니다.

requestId  
Amazon Lex V2는 사용자 입력을 위한 요청 ID를 생성했습니다.

timestamp  
사용자 입력의 타임스탬프.

developerOverride  
대화 코드 후크를 사용하여 대화 흐름을 업데이트했는지 여부를 나타냅니다. 대화 코드 후크 사용에 대한 자세한 내용은 [Amazon Lex V2 봇에 AWS Lambda함수 통합](lambda.md) 단원을 참조하세요.

inputMode  
입력 유형을 나타냅니다. 오디오, DTMF 또는 텍스트일 수 있습니다.

requestAttributes  
사용자 입력을 처리할 때 사용되는 요청 속성입니다.

audioProperties  
오디오 대화 로그가 활성화되어 있고 사용자 입력이 오디오 형식인 경우 오디오 입력의 총 지속 시간, 음성 지속 시간 및 오디오의 무음 지속 시간이 포함됩니다. 오디오 파일에 대한 링크도 포함되어 있습니다.

bargeIn  
사용자 입력으로 인해 이전 봇 응답이 중단되었는지 여부를 나타냅니다.

responseReason  
응답이 생성된 이유입니다. 다음 중 하나일 수 있습니다.  
+ `UtteranceResponse` – 사용자 입력에 대한 응답
+ `StartTimeout` – 사용자가 입력을 제공하지 않은 경우 서버에서 생성된 응답
+ `StillWaitingResponse` – 사용자가 봇 대기를 요청할 때 서버가 생성한 응답
+ `FulfillmentInitiated` – 이행이 시작되려 한다는 서버 생성 응답
+ `FulfillmentStartedResponse` – 이행이 시작되었다는 서버 생성 응답
+ `FulfillmentUpdateResponse` – 이행이 진행되는 동안 정기적으로 서버에서 생성되는 응답
+ `FulfillmentCompletedResponse` – 이행 완료 시 서버에서 생성된 응답.

operationName  
봇과 상호 작용하는 데 사용되는 API입니다. `PutSession`, `RecognizeText`, `RecognizeUtterance` 또는 `StartConversation` 중 하나일 수 있습니다.

```
{
    "message-version": "2.0",
    "bot": {
        "id": "string",
        "name": "string",
        "aliasId": "string",
        "aliasName": "string",
        "localeId": "string",
        "version": "string"
    },
    "messages": [
        {
            "contentType": "PlainText | SSML | CustomPayload | ImageResponseCard",
            "content": "string",
            "imageResponseCard": {
                "title": "string",
                "subtitle": "string",
                "imageUrl": "string",
                "buttonsList": [
                    {
                        "text": "string",
                        "value": "string"
                    }
                ]
            }
        }
    ],
    "utteranceContext": {
        "activeRuntimeHints": {
            "slotHints": {
                "string": {
                    "string": {
                        "runtimeHintValues": [
                            {
                                "phrase": "string"
                            },
                            {
                                "phrase": "string"
                            }
                        ]
                    }
                }
            }
        },
        "slotElicitationStyle": "string"
    },
    "sessionState": {
        "dialogAction": {
            "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot",
            "slotToElicit": "string"
        },
        "intent": {
            "name": "string",
            "slots": {
                "string": { 
                    "value": { 
                       "interpretedValue": "string",
                       "originalValue": "string",
                       "resolvedValues": [ "string" ]
                    }
                 },  
                "string": {
                    "shape": "List",
                    "value": {
                        "originalValue": "string",
                        "interpretedValue": "string",
                        "resolvedValues": [ "string" ]
                    },
                    "values": [
                        {
                            "shape": "Scalar",
                            "value": {
                                "originalValue": "string",
                                "interpretedValue": "string",
                                "resolvedValues": [ "string" ]
                            }
                        },
                        {
                            "shape": "Scalar",
                            "value": {
                                "originalValue": "string",
                                "interpretedValue": "string",
                                "resolvedValues": [ "string" ]
                            }
                        }
                    ]
                }
            },
            "kendraResponse": {
                // Only present when intent is KendraSearchIntent. For details, see 
                // https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax
                },
            "state": "InProgress | ReadyForFulfillment | Fulfilled | Failed",
            "confirmationState": "Confirmed | Denied | None"
        },
        "originatingRequestId": "string",
        "sessionAttributes": {
            "string": "string"
        },
        "runtimeHints": {
            "slotHints": {
                "string": {
                    "string": {
                        "runtimeHintValues": [
                            {
                                "phrase": "string"
                            },
                            {
                                "phrase": "string"
                            }
                        ]
                    }
                }
            }
        }
    },
   "dialogEventLogs": [
        {
	  // only for conditional
     "conditionalEvaluationResult":[
      // all the branches until true

     {
     "conditionalBranchName": "string",
     "expressionString": "string",
     "evaluatedExpression": "string",
     "evaluationResult": "true | false"
     }
    ],
  "dialogCodeHookInvocationLabel": "string",
  "response": "string",
  "nextStep": {
        "dialogAction": {
            "type": "Close | ConfirmIntent | Delegate | ElicitIntent | ElicitSlot",
            "slotToElicit": "string"
        },
	      "intent": {
                          "name": "string",
           "slots": {
               }
        }
       }
    ]
    "interpretations": [
        {
            "interpretationSource": "Bedrock | Lex",
            "nluConfidence": "string",
            "intent": {
                "name": "string",
                "slots": {
                    "string": {
                        "value": {
                            "originalValue": "string",
                            "interpretedValue": "string",
                            "resolvedValues": [ "string" ]
                        }
                    },
                    "string": {
                        "shape": "List",
                        "value": {
                            "interpretedValue": "string",
                            "originalValue": "string",
                            "resolvedValues": [ "string" ]
                        },
                        "values": [
                            {
                                "shape": "Scalar",
                                "value": {
                                    "interpretedValue": "string",
                                    "originalValue": "string",
                                    "resolvedValues": [ "string" ]
                                }
                            },
                            {
                                "shape": "Scalar",
                                "value": {
                                    "interpretedValue": "string",
                                    "originalValue": "string",
                                    "resolvedValues": [ "string" ]
                                }

                            }
                        ]
                    }
                },
                "kendraResponse": {
                    // Only present when intent is KendraSearchIntent. For details, see 
                    // https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html#API_Query_ResponseSyntax
                    },
                "state": "InProgress | ReadyForFulfillment | Fulfilled | Failed",
                "confirmationState": "Confirmed | Denied | None"
                },
            "sentimentResponse": {
                "sentiment": "string",
                "sentimentScore": {
                    "positive": "string",
                    "negative": "string",
                    "neutral": "string",
                    "mixed": "string"
                }
            }
        }
    ],
    "sessionId": "string",
    "inputTranscript": "string",
    "rawInputTranscript": "string",
    "transcriptions": [
        {
            "transcription": "string",
            "rawTranscription": "string",
            "transcriptionConfidence": "number",
            },
            "resolvedContext": {
                "intent": "string"
            },
            "resolvedSlots": {
                "string": {
                    "name": "slotName",
                    "shape": "List",
                    "value": { 
                        "originalValue": "string",
                        "resolvedValues": [
                            "string"
                        ]
                    }
                }
            }
        }
    ],
    "missedUtterance": "bool",
    "requestId": "string",
    "timestamp": "string",
    "developerOverride": "bool",
    "inputMode": "DTMF | Speech | Text",
    "requestAttributes": {
        "string": "string"
    },
    "audioProperties": {
        "contentType": "string",
        "s3Path": "string",
        "duration": {
            "total": "integer",
            "voice": "integer",
            "silence": "integer"
        }
    },
    "bargeIn": "string",
    "responseReason": "string",
    "operationName": "string"
}
```

로그 항목의 내용은 거래 결과와 봇 및 요청 구성에 따라 다릅니다.
+ `intent`, `slots`, `slotToElicit` 필드는 `missedUtterance` 필드가 `true`인 경우 항목에 나타나지 않습니다.
+ 오디오 로그가 비활성화되어 있거나 `inputDialogMode` 필드가 `Text`인 경우 `s3PathForAudio` 필드가 나타나지 않습니다.
+ `responseCard` 필드는 봇에 대한 응답 카드를 지정한 경우에만 나타납니다.
+ `requestAttributes` 맵은 요청에 지정된 속성이 있는 경우에만 나타납니다.
+ 이 `kendraResponse`필드는 `AMAZON.KendraSearchIntent`가 Amazon Kendra 인덱스 검색을 요청할 때만 표시됩니다.
+ 봇의 Lambda 함수에 대체 의도가 지정된 경우 이 `developerOverride` 필드는 참입니다.
+ `sessionAttributes` 맵은 요청에 지정된 세션 속성이 있는 경우에만 나타납니다.
+ `sentimentResponse` 맵은 사용자가 봇을 구성해 감정 값을 반환할 경우에만 나타납니다.

**참고**  
`messageVersion`에서 해당 내용을 변경하지 않아도 입력 형식을 변경할 수 있습니다. 새 필드가 있는 경우 코드에서 오류가 발생하면 안 됩니다.

# Amazon S3에서 오디오 로그에 액세스
<a name="conversation-logs-s3"></a>

Amazon Lex V2는 S3 버킷에 대화에 대한 오디오 로그를 보관합니다.

Amazon S3 콘솔 또는 API를 사용하여 오디오 로그에 액세스할 수 있습니다. Amazon Lex V2 콘솔 또는 `DescribeBotAlias` 작업 응답의 `conversationLogSettings` 필드에서 오디오 파일의 S3 객체 키 접두사를 볼 수 있습니다.

# CloudWatch 지표를 통해 대화 로그 상태 모니터링
<a name="conversation-logs-monitoring"></a>

Amazon CloudWatch 를 사용하여 대화 로그의 전달 지표를 모니터링합니다. 로깅 문제가 발생할 경우 이를 인식할 수 있도록 지표에 경보를 설정할 수 있습니다.

Amazon Lex V2에서는 대화 로그에 대한 `AWS/Lex` 네임스페이스에 다음과 같은 4개의 지표를 제공합니다.
+ `ConversationLogsAudioDeliverySuccess`
+ `ConversationLogsAudioDeliveryFailure`
+ `ConversationLogsTextDeliverySuccess`
+ `ConversationLogsTextDeliveryFailure`

성공 지표는 Amazon Lex V2가 대상에 오디오 또는 텍스트 로그를 성공적으로 작성했음을 보여줍니다.

실패 지표는 Amazon Lex V2가 지정된 대상에 오디오 또는 텍스트 로그를 전달할 수 없음을 보여줍니다. 일반적으로 이는 구성 오류입니다. 실패 지표가 0보다 높으면 다음을 확인하세요.
+ Amazon Lex V2가 IAM 역할에 대한 신뢰할 수 있는 엔터티인지 확인합니다.
+ 텍스트 로깅의 경우 CloudWatch 로그 로그 그룹이 있는지 확인합니다. 오디오 로깅의 경우 S3 버킷이 있는지 확인합니다.
+ Amazon Lex V2가 로그 그룹 또는 S3 버킷에 액세스하는 데 사용하는 IAM 역할에 로그 그룹 또는 버킷에 대한 쓰기 권한이 있는지 확인합니다.
+ S3 버킷이 Amazon Lex V2 봇과 동일한 리전에 존재하며, 사용자 계정에 속하는지 확인합니다.

# Lex V2에서 대화 로그의 슬롯 값 가리기
<a name="monitoring-obfuscate"></a>

Amazon Lex V2를 사용하면 슬롯의 내용이 표시되지 않도록 해당 내용을 난독화하거나 숨길 수 있습니다. 슬롯 값으로 캡처된 민감한 데이터를 보호하기 위해 슬롯 난독화 기능을 활성화하여 로깅에 대해 이러한 값을 마스킹할 수 있습니다.

슬롯 값을 난독화하도록 선택한 경우 Amazon Lex V2는 슬롯 값을 대화 로그의 슬롯 이름으로 바꿉니다. `full_name`이라는 슬롯의 경우 슬롯 값은 다음과 같이 난독화됩니다.

```
Before:
    My name is John Stiles
After:
    My name is {full_name}
```

발언에 괄호 문자(\$1\$1)가 있는 경우 Amazon Lex V2는 괄호 문자를 역슬래시 두 개(\$1\$1)로 이스케이프합니다. 예를 들어 텍스트 `{John Stiles}`는 다음과 같이 난독화됩니다.

```
Before:
    My name is {John Stiles}
After:
    My name is \\{{full_name}\\}
```

슬롯 값은 대화 로그에서 난독화됩니다. 슬롯 값은 `RecognizeText` 및 `RecognizeUtterance` 작업의 응답에서 계속 사용할 수 있으며, Lambda 함수의 유효성 검사 및 이행에 사용할 수 있습니다. 프롬프트 또는 응답에 슬롯 값을 사용하는 경우 이러한 슬롯 값은 대화 로그에서 난독화되지 않습니다.

대화의 첫 번째 차례에서 Amazon Lex V2가 발화의 슬롯 및 슬롯 값을 인식하면 슬롯 값을 난독화합니다. 슬롯 값이 인식되지 않으면 Amazon Lex V2는 발화를 난독화하지 않습니다.

두 번째 및 이후 차례에서 Amazon Lex V2는 유도할 슬롯과 슬롯 값을 난독화해야 하는지 여부를 알고 있습니다. Amazon Lex V2가 슬롯 값을 인식하면 값이 난독화됩니다. Amazon Lex V2가 값을 인식하지 못하면 전체 발언이 난독화됩니다. 누락된 표현의 슬롯 값은 난독화되지 않습니다.

또한 Amazon Lex V2는 요청 또는 세션 속성에 저장하는 슬롯 값을 난독화하지 않습니다. 속성으로 난독화해야 하는 슬롯 값을 저장하는 경우 값을 암호화하거나 난독화해야 합니다.

Amazon Lex V2는 오디오의 슬롯 값을 난독화하지 않으며, 오디오 트랜스크립션의 슬롯 값을 난독화합니다.

콘솔을 사용하거나 Amazon Lex V2 API를 사용하여 난독화할 슬롯을 선택할 수 있습니다. 콘솔의 슬롯에 대한 설정에서 **슬롯 난독화**를 선택합니다. API를 사용하는 경우 [CreateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateSlot.html) 또는 [UpdateSlot](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_UpdateSlot.html) 작업을 직접적으로 호출할 때 슬롯의 `obfuscationSetting` 필드를 `DEFAULT_OBFUSCATION`으로 설정합니다.

# Lex V2에서 선택적 대화 로그 캡처
<a name="monitoring-selective-logging"></a>

선택적 대화 로그 캡처를 통해 사용자는 실시간 대화의 텍스트 및 오디오 데이터와 함께 대화 로그를 캡처하는 방법을 선택할 수 있습니다.

선택적 대화 로그 캡처 기능의 출력을 활성화하고 캡처하려면 Amazon Lex V2 콘솔에서 기능을 활성화하고 API 설정에서 필수 세션 속성을 활성화하여 로그에서 선택한 출력을 캡처해야 합니다.

선택적 대화 로그 캡처를 위해 다음 옵션을 선택할 수 있습니다.
+ 텍스트 전용
+ 오디오 전용
+ 텍스트 및 오디오

대화의 특정 부분을 캡처하고 대화 로그에 오디오, 텍스트 또는 둘 다 캡처할지 선택할 수 있습니다.

**참고**  
선택적 대화 로그 캡처는 Amazon Lex V2에서만 작동합니다.

**Topics**
+ [선택적 대화 로그 캡처를 관리합니다.](manage-selective-logging.md)
+ [선택적 대화 로그 캡처의 예](example-selective-logging.md)

# 선택적 대화 로그 캡처를 관리합니다.
<a name="manage-selective-logging"></a>

Lex 콘솔을 사용하여 선택적 대화 로그 캡처 설정을 활성화하고 선택적 대화 로그 캡처 기능을 활성화할 슬롯을 선택할 수 있습니다.

**Amazon Lex V2 콘솔에서 선택적 대화 로그 캡처 활성화:**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/lexv2/home](https://console.aws.amazon.com/lexv2/home) Amazon Lex V2 콘솔을 엽니다.

1. 왼쪽 패널에서 **봇**을 선택하고 선택적 대화 로그 캡처를 활성화하려는 봇을 선택합니다. 기존 봇을 사용하거나 새 봇을 만듭니다.

1. 왼쪽 패널의 **배포** 섹션에서 선택한 봇의 **별칭**을 선택합니다.

1. 봇의 별칭을 선택한 다음 **대화 로그 관리**를 선택합니다.

1. **대화 로그 관리** 패널의 **텍스트 로그**의 경우 라디오 버튼을 선택하여 텍스트 로그의 활성화 또는 비활성화 여부를 선택합니다. 텍스트 로그 **활성화**를 선택한 경우 **로그 그룹 이름**을 입력하거나 드롭다운 메뉴에서 기존 로그 그룹 이름을 선택해야 합니다. 텍스트 파일을 선택적으로 로깅하려면 **선택적으로 발화 로그** 확인란을 선택합니다.
**참고**  
빌드 타임 **BotAlias** 설정에서 **대화 로그 설정**(텍스트 및/또는 오디오)에서 **선택적으로 발화 로그** 확인란을 선택하여 텍스트 및/또는 오디오 로그를 활성화합니다. 이 옵션을 선택하려면 CloudWatch 로그 그룹과 Amazon S3 버킷을 구성해야 합니다.

1. **오디오 로그** 섹션에서 라디오 버튼을 선택하여 오디오 로그의 활성화 또는 비활성화 여부를 선택합니다. 오디오 로그 **활성화**를 선택한 경우 Amazon S3 버킷 위치와 오디오 데이터 암호화를 위한 KMS 키(선택 사항)를 지정해야 합니다. 오디오 파일을 선택적으로 로깅하려면 **선택적으로 발화 로그** 확인란을 선택합니다.  
![\[대화 로그 관리를 위한 패널.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/logging/selective-manage-logs.png)

1. 패널 오른쪽 하단에 있는 **저장**을 선택하여 선택적 대화 로그 캡처 설정을 저장합니다.

**Amazon Lex V2 콘솔에서 선택적 대화 로그 캡처 활성화:**

1. **의도**로 이동하여 **의도 이름**, **초기 응답**, **고급 설정**, **값 설정**, **세션 속성**을 선택합니다.

1. 선택적 대화 로그 캡처를 활성화하려는 의도와 슬롯을 기반으로 다음 속성을 설정합니다.
   + `x-amz-lex:enable-audio-logging:intent:slot = "true"`
   + `x-amz-lex:enable-text-logging:intent:slot = "true"`  
![\[선택적 세션 속성을 추가하기 위한 패널.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/logging/selective-session-attributes.png)
**참고**  
대화의 특정 슬롯만 포함하는 발화를 캡처하도록 `x-amz-lex:enable-audio-logging:intent:slot = "true"`를 설정합니다. 발화를 기록하는 작업은 세션 속성 식과 비교하여 발화 내의 *의도 *:*슬롯* 평가 및 해당 플래그 값에 따라 달라집니다. 발화를 기록하려면 세션 속성에서 하나 이상의 표현식이 이를 허용하고 로깅 활성화 플래그가 `true`로 설정되어 있어야 합니다. *의도*와 *슬롯*의 값도 `"*"`이 될 수 있습니다. 슬롯 및/또는 의도 값이 `"*"`이면 `"*"`의 모든 슬롯 및/또는 의도 값이 일치함을 의미합니다. `x-amz-lex:enable-audio-logging`과 마찬가지로 `x-amz-lex:enable-text-logging`이라는 새 세션 속성이 텍스트 로그를 제어하는 데 사용됩니다.

1. **업데이트 옵션**을 선택하고 업데이트된 설정을 포함하도록 봇을 빌드합니다.

**참고**  
IAM 역할에는 Amazon S3 버킷에 데이터를 쓰고 KMS 키를 사용하여 데이터를 암호화할 수 있는 액세스 권한이 있어야 합니다. Lex는 CloudWatch Logs 로그 그룹 및 선택한 Amazon S3 버킷에 액세스할 수 있는 Lex 권한으로 IAM 역할을 업데이트합니다.

**선택적 대화 로그 캡처 사용 지침:**

**대화 로그 설정**에서 텍스트 및/또는 오디오 로그를 활성화한 경우에만 텍스트 및/또는 오디오 로그에 대한 선택적 대화 로그 캡처를 활성화할 수 있습니다. 텍스트 및/또는 오디오 로그에 대한 선택적 대화 로그 캡처를 활성화하면 대화의 모든 의도와 슬롯에 대한 로깅이 비활성화됩니다. 특정 의도와 슬롯에 대한 텍스트 및/또는 오디오 로그를 생성하려면 해당 의도와 슬롯에 대한 텍스트 및/또는 오디오 선택적 대화 로그 캡처 세션 속성을 “true”로 설정해야 합니다.
+ 선택적 대화 로그 캡처가 활성화되어 있고 x-amz-lex:enable-audio-loging이라는 접두사를 가진 세션 속성이 없는 경우 모든 발화에 대해 기본적으로 로깅이 비활성화됩니다. 이 시나리오는 x-amz-lex:enable-text-loging의 경우에도 마찬가지입니다.
+ 세션 속성에 있는 식이 하나 이상 허용하는 경우 발화 로그는 텍스트 및/또는 오디오 대화의 세그먼트에만 저장됩니다.
+ 세션 속성에 정의된 텍스트 및/또는 오디오의 선택적 대화 로그 캡처 구성은 봇 별칭 내 대화 로그 설정에서 텍스트 및/또는 오디오에 대한 선택적 대화 로그 캡처를 활성화한 경우에만 유효합니다. 그러지 않으면 세션 속성은 무시됩니다.
+ 선택적 대화 로그 캡처가 활성화되면 세션 속성을 사용하여 로깅이 활성화되지 않은 SessionState, 해석 및 트랜스크립션의 모든 슬롯 값이 생성된 텍스트 로그에서 난독 처리됩니다.
+ 사용자가 의도 도출과 함께 슬롯 값을 제공할 수 있는 의도 도출 턴을 제외하고 봇이 유도한 슬롯을 선택적 대화 로그 캡처 세션 속성과 일치시켜 오디오 및/또는 텍스트 로그를 생성할지 여부를 결정합니다. 의도 추출 턴에서는 현재 턴에 채워진 슬롯이 선택적 대화 로그 캡처 세션 속성과 매칭됩니다.
+ 채워진 것으로 간주되는 슬롯은 턴 종료 시점의 세션 상태에서 파생됩니다. 따라서 Dialog Codehook Lambda가 세션 상태의 슬롯을 변경하면 선택적 대화 로그 캡처 동작에 영향을 줍니다.
+ 의도 유도 턴에서 사용자가 여러 슬롯 값을 제공하면 텍스트 및 오디오 세션 속성이 해당 턴에 채워진 모든 슬롯에 대한 로깅을 허용하는 경우에만 텍스트 및/또는 오디오 로그가 생성됩니다.
+ 권장되는 운영 접근 방식은 세션 시작 시 선택적 대화 로그 캡처 세션 속성을 설정하고 세션 중에는 수정하지 않는 것입니다.
+ 민감한 데이터가 포함된 슬롯이 있는 경우 항상 슬롯 난독화 기능을 활성화해야 합니다.

# 선택적 대화 로그 캡처의 예
<a name="example-selective-logging"></a>

다음은 선택적 대화 로그 캡처에 대한 비즈니스 사용 사례의 예입니다.

**사용 사례:**

한 핀테크 회사는 Amazon Lex V2 봇을 사용하여 사용자가 청구서를 결제할 수 있는 IVR 시스템을 지원합니다. 규정 준수 및 감사 요구 사항을 충족하려면 사용자가 제공한 승인 동의의 오디오 녹음을 보관해야 합니다. 그러나 일반 오디오 로그를 활성화하면 오디오 로그의 CardNumber, CVV 및 기타 정보와 같은 민감한 슬롯을 난독화할 수 없기 때문에 규정을 준수하지 않게 되므로 활성화할 수 없습니다. 대신 오디오 로그에 대한 선택적 대화 로그 캡처를 활성화하고 권한 부여가 승인된 발화에 대한 오디오 로그만 생성하도록 세션 속성을 설정할 수 있습니다.

**BotAlias 설정:**
+ 텍스트 로그 활성화: true 
+ 텍스트 로그 선택적 로깅 활성화: false
+ 오디오 로그 활성화: true 
+ 오디오 로그 선택적 로깅 활성화: true 

**세션 속성:**

`x-amz-lex:enable-audio-logging:PayBill:AuthorizationConsent = "true"`

**샘플 대화:**
+ 사용자(오디오 입력): “청구서 번호 35XU68로 청구서를 결제하고 싶어요.”
+ 봇: “납부해야 할 금액은 달러로 얼마인가요?”
+ 사용자(오디오 입력): "235."
+ 봇: “신용카드 번호가 뭔가요?”
+ 사용자(오디오 입력): "9239829722200348."
+ 봇: “0348로 끝나는 신용 카드 번호를 사용하여 235 달러를 지불하겠습니다. '235 달러 결제를 승인했습니다'라고 말해 주세요.”
+ 사용자(오디오 입력): “235 달러 결제를 승인합니다.”
+ 봇: “청구서가 결제되었습니다.”

**대화 로그 출력: **

이 경우 모든 턴에 대해 텍스트 로그가 생성됩니다. 하지만 오디오 로그는 **PayBill** 의도 내 **AuthorizationConcept** 슬롯이 요청된 특정 턴에 대해서만 기록되며, 다른 턴에 대해서는 오디오 로그가 생성되지 않습니다.

# Lex V2의 오류 로그로 오류 로깅
<a name="error-logs"></a>

*오류 로그*를 활성화하여 봇 상호 작용을 저장합니다. 이러한 오류 로그를 사용하여 봇의 성능을 검토하고 대화 관련 오류를 해결할 수 있습니다.

오류 로그는 버전에 맞추어 구성됩니다. 버전마다 오류 로그에 대한 설정이 다를 수 있습니다. 텍스트 로그는 CloudWatch Logs에 텍스트 입력을 저장합니다. AWS KMS 고객 관리형 CMK를 사용하여 텍스트 로그의 암호화를 활성화할 수 있습니다.

## 오류 로그에 대한 IAM 정책
<a name="error-logs-policies"></a>

선택하는 로깅 유형에 따라, Amazon Lex V2는 Amazon CloudWatch Logs 및 S3(Amazon Simple Storage Service) 버킷을 사용해 로그를 보관할 권한이 필요합니다. Amazon Lex V2가 이러한 리소스에 액세스할 수 있도록 AWS Identity and Access Management 역할 및 권한을 생성해야 합니다.

### 오류 로그에 대한 IAM 역할 및 정책 생성
<a name="error-logs-role-and-policy"></a>

대화 로그를 활성화하려면, CloudWatch Logs 및 Amazon S3 에 대한 쓰기 권한을 부여해야 합니다. S3 객체에 대해 객체 암호화를 활성화하는 경우 객체를 암호화하는 데 사용되는 AWS KMS 키에 액세스 권한을 부여해야 합니다.

IAM 콘솔, IAM API 또는를 사용하여 역할 및 정책을 AWS Command Line Interface 생성할 수 있습니다. 여기에 나온 지침에서는 AWS CLI를 사용하여 역할과 정책을 생성합니다.

****오류 로그에 대한 IAM 역할 생성

대화 로그를 활성화하는 데 사용하는 IAM 역할에 iam:PassRole 권한이 있어야 합니다. 다음 정책이 역할에 연결되어야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/role"
        }
    ]
}
```

------

## Lex V2에서 오류 로그 활성화
<a name="enabling-error-logs"></a>

Amazon Lex V2 콘솔을 사용하여 로그를 활성화하는 방법:

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/)에서 Amazon Lex 콘솔을 엽니다.

1. **봇** 목록에서 오류 로그에 대해 활성화할 봇을 선택합니다.

1. 왼쪽 메뉴에서 **버전**을 선택합니다.

1. **버전** 목록에서 오류 로그를 구성할 버전을 선택합니다.

1. **버전 세부 정보** 섹션에서 **활성화**를 선택합니다.

1. **저장**을 선택하여 대화 로깅을 시작합니다. 필요한 경우 Amazon Lex V2는 CloudWatch Logs 로그 그룹에 액세스할 수 있는 권한으로 서비스 역할을 업데이트합니다.

## Lex V2에서 오류 로그 비활성화
<a name="disabling-error-logs"></a>

Amazon Lex V2 콘솔을 사용하여 로그를 비활성화하는 방법:

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/)에서 Amazon Lex 콘솔을 엽니다.

1. **봇** 목록에서 오류 로그에 대해 활성화할 봇을 선택합니다.

1. 왼쪽 메뉴에서 **버전**을 선택합니다.

1. **버전** 목록에서 오류 로그를 구성할 버전을 선택합니다.

1. **버전 세부 정보** 섹션에서 **비활성화**를 선택합니다.

1. 대화 로깅을 중지하려면 **저장**을 선택합니다.

# Lex V2의 운영 지표 모니터링
<a name="monitoring-operational-metrics"></a>

Amazon CloudWatch 및 AWS CloudTrail 는 봇과의 사용자 상호 작용을 모니터링하는 데 도움이 되도록 Amazon Lex V2와 통합되는 두 가지 AWS 서비스입니다. 이러한 서비스를 사용하여 작업을 기록하고, 거의 실시간으로 데이터를 전송하고, 기준 충족 시 알림 및 자동 작업을 설정할 수 있습니다.

**Topics**
+ [Amazon CloudWatch로 운영 지표 측정](monitoring-cloudwatch.md)
+ [Lex V2 AWS CloudTrail 용를 사용하여 이벤트 보기](logging-using-cloudtrail.md)

# Amazon CloudWatch로 운영 지표 측정
<a name="monitoring-cloudwatch"></a>

원시 데이터를 수집하여 읽기 가능하며 실시간에 가까운 지표로 처리하는 CloudWatch를 사용하여 Amazon Lex V2를 모니터링할 수 있습니다. 이러한 통계는 15개월간 보관되므로 기록 정보에 액세스하고 웹 애플리케이션 또는 서비스가 어떻게 실행되고 있는지 전체적으로 더 잘 파악할 수 있습니다. 특정 임곗값을 주시하다가 해당 임곗값이 충족될 때 알림을 전송하거나 조치를 취하도록 경보를 설정할 수도 있습니다. 자세한 내용은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)를 참조하세요.

Amazon Lex V2 서비스는 `AWS/Lex` 네임스페이스에서 다음 지표를 보고합니다.


| 지표 | 설명 | 
| --- | --- | 
|  `AssistedSlotResolutionModelAccessDeniedErrorCount`  |  Amazon Lex V2가 Amazon Bedrock에 대한 액세스가 거부된 횟수 `RecognizeUtterance` 및 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) `RecognizeText`의 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `AssistedSlotResolutionModelInvocationCount`  |  Amazon Bedrock이 간접적으로 호출된 횟수입니다. `RecognizeUtterance` 및 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) `RecognizeText`의 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `AssistedSlotResolutionModelSystemErrorCount`  |  Amazon Bedrock에 전화할 때 5xx가 발생한 횟수입니다. `RecognizeUtterance` 및 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) `RecognizeText`의 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `AssistedSlotResolutionModelThrottlingErrorCount`  |  Amazon Lex가 Amazon Bedrock에 의해 제한된 횟수입니다. `RecognizeUtterance` 및 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) `RecognizeText`의 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `AssistedSlotResolutionResolvedSlotCount`  |  Amazon Bedrock이 슬롯 값을 반환한 횟수입니다. `RecognizeUtterance` 및 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) `RecognizeText`의 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `KendraIndexAccessError`  |  Amazon Lex V2가 Amazon Kendra 인덱스에 액세스할 수 없는 횟수입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `KendraLatency`  |  Amazon Kendra가 `AMAZON.KendraSearchIntent`의 요청에 응답하는 데 걸리는 시간입니다. 유효한 차원:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 밀리초  | 
|  `KendraSuccess`  |  Amazon Lex V2가 Amazon Kendra 인덱스에 액세스할 수 없는 횟수입니다. 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `KendraSystemErrors`  |  Amazon Lex V2가 Amazon Kendra 인덱스에 액세스할 수 없는 횟수입니다. 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `KendraThrottledEvents`  |  Amazon Kendra 가 `AMAZON.KendraSearchIntent`의 요청을 제한한 횟수입니다. 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `RuntimeConcurrency`  |  지정된 기간 동안 동시 연결 수. `RuntimeConcurrency`은 `StatisticSet`로 보고됩니다. `RecognizeUtterance` 또는 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 작업에 대한 유효 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `RuntimeInvalidLambdaResponses`  |  지정된 기간 동안 유효하지 않은 AWS Lambda 응답 수입니다. 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `RuntimeLambdaErrors`  |  지정된 기간에 발생한 Lambda 런타임 오류 수입니다. 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `RuntimePollyErrors`  |  지정된 기간 동안 유효하지 않은 Amazon Polly 응답 수입니다. 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `RuntimeRequestCount`  |  지정된 기간의 실행 시간 요청 수입니다. `RecognizeUtterance` 및 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 작업에 대한 유효 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
| `RuntimeRequestLength` | Amazon Lex V2 봇과의 총 대화 시간입니다. [StartConversation](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_StartConversation.html) 작업에만 적용할 수 있습니다. 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 밀리초 | 
|  `RuntimeSucessfulRequestLatency`  이 지표는 `RuntimeSucessfulRequestLatency`이며, `RuntimeSuccessfulRequestLatency`가 아닙니다.   |  요청 시간과 응답이 다시 전달된 시간 사이의 성공한 요청에 대한 지연 시간입니다. `RecognizeUtterance` 및 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 작업에 대한 유효 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 밀리초  | 
|  `RuntimeSystemErrors`  |  지정된 기간에 발생한 시스템 오류 수입니다. 시스템 오류의 응답 코드 범위는 500\$1599입니다. `RecognizeUtterance` 및 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 작업에 대한 유효 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `RuntimeThrottledEvents`  |  제한된 이벤트 수. Amazon Lex V2는 계정에 대해 설정된 초당 트랜잭션 한도 이상의 요청이 수신되면 이벤트를 제한합니다. 계정에 대해 설정된 한도가 자주 초과되면 한도 증가를 요청할 수 있습니다. 증가를 요청하려면 [AWS 서비스 한도](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)를 참조하세요. `RecognizeUtterance` 및 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 작업에 대한 유효 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 
|  `RuntimeUserErrors`  |  지정된 기간에 발생한 사용자 오류 수입니다. 사용자 오류의 응답 코드 범위는 400\$1499입니다. `RecognizeUtterance` 및 `StartConversation` 작업에 대한 유효한 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 작업에 대한 유효 차원: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/monitoring-cloudwatch.html) 단위: 수  | 

Amazon Lex V2 지표에 다음 차원을 지원합니다.


|  차원  |  설명  | 
| --- | --- | 
|  Operation  |  항목을 생성한 Amazon Lex V2 작업의 이름(`RecognizeText`, `RecognizeUtterance`, `StartConversation`, `GetSession`, `PutSession`, `DeleteSession`).  | 
|  BotId  |  봇의 영숫자 고유 식별자입니다.  | 
|  BotAliasId  |  봇 별칭의 영숫자 고유 식별자입니다.  | 
|  BotVersion  |  봇의 숫자 버전입니다.  | 
|  InputMode  |  봇에 대한 입력 유형 - 음성, 텍스트 또는 DTMF.  | 
|  LocaleId  |  봇 로캘의 식별자(예: en-US 또는 FR-CA).  | 
|  Model  |  Amazon Bedrock 대형 언어 모델의 모델 ID를 나타냅니다.  | 
|  ModelType  |  Amazon Bedrock에서 간접적으로 호출되는 대규모 언어 모델 유형을 나타냅니다.  | 

# Lex V2 AWS CloudTrail 용를 사용하여 이벤트 보기
<a name="logging-using-cloudtrail"></a>

Amazon Lex V2는 Amazon Lex V2에서 사용자 AWS CloudTrail, 역할 또는 AWS 서비스가 수행한 작업에 대한 레코드를 제공하는 서비스와 통합됩니다. CloudTrail은 Amazon Lex V2에 대한 API 직접 호출을 이벤트로 캡처합니다. 캡처되는 직접 호출에는 Amazon Lex V2 콘솔로부터의 직접 호출과 Amazon Lex V2 API 작업에 대한 코드 직접 호출이 포함됩니다. 추적을 생성하면 Amazon Lex V2 이벤트를 포함한 CloudTrail 이벤트를 지속적으로 Amazon S3 버킷에 배포할 수 있습니다. 추적을 구성하지 않은 경우에도 **이벤트 기록**에서 CloudTrail 콘솔의 최신 이벤트를 볼 수 있습니다. CloudTrail에서 수집한 정보를 사용하여 Amazon Lex V2에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.

CloudTrail에 대한 자세한 내용은 [AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)를 참조하세요.

## CloudTrail의 Amazon Lex V2 정보
<a name="lex-info-in-cloudtrail"></a>

CloudTrail은 계정 생성 시 AWS 계정에서 활성화됩니다. Amazon Lex V2에서 활동이 발생하면 해당 활동이 **이벤트 기록**의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최신 이벤트를 확인, 검색 및 다운로드할 수 있습니다. 자세한 내용은 [CloudTrail 이벤트 기록을 사용하여 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

Amazon Lex V2에 대한 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. CloudTrail은 *추적*을 사용하여 Amazon S3 버킷으로 로그 파일을 전송할 수 있습니다. 콘솔에서 추적을 생성하면 기본적으로 모든 리전에 추적이 적용됩니다. 추적은 AWS 파티션에 있는 모든 리전의 이벤트를 로그하고 지정한 Amazon S3 버킷으로 로그 파일을 전송합니다. 또는 CloudTrail 로그에서 수집된 이벤트 데이터를 추가 분석 및 처리하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.
+ [추적 생성 개요](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 지원 서비스 및 통합](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html)
+ [CloudTrail에 대한 Amazon SNS 알림 구성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/configure-sns-notifications-for-cloudtrail.html)
+ [여러 리전에서 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 및 [여러 계정에서 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Amazon Lex V2는 [Model Building API V2](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_Operations_Amazon_Lex_Model_Building_V2.html)에 나열된 모든 작업에 대한 로깅을 지원합니다.

모든 이벤트 또는 로그 항목에는 요청을 생성했던 사용자에 관한 정보가 포함됩니다. ID 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
+ 요청이 루트 또는 AWS Identity and Access Management IAM 사용자 자격 증명으로 이루어졌는지 여부입니다.
+ 역할 또는 페더레이션 사용자의 임시 자격 증명을 사용하여 요청이 생성되었는지 여부.
+ 다른 AWS 서비스에서 요청했는지 여부.

자세한 내용은 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하세요.

## Amazon Lex V2 로그 파일 항목 이해
<a name="understanding-service-name-entries"></a>

트레일이란 지정한 S3 버킷에 이벤트를 로그 파일로 입력할 수 있게 하는 구성입니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 모든 소스로부터의 단일 요청을 나타내며 요청 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보가 들어 있습니다. CloudTrail 로그 파일은 퍼블릭 API 직접 호출의 주문 스택 트레이스가 아니므로 특정 순서로 표시되지 않습니다.

다음 예는 [CreateBotAlias](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_CreateBotAlias.html) 작업을 설명하는 CloudTrail 로그 항목을 보여줍니다.

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "ID of caller:temporary credentials",
        "arn": "arn:aws:sts::111122223333:assumed-role/role name/role ARN",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "ID of caller",
                "arn": "arn:aws:iam::111122223333:role/role name",
                "accountId": "111122223333",
                "userName": "role name"
            },
            "webIdFederationData": {},
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "creation date"
            }
        }
    },
    "eventTime": "event timestamp",
    "eventSource": "lex.amazonaws.com",
    "eventName": "CreateBotAlias",
    "awsRegion": "Region",
    "sourceIPAddress": "192.0.2.0",
    "userAgent": "user agent",
    "requestParameters": {
        "botAliasLocaleSettingsMap": {
            "en_US": {
                "enabled": true
            }
        },
        "botId": "bot ID",
        "botAliasName": "bot aliase name",
        "botVersion": "1"
    },
    "responseElements": {
        "botAliasLocaleSettingsMap": {
            "en_US": {
                "enabled": true
            }
        },
        "botAliasId": "bot alias ID",
        "botAliasName": "bot alias name",
        "botId": "bot ID",
        "botVersion": "1",
        "creationDateTime": creation timestamp
    },
    "requestID": "unique request ID",
    "eventID": "unique event ID",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

# Test Workbench를 통한 Lex V2 봇 성능 평가
<a name="test-workbench"></a>

봇 성능을 향상시키기 위해 봇의 성능을 대규모로 평가할 수 있습니다. 테스트 평가 결과는 간단한 표와 차트로 표시됩니다.

Test Workbench를 사용하여 기존 트랜스크립션 데이터를 사용하는 참조 테스트 세트를 만들 수 있습니다. 봇을 테스트하여 배포 전에 성능을 평가하고 테스트 결과를 대규모로 분류하여 확인할 수 있습니다.

![\[Test Workbench를 사용하여 봇 정확도를 개선하기 위한 워크플로 다이어그램.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/testworkbench-workflow.png)


사용자는 Test Workbench를 사용하여 봇의 기준 성능을 설정할 수 있습니다. 여기에는 단일 입력 또는 대화 형식의 발화에 대한 의도 및 슬롯 성능이 포함됩니다. 테스트 세트가 성공적으로 로드되면 기존 프리프로덕션 또는 프로덕션 봇을 대상으로 테스트 세트를 실행할 수 있습니다. Test Workbench를 사용하면 슬롯 채우기 및 의도 분류를 개선할 기회를 식별할 수 있습니다.

**Topics**
+ [Test Workbench용 테스트 세트 생성](test-sets.md)
+ [테스트 세트 관리](manage-test-sets.md)
+ [테스트 실행](execute-test-set.md)
+ [Test Workbench의 테스트 세트 적용 범위](validation-test-set.md)
+ [테스트 결과 보기](test-results-test-set.md)
+ [Test Workbench의 테스트 결과 세부 정보](test-results-details-test-set.md)

# Test Workbench용 테스트 세트 생성
<a name="test-sets"></a>

테스트 세트를 만들어 봇의 성능을 평가할 수 있습니다. CSV 파일 형식의 테스트 세트를 업로드하거나 [대화 로그](https://docs.aws.amazon.com/lexv2/latest/dg/conversation-logs.html)에서 테스트 세트를 생성하여 테스트 세트를 생성합니다. 테스트 세트는 오디오 또는 텍스트 입력을 포함할 수 있습니다.

![\[Test Workbench로 테스트 세트를 만드세요.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-create.png)


테스트 세트에서 검증 오류가 발생하는 경우 테스트 세트를 제거하고 다른 테스트 세트 데이터 목록으로 바꾸거나 스프레드시트 편집 프로그램을 사용하여 CSV 파일의 데이터를 편집하세요.

**테스트 세트를 생성하려면:**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/)에서 Amazon Lex 콘솔을 엽니다.

1. 왼쪽 패널에서 **Test Workbench**를 선택합니다.

1. Test Workbench의 옵션에서 **테스트 세트**를 선택합니다.

1. 콘솔에서 **테스트 세트 생성** 버튼을 선택합니다.

1. **세부 정보**에서 테스트 세트 이름과 선택적 설명을 입력합니다.

1. **베이스라인 테스트 세트 생성**을 선택합니다.

1. **대화 로그에서 생성**을 선택합니다.

1. 드롭다운 메뉴에서 **봇 이름**, **봇 별칭**, **언어**를 선택합니다.

1. 대화 로그에서 기준 테스트를 생성하는 경우 필요에 따라 **시간 범위** 및 **IAM 역할**을 선택합니다. Amazon Lex V2에 사용되는 기본 권한으로 역할을 생성하거나 기존 역할을 사용할 수 있습니다.

1. 생성 중인 테스트 세트에 사용할 **오디오** 또는 **텍스트** 모드를 선택합니다. 참고: Test Workbench는 최대 5만 개의 텍스트 파일과 최대 5시간 분량의 오디오를 가져올 수 있습니다.

1. 테스트 결과를 저장할 Amazon S3 위치를 선택하고 출력 스크립트를 암호화하기 위한 선택적 KMS 키를 추가합니다.

1. **생성**을 선택합니다.

**기존 테스트 세트를 CSV 파일 형식으로 업로드하거나 테스트 세트를 업데이트하려면:**

1. 왼쪽 패널에서 **Test Workbench**를 선택합니다.

1. Test Workbench의 옵션에서 **테스트 세트**를 선택합니다.

1. 콘솔에서 **이 테스트 세트에 파일 업로드**를 선택합니다.

1. **Amazon Amazon S3 버킷에서 업로드** 또는 **컴퓨터에서 업로드**를 선택합니다. 참고: 템플릿으로 만든 CSV 파일을 업로드할 수 있습니다. **CSV 템플릿**을 클릭하여 템플릿이 포함된 zip 파일을 다운로드합니다.

1. **기본 Amazon Lex 권한으로 역할 생성** 또는 **역할 ARN에 기존 역할 사용**을 선택합니다.

1. 생성 중인 테스트 세트에 사용할 **오디오** 또는 **텍스트** 모드를 선택합니다. 참고: Test Workbench는 최대 5만 개의 텍스트 파일과 최대 5시간 분량의 오디오를 가져올 수 있습니다.

1. 테스트 결과를 저장할 Amazon S3 위치를 선택하고 출력 스크립트를 암호화하기 위한 선택적 KMS 키를 추가합니다.

1. **생성**을 선택합니다.

작업이 성공하면 테스트 세트를 테스트할 준비가 되었다는 확인 메시지가 나타나고 상태는 **테스트 준비 완료**로 표시됩니다.

# 성공적인 테스트 세트를 만들기 위한 팁
<a name="tips-create-test-set"></a>
+ 콘솔에서 Test Workbench의 IAM 역할을 만들거나 IAM 역할을 단계별로 구성할 수 있습니다. 자세한 내용은 [Test Workbench용 IAM 역할 생성](https://docs.aws.amazon.com/lexv2/latest/dg/create-iam-test-set.html)을 참조하세요.
+ 테스트를 실행하기 전에 **불일치 검증** 버튼을 사용하여 테스트 세트와 봇 정의에 불일치가 있는지 검증하세요. 테스트 세트에 사용된 의도 및 슬롯 이름 지정 규칙이 봇과 일치하면 테스트를 진행하세요. 예외가 식별되면 테스트 세트를 수정하고 테스트 세트를 업데이트한 다음 **불일치 검증**을 선택합니다. 불일치가 발견되지 않을 때까지 이 순서를 다시 반복한 다음 테스트를 실행하세요.
+ Test Workbench는 **예상 출력 슬롯** 열에서 다양한 슬롯 값 형식을 사용하여 테스트할 수 있습니다. 모든 기본 제공 슬롯의 경우 사용자 입력에 제공된 값(예: 날짜 = 내일)을 선택하거나 절대 해결 값(예: 날짜 = 2023-03-21)을 제공할 수 있습니다. 기본 제공 기본 제공 슬롯 및 절대값에 대한 자세한 내용은 [기본 제공 슬롯](https://docs.aws.amazon.com/lexv2/latest/dg/howitworks-builtins-slots.html)을 참조하세요.
+  **예상 출력 슬롯** 열의 일관성과 가독성을 높이려면 등호 앞뒤에 공백을 두고 'SlotName = SlotValue' 규칙(예: AppointmentType = cleaning)을 따르세요.
+ 봇에 복합 슬롯이 포함된 경우 **예상 출력 슬롯**에서 슬롯 이름의 하위 슬롯을 마침표로 구분하여 정의합니다 (예: “Car.Color”). 다른 구문과 문장 부호는 사용할 수 없습니다.
+ 봇에 다중 값 슬롯이 포함된 경우 **예상 출력 슬롯**에 여러 슬롯 값을 쉼표로 구분하여 입력합니다("FlowerType = roses, lilies"). 다른 구문과 문장 부호는 사용할 수 없습니다.
+ 테스트 세트가 유효한 대화 로그에서 생성되었는지 확인하세요.
+ Slot:slot 값은 CSV 형식의 의도 열 뒤에 있는 동일한 열에 표시됩니다.
+ 사용자 턴의 DTMF 입력은 예상 트랜스크립션으로 해석되며 Amazon S3 위치를 나열하지 않습니다.

# Test Workbench를 사용하여 테스트 세트 내에 테스트 케이스 생성
<a name="create-test-case"></a>

Test Workbench 결과는 봇 정의와 해당 테스트 세트에 따라 달라집니다. 봇 정의의 정보가 포함된 테스트 세트를 생성하여 개선이 필요한 영역을 정확히 찾아낼 수 있습니다. 현재 봇 설계와 고객 대화에 대한 지식을 고려하여 봇이 올바르게 해석하기 어려울 것으로 의심되는(또는 알고 있는) 예시를 포함하는 테스트 데이터 세트를 만드세요.

 정기적으로 프로덕션 봇에서 배운 내용을 바탕으로 의도를 검토하세요. 봇의 샘플 발화 및 슬롯 값을 계속 추가하고 조정하세요. 런타임 힌트와 같은 사용 가능한 옵션을 사용하여 슬롯 해상도를 개선하는 것이 좋습니다. 봇의 설계 및 개발은 지속적인 주기의 반복적인 프로세스입니다.

 테스트 세트를 최적화하기 위한 몇 가지 다른 팁은 다음과 같습니다.
+ 테스트 세트에서 자주 사용되는 의도와 슬롯이 있는 가장 일반적인 사용 사례를 선택하세요.
+ 고객이 의도와 슬롯을 언급할 수 있는 다양한 방법을 살펴보세요. 여기에는 최소 길이에서 확장된 길이까지 다양한 문장, 질문 및 명령 형식의 사용자 입력이 포함될 수 있습니다.
+ 슬롯 수가 다양한 사용자 입력을 포함하세요.
+ 일반적으로 사용되는 동의어 또는 봇에서 지원하는 사용자 지정 슬롯 값의 약어(예: “root canal”, “canal” 또는 “RC”)를 포함하세요.
+ 기본 제공 슬롯 값의 변형(예: “tomorrow”, “asap” 또는 "the next day")을 포함하세요.
+ 잘못 해석될 수 있는 사용자 입력(예: “ink”, “ankle” 또는 "anchor")을 수집하여 음성 양식에 대한 봇의 견고성을 검사하세요.

# Test Workbench용 CSV 파일에서 테스트 세트 생성
<a name="create-test-set-from-CSV"></a>

Amazon Lex V2 콘솔에 제공된 CSV 파일 템플릿에서 CSV 스프레드시트 편집기를 사용하여 값을 직접 입력하여 테스트 세트를 생성할 수 있습니다. 테스트 세트는 단일 사용자 발화 및 다음 열에 기록된 여러 차례의 대화로 구성된 CSV(쉼표로 구분된 값) 파일입니다.
+ **행 번호** – 이 열은 테스트할 총 채워진 행 수를 추적하는 증분 카운터입니다.
+ **대화 번호** – 이 열은 대화의 턴 수를 추적합니다. 단일 입력의 경우 이 열을 비워 두고 “-” 또는 “N/A”로 채울 수 있습니다. 대화의 경우, 대화 내의 각 턴에 동일한 대화 번호가 할당됩니다.
+ **소스** – 이 열은 “사용자” 또는 “에이전트”로 설정되어 있습니다. 단일 입력의 경우 항상 “사용자”로 설정됩니다.
+ **입력** – 이 열에는 사용자 발언 또는 봇 프롬프트가 포함됩니다.
+ **예상 출력 의도** – 이 열은 입력에서 충족된 의도를 캡처합니다.
+ **의도 예상 출력 슬롯 1** – 이 열은 사용자 입력에서 도출된 첫 번째 슬롯을 캡처합니다. 테스트 세트에는 사용자 입력의 각 슬롯에 대한 예상 출력 슬롯 X라는 열이 포함되어야 합니다.

단일 입력이 포함된 테스트 세트의 예:


| 행 번호 | 대화 번호 | 소스 | Input | 예상 출력 의도 | 예상 출력 슬롯 1 | 예상 출력 슬롯 2 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  1  |    | User | 내일 청소 약속을 잡으세요 | MakeAppointment | AppointmentType = 청소 | 날짜 = 내일 | 
|  2  |  N/A  | User | 4월 15일에 청소 예약을 하세요 | MakeAppointment | AppointmentType = 청소 | 날짜 = 4/15/23 | 
|  3  |  해당 사항 없음  | User | 12월 1일에 예약하세요 | MakeAppointment | 날짜 = 12월 1일 |  | 
|  4  |  해당 사항 없음  | User | 청소를 예약하세요 | MakeAppointment | AppointmentType = 청소 |  | 
|  1  |    | User | 예약 도와주실 수 있나요? | MakeAppointment |  |  | 

대화가 포함된 테스트 세트의 예


| 행 번호 | 대화 번호 | 소스 | Input | 예상 출력 의도 | 예상 출력 슬롯 1 | 예상 출력 슬롯 2 | 예상 출력 슬롯 3 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
|  1  |  1  | User | 예약하세요 | MakeAppointment |  |  |  | 
|  2  |  1  | 에이전트 | 어떤 유형의 약속을 예약하고 싶으신가요? | MakeAppointment |  |  |  | 
|  3  |  1  | User | 청소 | MakeAppointment | AppointmentType = 청소 |  |  | 
|  4  |  1  | 에이전트 | 언제 약속을 잡아야 하나요? | MakeAppointment |  |  |  | 
|  5  |  1  | User | tomorrow | MakeAppointment |  | 날짜 = 내일 |  | 
|  6  |  2  | User | 오늘 치근관 진료 예약을 하세요 | MakeAppointment | AppointmentType = 치근관 | 날짜 = 오늘 |  | 
|  7  |  2  | 에이전트 | 몇 시에 약속을 잡아야 하나요? | MakeAppointment |  |  |  | 
|  8  |  2  | User | 오전 11시 | MakeAppointment |  |  | 시간 = 오전 11시 | 

# Test Workbench의 IAM 역할 생성
<a name="create-iam-test-set"></a>

**Test Workbench의 IAM 역할을 생성하는 방법**

1. [IAM 사용자 생성](https://docs.aws.amazon.com/lexv2/latest/dg/gs-account.html#gs-account-user)의 단계에 따라 Test Workbench 콘솔에 액세스하는 데 사용할 수 있는 IAM 사용자를 생성합니다.

1. **역할 생성** 버튼을 선택합니다.  
![\[IAM 콘솔의 역할 화면.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/testworkbench-iam1.png)

1. **사용자 지정 신뢰 정책** 옵션을 선택합니다.  
![\[신뢰할 수 있는 엔터티 선택\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/testworkbench-iam2.png)

1. 아래에 신뢰 정책을 입력하고 **다음**을 클릭합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "sid4",
         "Effect": "Allow",
         "Principal": {
           "Service": "lexv2.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. **정책 생성** 버튼을 선택합니다.

1. 브라우저에 새 탭이 열리면 아래 정책을 입력하고 **다음: 태그** 버튼을 클릭할 수 있습니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:*"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "logs:FilterLogEvents"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "lex:*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 정책 이름 (예: 'LexTestWorkbenchPolicy') 을 입력한 다음 **정책 생성**을 클릭합니다.

1. 브라우저의 이전 탭으로 돌아가서 아래와 같이 **새로 고침** 버튼을 클릭하여 정책 목록을 새로 고칩니다.  
![\[화면을 새로 고침하여 새 정책을 확인하세요.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/testworkbench-iam3.png)

1. 6단계에서 사용한 정책 이름을 입력하여 정책 목록에서 검색하고 정책을 선택합니다.

1. **다음** 버튼을 선택합니다.

1. 역할 이름을 입력한 다음 **역할 생성** 버튼을 클릭합니다.

1. Test Workbench용 Amazon Lex V2 콘솔에 메시지가 표시되면 새 IAM 역할을 선택합니다.

# Test Workbench의 IAM 역할 생성 - 고급 기능
<a name="create-iam-test-set-features"></a>

**테스트 워크벤치 IAM 역할에 대한 권한 설정**

이 섹션에서는 Test Workbench 권한에 대한 최소 권한 액세스 제어를 구현하기 위한 몇 가지 예제 AWS Identity and Access Management(IAM) 자격 증명 기반 정책을 보여줍니다.

1. **S3에서 오디오 파일을 읽기 위한 Test Workbench 정책** - 이 정책을 통해 Test Workbench는 테스트 세트에 사용되는 오디오 파일을 읽을 수 있습니다. 테스트 세트에 있는 오디오 파일의 Amazon S3 위치를 가리키도록 *S3BucketName* 및 *S3Path*를 업데이트하려면 아래 정책을 적절히 수정해야 합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "TestWorkbenchS3AudioFilesReadOnly",
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": [
           "arn:aws:s3:::S3BucketName/S3Path/*"
         ]
       }
     ]
   }
   ```

------

1. **Test Workbench가 테스트 세트 및 결과를 읽고 Amazon S3 버킷에 쓰는 정책** - 이 정책을 통해 Test Workbench는 테스트 세트 입력 및 결과를 저장할 수 있습니다. 테스트 세트 데이터가 저장될 Amazon S3 버킷으로 *S3BucketName*을 업데이트하려면 아래 정책을 수정해야 합니다. Test Workbench는 이러한 데이터를 Lex Service 인프라가 아닌 Amazon S3 버킷에만 저장합니다. 따라서 Test Workbench가 제대로 작동하려면 Amazon S3 버킷에 액세스해야 합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "TestSetDataUploadWithEncryptionOnly",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject"
         ],
         "Resource": [
           "arn:aws:s3:::S3BucketName/*/lex_testworkbench/test_set/*",
           "arn:aws:s3:::S3BucketName/*/lex_testworkbench/test_execution/*",
           "arn:aws:s3:::S3BucketName/*/lex_testworkbench/test_set_discrepancy_report/*"
         ],
         "Condition": {
           "StringEquals": {
             "s3:x-amz-server-side-encryption": "aws:kms"
           }
         }
       },
       {
         "Sid": "TestSetDataGetObject",
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": [
           "arn:aws:s3:::S3BucketName/*/lex_testworkbench/test_set/*",
           "arn:aws:s3:::S3BucketName/*/lex_testworkbench/test_execution/*",
           "arn:aws:s3:::S3BucketName/*/lex_testworkbench/test_set_discrepancy_report/*"
         ]
       },
       {
         "Sid": "TestSetListS3Objects",
         "Effect": "Allow",
         "Action": [
           "s3:ListBucket"
         ],
         "Resource": [
           "arn:aws:s3:::S3BucketName"
         ]
       }
     ]
   }
   ```

------

1. **CloudWatch Logs를 읽기 위한 Test Workbench 정책** - 이 정책을 통해 Test Workbench는 Amazon CloudWatch Logs에 저장된 Lex 대화 텍스트 로그에서 테스트 세트를 생성할 수 있습니다. *Region*, *AwsAccountId*, *LogGroupName*을 업데이트하려면 아래 정책을 수정해야 합니다.

1. **Lex 런타임을 직접 호출하기 위한 Test Workbench 정책** - 이 정책을 통해 Test Workbench는 Lex 봇에 대해 테스트 세트를 실행할 수 있습니다. *Region*, *AwsAccountId*, *BotId*를 업데이트하려면 아래 정책을 수정해야 합니다. Test Workbench는 Lex 환경의 모든 봇을 테스트할 수 있으므로 리소스를 'arn:aws:lex:*Region*:*AwsAccountId*:bot-alias/\$1'로 교체하여 계정의 모든 Amazon Lex V2 봇에 대한 Test Workbench 액세스를 허용할 수 있습니다.

1. **(선택 사항) Test Workbench가 테스트 세트 데이터를 암호화하고 해독하는 정책** - Test Workbench가 고객 관리형 KMS 키를 사용하여 Amazon S3 버킷에 테스트 세트 입력 및 결과를 저장하도록 구성된 경우 Test Workbench에는 KMS 키에 대한 암호화 및 해독 권한이 모두 필요합니다. 아래 정책을 수정하여 *Region*, *AwsAccountId* 및 *KmsKeyId*를 업데이트해야 합니다. 여기서 *KmsKeyId*는 고객 관리형 KMS 키의 ID입니다.

1. **(선택 사항) 오디오 파일 복호화를 위한 Test Workbench 정책** - 오디오 파일이 고객 관리형 KMS 키를 사용하여 S3 버킷에 저장되는 경우 Test Workbench는 KMS 키에 대한 복호화 권한이 필요합니다. 아래 정책을 수정하여 *Region*, *AwsAccountId* 및 *KmsKeyId*를 업데이트해야 합니다. 여기서 *KmsKeyId*는 오디오 파일을 암호화하는 데 사용되는 고객 관리형 KMS 키의 ID입니다.

# 테스트 세트 관리
<a name="manage-test-sets"></a>

테스트 세트 창에서 테스트 세트를 다운로드, 업데이트 및 삭제할 수 있습니다. 또는 사용 가능한 테스트 세트 목록을 사용하여 테스트 세트 파일을 편집하거나 수동으로 주석을 달 수 있습니다. 그런 다음 오류나 기타 입력 문제로 인해 다시 업로드하여 검증을 다시 시도하세요.

**테스트 세트 레코드에서 테스트 세트 파일을 다운로드하려면:**

1. 테스트 세트 목록에서 테스트 세트 이름을 선택합니다.

1. 테스트 세트 레코드 창에서 화면 오른쪽의 **테스트 입력** 섹션에 있는 **다운로드** 버튼을 선택합니다.

1. 창 상단에 테스트 세트와 관련된 검증 오류 세부 정보가 있는 경우 **다운로드** 버튼을 선택하세요. 파일이 다운로드 폴더에 저장됩니다. 테스트 세트 CSV 파일의 오류 메시지에서 테스트 세트의 검증 오류를 수정할 수 있습니다. 검증 단계에서 식별된 오류를 찾아 라인을 수정하거나 제거한 다음 파일을 업로드하여 검증 단계를 다시 시도합니다.

1. 테스트 세트를 성공적으로 다운로드하면 녹색 배너 메시지가 나타납니다.

**테스트 세트 목록에서 테스트 세트를 다운로드하려면:**

1. 테스트 세트 목록에서 다운로드할 테스트 세트 항목 옆의 라디오 버튼을 선택합니다.

1. 오른쪽 상단의 작업 메뉴에서 **다운로드**를 선택합니다.

1. 테스트 세트를 성공적으로 다운로드했는지 여부를 나타내는 녹색 배너 메시지가 나타납니다. 파일이 다운로드 폴더에 저장됩니다.

# Test Workbench에서 지원하는 테스트 세트 열
<a name="file-input-test-sets"></a>

다음은 Test Workbench에서 지원하는 테스트 세트 열의 전체 목록과 Amazon Lex V2와 함께 사용하는 방법에 대한 지침입니다.


| 열 이름 | 테스트 세트 유형 | 값 유형 | 다중 열 지원 | 설명 | 
| --- | --- | --- | --- | --- | 
|  행 번호  |  텍스트 및 오디오  | 숫자 | 아니요 | Amazon Lex V2에서 무시되는 사용자 열입니다. 테스트 세트 작성자가 테스트 세트 행을 정렬하고 필터링할 수 있도록 돕기 위한 것입니다. 'Line \$1'를 대체 열 이름으로 사용할 수 있습니다. | 
|  대화 번호  |  텍스트 및 오디오  | 숫자 | 아니요 | 이 열을 사용하면 대화에 행을 함께 넣을 수 있습니다. 'Conversation \$1'를 대체 열 이름으로 사용할 수 있습니다. | 
|  소스  |  텍스트 및 오디오  | 열거형('사용자', '에이전트') | 아니요 | 이 열의 값은 행이 사용자용인지 에이전트용인지를 나타냅니다. 'Conversation Participant'를 대체 열 이름으로 사용할 수 있습니다. | 
|  Input  |  텍스트  | 문자열 | No | 이 열은 텍스트 테스트 세트에 대한 트랜스크립트를 추가하는 데 사용됩니다. 텍스트 입력은 사용자 행에 사용해야 합니다. 에이전트 프롬프트는 에이전트 행에 사용해야 합니다. | 
|  예상 트랜스크립션  |  오디오  | 문자열 | No | 이 열은 오디오 테스트 세트의 트랜스크립트를 추가하는 데 사용됩니다. 오디오 파일의 예상 트랜스크립션은 오디오 입력이 있는 사용자 행에서 사용해야 합니다. DTMF 입력은 DTMF 입력이 있는 사용자 행에서 사용할 수 있습니다. 에이전트 프롬프트는 에이전트 행에 사용해야 합니다. | 
|  S3 오디오 위치  |  오디오  | 문자열 | No | 이 열은 오디오 파일 위치를 추가하는 데 사용되며 오디오 테스트 세트에만 적용됩니다. S3 경로는 오디오 입력과 함께 사용자 행에서 사용해야 합니다. DTMF 입력이 있는 사용자 행에서 이 필드는 비워 두어야 합니다. 에이전트 행에서 이 필드는 비워 두어야 합니다. | 
|  입력 컨텍스트 태그  |  텍스트 및 오디오  | 문자열 | 예 | 이 열은 테스트 세트에서 행을 실행하는 동안 Lex에 입력하는 데 사용할 입력 컨텍스트의 이름을 제공하는 데 사용됩니다. 이는 [Lex V2 봇에 대한 의도 컨텍스트 설정의 입력 컨텍스트](https://docs.aws.amazon.com/lexv2/latest/dg/context-mgmt-active-context.html)를 나타냅니다. Test Workbench는 컨텍스트 이름만 지원합니다. 컨텍스트에서는 파라미터를 지원하지 않습니다. 'Input Context Tag 1', 'Input Context Tag 2' 등과 같은 이름이 지정된 여러 열을 사용할 수 있습니다. | 
|  요청 속성  |  텍스트 및 오디오  | 문자열 | 예 | 이 열은 테스트 세트에서 행을 실행하는 동안 Lex에 입력하는 데 사용할 요청 속성을 제공하는 데 사용됩니다. 열의 값은 '<request-attribute-name> = <request-attribute-value>' 형식으로 제공해야 합니다. 가독성을 위해 '=' 주위에 공백을 추가할 수 있습니다. 예: request-attribute-foo = 이것은 더미 응답 request-attribute-foo = '이것은 '더미 응답'' request-attribute-foo = '이것은 '더미 응답''입니다. 'Request Attribute 1', 'Request Attribute 2' 등과 같은 이름이 지정된 여러 열을 사용할 수 있습니다. | 
|  세션 속성  |  텍스트 및 오디오  | 문자열 | 예 | 이 열은 테스트 세트에서 행을 실행하는 동안 Lex에 입력하는 데 사용할 세션 속성을 제공하는 데 사용됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/file-input-test-sets.html)  | 
|  런타임 힌트  |  텍스트 및 오디오  | 문자열 | 예 | 이 열은 테스트 세트에서 행을 실행하는 동안 Lex에 입력하는 데 사용되는 의도 내의 슬롯에 대한 런타임 힌트를 제공하는 데 사용됩니다. 다음은 두 가지 예입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/file-input-test-sets.html)  | 
|  감청  |  오디오  | 부울 | 아니요 | 이 열은 테스트 세트의 행에 대해 오디오 파일을 Lex 런타임으로 전송할 때 Test Workbench가 개입해야 하는지 여부를 지정합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/file-input-test-sets.html)  | 
|  예상 출력 의도  |  텍스트 및 오디오  | 문자열 | No | 이 열은 테스트 세트의 행에 대해 Lex의 출력에서 예상되는 의도의 이름을 지정하는 데 사용됩니다. | 
|  예상 출력 슬롯  |  텍스트 및 오디오  | 문자열 | 예 | 이 열은 테스트 세트에서 행을 실행하는 동안 Lex의 출력에 예상되는 슬롯 값을 제공하는 데 사용됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/file-input-test-sets.html)  | 
|  예상 출력 컨텍스트 태그  |  텍스트 및 오디오  | 문자열 | 예 | 이 열은 테스트 세트의 행에 대해 Lex의 출력에 예상되는 출력 컨텍스트의 이름을 지정하는 데 사용됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/file-input-test-sets.html)  | 

# Test Workbench에서 테스트 검증 오류 보기
<a name="view-errors-test-sets"></a>

검증 오류를 보고하는 테스트 세트를 수정할 수 있습니다. 이러한 검증 오류는 테스트 세트를 테스트할 준비가 되지 않은 경우 생성됩니다. Test Workbench는 테스트 세트 입력 CSV 파일에서 예상 형식의 값이 없는 필수 열을 표시할 수 있습니다.

**테스트 검증 오류를 보려면:**

1. 테스트 세트 목록에서 확인하려는 **검증 오류** 상태를 보고하는 테스트 세트의 이름을 선택합니다. 테스트 세트의 이름은 테스트 세트에 대한 세부 정보로 이동하는 활성 링크입니다.

1. 테스트 세트 레코드는 화면 상단에 확인 오류 세부 정보를 표시합니다. **세부 정보 보기**를 선택하여 검증 오류에 대한 보고서를 확인합니다.

1. 오류 보고서 창에서 행 번호 및 오류 유형을 검토하여 오류가 발생한 위치를 확인합니다. 긴 오류 목록을 보려면 오류 보고서 **다운로드**를 선택할 수 있습니다.

1. 테스트 세트 입력 CSV 파일에 나열된 오류를 원본 테스트 파일과 비교하여 문제를 수정하고 테스트 세트를 다시 업로드하세요.

다음 표에는 시나리오와 함께 입력 CSV 검증 오류 메시지가 나열되어 있습니다.


| 시나리오 | 오류 메시지 | 참고 | 
| --- | --- | --- | 
|  테스트 세트 파일 크기 초과  |  테스트 세트 파일 크기가 200MB보다 큽니다. 더 작은 파일을 제공하고 요청을 다시 시도하세요.  |  | 
| 테스트 세트가 최대 레코드 초과 | 입력 파일의 레코드가 지원되는 최대 개수인 200,000개를 초과했습니다. |  | 
| 빈 테스트 세트 업로드 | 가져온 테스트 세트가 비어 있습니다. 비어 있지 않은 테스트 세트를 제공하고 요청을 다시 시도하세요. |  | 
| 빈 열 헤더 이름 | 열 헤더 행: 열 번호 5에서 빈 열 이름을 찾았습니다. |  | 
| 인식할 수 없는 열 헤더 이름 | 열 헤더 행: 열 번호 2에서 열 이름 '더미'를 인식할 수 없습니다. |  | 
| 중복된 열 헤더 이름 | 열 헤더 행: 'S3 오디오 링크' 및 'S3 오디오 링크' 중 동일하거나 동등한 여러 열을 찾았습니다. 해당 열 중 하나를 제거하거나 이름을 변경하세요. |  | 
| 다중 값 열 이름 제한 초과 | 열 헤더 행: '예상 출력 슬롯'의 열 수가 지원되는 최대 개수(6개)를 초과했습니다. '예상 출력 슬롯'의 일부 열을 삭제하고 다시 시도하세요. | 다중 값 열에 지원되는 최대 열 수는 6입니다.  | 
| 텍스트 또는 오디오 관련 열 헤더 없음 | 텍스트 또는 음성 대화의 열을 찾을 수 없습니다. 텍스트 대화의 경우 \$1'Text input'\$1 열을 사용하세요. 음성 대화의 경우 \$1'S3 audio link', 'Expected transcription'\$1 열을 사용하세요. | 오디오 필수 항목: \$1'S3 audio link', 'Expected transcription'\$1 텍스트 필수 항목: \$1'Text input'\$1 | 
| 텍스트 및 오디오 관련 열 헤더가 모두 존재  | 텍스트 대화와 음성 대화 모두에 대한 열을 찾았습니다. 텍스트 대화에는 \$1'Text input'\$1 열을, 음성 대화에는 \$1'S3 audio link', 'Expected transcription'\$1 열을 사용할 수 있습니다. | 오디오 필수 항목: \$1'S3 audio link', 'Expected transcription'\$1 텍스트 필수 항목: \$1'Text input'\$1 | 
| 필수 열이 누락되었음 | 필수 열 ["Expected Output Intent"]를 찾을 수 없습니다. | 필수 열: \$1"Line \$1", "Source", "Expected Output Intent"\$1 | 
| 헤더가 없는 열의 데이터를 찾았습니다 | 행 번호 6의 열 번호 8에서 데이터를 찾았지만 해당 열에 열 헤더가 없습니다. |  | 
| 필수 열에 대한 데이터를 찾을 수 없음 | 행=12: 필수 열에 대한 값을 찾을 수 없음: \$1"Source", "Expected Output Intent"\$1 |  | 
| 중복된 대화 ID가 발견됨 | 이전 대화의 경우 39번 행에서 대화 번호 '19'가 표시되었습니다.” 두 대화에 동일한 대화 번호가 입력되지 않았는지 확인하세요. 대화 번호의 모든 행을 함께 그룹화하면 됩니다. |  | 
| 잘못된 대화 ID가 제공됨 | '대화 번호' 열에서 잘못된 값인 'test\$1convertion'을 찾았습니다. 이 열의 값은 사용자 행의 경우 숫자이거나 N/A(예: 해당 없음)이어야 합니다. |  | 
| 행 번호에 숫자가 아닌 값이 제공됨 | '행 번호' 열에서 숫자가 아닌 값 'test\$1line'을 찾았습니다. 값은 숫자여야 합니다. |  | 
| 에이전트 행에서 대화 ID를 찾을 수 없음 | '대화 번호' 열에 값을 찾을 수 없습니다. 에이전트 행에 입력해야 합니다. |  | 
| 에이전트 행에서 숫자가 아닌 대화 ID 발견됨 | '대화 번호' 열에서 숫자가 아닌 값인 'test\$1convergation'을 찾았습니다. 에이전트 행의 값은 숫자여야 합니다. |  | 
| 유효하지 않은 S3 위치 | 잘못된 값 '버킷 및 폴더'가 제공되었습니다. 유효한 형식은 S3:<bucketName>//<keyName>/입니다. |  | 
| 유효하지 않은 S3 버킷 이름 | 잘못된 s3 버킷 이름 'test\$1bucket'이 제공되었습니다. 버킷 이름을 확인하세요. |  | 
| S3 오디오 위치는 폴더입니다 | 제공된 오디오 위치 'S3://bucket/folder'가 유효하지 않습니다. S3 폴더를 가리킵니다. |  | 
| 유효하지 않은 의도 이름 | 'intent @name '의도에 잘못된 문자가 있었습니다. 의도 이름을 확인하세요. | 정규식 검사: ^([0-9a-zA-Z][\$1-]?)\$1\$1 | 
| 잘못된 슬롯 이름 | 'Slot@Name' 슬롯에 잘못된 문자가 있었습니다. 슬롯 이름을 확인하세요. | 정규식: ^([0-9a-zA-Z][\$1-]?)\$1\$1 (.)으로 시작하거나 끝나서는 안 됩니다. | 
| 부모 슬롯에 제공된 슬롯 값 | 하위 슬롯 'Address.City'와 상위 슬롯 'Address'에 대해 슬롯 값이 제공되었습니다. 값은 하위 슬롯에만 제공해야 합니다. | CST의 상위 슬롯에는 슬롯 값이 없어야 합니다. | 
| 컨텍스트 이름에 잘못된 문자가 있음 | 컨텍스트 이름 'context@1'에 잘못된 문자가 있었습니다. 컨텍스트 이름을 확인하세요. | 정규식: ^([A-Za-z]\$1?)\$1\$1 | 
| 잘못된 슬롯 철자 스타일 | 잘못된 값 'test'가 제공되었습니다. 모두 대문자인지 확인하세요. 유효한 값은 ["Default", "SpellByLetter", "SpellByWord"]입니다. | 지원되는 값["Default", "SpellByLetter", "SpellByWord" | 
| 참가자 또는 출처는 에이전트 또는 사용자여야 합니다. | 잘못된 값 'bot'이 제공되었습니다. 유효한 값은 ["Agent", "User"]입니다. | 지원되는 열거형: "Agent", "User" | 
| 줄 번호는 10진수가 아니어야 합니다 | 잘못된 값 '10.1'이 제공되었습니다. 분수가 없는 유효한 숫자여야 합니다. |  | 
| 대화 번호는 10진수가 아니어야 합니다 | 잘못된 값 '10.1'이 제공되었습니다. 분수가 없는 유효한 숫자여야 합니다. |  | 
| 행 번호는 범위 내에 있어야 합니다. | 잘못된 값 '92233720368547758071'이 제공되었습니다. 1보다 크거나 같고 9223372036854775807 보다 작아야 합니다. |  | 
| 개입 열에는 부울 값만 입력할 수 있습니다 | 잘못된 값 'test'가 제공되었습니다. 이 값은 'true' 또는 'false'와 같은 유효한 부울 값이어야 합니다. 또는 'yes'와 'no'를 사용할 수 있습니다. | 가능한 값: "True", "true", "T", "Yes", "yEs", "Y", "1", "1.0", "False", "false", "F", "No", "no", "N", "0", "0.0" | 
| 예상 슬롯, 세션 속성, 요청 속성은 같은 값(=)으로 구분해야 합니다. | 값 'slotName:slotValue'에는 '='가 없습니다. 이러한 값은 '<key>=<value>' 형식의 키-값 쌍으로 제공해야 합니다. | 예: slotName = slotType | 
| 예상 슬롯, 세션 속성, 요청 속성에는 키 값 쌍이 있어야 합니다. | '=slotValue'는 '=' 앞에 키가 없습니다. 이러한 값은 '<key>=<value>' 형식의 키-값 쌍으로 제공해야 합니다. | 예: slotName = slotType | 
| 끝에 있는 따옴표가 잘못되었습니다  | 'Foo's item'"에서 잘못된 따옴표를 찾았습니다. 따옴표 문자 `"`로 시작하지만 같은 따옴표로 끝나지는 않습니다. | 예: '"Foo's item", KFC' | 
| 중간에 있는 인용문이 잘못되었습니다 | '"Foo's" Burger, etc.'에서 잘못된 인용문을 찾았습니다. 내용 안에 따옴표 문자 `"`가 포함되어 있습니다. 작은따옴표가 포함된 값은 큰따옴표로 묶어야 하며 그 반대의 경우도 마찬가지입니다. | 올바른 예: '"Foo's item", KFC' | 
| 필수 따옴표 | 'key = Foo's item'에는 작은따옴표 또는 큰따옴표가 포함되지만 따옴표로 묶이지 않았습니다. 작은따옴표가 포함된 값은 큰따옴표로 묶어야 하며 그 반대의 경우도 마찬가지입니다. |  | 
| 열에 중복된 키가 반복됨  | 키 `key1`이 `세션 속성 3`과 `세션 속성 1`이라는 두 개의 열에서 반복되었습니다. |  | 
| 런타임 힌트의 형식이 잘못되었습니다. | 런타임 힌트에 잘못된 키 'BookFlight.Car."'가 제공되었습니다. 런타임 힌트의 경우 키의 형식은 <intentName>.<slotName>이어야 합니다. | 키 중간에 '.'가 있어야 하는 경우 해당 키에서 의도 이름과 슬롯 이름을 추출할 수 없습니다. 이러한 잘못된 형식의 예: "BookFlight", ".BookFlight.Car", "BookFlight.Car." | 
| 런타임 힌트 키의 의도 이름이 잘못되었습니다 | 런타임 힌트에서 잘못된 의도 'intent@name'이 발견되었습니다. 의도 이름을 확인하세요. | 정규식 검사: ^([0-9a-zA-Z][\$1-]?)\$1\$1 | 
| 런타임 힌트 키의 슬롯 이름이 잘못되었습니다 | 런타임 힌트의 'Slot@Name'에서 잘못된 슬롯 이름을 찾았습니다. 슬롯 이름을 확인하세요. | 정규식: ^([0-9a-zA-Z][\$1-]?)\$1\$1 (.)으로 시작하거나 끝나서는 안 됩니다. | 

# Test Workbench에서 테스트 세트 삭제
<a name="delete-test-sets"></a>

테스트 세트 목록에서 테스트 세트를 쉽게 삭제할 수 있습니다.

**테스트 세트를 삭제하려면:**

1. 왼쪽 메뉴에서 **테스트 세트** 목록으로 이동하여 테스트 세트 목록을 확인하세요.

1. 테스트 세트 목록에서 삭제할 테스트 세트를 선택합니다.

1. 오른쪽 상단의 **작업** 드롭다운 메뉴로 이동하여 **삭제**를 선택합니다.

1. 테스트 세트가 삭제되었음을 확인하는 메시지가 나타납니다.

# 테스트 세트 세부 정보 편집
<a name="edit-details-test-sets"></a>

테스트 세트 목록에서 테스트 세트 이름과 세부 정보를 편집할 수 있습니다. 이름 또는 세부 정보는 나중에 추가하거나 업데이트할 수 있습니다. 하지만 봇 또는 트랜스크립션 데이터로 테스트를 실행하기 전에 테스트 세트를 업데이트해야 합니다.

**테스트 세트 세부 정보를 편집하려면:**

1. 왼쪽 메뉴에서 테스트 세트 목록으로 이동하여 테스트 세트 목록을 확인하세요.

1. 테스트 세트 목록에서 편집할 테스트 세트의 확인란을 선택합니다.

1. 오른쪽 상단의 **작업** 드롭다운 메뉴로 이동하여 **세부 정보 편집**을 선택합니다.

1. 테스트 세트가 성공적으로 편집되었다는 확인 메시지가 나타납니다.

# 테스트 세트 업데이트
<a name="update-test-sets"></a>

테스트 세트에서 항목을 업데이트, 수정, 삭제하여 베이스라인 결과를 최적화하거나 테스트 세트에서 발생했을 수 있는 기타 오류를 수정할 수 있습니다.

수정된 테스트 세트를 업로드하기 전에 테스트 세트를 다운로드하고 검증 오류를 수정할 수 있습니다. [테스트 검증 오류 보기](https://docs.aws.amazon.com/lexv2/latest/dg/view-errors-test-sets.html)를 참조하세요.

**테스트 세트를 업데이트하려면:**

1. 테스트 세트 레코드에서 오른쪽 상단의 **테스트 세트 업데이트** 버튼을 선택합니다.

1. Amazon S3 계정에서 업로드할 파일을 선택하거나 컴퓨터에서 CSV 테스트 파일을 업로드합니다. 참고: 테스트 세트를 업데이트하면 기존 데이터를 덮어쓰게 됩니다.

1. **업데이트** 버튼을 선택합니다.

1. 테스트 세트가 성공적으로 업데이트되었다는 확인 메시지가 나타납니다. 참고: 이 작업은 테스트 세트의 복잡성과 크기에 따라 몇 분 정도 걸릴 수 있습니다.

1. 테스트 세트가 성공적으로 업데이트되었다는 확인 메시지가 나타나고 **상태**는 **테스트 준비 완료로** 표시됩니다.

# 테스트 실행
<a name="execute-test-set"></a>

테스트 세트를 실행하려면 테스트 세트에 대해 테스트를 실행할 적절한 봇을 선택해야 합니다. 테스트 세트의 드롭다운 메뉴에서 AWS 계정에서 봇을 선택할 수 있습니다. 이 작업은 선택한 봇을 검증된 테스트 데이터와 비교하여 테스트하여 테스트 세트의 기준 데이터에 대한 성과 지표를 보고합니다.

![\[Test Workbench에서 테스트를 실행하는 화면.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-extest.png)


**Test Workbench에서 테스트를 실행하려면**

1. 테스트 세트 레코드 페이지에서 **테스트 실행**을 선택합니다.

1. 테스트에 사용할 테스트 세트를 선택합니다.

1. **봇** 드롭다운 메뉴에서 테스트에 사용할 봇 이름을 선택합니다.

1. 해당하는 경우 **봇 별칭** 드롭다운 메뉴에서 봇 별칭을 선택합니다.

1. **언어** 선택에서 영어 버전을 선택합니다.

1. 양식 유형으로 **텍스트** 또는 **오디오**를 선택합니다.

1. Amazon S3 위치를 선택합니다.(오디오만 해당)

1. 봇의 **엔드포인트 선택**을 선택합니다.(스트리밍 전용)

1. **적용 범위 검증** 버튼을 선택하여 테스트를 실행할 준비가 되었음을 확인합니다. 검증 단계에서 오류가 있는 경우 이전 파라미터를 검토하고 수정하세요.

1. **실행**을 선택하여 테스트를 실행합니다.

1. 테스트가 성공적으로 실행되었음을 확인하는 메시지가 나타납니다.

# Test Workbench의 테스트 세트 적용 범위
<a name="validation-test-set"></a>

테스트 세트와 봇 사이의 의도 및 슬롯의 범위가 제한되어 예상 성능 측정값이 달라질 수 있습니다. 테스트를 실행하기 전에 테스트 세트 범위를 검토하는 것이 좋습니다.

![\[Test Workbench를 사용하여 검증 단계에서 의도를 검토하세요.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-discr1.png)


**검증 적용 범위를 검토하려면**

1. 테스트 세트 레코드에서 **적용 범위 검증** 버튼을 선택합니다.

1. 이 메시지는 테스트 세트와 선택한 봇 사이의 적용 범위를 검증하고 있음을 나타냅니다.

1. 작업이 완료되면 **적용 범위 검증이 성공**했다는 메시지가 표시됩니다.

1. 창 하단에서 **세부 정보 보기** 버튼을 선택합니다.

1. 각 탭을 선택하여 의도와 슬롯의 테스트 세트 불일치를 확인하세요. **다운로드** 버튼을 선택하여 이 데이터를 CSV 형식으로 다운로드할 수 있습니다.

1. 테스트 세트 데이터, 봇 의도, 슬롯에 대한 검증 결과를 검토하세요. 문제를 식별하고 봇 테스트 세트 아키텍처를 변경하여 결과를 개선하세요. CSV 파일을 변경한 후 편집한 테스트 세트와 봇을 업로드하여 테스트를 실행하세요. 참고: 검증 적용 범위는 봇이 아닌 테스트 세트에 대해 실행됩니다. 봇에 있지만 테스트 세트에 없는 의도는 포함되지 않습니다.

# 테스트 결과 보기
<a name="test-results-test-set"></a>

Test Workbench의 테스트 결과를 해석하여 봇과 고객 간의 대화가 실패하거나 고객이 의도를 이행하기 위해 여러 번 시도해야 하는 부분이 어디인지 파악합니다.

테스트 결과에서 이러한 문제를 찾아내면 실시간 봇 트랜스크립션 값과 더 일치하는 다른 학습 데이터 또는 발화를 사용하여 의도 성능을 개선함으로써 봇의 성능을 최적화할 수 있습니다.

성능 불일치가 발생한 의도와 슬롯을 자세히 볼 수 있습니다. 불일치가 있는 의도 또는 슬롯을 식별한 후에는 발화 내용과 대화 흐름을 더 자세히 살펴보고 검토할 수 있습니다.

![\[Test Workbench를 사용하여 완료한 테스트 목록.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-testresults.png)


**테스트 결과를 검토하려면:**

1. 왼쪽 메뉴에서 테스트 세트 목록으로 이동하여 Test Workbench에서 **테스트 결과** 옵션을 선택합니다. 참고: 테스트 결과에 성공하면 **상태**가 완료로 표시됩니다.

1. 검토하려는 테스트 결과의 **테스트 결과 ID**를 선택합니다.

# Test Workbench의 테스트 결과 세부 정보
<a name="test-results-details-test-set"></a>

테스트 결과에는 테스트 세트 세부 정보, 사용된 의도, 사용된 슬롯이 표시됩니다. 또한 전체 결과, 대화 결과, 의도, 슬롯 결과를 포함한 전체 테스트 세트 입력 분류도 제공합니다.

테스트 결과는 다음과 같은 모든 테스트 관련 정보로 구성됩니다.
+ 테스트 세부 정보 메타데이터
+ 전체 결과
+ 대화 결과
+ 의도 및 슬롯 결과
+ 세부 결과

**전체 결과 탭:**

![\[Test Workbench를 사용한 테스트 결과의 테스트 세트 입력 분석 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-results1.png)


**테스트 세트 입력 분석** – 이 차트는 테스트 세트의 대화 수와 단일 입력 발화 수를 분석하여 보여줍니다.

![\[Test Workbench를 사용한 테스트 결과의 단일 입력 분석 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-results2.png)


**단일 입력 분석** – 엔드 투 엔드 대화와 음성 트랜스크립션이 포함된 두 개의 차트를 표시합니다. 각 차트에는 통과 및 실패 입력 수가 표시됩니다. 참고: 음성 트랜스크립션 차트는 오디오 테스트 세트에서만 볼 수 있습니다.

![\[Test Workbench를 사용한 테스트 결과의 대화 분석 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-results3.png)


**대화 분석** – 엔드 투 엔드 대화와 음성 트랜스크립션이 포함된 두 개의 차트를 표시합니다. 각 차트에는 통과 및 실패 입력 수가 표시됩니다. 참고: 음성 트랜스크립션 차트는 오디오 테스트 세트에서만 볼 수 있습니다.

**대화 결과 탭:**

![\[Test Workbench를 사용한 테스트 결과의 대화 통과 비율 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-results4.png)


**대화 통과율** – 대화 통과율 표는 테스트 세트의 각 대화에 어떤 의도와 슬롯이 사용되었는지 확인하는 데 사용됩니다. 각 의도 및 슬롯의 통과율과 함께 어떤 의도 또는 슬롯이 실패했는지 검토하여 대화가 실패한 부분을 시각화할 수 있습니다.

![\[Test Workbench를 사용한 테스트 결과의 대화 의도 실패 지표 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-results5.png)


**대화 의도 실패 지표** - 이 지표는 테스트 세트에서 성능이 가장 좋지 않은 상위 5개 의도를 보여줍니다. 이 패널은 봇의 대화 로그 또는 트랜스크립션을 기반으로 성공 또는 실패한 의도의 비율 또는 수를 차트로 보여줍니다. 의도가 성공했다고 해서 전체 대화가 성공했다는 의미는 아닙니다. 이러한 지표는 의도의 이전 또는 이후에 발생한 의도와 상관없이 의도의 가치에만 적용됩니다.

![\[Test Workbench를 사용한 테스트 결과의 대화 슬롯 실패 지표 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-results6.png)


**대화 슬롯 실패 지표** - 이 지표는 테스트 세트에서 성능이 가장 좋지 않은 상위 5개 슬롯을 보여줍니다. 의도의 각 슬롯에 대한 성공률을 나타냅니다. 막대 그래프는 의도의 각 슬롯에 대한 음성 트랜스크립션과 엔드-투-엔드 대화를 모두 보여줍니다.

**의도 및 슬롯 결과 탭:**

![\[Test Workbench를 사용한 테스트 결과의 의도 인식 지표 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-results7.png)


**의도 인식 지표** - 성공적으로 인식된 의도 수를 표로 보여줍니다. 음성 트랜스크립션 및 엔드-투-엔드 대화의 통과율을 표시합니다.

![\[Test Workbench를 사용한 테스트 결과의 슬롯 해결 지표 차트.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-results8.png)


**슬롯 해결 지표** - 의도와 슬롯을 별도로 표시하고 대화나 단일 입력에 사용된 각 의도에 대한 각 슬롯의 성공률과 실패율을 보여줍니다. 음성 트랜스크립션 및 엔드-투-엔드 대화의 통과율을 표시합니다.

**세부 결과 탭:**

![\[Test Workbench를 사용한 테스트 결과의 세부 결과.\]](http://docs.aws.amazon.com/ko_kr/lexv2/latest/dg/images/testworkbench/test-workbench-results9.png)


**세부 결과** – 대화 로그에 사용자 및 에이전트의 발화, 각 슬롯의 예상 출력 및 예상 트랜스크립션이 포함된 세부 표를 표시합니다. **다운로드** 버튼을 선택하여 이 보고서를 다운로드할 수 있습니다.

다음 표에는 시나리오와 함께 결과 실패 오류 메시지가 나열되어 있습니다.


| 시나리오 | 오류 메시지 | 작업 | 
| --- | --- | --- | 
| 의도 불일치 | BookFlight 의도가 예상되었지만 BookHotel 의도였습니다. | 대화의 다른 부분은 건너뛰기 | 
| 슬롯 유도 불일치 | departureDate 슬롯을 유도했지만 cabinType이었습니다. | 대화의 다른 부분은 건너뛰기 | 
| 슬롯 값 불일치 | 예상 슬롯 값과 실제 슬롯 값이 일치하지 않습니다. | 다른 턴으로 대화를 진행 | 
| 백투백 에이전트 프롬프트 누락됨 | 이번 턴에 봇이 에이전트 프롬프트를 반환할 것으로 예상했지만 수신되지 않았습니다. | 대화의 다른 부분은 건너뛰기 | 
| 트랜스크립션 불일치 | 예상 트랜스크립션이 실제 트랜스크립션과 일치하지 않았습니다. | 다른 턴으로 대화를 진행 | 
| 옵션 슬롯이 유도되지 않음 | 다음 턴에 cabinType 슬롯이 유도될 것으로 예상되지만, 그 전에 현재의 의도가 충족되었습니다. | 대화의 다른 부분은 건너뛰기 | 
| 슬롯이 인식되지 않음 | 이 턴에서는 예상 출발 날짜 슬롯이 인식되지 않았습니다. | 대화의 다른 부분은 건너뛰기 | 
| 추가 백투백 에이전트 프롬프트 | 사용자 턴을 예상했지만 에이전트 프롬프트였음 | 대화의 다른 부분은 건너뛰기 | 