Call Automation 개요

Azure Communication Services Call Automation은 개발자에게 서버 기반 지능형 통화 워크플로, 음성 및 PSTN(공용 교환 전화망) 채널에 대한 통화 녹음/녹화를 빌드하는 기능을 제공합니다. C#, Java, JavaScript 및 Python에서 사용할 수 있는 SDK는 맞춤형 고객 상호 작용을 빌드하는 데 도움이 되는 작업 이벤트 모델을 사용합니다. 통신 애플리케이션은 실시간 통화 이벤트를 수신 대기하고 제어 평면 작업(예: 응답, 전송, 오디오 재생, 녹음/녹화 시작 등)을 수행하여 비즈니스 논리에 따라 통화를 조정하고 제어할 수 있습니다.

참고 항목

통화 자동화는 현재 통화를 지원하지 않습니다.

일반 사용 예

Call Automation을 사용하여 빌드할 수 있는 일반적인 사용 사례 중 일부는 다음과 같습니다.

  • 프로그램 VoIP 또는 PSTN은 클릭 투 콜(click-to-call) 및 약속 미리 알림과 같은 트랜잭션 워크플로를 호출하여 고객 서비스를 개선합니다.
  • 재생(오디오 URL, 텍스트 음성 변환 및 SSML) 및 인식(DTMF 및 음성) 작업을 사용하여 주문 예약 및 업데이트와 같은 사용 사례에 대해 고객에게 셀프 서비스를 제공하는 대화형 상호 작용 워크플로를 빌드합니다.
  • 직접 라우팅을 사용하여 통신 애플리케이션을 연락 센터 및 개인 전화 통신 네트워크와 통합합니다.
  • 플랫폼에서 구매자와 판매자 또는 사용자와 파트너 공급업체를 연결하는 번호 마스킹 서비스를 빌드하여 고객의 ID를 보호합니다.
  • 마케팅 및 고객 서비스를 위한 자동화된 고객 지원 활동 프로그램을 빌드하여 참여를 높입니다.
  • 품질 보증을 위해 통화 후 프로세스에서 믹싱되지 않은 오디오 녹음을 분석합니다.

Azure Communication Services Call Automation은 상위 수준 아키텍처에 표시된 것처럼 고객 서비스 시나리오에 대한 통화 워크플로를 빌드하는 데 사용할 수 있습니다. 인바운드 통화에 응답하거나 아웃바운드 전화를 걸 수 있습니다. 환영 메시지를 재생하고, Azure Communication Services 통화 SDK 클라이언트 앱의 라이브 에이전트에 고객을 연결하여 수신 전화 요청에 응답하는 등의 작업을 실행합니다. Azure Communication Services PSTN 또는 직접 라우팅이 지원되므로 이 워크플로를 연락 센터에 다시 연결할 수 있습니다.

고객 서비스 시나리오의 통화 흐름 다이어그램

기능

다음 목록에서는 현재 Azure Communication Services Call Automation SDK에서 사용할 수 있는 기능 집합을 보여 줍니다.

기능 영역 기능 .NET Java JavaScript Python
통화 전 시나리오 일 대 일 통화에 응답 ✔️ ✔️ ✔️ ✔️
그룹 통화에 응답 ✔️ ✔️ ✔️ ✔️
하나 이상의 엔드포인트에 새 아웃바운드 통화 배치 ✔️ ✔️ ✔️ ✔️
하나 이상의 엔드포인트로 통화 리디렉션(전달) ✔️ ✔️ ✔️ ✔️
수신 전화 거부 ✔️ ✔️ ✔️ ✔️
통화 중 시나리오 기존 통화에 하나 이상의 엔드포인트 추가 ✔️ ✔️ ✔️ ✔️
기존 통화에 엔드포인트 추가 취소 ✔️ ✔️ ✔️ ✔️
오디오 파일에서 오디오 재생 ✔️ ✔️ ✔️ ✔️
텍스트 음성 변환을 사용하여 오디오 재생 ✔️ ✔️ ✔️ ✔️
DTMF를 통해 사용자 입력 인식 ✔️ ✔️ ✔️ ✔️
사용자 음성 입력 인식 ✔️ ✔️ ✔️ ✔️
연속 DTMF 인식 시작 ✔️ ✔️ ✔️ ✔️
연속 DTMF 인식 중지 ✔️ ✔️ ✔️ ✔️
DTMF 보내기 ✔️ ✔️ ✔️ ✔️
참가자 음소거 ✔️ ✔️ ✔️ ✔️
기존 통화에서 하나 이상의 엔드포인트 제거 ✔️ ✔️ ✔️ ✔️
1:1 통화를 다른 엔드포인트로 블라인드 전환* ✔️ ✔️ ✔️ ✔️
참가자를 그룹 통화에서 다른 엔드포인트로 블라인드 전환* ✔️ ✔️ ✔️ ✔️
전화 끊기(통화 레그 제거) ✔️ ✔️ ✔️ ✔️
통화 종료(모든 참가자 제거 및 통화 종료) ✔️ ✔️ ✔️ ✔️
미디어 작업 취소 ✔️ ✔️ ✔️ ✔️
호출에 추가하거나 호출을 전송할 때 엔드포인트와 사용자 지정 정보 공유(VOIP 또는 SIP 헤더를 통해) ✔️ ✔️ ✔️ ✔️
쿼리 시나리오 통화 상태 가져오기 ✔️ ✔️ ✔️ ✔️
통화의 참가자 가져오기 ✔️ ✔️ ✔️ ✔️
통화의 모든 참가자 나열 ✔️ ✔️ ✔️ ✔️
통화 기록 녹음/녹화 시작/일시 중지/계속/중지 ✔️ ✔️ ✔️ ✔️

