

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

# Connect Customer에서 실시간 채팅 메시지 스트리밍 활성화
<a name="chat-message-streaming"></a>

Connect Customer Chat은 채팅 메시지의 실시간 스트림을 구독할 수 있는 [APIs](https://docs.aws.amazon.com/connect/latest/APIReference/Welcome.html)를 제공합니다. 이러한 API를 사용하면 다음을 수행할 수 있습니다.
+ 새 채팅 연락이 생성되면 실시간으로 채팅 메시지를 스트리밍합니다.
+ 현재 Connect Customer Chat 기능을 확장하여 SMS 솔루션 및 타사 메시징 애플리케이션과의 통합 구축, 모바일 푸시 알림 활성화, 채팅 메시지 활동을 모니터링하고 추적하는 분석 대시보드 생성과 같은 사용 사례를 지원합니다.

**참고**  
이 페이지에서는 Connect Customer에서 채팅 메시지의 실시간 스트리밍을 위해 SNS 엔드포인트를 구독하는 방법을 설명합니다. Connect Customer에서 대화형 AI 상호 작용에 대한 메시지 스트리밍을 활성화하려는 경우 섹션을 참조하세요[AI 기반 채팅에 대한 메시지 스트리밍 활성화](message-streaming-ai-chat.md).

## 메시지 스트리밍 API 작동 방식
<a name="how-chat-message-streaming-apis-work"></a>

[Connect Customer Chat 고객 응대 내에서 특정 이벤트가 발생하면 Connect Customer 메시지 스트리밍 APIs](https://docs.aws.amazon.com/connect/latest/APIReference/Welcome.html)가 트리거됩니다. 예를 들어 고객이 새 채팅 메시지를 보내면 이벤트가 방금 보낸 메시지에 대한 데이터가 포함된 [페이로드](sns-payload.md)를 지정된 엔드포인트로 전송합니다. 메시지는 [Amazon Simple Notification Service](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)(Amazon SNS)를 사용하여 특정 엔드포인트에 게시됩니다.

이 주제에서는 Connect Customer 및 Amazon SNS를 사용하여 실시간 메시지 스트리밍을 설정하는 방법을 설명합니다. 단계는 다음과 같습니다.

1. Amazon SNS 콘솔을 사용하여 새로운 표준 SNS 주제를 생성하고 메시지를 설정합니다.

1. [StartChatContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartChatContact.html) API를 호출하여 채팅 고객 응대를 시작합니다.

1. 메시지 스트리밍을 시작하려면 [StartContactStreaming](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartContactStreaming.html) API를 호출합니다.

1. [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html) API를 호출하여 참가자의 연결을 생성합니다.

## 1단계: 표준 SNS 주제 생성
<a name="step1-chat-streaming"></a>

1. Amazon SNS 콘솔로 이동합니다.

1.  AWS 계정에서 [SNS 주제를 생성합니다](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html). **세부 정보** 섹션의 **유형**에서 **표준**을 선택하고 주제의 이름을 입력한 다음 **주제 생성**을 선택합니다.
**참고**  
현재 메시지 스트리밍 API는 메시지의 실시간 스트리밍을 위해 표준 SNS만 지원합니다. [Amazon SNS FIFO(선입선출) 주제](https://docs.aws.amazon.com/sns/latest/dg/sns-fifo-topics.html)는 지원하지 않습니다.

1. 주제를 만들면 **세부 정보** 섹션에 해당 Amazon 리소스 이름(ARN)이 표시됩니다. 주제 ARN을 클립보드에 복사합니다. [3단계: 고객 응대에서 메시지 스트리밍 활성화](#step3-chat-streaming)에서 ARN 주제를 사용하게 됩니다.

   ARN 주제는 다음 예제와 유사합니다.

   ```
   arn:aws:sns:{{us-east-1}}:{{123456789012}}:{{MyTopic}}                                
   ```

1. **액세스 정책** 탭을 선택하고 **편집**을 선택한 다음, Connect Customer에 게시할 권한이 있도록 SNS 주제에 리소스 기반 정책을 추가합니다. 다음은 JSON 편집기에 복사하여 붙여넣은 다음 값으로 사용자 지정할 수 있는 샘플 SNS 정책입니다.

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Principal":{
               "Service":"connect.amazonaws.com"
            },
            "Action":"sns:Publish",
            "Resource":"arn:aws:sns:{{us-east-1}}:{{111122223333}}:{{TopicName}}",
            "Condition":{
               "StringEquals":{
                   "aws:SourceAccount":"{{111122223333}}"
               },
               "ArnEquals":{
               "aws:SourceArn":"arn:aws:connect:{{us-east-1}}:{{111122223333}}:instance/{{InstanceId}}"
               }
            }
         }
      ]
   }
   ```

------
**참고**  
기본 **액세스 정책**에는 다음과 같은 조건이 `sourceOwner`에 적용됩니다.  

   ```
   "Condition": {
           "StringEquals": {
             "AWS:SourceOwner": "921772911154"
           }
         }
   ```
이를 제거하고 예를 들어 `SourceAccount`로 대체해야 합니다.  

   ```
   "Condition":{
               "StringEquals":{
                  "aws:SourceAccount":"YOUR_AWS_ACCOUNT_ID"
               },
               "ArnEquals":{
                  "aws:SourceArn":"YOUR_CONNECT_INSTANCE_ARN"
               }
            }
   ```
이렇게 하면 [교차 서비스에서 혼동된 대리자](cross-service-confused-deputy-prevention.md) 문제를 예방할 수 있습니다.

1. SNS에서 서버 측 암호화를 사용하는 경우 KMS key에 `connect.amazonaws.com` 권한이 활성화되어 있는지 확인하세요. 다음은 샘플 정책입니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "key-consolepolicy-3",
       "Statement": [
           {
               "Sid": "Enable IAM User Permissions",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::{{111122223333}}:root",
                   "Service": "connect.amazonaws.com"
               },
               "Action": "kms:*",
               "Resource": "*"
           },
           {
               "Sid": "Allow access for Key Administrators",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::{{111122223333}}:root",
                   "Service": "connect.amazonaws.com"
               },
               "Action": [
                   "kms:Create*",
                   "kms:Describe*",
                   "kms:Enable*",
                   "kms:List*",
                   "kms:Put*",
                   "kms:Update*",
                   "kms:Revoke*",
                   "kms:Disable*",
                   "kms:Get*",
                   "kms:Delete*",
                   "kms:TagResource",
                   "kms:UntagResource",
                   "kms:ScheduleKeyDeletion",
                   "kms:CancelKeyDeletion"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

## 2단계: 채팅 고객 응대 시작
<a name="step2-chat-streaming"></a>

1. Connect Customer [StartChatContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartChatContact.html) API를 호출하여 채팅 연락을 시작합니다.

   Connect Customer APIs
   + [Class AmazonConnectClientBuilder](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/connect/AmazonConnectClientBuilder.html) 
   + [서비스 클라이언트 생성](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/creating-clients.html) 

1. 이러한 응답 속성은 스트리밍을 활성화하는 데 필요한 다른 채팅 API를 호출하는 데 사용되므로 [StartChatContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartChatContact.html) 응답에서 `ContactId` 및 `ParticipantToken`을 추적합니다. 이에 대해서는 다음 단계에 설명합니다.

## 3단계: 고객 응대에서 메시지 스트리밍 활성화
<a name="step3-chat-streaming"></a>
+ [StartContactStreaming](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartContactStreaming.html)을 호출하여 SNS 주제에 대한 실시간 메시지 스트리밍을 활성화합니다.
  + **제한**: 고객 응대당 최대 2개의 SNS 주제를 구독할 수 있습니다.
  + [StartContactStreaming](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartContactStreaming.html)을 호출할 때 SNS 주제의 Amazon 리소스 이름(ARN)을 제공해야 합니다([1단계: 표준 SNS 주제 생성](#step1-chat-streaming) 참조).

    단일 SNS 주제 ARN은 여러에서 사용할 수 AWS 계정있지만 Connect Customer 인스턴스와 동일한 리전에 있어야 합니다. 예를 들어 주제 ARN이 **us-east-1**에 있는 경우 Connect Customer 인스턴스는 **us-east-1**에 있어야 합니다.
  + 스트리밍 엔드포인트에서 수신되지 않는 초기 채팅 메시지의 경우 [GetTranscript](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_GetTranscript.html) API를 호출하여 초기 메시지를 수신할 수 있습니다.

## 4단계: 참가자 연결 생성
<a name="step4-chat-streaming"></a>
+ `ConnectParticipant` 속성을 true로 전달하여 [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)을 호출합니다.
  + 채팅을 만든 후 5분 이내에 [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)을 호출해야 합니다
  + `ConnectParticipant`를 true로 설정하여 [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)을 호출하는 것은 [2단계: 채팅 고객 응대 시작](#step2-chat-streaming)에서 스트리밍을 활성화하고 발신자 참가자가 `Customer`인 경우에만 작동합니다.
  + 이미 `WEBSOCKET`을 사용하여 채팅 고객 응대에 성공적으로 연결한 경우에는 이 단계(참가자 연결 생성)는 선택 사항입니다.

## 다음 단계
<a name="nextsteps-chat-streaming"></a>

메시지 스트리밍 API를 사용할 준비가 모두 완료되었습니다.

1. 작동하는지 확인하려면 만든 SNS 주제에 메시지가 게시되었는지 확인하세요. 이 작업은 Amazon CloudWatch 지표를 사용하여 수행할 수 있습니다. 자세한 내용은 [CloudWatch를 사용하여 Amazon SNS 주제 모니터링](https://docs.aws.amazon.com/sns/latest/dg/sns-monitoring-using-cloudwatch.html)을 참조하세요.

1. SNS는 [보존 기간이 제한](https://aws.amazon.com/blogs//aws/sns-ttl-control/)되어 있으므로 [Amazon Simple Queue Service(Amazon SQS)](https://aws.amazon.com/sqs/) [Amazon Kinesis](https://aws.amazon.com/kinesis/) 또는 다른 서비스를 설정하여 메시지를 보존하는 것이 좋습니다.

1. 고객 응대 흐름을 통해 채팅 [연결이 해제](disconnect-hang-up.md)되거나 고객이 채팅 연결을 끊는 경우에는 [StopContactStreaming](https://docs.aws.amazon.com/connect/latest/APIReference/API_StopContactStreaming.html)을 사용하는 것은 선택 사항이며 필수는 아닙니다. 그러나 `StopContactStreaming`은 채팅이 활성 상태이고 진행 중이더라도 SNS 주제에 대한 메시지 스트리밍을 중지하는 옵션을 제공합니다.