Call Automation 개요
Azure Communication Services 통화 자동화는 개발자가 서버 기반 지능형 통화 워크플로, 음성 및 PSTN(공중 전화망) 채널에 대한 통화 녹음/녹화 기능을 구축할 수 있도록 합니다. SDK는 C#, Java, JavaScript, Python에서 사용할 수 있으며 맞춤형 고객 상호 작용을 만드는 데 도움이 되는 작업-이벤트 모델을 사용합니다. 통신 애플리케이션은 실시간 통화 이벤트를 수신 대기하고 컨트롤 플레인 작업(예: 응답, 전송, 오디오 재생, 녹음/녹화 시작 등)을 수행하여 비즈니스 논리에 따라 통화를 조정하고 제어할 수 있습니다.
일반 사용 예
통화 자동화를 사용하여 빌드할 수 있는 일반적인 사용 사례는 다음과 같습니다.
- 프로그램 VoIP 또는 PSTN은 클릭 투 콜(click-to-call) 및 약속 미리 알림과 같은 트랜잭션 워크플로를 호출하여 고객 서비스를 개선합니다.
- 재생(오디오 URL, 텍스트 음성 변환 및 SSML) 및 인식(DTMF 및 음성) 작업을 사용하여 주문 예약 및 업데이트와 같은 사용 사례에 대해 고객에게 셀프 서비스를 제공하는 대화형 상호 작용 워크플로를 빌드합니다.
- 직접 라우팅을 사용하여 통신 애플리케이션을 연락 센터 및 개인 전화 통신 네트워크와 통합합니다.
- 플랫폼에서 구매자와 판매자 또는 사용자와 파트너 공급업체를 연결하는 번호 마스킹 서비스를 빌드하여 고객의 ID를 보호합니다.
- 마케팅 및 고객 서비스를 위한 자동화된 고객 지원 활동 프로그램을 빌드하여 참여를 높입니다.
- 품질 보증을 위해 통화 후 프로세스에서 믹싱되지 않은 오디오 녹음을 분석합니다.
개략적인 아키텍처에 나와 있는 대로, Azure Communication Services 통화 자동화를 사용하여 고객 서비스 시나리오에 대한 통화 워크플로를 빌드합니다. 인바운드 통화에 응답하거나 아웃바운드 전화를 걸 수 있습니다. Azure Communication Services 통화 SDK 클라이언트 앱에서 환영 메시지를 재생하거나 고객을 라이브 에이전트에게 연결하여 수신 통화 요청에 응답하는 등의 작업을 실행합니다. Azure Communication Services PSTN 또는 직접 라우팅이 지원되므로 이 워크플로를 연락 센터에 다시 연결할 수 있습니다.
기능
현재 Azure Communication Services 통화 자동화 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
이벤트 알림에 나열된 대상 엔드포인트가 연결되기 전에 수행됩니다. 웹후크 콜백 이벤트는 answer
사전 통화 작업만 전달하며 reject
또는 redirect
작업에는 전달하지 않습니다.
응답 – Event Grid의 IncomingCall 이벤트와 통화 자동화 SDK를 사용하면 애플리케이션이 전화를 받을 수 있습니다. 애플리케이션이 프로그래밍 방식으로 수신 PSTN 통화에 응답할 수 있는 IVR 시나리오에서 이 작업을 사용합니다. 다른 시나리오로는 사용자를 대신하여 통화에 응답하는 경우가 있습니다.
거부 – 통화를 거부한다는 것은 애플리케이션이 IncomingCall
이벤트를 수신하고 통화가 대상 엔드포인트에 연결되는 것을 방지할 수 있음을 의미합니다.
리디렉션 – Event Grid의 IncomingCall
이벤트를 사용하여 호출을 다른 엔드포인트로 리디렉션할 수 있습니다. 리디렉션 작업으로는 통화에 응답할 수 없습니다. 통화가 응답을 받기 위해 다른 대상 엔드포인트로 리디렉션되거나 전달됩니다.
전화 걸기 - 전화 걸기 작업을 사용하면 전화번호 및 다른 통신 사용자에게 아웃바운드 전화를 걸 수 있습니다. 사용 사례로는 애플리케이션이 아웃바운드 전화를 걸어 사용자에게 중단에 대해 사전에 알리거나 주문 업데이트에 대해 알리는 경우가 있습니다.
통화 연결 - 통화 연결 작업을 사용하여 진행 중인 통화에 연결하고 통화 작업을 수행합니다. 이 작업을 사용하여 서비스에서 소회의실에 PSTN 전화 걸기와 같이 프로그래밍 방식으로 소회의실 통화를 연결하고 관리할 수도 있습니다.
통화 중 작업
애플리케이션은 통화 자동화 SDK를 사용하여 응답하거나 발신된 전화에 대해 이러한 작업을 수행할 수 있습니다. 각 통화 중 작업에는 해당하는 성공 또는 실패 웹후크 콜백 이벤트가 있습니다.
참가자 추가/제거 – 지원되는 대상 엔드포인트의 변형인 각 참가자를 사용하여 단일 요청에서 하나 이상의 참가자를 추가할 수 있습니다. 호출에 성공적으로 추가된 모든 참가자에 대해 웹후크 콜백이 전송됩니다.
재생 – 애플리케이션이 통화에 응답하거나 아웃바운드 전화를 걸 때 호출자에 대한 오디오 프롬프트를 재생할 수 있습니다. 이 오디오는 통화 연결음 재생과 같은 시나리오에서 필요한 경우 반복할 수 있습니다. 자세한 내용은 통화 중 오디오 재생 및 재생 작업을 사용하여 사용자에게 음성 프롬프트 사용자 지정을 참조하세요.
입력 인식 – 애플리케이션에서 오디오 프롬프트를 재생한 후 사용자 입력을 요청하여 애플리케이션에서 비즈니스 논리 및 탐색을 구동할 수 있습니다. 자세한 내용은 사용자 입력 수집 및 방법 가이드 인식 작업을 사용하여 사용자 입력 수집을 참조하세요.
연속 DTMF 인식 – 애플리케이션이 특정 인식 작업을 트리거할 필요 없이 통화의 어느 시점에서든 DTMF 톤을 수신할 수 있어야 하는 경우입니다. 이 기능은 에이전트가 통화 중이고 사용자가 일종의 ID 또는 추적 번호를 입력해야 하는 시나리오에서 유용할 수 있습니다. 자세한 내용은 통화 중 미디어 작업을 제어하는 방법을 참조하세요.
DTMF 보내기 – 애플리케이션이 외부 참가자에게 DTMF 톤을 보내야 하는 경우. 외부 에이전트에게 전화를 걸고 확장 번호를 제공하거나 외부 IVR 메뉴를 탐색하려면 이 작업을 사용합니다.
음소거 – 애플리케이션은 비즈니스 논리에 따라 특정 사용자를 음소거할 수 있습니다. 그런 다음, 사용자가 말하려는 경우 수동으로 음소거를 해제해야 합니다.
전달 – 애플리케이션이 통화에 응답하거나 엔드포인트에 아웃바운드 전화를 걸면 해당 통화가 다른 대상 엔드포인트로 전달될 수 있습니다. 1:1 통화를 전달하면 Call Automation SDK를 사용하여 통화를 제어하는 애플리케이션의 기능이 제거됩니다.
녹음/녹화 – 애플리케이션 비즈니스 논리에 따라 녹음/녹화를 시작/일시 중지/계속/중지할 시기를 결정하거나 최종 사용자에게 해당 작업을 트리거하는 제어 권한을 부여할 수 있습니다. 자세한 내용은 개념 및 빠른 시작을 참조하세요.
전화 끊기 – 애플리케이션이 일 대 일 통화에 응답한 경우 전화 끊기 작업은 통화 레그를 제거하고 다른 엔드포인트와의 통화를 종료합니다. 통화(그룹 통화)에 참가자가 두 명 넘게 있는 경우 '전화 끊기' 작업을 수행하면 그룹 통화에서 애플리케이션의 엔드포인트가 제거됩니다.
종료 – 애플리케이션이 일대일 또는 그룹 통화에 응답하거나 한 명 이상의 참가자에게 아웃바운드 전화를 걸 때 이 작업은 모든 참가자를 제거하고 통화를 종료합니다. 이 작업은 통화 끊기 작업에서 forEveryOne
속성을 true
로 설정하여 트리거됩니다.
미디어 작업 취소 - 비즈니스 논리에 따라 애플리케이션에서 진행 중인 미디어 작업 및 대기 중인 미디어 작업을 취소해야 할 수 있습니다. 취소된 미디어 작업과 대기 중인 미디어 작업에 따라, 애플리케이션은 작업이 취소되었음을 나타내는 웹후크 이벤트를 수신할 수 있습니다.
오디오 스트리밍 시작/중지(공개 미리 보기) - 오디오 스트리밍을 사용하면 진행 중인 통화에서 실시간 오디오 스트림을 구독할 수 있습니다. 오디오 스트리밍을 시작하는 방법 및 오디오 스트리밍 콜백 이벤트에 대한 자세한 지침은 개념 및 빠른 시작을 참조하세요.
실시간 전사 시작/중지(공개 미리 보기) - 실시간 전사를 사용하면 진행 중인 통화의 오디오에 대한 라이브 전사에 액세스할 수 있습니다. 실시간 전사 및 실시간 전사 콜백 이벤트에 대한 정보를 시작하는 방법에 대한 자세한 지침은 개념 및 빠른 시작을 참조하세요.
쿼리 시나리오
참가자 목록 – 통화에 참여한 모든 참가자의 목록을 반환합니다. 녹음/녹화 및 대화 내용 기록 봇은 이 목록에서 생략되었습니다.
이벤트
다음 표에서는 Azure Communication Services에서 내보내는 현재 이벤트를 간략하게 설명합니다. 다음 두 표에서는 Event Grid 및 호출 자동화에서 웹후크 이벤트로 내보낸 이벤트를 설명합니다.
Event Grid 이벤트
Event Grid에서 전송하는 대부분의 이벤트는 플랫폼에 구애받지 않습니다. SDK(통화 또는 통화 자동화)에 관계없이 전송됩니다. 모든 이벤트에 대한 구독을 만들 수 있지만, 통화를 프로그래밍 방식으로 제어하려는 모든 통화 자동화 사용 사례에는 IncomingCall
이벤트를 사용하는 것이 좋습니다. 보고/원격 분석 목적의 다른 이벤트를 사용합니다.
이벤트 | 설명 |
---|---|
IncomingCall |
통신 사용자 또는 전화번호로 걸려 오는 전화의 알림 |
CallStarted |
통화가 시작됨(인바운드 또는 아웃바운드) |
CallEnded |
통화가 종료되고 모든 참가자가 제거됨 |
ParticipantAdded |
통화에 참가자가 추가됨 |
ParticipantRemoved |
통화에서 참가자가 제거됨 |
RecordingFileStatusUpdated |
녹음/녹화 파일을 확인할 수 있음 |
Azure Communication Services - 음성 및 영상 통화 이벤트에서 이러한 이벤트 및 페이로드 스키마에 대해 자세히 알아봅니다.
Call Automation 웹후크 이벤트
사용자가 새 아웃바운드 통화에 응답하거나 새 아웃바운드 전화를 걸면 지정된 웹후크 콜백 URI로 Call Automation 이벤트가 전송됩니다.
이벤트 | 설명 |
---|---|
CallConnected |
통화가 성공적으로 시작되었거나(Answer 또는 Create 작업 사용 시) 애플리케이션이 진행 중인 통화에 성공적으로 연결됨(Connect 작업 사용 시) |
CallDisconnected |
애플리케이션과 통화의 연결이 끊어짐 |
CreateCallFailed |
애플리케이션에서 호출을 만들지 못했습니다. |
AnswerFailed |
애플리케이션이 통화에 응답하지 못했습니다. |
ConnectFailed |
애플리케이션이 통화에 연결하지 못함(Connect 통화 작업에만 해당) |
CallTransferAccepted |
전송 작업이 성공적으로 완료되었으며 전송받은 사람이 대상 참가자에 연결됨 |
CallTransferFailed |
전송 작업이 실패함 |
AddParticipantSucceeded |
애플리케이션이 통화에 참가자를 성공적으로 추가함 |
AddParticipantFailed |
애플리케이션에서 통화에 참가자를 추가할 수 없음(오류로 인해 또는 참가자가 초대를 수락하지 않아서) |
CancelAddParticipantSucceeded |
애플리케이션이 AddParticipant 요청을 취소함(참가자가 통화에 추가되지 않음) |
CancelAddParticipantFailed |
애플리케이션이 AddParticipant 요청을 취소할 수 없음(요청이 이미 처리되었기 때문일 수 있음) |
RemoveParticipantSucceeded |
애플리케이션이 통화에서 참가자를 제거함 |
RemoveParticipantFailed |
애플리케이션이 통화에서 참가자를 제거할 수 없습니다. |
ParticipantsUpdated |
애플리케이션이 통화에 연결되어 있는 동안 참가자의 상태가 변경됨 |
PlayCompleted |
애플리케이션이 제공된 오디오 파일을 성공적으로 재생함 |
PlayFailed |
애플리케이션이 오디오를 재생하지 못함 |
PlayCanceled |
요청된 재생 작업이 취소됨 |
RecognizeCompleted |
사용자 입력 인식이 성공적으로 완료됨 |
RecognizeCanceled |
요청된 Recognize 작업이 취소됨 |
RecognizeFailed |
사용자 입력 인식에 실패함. 작업 이벤트 인식에 대한 자세한 내용은 사용자 입력 수집에 대한 방법 가이드를 참조하세요. |
RecordingStateChanged |
녹음/녹화 작업의 상태가 활성에서 비활성으로 또는 그 반대로 변경됨 |
ContinuousDtmfRecognitionToneReceived |
StartContinuousDtmfRecognition 이 성공적으로 완료되었으며 참가자로부터 DTMF 음이 수신됨 |
ContinuousDtmfRecognitionToneFailed |
StartContinuousDtmfRecognition 이 완료되었지만 참가자의 DTMF 음을 처리하는 동안 오류가 발생함 |
ContinuousDtmfRecognitionStopped |
StopContinuousRecognition 이 성공적으로 실행됨 |
SendDtmfCompleted |
SendDTMF 가 성공적으로 완료되고 대상 참가자에게 DTMF 음이 전송됨 |
SendDtmfFailed |
DTMF 음을 보내는 동안 오류가 발생함 |
다양한 작업에 대해 어떤 이벤트가 게시되는지 알아보려면 호출 제어 작업을 참조하세요. 이 문서에서는 다양한 호출 제어 흐름에 대한 코드 샘플과 시퀀스 다이어그램을 제공합니다.
콜백 이벤트를 확인할 때 모범 사례는 200 확인과 같은 표준 HTTP 상태 코드로 응답하는 것입니다. 자세한 정보는 불필요하며 디버깅 프로세스에 더 적합합니다.
콜백 이벤트 제공을 보호하는 방법을 알아보려면 웹후크 엔드포인트를 보호하는 방법을 참조하세요.
작업 콜백 URI
작업 콜백 URI는 이벤트를 비동기 응답으로 사용하는 일부 중간 호출 API의 선택적 매개 변수입니다. 기본적으로 모든 이벤트는 사용자가 호출을 설정하면 CreateCall
/ AnswerCall
API 이벤트에서 설정한 기본 콜백 URI로 전송됩니다. 작업 콜백 URI를 사용하여 API가 이 개별(일회성) 요청의 해당 이벤트를 새 URI로 전송합니다.
지원되는 API | 해당 이벤트 |
---|---|
AddParticipant |
AddParticipantSucceed / AddParticipantFailed |
RemoveParticipant |
RemoveParticipantSucceed / RemoveParticipantFailed |
TransferCall |
CallTransferAccepted / CallTransferFailed |
CancelAddParticipant |
CancelAddParticipantSucceeded / CancelAddParticipantFailed |
Play |
PlayCompleted / PlayFailed / PlayCanceled |
PlayToAll |
PlayCompleted / PlayFailed / PlayCanceled |
Recognize |
RecognizeCompleted / RecognizeFailed / RecognizeCanceled |
StopContinuousDTMFRecognition |
ContinuousDtmfRecognitionStopped |
SendDTMF |
ContinuousDtmfRecognitionToneReceived / ContinuousDtmfRecognitionToneFailed |
Hold |
HoldFailed |
StartMediaStreaming |
MediaStreamingStarted / MediaStreamingFailed |
StopMediaStreaming |
MediaStreamingStopped / MediaStreamingFailed |
StartTranscription |
TranscriptionStarted / TranscriptionFailed |
UpdateTranscription |
TranscriptionUpdated / TranscriptionFailed |
StopTranscription |
TranscriptionStopped / TranscriptionFailed |
다음 단계
관련된 문서
- 예를 통해 리소스가 다양한 통화 사용 사례에 대해 어떻게 청구되는지 이해합니다.
- 아웃바운드 호출 수행에 대한 빠른 시작을 참조하세요.
- 통화 자동화에서 게시한 사용량 및 운영 로그에 대해 알아봅니다.