채팅 개념

Azure Communication Services 채팅을 사용하면 플랫폼 간 애플리케이션에 실시간 텍스트 통신을 추가할 수 있습니다. 이 페이지에는 주요 채팅 개념 및 기능이 요약되어 있습니다. SDK, 언어, 플랫폼 및 자세한 기능 지원 목록은 Communication Services Chat SDK(Software Development Kit) 개요를 참조하세요.

채팅 API는 지속적으로 저장되는 텍스트 및 데이터 통신을 위한 자동 스케일링 서비스를 제공합니다. 기타 주요 기능은 다음과 같습니다.

  • 사용자 지정 ID 및 주소 지정 - Azure Communication Services는 통신 엔드포인트의 주소를 지정하는 일반 ID를 제공합니다. 클라이언트는 이러한 ID를 사용하여 Azure 서비스에 대해 인증하고 사용자가 제어하는 chat threads에서 서로 통신합니다.
  • 암호화 - 채팅 SDK는 트래픽을 암호화하고 유선 변조를 방지합니다.
  • Microsoft Teams 모임 - 채팅 SDK는 Teams 모임에 조인하고 Teams 채팅 메시지와 통신할 수 있습니다.
  • 실시간 알림 - 채팅 SDK는 효율적인 영구 연결(WebSocket)을 사용하여 원격 사용자가 입력하는 경우와 같은 실시간 알림을 받습니다. 앱이 백그라운드에서 실행되는 경우 팝업 알림("알림")을 실행하여 최종 사용자에게 새 스레드 및 메시지를 알리는 기본 제공 기능을 사용할 수 있습니다.
  • 봇 확장성 - Azure Bot 통합을 사용하여 채팅 서비스에 Azure Bot을 쉽게 추가할 수 있습니다.

채팅 개요

채팅 대화는 채팅 스레드 내에서 발생합니다. 채팅 스레드는 다음 속성을 가집니다.

  • 채팅 스레드 ID는 ChatThreadId입니다.
  • 채팅 스레드에는 메시지를 보낼 수 있는 참가자로 0~250명의 사용자가 있습니다.
  • 사용자는 무제한의 채팅 스레드에 속할 수 있습니다.
  • 스레드 참가자만 메시지를 보내거나 받거나, 참가자를 추가하거나, 참가자를 제거할 수 있습니다.
  • 사용자는 자신이 만든 모든 채팅 스레드에 참가자로 추가됩니다.

사용자 액세스

Azure Communication Services는 채팅 토큰을 사용하여 세 가지 수준의 사용자 액세스 제어를 지원합니다. 자세한 내용은 ID 및 토큰 참조하세요. 참가자는 다른 참가자가 보낸 메시지에 대한 쓰기 권한이 없으므로, 메시지를 보낸 사람만 보낸 메시지를 업데이트하거나 삭제할 수 있습니다. 다른 참가자가 이 작업을 시도하면 오류가 발생합니다.

채팅 데이터

Azure Communication Services는 고객이 삭제할 때까지 채팅 메시지를 무기한 저장합니다. 채팅 스레드 참가자는 ListMessages를 사용하여 특정 스레드에 대한 메시지 기록을 볼 수 있습니다. 채팅 스레드에서 제거된 사용자는 이전 메시지 기록을 볼 수 있지만 새 메시지를 보내거나 받을 수는 없습니다. 시스템에서는 실수로 삭제된 메시지를 복구할 수 없습니다. Azure Communication Services 채팅 서비스에 의해 저장되는 데이터에 대한 자세한 내용은 데이터 상주 및 개인 정보 페이지를 참조하세요.

2024년부터 고객이 메시지 무기한 보관 또는 90일 후 자동 삭제 중에서 선택해야 하는 새로운 기능이 도입될 예정입니다. 기존 메시지는 영향을 받지 않습니다.

가상 약속을 사용하는 고객의 경우 Teams 모임에서 채팅 메시지를 저장하려면 Teams 상호 운용성 사용자 개인 정보를 참조하세요.

