

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

# 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 봇과 동일한 리전에 존재하며, 사용자 계정에 속하는지 확인합니다.