*VoIP 통화를 전화 번호로 전달 또는 리디렉션하는 것은 현재 지원되지 않습니다.

아키텍처

Call Automation은 REST API 인터페이스를 사용하여 요청을 수신하고 서비스 내에서 수행되는 모든 작업에 대한 응답을 제공합니다. 통화의 비동기 특성으로 인해 대부분의 작업에는 작업이 성공적으로 완료되거나 실패할 때 트리거되는 해당 이벤트가 있습니다.

Azure Communication Services는 Event Grid를 사용하여 모든 통화 중 작업 콜백에 대해 IncomingCall 이벤트 및 HTTPS 웹후크를 제공합니다.

수신 전화 및 작업에 대한 흐름의 스크린샷

통화 작업

통화 전 작업

이러한 작업은 IncomingCall 이벤트 알림에 나열된 대상 엔드포인트가 연결되기 전에 수행됩니다. 웹후크 콜백 이벤트는 거부 또는 리디렉션 작업이 아니라 "응답" 통화 전 작업만 전달합니다.

응답 애플리케이션에서 Event Grid 및 Call Automation SDK의 IncomingCall 이벤트를 사용하여 통화에 응답할 수 있습니다. 이 작업을 통해 애플리케이션이 인바운드 PSTN 호출에 프로그래밍 방식으로 응답할 수 있는 IVR 시나리오를 사용할 수 있습니다. 다른 시나리오로는 사용자를 대신하여 통화에 응답하는 경우가 있습니다.

거부 통화를 거부하면 애플리케이션에서 IncomingCall 이벤트를 수신하고 대상 엔드포인트에 통화가 연결되지 않도록 할 수 있습니다.

리디렉션 Event Grid의 IncomingCall 이벤트를 사용하여 하나 이상의 엔드포인트로 통화를 리디렉션하여 단일 또는 동시 벨소리(sim-ring) 시나리오를 만들 수 있습니다. 리디렉션 작업은 통화에 응답하지 않으며, 응답을 받기 위해 통화를 다른 대상 엔드포인트로 리디렉션하거나 전달하기만 합니다.

전화 걸기 전화 걸기 작업을 사용하여 전화 번호 및 다른 통신 사용자에게 아웃바운드 전화를 걸 수 있습니다. 사용 사례로는 애플리케이션이 아웃바운드 전화를 걸어 사용자에게 중단에 대해 사전에 알리거나 주문 업데이트에 대해 알리는 경우가 있습니다.

통화 중 작업

이러한 작업은 Call Automation SDK를 사용하여 응답하거나 시작한 통화에 대해 수행할 수 있습니다. 각 통화 중 작업에는 해당하는 성공 또는 실패 웹후크 콜백 이벤트가 있습니다.

참가자 추가/제거 각 참가자가 지원되는 대상 엔드포인트의 변형인 단일 요청에 하나 이상의 참가자를 추가할 수 있습니다. 호출에 성공적으로 추가된 모든 참가자에 대해 웹후크 콜백이 전송됩니다.

재생 애플리케이션이 통화에 응답하거나 아웃바운드 전화를 걸 때 호출자에 대한 오디오 프롬프트를 재생할 수 있습니다. 이 오디오는 통화 연결음 재생과 같은 시나리오에서 필요한 경우 반복할 수 있습니다. 자세한 내용은 재생 작업을 사용하여 사용자에 재생할 음성 프롬프트 사용자 지정에 대한 개념 및 방법 가이드를 참조하세요.