서비스 제한

  • 채팅 스레드에 허용되는 최대 참가자 수는 250명입니다.
  • 허용되는 최대 메시지 크기는 약 28KB입니다.
  • 참가자가 20명이 넘는 채팅 스레드의 경우 수신 확인 및 입력 표시기 기능이 지원되지 않습니다.
  • Teams 상호 운용성 시나리오의 경우 입력 표시기 기능을 지원하려면 Teams 사용자가 아닌 Azure Communication Services 사용자의 수가 20 미만이어야 합니다.
  • Teams 상호 운용성 시나리오의 경우 Teams 사용자가 보낼 때 입력 표시기 이벤트에 빈 표시 이름이 포함될 수 있습니다.
  • Teams 상호 운용성 시나리오의 경우 Teams 사용자에 대해 수신 확인이 지원되지 않습니다.

채팅 아키텍처

채팅 아키텍처에는 1) 신뢰할 수 있는 서비스와 2) 클라이언트 애플리케이션의 두 가지 핵심 부분이 있습니다.

Diagram showing Communication Services' chat architecture.

  • 신뢰할 수 있는 서비스: 채팅 세션을 제대로 관리하려면 리소스 연결 문자열을 사용하여 Communication Services에 연결하는 데 도움이 되는 서비스가 필요합니다. 이 서비스는 채팅 스레드를 만들고, 참가자를 추가 및 제거하고, 사용자에게 액세스 토큰 발급을 담당합니다. 액세스 토큰에 대한 자세한 내용은 액세스 토큰 빠른 시작을 참조하세요.
  • 클라이언트 앱: 클라이언트 애플리케이션은 신뢰할 수 있는 서비스에 연결하고 사용자가 Communication Services에 직접 연결하는 데 사용되는 액세스 토큰을 받습니다. 채팅 스레드를 만들고 사용자를 참가자로 추가하면 클라이언트 애플리케이션을 사용하여 채팅 스레드에 연결하고 메시지를 보낼 수 있습니다. 클라이언트 애플리케이션의 실시간 알림을 사용하여 다른 참가자의 메시지 및 스레드 업데이트를 구독할 수 있습니다.

지능형 AI 기반 채팅 환경 빌드

채팅 서비스와 함께 Azure AI 서비스를 사용하여 다음과 같은 사용 사례를 빌드할 수 있습니다.

  • 고객에게서 들어오는 메시지에서 부정적인 감정을 감지하여 지원 상담원이 티켓의 우선 순위를 지정하도록 돕습니다.
  • 대화가 끝나면 요약을 생성하여 이메일을 통해 고객에게 다음 단계를 보내거나 나중에 후속 조치를 취합니다.
  • Azure Bot 및 릴레이 봇을 사용하여 Azure Communication Services 채팅 채널에 PVA(Power Virtual Agent)를 추가합니다.
  • 채팅 채널과 함께 하나 이상의 소셜 채널에서 실행되도록 봇을 구성합니다.

Diagram showing Azure Communication Services can be paired with Azure AI services.

메시지 유형

메시지 기록의 일부로 채팅은 사용자 생성 메시지와 시스템 생성 메시지를 공유합니다.

시스템 메시지는 다음과 같은 경우에 생성됩니다.

  • 채팅 스레드가 업데이트됨
  • 참가자가 추가되거나 제거되었음
  • 채팅 스레드 토픽이 업데이트되었음

채팅 스레드에서 List Messages 또는 Get Messages를 호출하면 결과에 두 종류의 메시지가 모두 시간순으로 포함됩니다. 사용자가 생성한 메시지의 경우 메시지를 채팅 스레드로 보낼 때 메시지 유형을 SendMessageOptions에서 설정할 수 있습니다. 값이 제공되지 않으면 Communication Services는 기본적으로 text 유형으로 설정됩니다. HTML을 보낼 때 이 값을 설정하는 것이 중요합니다. html이 지정되면 Communication Services는 클라이언트 디바이스에서 안전하게 렌더링되도록 콘텐츠를 삭제합니다.

  • text: 채팅 스레드의 일부로 사용자가 작성하여 보낸 일반 문자 메시지입니다.
  • html: 채팅 스레드의 일부로 사용자가 작성하여 보낸 html을 사용하는 형식화된 메시지입니다.

시스템 메시지 형식:

  • participantAdded: 한 명 이상의 참가자가 채팅 스레드에 추가되었음을 나타내는 시스템 메시지입니다.
  • participantRemoved: 참가자가 채팅 스레드에서 제거되었음을 나타내는 시스템 메시지입니다.
  • topicUpdated: 스레드 토픽이 업데이트되었음을 나타내는 시스템 메시지입니다.

