

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

# Amazon Chime SDK 메시징을 위한 AppInstanceBot 응답 처리
<a name="process-response"></a>

사용자가 메시지를 보내면 AppInstanceBot은 채널 메시지로 응답합니다. 채널 메시지를 나열하여 봇의 응답을 받을 수 있습니다.

다음 예는 CLI를 사용하여 채널 메시지를 나열하는 방법을 보여 줍니다.

```
aws chime-sdk-messaging list-channel-messages \
--chime-bearer {{caller_app_instance_user_arn}} \
--channel-arn {{channel_arn}}
```

AppInstanceBot의 성공 응답은 다음 형식을 사용합니다.

```
{
    "MessageId": "{{messageId}}",
    "Content": "*{\"{{Messages}}\":[{\"...\"}]}*",
    "ContentType": "{{application/amz-chime-lex-msgs}}",
    "MessageAttributes": {
        "CHIME.LEX.sessionState.intent.name": {
            "StringValues": [
                "{{lex_bot_intent_name}}"
            ]
        },
        "CHIME.LEX.sessionState.intent.state": {
            "StringValues": [
                "{{lex_bot_intent_fullfilment_status}}"
            ]
        },
        "CHIME.LEX.sessionState.originatingRequestId": {
            "StringValues": [
                "{{lex_bot_originating_request_id}}"
            ]
        },
        "CHIME.LEX.sessionState.sessionId": {
            "StringValues": [
                "{{lex_bot_session_id}}"
            ]
        }
    },
    "Sender": {
        "Arn": "{{app_instance_bot_arn}}",
        "Name": "{{app_instance_bot_name}}"
    },
    "Type": "STANDARD",
}
```

**Content**  
`Content` 필드에는 Amazon Lex V2 봇에서 전송된 메시지 목록이 포함되어 있습니다. 이러한 메시지에 대한 자세한 내용은 Amazon Lex V2 `RecognizeText` API의 [ 메시지](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_RecognizeText.html#lexv2-runtime_RecognizeText-response-messages)를 참조하세요.  
다음은 시작 메시지에서 `Content` 필드를 사용하는 방법을 보여 주는 예시입니다.  

```
{
    "Messages":
    [
        {
            "Content": "{{Hello!}}",
            "ContentType": "{{PlainText}}"
        },
        {
            "ContentType": "ImageResponseCard",
            "ImageResponseCard":
            {
                "Title": "{{Hello! I'm BB, the Bank Bot.}}",
                "Subtitle": "{{I can help you with the following transactions}}",
                "Buttons":
                [
                    {
                        "Text": "{{Check balance}}",
                        "Value": "{{Check balance}}"
                    },
                    {
                        "Text": "{{Escalate to agent}}",
                        "Value": "{{Escalate to agent}}"
                    }
                ]
            }
        }
    ]
}
```
실패 응답의 경우 콘텐츠 필드에는 다음과 같은 형식의 오류 메시지와 코드가 포함됩니다.  

```
{
    "Code": {{error_code}}
}
```

**ContentType**  
`ContentType`은 `Content` 필드에 포함된 페이로드 유형을 나타내므로 `Content` 필드를 구문 분석하려면 반드시 확인해야 합니다.  
Lex V2 봇은 다른 `ContentType`을 사용합니다.
`ContentType`은 성공 응답의 경우 `application/amz-chime-lex-msgs`로, 실패 응답의 경우 `application/amz-chime-lex-error`로 설정합니다.

**MessageAttribute**  
*MessageAttribute*는 문자열 키와 문자열 값의 매핑입니다. `AppInstanceBot`의 응답에는 Amazon Lex 봇의 응답에 매핑된 다음과 같은 메시지 속성이 포함되어 있습니다.  
+ **CHIME.LEX.sessionState.intent.name** - 요청이 처리하려고 시도한 Lex 봇 인텐트의 이름입니다.
+ **CHIME.LEX.sessionState.intent.state** – 인텐트의 현재 상태입니다. 가능한 값은 `Fulfilled`, `InProgress`, `Failed`입니다.
+ **CHIME.LEX.sessionState.originatingRequestId** – Amazon Lex 봇에 대한 특정 요청을 위한 고유 식별자입니다. 이 값은 AppInstanceBot을 트리거한 원본 사용자 메시지의 `MessageId`로 설정됩니다.
+ **CHIME.LEX.sessionState.sessionId** – 사용자와 봇 간의 대화를 나타내는 고유 식별자입니다. 사용자가 봇과 대화를 시작하면 Amazon Lex는 세션을 생성합니다.
Amazon Lex 세션과 세션 상태에 대한 자세한 내용은 *Amazon Lex API 참조*의 [https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_runtime_SessionState.html) 및 *Amazon Lex V2 개발자 안내서*의 [세션 관리](https://docs.aws.amazon.com/lexv2/latest/dg/using-sessions.html)를 참조하세요.  
Amazon Lex V2가 반환하는 속성에 대한 자세한 내용은 [Amazon Lex 런타임 V2](https://docs.aws.amazon.com/lexv2/latest/APIReference/API_Operations_Amazon_Lex_Runtime_V2.html) API를 참조하세요.