입력 인식 애플리케이션에서 오디오 프롬프트를 재생한 후 사용자 입력을 요청하여 애플리케이션에서 비즈니스 논리 및 탐색을 구동할 수 있습니다. 자세한 내용은 사용자 입력 수집에 대한 개념 및 방법 가이드를 참조하세요.

연속 DTMF 인식 애플리케이션이 특정 인식 작업을 트리거할 필요 없이 통화의 어느 시점에서든 DTMF 톤을 수신할 수 있어야 하는 경우입니다. 이는 에이전트가 통화 중이고 사용자가 일종의 ID 또는 추적 번호를 입력해야 하는 시나리오에서 유용할 수 있습니다. 이 보기를 사용하는 방법에 대한 자세한 내용은 가이드를 참조하세요.

DTMF 보내기 애플리케이션이 외부 참가자에게 DTMF 톤을 보내야 하는 경우 외부 에이전트에 전화 걸기 및 내선 번호 제공 또는 외부 IVR 메뉴 탐색과 같은 용도로 사용될 수 있습니다.

음소거 애플리케이션은 비즈니스 논리에 따라 특정 사용자를 음소거할 수 있습니다. 그런 다음, 사용자가 말하려는 경우 수동으로 음소거를 해제해야 합니다.

전달 애플리케이션이 통화에 응답하거나 엔드포인트에 아웃바운드 전화를 걸면 해당 통화가 다른 대상 엔드포인트로 전달될 수 있습니다. 1:1 통화를 전달하면 Call Automation SDK를 사용하여 통화를 제어하는 애플리케이션의 기능이 제거됩니다.

녹음/녹화 애플리케이션 비즈니스 논리에 따라 녹음/녹화를 시작/일시 중지/계속/중지할 시기를 결정하거나 최종 사용자에게 해당 작업을 트리거하는 제어 권한을 부여할 수 있습니다. 자세한 내용은 개념빠른 시작을 참조하세요.

전화 끊기 애플리케이션이 일 대 일 통화에 응답한 경우 전화 끊기 작업은 통화 레그를 제거하고 다른 엔드포인트와의 통화를 종료합니다. 통화(그룹 통화)에 참가자가 두 명 넘게 있는 경우 '전화 끊기' 작업을 수행하면 그룹 통화에서 애플리케이션의 엔드포인트가 제거됩니다.

종료 애플리케이션이 일 대 일 또는 그룹 통화에 응답했는지, 한 명 이상의 참가자에게 아웃바운드 전화를 걸었는지 여부에 관계없이 이 작업은 모든 참가자를 제거하고 통화를 종료합니다. 이 작업은 전화 끊기 통화 작업에서 forEveryOne 속성을 true로 설정하면 트리거됩니다.

미디어 작업 취소 비즈니스 논리에 따라 애플리케이션에서 진행 중인 미디어 작업 및 대기 중인 미디어 작업을 취소해야 할 수 있습니다. 취소된 미디어 작업과 큐에 있는 작업에 따라 작업이 취소되었음을 나타내는 웹후크 이벤트가 표시됩니다.

쿼리 시나리오

참가자 목록 통화에 참여한 모든 참가자의 목록을 반환합니다. 녹음/녹화 및 대화 내용 기록 봇은 이 목록에서 생략되었습니다.

이벤트

다음 표에서는 Azure Communication Services에서 내보내는 현재 이벤트를 간략하게 설명합니다. 다음 두 표에서는 Event Grid 및 호출 자동화에서 웹후크 이벤트로 내보낸 이벤트를 설명합니다.

Event Grid 이벤트

Event Grid에서 보내는 대부분의 이벤트는 플랫폼에 구애받지 않으므로 SDK(Calling 또는 Call Automation)에 관계없이 내보내집니다. 모든 이벤트에 대한 구독을 만들 수 있지만 프로그래밍 방식으로 호출을 제어하려는 모든 Call Automation 사용 사례에 대해 IncomingCall 이벤트를 사용하는 것이 좋습니다. 보고/원격 분석 목적의 다른 이벤트를 사용합니다.

이벤트 설명
IncomingCall 통신 사용자 또는 전화 번호로 걸려 오는 전화 알림
CallStarted 통화가 설정됨(인바운드 또는 아웃바운드)
CallEnded 통화가 종료되고 모든 참가자가 제거됨
ParticipantAdded 참가자가 통화에 추가됨
ParticipantRemoved 참가자가 통화에서 제거됨
RecordingFileStatusUpdated 녹음/녹화 파일을 사용할 수 있음

이러한 이벤트 및 페이로드 스키마에 대한 자세한 내용은 여기를 참조하세요.

Call Automation 웹후크 이벤트