실시간 알림

JavaScript 채팅 SDK는 실시간 알림을 지원합니다. 이 기능을 사용하면 클라이언트가 API를 폴링하지 않고도 실시간 업데이트 및 채팅 스레드에 들어오는 메시지를 위해 Communication Services를 수신 대기할 수 있습니다.

클라이언트 앱은 다음 이벤트를 구독할 수 있습니다.

  • chatMessageReceived - 참가자가 새 메시지를 채팅 스레드로 전송할 때.
  • chatMessageEdited - 채팅 스레드에서 메시지가 편집될 때.
  • chatMessageDeleted - 채팅 스레드에서 메시지가 삭제될 때.
  • typingIndicatorReceived - 다른 참가자가 입력 표시기를 채팅 스레드로 보낼 때.
  • readReceiptReceived - 다른 참가자가 읽은 메시지에 대해 읽음 확인을 보낼 때.
  • chatThreadCreated - Communication Services 사용자가 채팅 스레드를 만들 때
  • chatThreadDeleted - Communication Services 사용자가 채팅 스레드를 삭제할 때
  • chatThreadPropertiesUpdated - 채팅 스레드 속성이 업데이트될 때, 현재 스레드에 대한 토픽 업데이트만 지원됩니다.
  • participantsAdded - 사용자가 채팅 스레드 참가자로 추가될 때.
  • participantsRemoved - 기존 참가자가 채팅 스레드에서 제거될 때.
  • realTimeNotificationConnected - 실시간 알림이 연결된 경우
  • realTimeNotificationDisconnected - 실시간 알림의 연결이 끊어진 경우

참고 항목

실시간 알림은 서버 애플리케이션에서 사용할 수 없습니다.

서버 이벤트

이 기능을 사용하면 서버 애플리케이션은 메시지가 전송될 때, 참가자가 채팅에 참여하거나 나갈 때와 같은 이벤트를 수신 대기할 수 있습니다. 서버 애플리케이션은 이러한 이벤트에 반응하여 채팅에 참가자를 추가/제거하고, 채팅을 보관하고, 분석을 수행하고, 오케스트레이션을 위한 다른 많은 시나리오를 수행할 수 있습니다. 개발자가 사용할 수 있는 채팅 이벤트의 종류를 보려면 서버 이벤트참조하세요.

푸시 알림

Android 및 iOS 채팅 SDK는 푸시 알림을 지원합니다. 사용자 부재 중에 누락된 메시지에 대한 푸시 알림을 보내려면 Notification Hub 리소스를 Communication Services 리소스에 연결하여 푸시 알림을 보냅니다. 이렇게 하면 모바일 앱이 포그라운드에서 실행되고 있지 않을 때 들어오는 채팅 및 메시지에 대해 애플리케이션 사용자에게 알립니다.

IOS 및 Android SDK는 아래 이벤트를 지원합니다.

  • chatMessageReceived - 참가자가 새 메시지를 채팅 스레드로 전송할 때.

Android SDK는 추가 이벤트를 지원합니다.

  • chatMessageEdited - 채팅 스레드에서 메시지가 편집될 때.
  • chatMessageDeleted - 채팅 스레드에서 메시지가 삭제될 때.
  • chatThreadCreated - Communication Services 사용자가 채팅 스레드를 만들 때
  • chatThreadDeleted - Communication Services 사용자가 채팅 스레드를 삭제할 때
  • chatThreadPropertiesUpdated - 채팅 스레드 속성이 업데이트될 때, 현재 스레드에 대한 토픽 업데이트만 지원됩니다.
  • participantsAdded - 사용자가 채팅 스레드 참가자로 추가될 때.
  • participantsRemoved - 기존 참가자가 채팅 스레드에서 제거될 때.

자세한 내용은 푸시 알림을 참조하세요.

참고 항목

현재 Notification Hub를 사용하여 채팅 푸시 알림을 보내는 기능은 일반적으로 Android 버전 1.1.0 및 IOS 버전 1.3.0에서 사용할 수 있습니다.

다음 단계

다음 문서는 사용자에게 유용할 수 있습니다.