

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

# 사용자 지정 참가자를 통합하여 Amazon Connect에서 채팅 흐름 환경을 사용자 지정
<a name="chat-customize-flow"></a>

봇과 같은 다른 솔루션을 Amazon Connect 채팅과 통합하여 사용자 지정 채팅 흐름 환경을 만들 수 있습니다.

다음에서는 채팅 흐름 환경을 사용자 지정하는 방법을 간략하게 설명합니다. 채팅 대화가 시작된 후 각 채팅 세그먼트에 대해 이러한 단계를 구현하세요. 채팅 흐름에서 API를 호출하는 [AWS Lambda 함수](invoke-lambda-function-block.md) 블록을 추가하는 것이 좋습니다.

**중요**  
[AWS Lambda 함수](invoke-lambda-function-block.md) 함수 블록 앞에 [프롬프트 재생](play.md) 블록을 추가하세요. 이는 인바운드 채팅 흐름에서 ** AWS Lambda 호출** 블록이 첫 번째 블록인 경우에만 필요합니다.

1.  [실시간 채팅 메시지 스트리밍을 활성화합니다](chat-message-streaming.md).

1. Amazon Connect [CreateParticipant API](https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateParticipant.html)를 호출하여 채팅 고객 응대에 사용자 지정 참가자(`ParticipantRole` = `CUSTOM_BOT`)를 추가합니다.

   1. Amazon Connect API를 호출하기 위한 SDK 클라이언트를 만드는 방법에 대한 자세한 내용은 다음 주제를 참조하세요.
      + [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. [CreateParticipant](https://docs.aws.amazon.com/connect/latest/APIReference/API_CreateParticipant.html)에서 얻은 `ParticipantToken`을 보관하여 [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)을 호출합니다. `CreateParticipantConnection`은 다른 Amazon Connect 참가자 API를 호출하는 데 사용할 수 있는 `ConnectionToken`을 반환합니다.

      사용자 지정 참가자에 대한 연결을 생성하기 위해 [CreateParticipantConnection](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_CreateParticipantConnection.html)을 호출하는 경우:
      + 사용자 지정 참가자를 메시지 스트리밍을 위해 연결된 것으로 표시하려면 `ConnectParticipant`를 `True`로 설정합니다.
      + 후속 Amazon Connect 참가자 서비스 API를 호출하려면 `Type`을 `CONNECTION_CREDENTIALS`로 전달합니다.
      + `CreateParticipant`를 호출한 후 15초 이내에 `CreateParticipantConnection`을 호출해야 합니다.

1. 참가자가 고객 응대에 추가되면 Amazon Connect 참가자 서비스 API를 사용하여 고객과 메시지를 교환할 수 있습니다.

1. 참가자의 연결을 끊으려면 [DisconnectParticipant API](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_DisconnectParticipant.html)를 호출합니다.

**참고**  
에이전트나 Amazon Lex 봇이 이미 고객 응대에 있는 경우에는 사용자 지정 참가자를 채팅에 추가할 수 없습니다.
에이전트나 Amazon Lex 봇이 고객 응대에 참여하면 사용자 지정 참가자의 연결이 끊어집니다.
한 고객 응대에 한 명의 사용자 지정 참가자만 있을 수 있습니다.
사용자 지정 참가자는 고객이 업로드할 수 있는 첨부 파일에 액세스할 수 없습니다.

사용자 지정 참가자가 고객 응대와 채팅할 수 있는 시간을 다음과 같이 구성하는 것이 좋습니다.
+ [대기](wait.md) 블록에서 `ParticipantRole` = `CUSTOM_BOT`에 대한 **Timeout** 속성을 설정합니다.
+ 사용자 지정 봇 참가자가 시간 초과 전에 연결이 끊어지지 않으면 고객 응대가 **Time Expired** 브랜치로 라우팅됩니다. 이를 통해 고객의 문의를 해결하기 위해 다음에 실행할 블록을 결정할 수 있습니다.

**참고**  
고객 응대가 **Time Expired** 브랜치로 라우팅되는 경우에는 고객 응대와의 연결이 끊어지지 않습니다. 참가자의 연결을 끊으려면 [DisconnectParticipant API](https://docs.aws.amazon.com/connect-participant/latest/APIReference/API_DisconnectParticipant.html)를 호출해야 합니다.

## 사용자 지정 참가자에 가입한 고객을 위한 타이머 활성화
<a name="integrate-bot-extension-client"></a>

사용자 지정 봇과 같은 사용자 지정 참가자에 가입한 고객에 대해 타이머를 활성화할 수 있습니다. 이렇게 하면 고객이 응답을 중지하는 시기를 감지하여 봇 대화를 종료하고 흐름의 다음 단계를 수행할 수 있습니다. 유휴 참가자를 종료하면 사용자 지정 참가자와 관련된 응답하지 않는 고객이 있는 미결 채팅 수를 줄일 수 있습니다.

유휴 참가자 사용자 지정 봇 확장을 통합하고 선택적으로 사용자 지정 타이머 값을 설정하려면 다음 단계를 수행합니다. 이 단계에서는 채팅에 사용자 지정 참가자 기능을 이미 사용한다고 가정합니다.

1. 사용자 지정 참가자가 채팅에 참여하기 전에 고객을 위한 [UpdateParticipantRoleConfig](https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdateParticipantRoleConfig.html) API를 간접적으로 호출합니다.

   1. 타이머는 고객에 대해서만 활성화됩니다. 사용자 지정 참가자에는 유휴 참가자 또는 자동 연결 해제 타이머가 없습니다.

   1. API를 간접적으로 호출하는 방법을 선택할 수 있습니다.

   1. 이 단계에서 구성된 타이머 값은 채팅 수명 동안 유지됩니다. **고객 및 에이전트 상호 작용**에 대해 다른 타이머 값을 사용하려면 2단계를 참조하세요.

   1. 클라이언트가 이미 이 방식으로 설정된 경우 사용자 지정 참가자를 통합하기 위해 다른 작업을 수행할 필요가 없습니다.

1. (선택 사항) **고객 및 에이전트 상호 작용** 중과 **고객 및 사용자 지정 참가자 상호 작용** 중 다른 타이머 및 타이머 값을 구성하려면:
   + 에이전트가 채팅에 참여하기 전에 원하는 구성으로 [UpdateParticipantRoleConfig](https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdateParticipantRoleConfig.html) API를 다시 간접적으로 호출합니다.

채팅 타이머에 대한 자세한 내용은 [채팅 참여자를 위한 채팅 타임아웃 설정](setup-chat-timeouts.md) 섹션을 참조하세요.

### 타이머 시작
<a name="starting-timers"></a>

사용자 지정 참가자가 [CreateParticipantConnection](https://docs.aws.amazon.com/connect/latest/APIReference/API_connect-participant_CreateParticipantConnection.html) API를 사용하여 고객과 연결을 설정한 후 고객에 대한 타이머가 시작됩니다.

### 호환되지 않는 참가자가 사용자 지정 참가자와 채팅에 참여하면 어떻게 되나요?
<a name="non-compatible-participants"></a>

다음은 에이전트 또는 Lex 봇 참가자가 사용자 지정 참가자와 채팅에 참여하고 호환되지 않는 참가자인 경우 발생합니다.

1. 사용자 지정 참가자는 채팅에서 자동으로 연결이 해제됩니다.

1. 이전에 활성화된 모든 타이머가 종료되고 연결된 참가자에 대해 새 타이머가 생성됩니다(타이머가 구성된 경우).

1. 또한 각 새 타이머는 최신 구성으로 업데이트됩니다(필요한 경우). 이렇게 하면 채팅의 새 활성 참가자 세트에 대해 새 '유휴 세션'이 효과적으로 설정됩니다.

### 대기 블록 타이머와의 상호 작용
<a name="interaction-wait-block-timer"></a>

유휴 타이머는 [대기](wait.md) 블록 작동 방식에 영향을 주지 않습니다.

채팅 연락이 **대기** 블록에 진입할 때 시작되는 **대기** 블록 타이머는 계속 작동합니다. **대기** 블록 타이머가 만료되면 유휴 참가자 타이머가 활성 상태인지 여부에 관계없이 연락처가 흐름을 재개하고 **만료된 시간** 브랜치로 라우팅됩니다.

## 문제 해결 팁
<a name="ts-chat-custom-bot"></a>
+ `ResourceNotFoundException`: 

  `CreateParticipantConnection` API를 호출할 때 사용자 지정 참가자에 대한`ResourceNotFoundException`이 발생하면 `CreateParticipantConnection` API를 `CreateParticipant` API의 15초 이내에 호출했는지 확인합니다.
+ `AccessDeniedException`: 

  `AccessDeniedException` 오류가 발생하고 참가자 역할이 CUSTOM\$1BOT인 경우 봇이 첨부 파일에 액세스하려고 함을 나타냅니다. CUSTOM\$1BOT의 참가자 역할은 고객이 업로드하는 첨부 파일에 액세스할 수 없습니다.