사용자가 새 아웃바운드 통화에 응답하거나 새 아웃바운드 전화를 걸면 지정된 웹후크 콜백 URI로 Call Automation 이벤트가 전송됩니다.

이벤트 설명
CallConnected 애플리케이션의 통화 레그가 연결됨(인바운드 또는 아웃바운드)
CallDisconnected 애플리케이션의 통화 레그 연결이 끊김
CallTransferAccepted 애플리케이션의 통화 레그가 다른 엔드포인트로 전달됨
CallTransferFailed 애플리케이션의 통화 레그 전달이 실패함
AddParticipantSucceeded 애플리케이션이 참가자를 추가함
AddParticipantFailed 애플리케이션이 참가자를 추가하지 못함
CancelAddParticipantSucceeded 애플리케이션에서 참가자 추가를 취소했습니다.
CancelAddParticipantFailed 애플리케이션에서 참가자 추가를 취소할 수 없습니다.
RemoveParticipantSucceeded 애플리케이션이 통화에서 참가자를 성공적으로 제거했습니다.
RemoveParticipantFailed 애플리케이션이 통화에서 참가자를 제거할 수 없습니다.
ParticipantsUpdated 애플리케이션의 통화 레그가 통화에 연결되어 있는 동안 참가자의 상태가 변경됨
PlayCompleted 애플리케이션이 제공된 오디오 파일을 성공적으로 재생함
PlayFailed 애플리케이션이 오디오를 재생하지 못함
PlayCanceled 요청된 재생 작업이 취소되었습니다.
RecognizeCompleted 사용자 입력 인식이 성공적으로 완료됨
RecognizeCanceled 요청된 인식 작업이 취소되었습니다.
RecognizeFailed 사용자 입력 인식에 실패함
작업 이벤트 인식에 대한 자세한 내용은 사용자 입력 수집에 대한 방법 가이드를 참조하세요.
RecordingStateChanged 녹음/녹화 작업의 상태가 활성에서 비활성으로 또는 그 반대로 변경되었습니다.
ContinuousDtmfRecognitionToneReceived StartContinuousDtmfRecognition이 성공적으로 완료되었고 참가자로부터 DTMF 톤이 수신되었습니다.
ContinuousDtmfRecognitionToneFailed StartContinuousDtmfRecognition이 완료되었지만 참가자의 DTMF 톤을 처리하는 동안 오류가 발생했습니다.
ContinuousDtmfRecognitionStopped StopContinuousRecognition이 성공적으로 실행됨
SendDtmfCompleted SendDTMF가 성공적으로 완료되고 DTMF 톤이 대상 참가자에게 전송되었습니다.
SendDtmfFailed DTMF 톤을 보내는 동안 오류가 발생했습니다.

다양한 작업에 대해 게시되는 이벤트를 이해하려면 다양한 호출 제어 흐름에 대한 코드 샘플과 시퀀스 다이어그램을 제공하는 이 가이드를 참조하세요.

콜백 이벤트를 승인할 때는 200 OK와 같은 표준 HTTP 상태 코드로 응답하는 것이 가장 좋습니다. 자세한 정보는 불필요하며 디버깅 프로세스에 더 적합합니다.

콜백 이벤트 배달을 보호하는 방법을 알아보려면 이 가이드를 참조하세요.

작업 콜백 Uri

이벤트를 비동기 응답으로 사용하는 일부 중간 호출 API의 선택적 매개 변수입니다. 기본적으로 모든 이벤트는 사용자가 호출을 설정할 때 CreateCall/AnswerCall API에서 설정한 기본 콜백 Uri로 전송됩니다. 작업 콜백 Uri를 사용하면 이 개별 요청의 해당 이벤트(일회성에만 해당)가 새 Uri로 전송됩니다.

지원되는 API 해당 이벤트
AddParticipant AddParticipantSucceed / AddParticipantFailed
RemoveParticipant RemoveParticipantSucceed / RemoveParticipantFailed
TransferCall CallTransferAccepted / CallTransferFailed
CancelAddParticipant CancelAddParticipantSucceeded / CancelAddParticipantFailed
재생 PlayCompleted / PlayFailed / PlayCanceled
PlayToAll PlayCompleted / PlayFailed / PlayCanceled
인식 RecognizeCompleted / RecognizeFailed / RecognizeCanceled
StopContinuousDTMFRecognition ContinuousDtmfRecognitionStopped
SendDTMF ContinuousDtmfRecognitionToneReceived / ContinuousDtmfRecognitionToneFailed

다음 단계

귀하가 관심 있어 할 만한 몇 가지 문서는 다음과 같습니다.