CXone Mobile SDK이벤트 도표
이 페이지에서는 채팅 상호작용 중에 발생하는 일반적인 이벤트에 대한 도표와 설명을 제공합니다.
애플리케이션 활성화됨
이 시퀀스 도표는 모바일 앱이 활성화되고, 채팅을 준비하고, 방문자 및 고객 정보를 처리하고, 백엔드 서비스와 통신할 때의 흐름을 캡처합니다. 오류가 발생하면 적절하게 처리되고 기록됩니다.
초기 상태:
-
SDK의 초기 상태는 initial로 설정됩니다.
-
모바일 앱이 포그라운드로 들어갑니다.
채팅 준비:
-
사용자는 prepare(brandId:channelId:)를 호출하여 채팅 준비를 시작합니다.
-
채팅 상태가 초기 또는 오프라인이 아닌 경우 IllegalChatStateError가 반환됩니다.
-
그렇지 않은 경우 SDK가 채팅 상태를 preparing으로 설정하고 onChatUpdated()로 UI에 알립니다.
채널 구성:
-
SDK가 getChannelConfiguration()을 사용하여 백엔드에서 채널 구성을 요청합니다.
-
서버 오류가 있으면 ServerError가 반환되고 채팅 상태는 initialize로 재설정됩니다.
-
그렇지 않으면 채널 구성이 수신되고 SDK가 대상 ID를 생성합니다.
-
방문자 ID 또는 고객 ID가 null인 경우 로컬에 만들어져 저장됩니다.
방문자 및 고객 처리:
-
SDK가 백엔드에서 createOrUpdateVisitor(visitorId:customerId:deviceToken:)를 호출합니다.
-
서버 오류가 발생하면 채팅 상태가 initialize로 재설정됩니다.
-
그렇지 않으면 방문자 및 고객 처리가 성공적입니다.
채팅 준비 상태:
-
채팅 상태가 prepared로 설정됩니다.
-
UI에는 onChatUpdated()를 사용하여 알립니다.
-
페이지 보기에 대한 분석은 모바일 앱과 백엔드 사이에서 추적됩니다.
애플리케이션이 백그라운드로 들어감
이 시퀀스 도표는 모바일 앱이 백그라운드로 들어가고, 페이지 보기 추적을 처리하고, 백엔드 서비스와 통신할 때의 흐름을 캡처합니다. 오류가 발생하면 적절하게 처리됩니다. 애플리케이션이 백그라운드로 들어가면, 그것은 더 이상 장치에서 보거나 상호작용하는 주요 항목이 아니라는 의미입니다. 메시징 앱을 사용하면서 홈 버튼을 누르거나 다른 앱으로 전환한다고 상상해 보십시오. 메시징 앱이 이제 백그라운드에 있습니다. 아직 실행 중이지만 적극적으로 사용하고 있지는 않습니다. 이는 앱을 최소화하거나, 다른 앱으로 전환하거나, 휴대폰을 잠그면 발생합니다. 앱이 여전히 실행되고 있지만 더 이상 포그라운드에 있지 않습니다.
애플리케이션이 백그라운드로 들어감:
-
UI에는 애플리케이션이 백그라운드로 전환 중임을 나타내는 상자가 표시됩니다.
-
UI가 pageViewEnded를 사용하여 페이지 보기가 종료되었음을 SDK에 알립니다.
-
백엔드가 pageViewEnded 이벤트를 수신합니다.
-
서버 오류가 있으면 처리됩니다.
-
그렇지 않으면 이벤트가 성공합니다.
-
연결 해제 및 상태 처리:
-
UI는 disconnect()를 사용하여 연결 해제를 시작합니다.
-
현재 상태에 따라:
-
준비 중인 경우 SDK가 상태를 initial로 설정합니다.
-
이미 준비된 경우 SDK가 소켓 연결을 끊고 상태를 prepared로 설정합니다.
-
페이지 보기
이 시퀀스 도표는 SDK 및 백엔드 서비스와의 상호작용을 포함하여 사용자가 모바일 앱에서 페이지를 볼 때의 흐름을 나타냅니다. 사용자가 페이지를 보고, 방문 세부사항을 추적하고, 백엔드 서비스와 통신할 때 분석 이벤트를 표시합니다. 오류가 발생하면 적절하게 처리됩니다.
애플리케이션 활성화 참조::
-
도표는 애플리케이션이 활성화된 이벤트를 참조합니다.
페이지 이벤트 보기:
-
사용자가 페이지를 보고 UI는 viewPage(title:url:)로 SDK에 알립니다.
-
채팅 모드가 확인됩니다.
-
준비되지 않은 경우 illegalChatStateError가 반환됩니다.
-
그렇지 않으면 방문 세부사항의 만료 여부가 확인됩니다.
-
만료된 경우 새 방문 세부사항이 생성됩니다(UUID 및 만료).
-
유효한 경우 SDK가 현재 만료를 조정합니다.
-
-
마지막으로 본 페이지가 전송되지 않은 경우 SDK가 페이지 보기를 종료합니다.
-
현재 마지막으로 본 페이지 제목, URI, 타임스탬프가 저장됩니다.
-
서버 오류 등 장애가 발생하면 처리됩니다.
-
백엔드 상호작용:
-
SDK가 백엔드 서비스와 통신합니다.
-
visitorVisit(date:)가 방문을 기록하기 위해 호출됩니다.
-
pageView(title:uri:timestamp)가 페이지 보기를 기록하기 위해 호출됩니다.
-
서버 오류가 있으면 처리됩니다.
-
오픈 채팅
이 시퀀스 도표는 사용자가 채팅을 열고, OAuth를 처리하고, 백엔드 서비스와의 연결을 설정할 때의 흐름을 캡처합니다. 오류가 발생하면 적절하게 처리됩니다.
애플리케이션 활성화 참조::
-
도표는 애플리케이션이 활성화된 이벤트를 참조합니다.
채팅 열기:
-
앱 사용자가 채팅을 열고 UI가 connect()와의 연결을 시작합니다.
-
채팅 상태가 확인됩니다.
-
연결 중인 경우 SDK가 WebSocket 연결을 설정합니다.
-
초기 또는 준비 중인 경우 IllegalChatStateError가 반환됩니다.
-
준비된 경우 채팅 모드가 확인됩니다.
-
라이브 채팅 및 라이브 채팅 상태가 오프라인인 경우 채팅 상태는 offline으로 설정됩니다.
-
그렇지 않으면 WebSocket 연결이 설정됩니다.
-
OAuth 처리는 활성화 여부에 따라 달라집니다.
-
-
OAuth 처리:
-
OAuth가 활성화된 경우:
-
SDK가 reconnectCustomerEventData(accessToken:)와 다시 연결됩니다.
-
서버 오류가 있으면 처리됩니다.
-
그렇지 않으면 CustomerReconnectedEvent가 수신됩니다.
-
-
OAuth가 비활성화된 경우:
-
SDK가 authorizeCustomerEventData(authorizationCode:codeVerifier:)를 통해 승인합니다.
-
서버 오류가 있으면 처리됩니다.
-
그렇지 않으면 CustomerAuthorizedEvent가 수신되고 액세스 토큰과 고객 ID가 저장됩니다.
-
채팅 연결 상태:
-
채팅 상태가 connected로 설정됩니다.
-
UI에는 onChatUpdated()를 사용하여 알립니다.
-
채팅이 단일 단일 스레드 앱에서 각 컨택은 단 하나의 채팅 스레드를 가질 수 있습니다. 조직과 진행하는 모든 인터랙션은 이러한 하나의 채팅 스레드에서 발생합니다.인지 다중 스레드 다중 스레드 앱에서 컨택은 새 주제를 의논하기 위해 원하는 만큼 많은 스레드를 생성할 수 있습니다. 이러한 스레드는 동시에 활성화될 수 있습니다.인지에 따라 관련 채팅 보기가 표시됩니다.
단일 스레드
이 시퀀스 도표는 사용자가 단일 단일 스레드 앱에서 각 컨택은 단 하나의 채팅 스레드를 가질 수 있습니다. 조직과 진행하는 모든 인터랙션은 이러한 하나의 채팅 스레드에서 발생합니다. 스레드 채팅과 상호작용하고, 스레드 복구를 처리하고, 백엔드 서비스와 통신할 때의 흐름을 캡처합니다. 오류가 발생하면 적절하게 처리됩니다.
애플리케이션 활성화 참조::
-
도표는 채팅 열기 이벤트를 참조합니다.
스레드 복구:
-
SDK가 로컬 저장소에서 스레드 ID를 로드합니다.
-
외부 플랫폼의 스레드 ID가 로컬에 저장된 경우 SDK가 RecoverMessagingThreadEvent(threadId:)를 사용하여 메시징 스레드를 복구합니다.
-
UUID를 사용할 수 없는 경우 SDK가 RecoverMessagingThreadEvent(nil)를 사용하여 복구를 시도합니다.
스레드 존재 확인:
-
스레드가 존재하면 ThreadRecoveredEvent가 수신됩니다.
-
채팅 및 스레드 상태는 ready로 설정됩니다.
-
UI에는 onThreadUpdated()를 사용하여 알립니다.
-
-
스레드가 존재하지 않으면 ThreadRecoverFailedEvent가 수신됩니다.
-
채팅 상태가 준비됨으로 설정됩니다.
-
UI에는 onChatUpdated()를 사용하여 알립니다.
-
참고 사항은 스레드 복구가 필요하지 않음을 나타냅니다.
-
채팅 상호작용:
-
UI에는 사용자가 상담원과 대화할 수 있는 채팅 창이 표시됩니다.
멀티 스레드
이 시퀀스 도표는 사용자가 다중 스레드 다중 스레드 앱에서 컨택은 새 주제를 의논하기 위해 원하는 만큼 많은 스레드를 생성할 수 있습니다. 이러한 스레드는 동시에 활성화될 수 있습니다. 채팅과 상호작용하고, 스레드 검색을 처리하고, 백엔드 서비스와 통신할 때의 흐름을 캡처합니다. 오류가 발생하면 적절하게 처리됩니다.
애플리케이션 활성화 참조::
-
도표는 채팅 열기 이벤트를 참조합니다.
스레드 목록 검색:
-
SDK가 FetchThreadListEvent를 사용하여 백엔드에서 스레드 목록을 가져옵니다.
-
서버 오류가 있으면 처리됩니다.
-
그렇지 않으면 스레드 목록을 가져옵니다.
스레드 처리:
-
스레드가 존재하는 경우:
-
SDK가 각 스레드의 상태를 received로 설정하고 마지막 메시지를 로드합니다.
-
스레드 메타데이터가 로드되고 상태가 loaded로 설정됩니다.
-
채팅 상태가 ready로 설정되고 UI에 알림이 표시됩니다.
-
-
스레드가 존재하지 않는 경우:
-
채팅 상태가 ready로 설정되고 UI에 알림이 표시됩니다.
-
스레드 만들기 또는 열기:
-
새 스레드를 만드는 경우:
-
사용자가 스레드 생성을 시작합니다.
-
-
기존 스레드를 여는 경우:
-
사용자가 스레드를 선택합니다.
-
UI가 openThread(thread:)를 사용하여 스레드를 엽니다.
-
스레드가 백엔드에서 복구됩니다.
-
서버 오류가 있으면 처리됩니다.
-
그렇지 않으면 스레드가 복구되고 상태가 ready로 설정됩니다.
-
채팅 상호작용:
-
사용자가 상담원과 채팅에 참여합니다.
라이브 채팅
이 시퀀스 도표는 라이브 채팅 상호작용의 백엔드 흐름을 보여줍니다. 라이브 채팅은 실시간 디지털 채팅 옵션인 반면, 채팅 메시징은 개인 메시지나 직접 메시지와 유사한 비동기 메시징 옵션입니다.
스레드 만들기
이 시퀀스 도표는 사용자가 새 채팅 스레드를 만들고, 스레드 만들기를 처리하고, SDK와 통신할 때의 흐름을 캡처합니다. 오류가 발생하면 적절하게 처리됩니다.
사용자 세부사항 및 채팅 전::
-
고객 이름이 제공되지 않으면 UI에 사용자 세부사항 양식 보기가 표시됩니다.
-
채팅 전 정보를 사용할 수 있는 경우 UI에 채팅 전 양식 보기가 표시됩니다.
스레드 만들기:
-
사용자가 대화를 시작합니다.
-
UI가 createThread(customFields:)를 사용하여 스레드 생성을 시작합니다.
-
채팅 모드가 다중 스레드가 아니고 스레드가 이미 존재하는 경우:
-
unsupportedChannelConfigError가 반환됩니다.
-
오류 경고가 표시됩니다.
-
-
그렇지 않으면:
-
SDK가 UUID를 사용하여 로컬로 스레드를 만듭니다.
-
UUID가 로컬에 저장됩니다.
-
스레드 상태가 pending으로 설정됩니다.
-
UI에는 onThreadUpdated()를 사용하여 알립니다.
-
상담원과 채팅
이 시퀀스 도표는 최종 사용자가 채팅을 통해 상담원과 상호작용하고, 환영 메시지를 처리하고, 백엔드 서비스와 통신할 때의 흐름을 캡처합니다. 오류가 발생하면 적절하게 처리됩니다.
채팅 초기화:
-
사용자는 sendMessage(message:)를 사용하여 메시지를 보냅니다.
-
환영 메시지가 있는 경우:
-
SDK가 SendOutboundMessageEvent(welcomeMessage:)를 사용하여 아웃바운드 환영 메시지를 보냅니다.
-
서버 오류가 있으면 처리됩니다.
-
그렇지 않으면 MessageCreatedEvent가 수신되고 UI가 업데이트됩니다.
-
-
SDK가 sendMessageEvent를 사용하여 사용자의 메시지를 보냅니다.
-
서버 오류가 있으면 처리됩니다.
-
그렇지 않으면 MessageCreatedEvent가 수신되고 UI가 업데이트됩니다.
-
컨택 종료
이 시퀀스 도표는 사용자가 채팅을 종료하고, 대화 종료를 처리하고, 백엔드 서비스와 통신할 때의 흐름을 캡처합니다. 오류가 발생하면 적절하게 처리됩니다.
채팅 종료:
-
사용자가 대화 종료를 누릅니다.
-
UI가 endConversation()을 사용하여 대화를 종료하도록 SDK에 알립니다.
-
백엔드가 EndConversationEvent를 수신합니다.
-
서버 오류가 있으면 처리됩니다.
-
그렇지 않으면 케이스 상태가 변경되고 스레드 상태가 closed로 설정됩니다.
-
UI에는 onThreadUpdated()를 사용하여 알립니다.
-
컨택 경험 종료 보기:
-
UI에 컨택 종료 보기가 표시됩니다.
대규모 이벤트 처리
AWS API 게이트웨이의 제한 사항 중 하나는 하나의 메시지에 최대 128KB만 보낼 수 있다는 것입니다. 서버에서 클라이언트로 더 큰 이벤트를 보내는 방법:
-
서버에서 공개적으로 사용 가능한 S3 버킷에 더 큰 이벤트를 업로드합니다.
-
그러면 클라이언트는 WebSocket을 통해 이 파일에 대한 URL만 수신하고 REST를 통해 실제 이벤트 본문을 다운로드할 수 있습니다.