Exotel 통합
Exotel 통합
수신 및 발신 통화를 위해 Exotel 전화번호를 ElevenAgents에 연결합니다.
개요
이 가이드에서는 Exotel 전화번호를 ElevenAgents에 직접 연결하는 방법을 설명합니다. 이 통합을 사용하면 기존 Exotel 번호와 인프라를 유지하면서 ElevenLabs의 고급 음성 AI 기능을 활용해 인바운드 및 아웃바운드 통화를 모두 처리할 수 있습니다.
통합 작동 방식
Exotel 통합은 두 가지 Exotel 기능을 사용합니다.
- Voicebot 애플릿(인바운드 + 아웃바운드 미디어): Exotel의 ExoML 애플릿으로, ElevenLabs에 WebSocket을 열고 통화 오디오를 양방향으로 스트리밍합니다.
- Connect API(아웃바운드 발신): 아웃바운드 통화의 경우 ElevenLabs는 API Key와 API Token을 사용하여 Exotel의
Calls/connect.json엔드포인트를 호출합니다. Exotel이 대상 번호로 전화를 걸고, 상대방이 받으면 동일한 Voicebot 애플릿을 통해 오디오를 ElevenLabs로 라우팅합니다.
인바운드 통화의 경우 Exotel은 수신 통화를 전화번호에 할당한 Voicebot 애플릿으로 라우팅하고, 이 애플릿이 ElevenLabs에 WebSocket을 엽니다.
아웃바운드 통화의 경우 ElevenLabs가 Connect API를 통해 통화를 시작하고 Exotel이 Voicebot 애플릿을 통해 통화를 다시 연결합니다.
요구 사항
Exotel 통합을 설정하기 전에 다음을 확인하세요.
- 최소 1개의 개통된 전화번호가 있는 활성 Exotel 계정
- my.exotel.com(싱가포르) 또는 my.exotel.in(뭄바이)의 Exotel 대시보드 관리자 액세스 권한
- ElevenLabs 계정 및 전화번호를 연결할 에이전트
Exotel은 현재 싱가포르 (api.exotel.com) 및 뭄바이
(api.in.exotel.com) 클러스터에서 지원됩니다. Exotel 계정이 개통된 클러스터를 선택하세요. 잘못된
리전을 사용하면 인증에 실패합니다.
Exotel 계정에서 Voicebot 활성화
다른 작업을 시작하기 전에 Exotel 지원팀에 문의하여 다음을 요청하세요.
- 계정에서 Voicebot 애플릿을 활성화합니다. 기본적으로 제한되어 있으며, 계정에 해당 기능이 프로비저닝되기 전까지 App Bazaar에 표시되지 않습니다.
- 필요한 채널 수(동시 통화 수)를 프로비저닝합니다. 이는 Exotel에서 계정으로 실행할 수 있도록 허용하는 동시 Voicebot 통화 수의 한도입니다. 예상 피크 트래픽에 맞춰 설정하세요.
이 단계는 일반적으로 영업일 기준 1~2일이 걸립니다. 나머지 설정을 시작하기 전에 먼저 진행하세요.
ElevenLabs WebSocket 엔드포인트
다음 WebSocket URL로 오디오를 스트리밍하도록 Exotel Voicebot 애플릿을 구성합니다.
ElevenLabs 계정이 격리된 레지던시 환경(EU 또는 인도)에 있다면 해당 레지던시 URL을 사용해야 합니다. 데이터 레지던시에 대해 자세히 알아보세요.
Exotel 설정
Exotel 자격 증명 수집
Exotel 대시보드에서 왼쪽 Monitor 메뉴를 열고 Developer를 클릭하세요. API 자격 증명 페이지가 열리며 Account SID, API Key, API Token을 확인할 수 있습니다.

다음 네 가지 값이 필요합니다.
- Account SID: Exotel 계정 SID입니다.
- API Key: Exotel API 자격 증명의 사용자 이름 부분입니다.
- API Token: Exotel API 자격 증명의 비밀번호 부분입니다. 비밀로 유지하세요.
- 리전(API 하위 도메인): Exotel 계정이 속한 클러스터입니다.
api.exotel.com(싱가포르) 또는api.in.exotel.com(뭄바이) 중 하나입니다. Developer 페이지에 표시되는 API URL의 호스트를 확인하면 어느 것인지 알 수 있습니다.
ElevenLabs는 아웃바운드 발신을 위해 Exotel Connect API를 호출할 때 API Key + API Token을 HTTP Basic Auth에 사용합니다.
App Bazaar에서 Voicebot 애플릿 만들기
-
Exotel 대시보드에서 왼쪽 Manage 메뉴를 열고 App Bazaar를 클릭하세요.

-
Create / Add New Flow를 클릭하고 앱에 알아보기 쉬운 이름(예:
ElevenLabs)을 지정한 다음 OK를 클릭하세요.
-
오른쪽 애플릿 팔레트에서 Voicebot 애플릿을 Call Start 캔버스로 끌어오세요.

-
Voicebot 애플릿의 구성을 열고 레지던시에 맞는 ElevenLabs WebSocket URL을 URL 필드(“Which bot you want to connect the enduser?” 필드)에 붙여 넣으세요.
ElevenLabs 계정이 EU 또는 인도 레지던시에 있다면 기본
api.elevenlabs.io대신 위 표의 해당 레지던시 URL(예:wss://api.in.residency.elevenlabs.io/v1/convai/conversation/exotel)을 사용하세요.특정 녹음 또는 규정 준수 요구 사항이 없다면 나머지 Voicebot 옵션(“Record this?”, “Recording Channels”, “Recording Format”, “Encrypt DTMF”)은 기본값으로 유지해도 됩니다.

-
(선택 사항) 상담원 연결을 위한 Connect 애플릿 연결. 에이전트가 통화를 상담원에게 전환할 필요가 없다면 이 단계를 건너뛰세요. 에이전트의 Transfer to number 도구를 사용하려면 흐름에서 Voicebot 애플릿 바로 뒤에 Connect 애플릿을 추가해야 합니다.
오른쪽 Voice Applets 팔레트에서 Connect 애플릿을 Voicebot의 Next → Continue to the next applet 슬롯으로 끌어오세요.

Connect 애플릿 구성에서 Configure parameters dynamically by providing a URL을 선택하고 레지던시에 맞는 ElevenLabs connect-applet 엔드포인트를 Primary URL에 붙여 넣으세요.

해당 레지던시 URL은 다음과 같습니다.
에이전트가 Transfer to number 도구를 실행하면 ElevenLabs가 제어권을 Exotel로 되돌리고, Exotel은 이 URL을 가져와 발신할 대상 번호를 조회합니다. Fallback URL은 비워 두고 다른 모든 설정은 기본값으로 유지하세요.
-
애플릿을 저장하고 게시하세요.
-
Applet ID(간혹 App ID라고도 함)를 기록해 두세요. ExoML 편집기의 URL(예:
.../exoml/start_voice/12345) 또는 App 목록에서 찾을 수 있습니다. ElevenLabs로 번호를 가져올 때 필요합니다.
Voicebot 애플릿은 인바운드 및 아웃바운드 통화 구간을 모두 처리합니다. 계정당 애플릿은 하나만 필요합니다. ElevenLabs로 가져오는 모든 전화번호가 이를 공유할 수 있습니다.
전화번호에 흐름 할당(인바운드 전용)
이전 단계에서 만든 ExoML 흐름을 저장하고 게시하세요. 그런 다음 Exotel 전화번호를 해당 흐름으로 라우팅하여 인바운드 통화가 Voicebot 애플릿에 도달하도록 설정하세요.
-
Exotel 대시보드에서 왼쪽 Manage 메뉴를 열고 App Bazaar 바로 아래의 ExoPhones를 클릭하세요.

-
아직 전화번호가 없다면 Buy a number를 클릭하고 계속하기 전에 필요한 국가/지역의 번호를 구매하세요.
-
ElevenLabs 에이전트에 사용할 번호를 찾으세요. 해당 번호의 Installed App 열에서 드롭다운을 열고 이전 단계에서 만든 흐름(예: ElevenLabs)을 선택하세요.

-
구성을 저장하세요. 이제 해당 번호로 걸려오는 통화는 Voicebot 애플릿으로 바로 라우팅되어 ElevenLabs로 스트리밍됩니다.
번호를 아웃바운드 통화에만 사용할 예정이라면 이 단계를 건너뛸 수 있습니다. 아웃바운드 통화는 ElevenLabs에서 Connect API를 통해 발신되며 Installed App 할당에 의존하지 않습니다.
ElevenLabs 설정
Exotel 전화번호 가져오기
ElevenAgents 대시보드에서 Phone Numbers 탭으로 이동하세요. + Import number를 클릭하고 드롭다운에서 From Exotel을 선택하세요.

다음 필드를 입력하세요.
- Label: 알아보기 쉬운 이름(예:
Support Line) - Phone number: E.164 형식의 Exotel 번호(예:
+918048961234) - Exotel Account SID: 위 1단계의 값
- Exotel API Key: 위 1단계의 값
- Exotel API Token: 위 1단계의 값(워크스페이스 시크릿으로 저장됨)
- Region: Exotel 클러스터에 맞는
Singapore (api.exotel.com)또는Mumbai (api.in.exotel.com)선택 - Voicebot Applet ID: 위 2단계의 App ID
Import를 클릭하여 번호를 저장하세요. ElevenLabs는 Exotel에서 자격 증명을 확인하고 API 토큰을 워크스페이스 시크릿으로 저장합니다.
에이전트 할당
번호를 가져온 후 Phone Numbers 목록에서 번호를 열고 Assigned agent 드롭다운에서 인바운드 통화를 처리할 에이전트를 선택하세요.
인바운드 통화의 경우 Exotel 측에서 Voicebot 애플릿이 해당 번호에 할당되어 있어야 합니다(이전 섹션 참조). 아웃바운드 전용 설정에는 인바운드 할당이 필요하지 않습니다.
인바운드 통화 테스트
아무 전화기에서나 Exotel 번호로 전화를 거세요. Exotel이 통화를 Voicebot 애플릿으로 라우팅하고, 애플릿이 ElevenLabs에 WebSocket을 엽니다. 에이전트가 전화를 받고 대화를 시작합니다.
Calls History 대시보드에서 통화를 모니터링하여 모든 항목이 예상대로 작동하는지 확인하세요.
아웃바운드 통화 발신
가져온 Exotel 번호로도 아웃바운드 통화를 시작할 수 있습니다. 에이전트가 전화번호로 발신하고 수신자가 전화를 받으면 대화를 시작합니다.
아웃바운드 통화를 발신할 때는 에이전트가 대화의 시작자이므로 적절한 첫 메시지가 에이전트에 구성되어 있는지 확인하세요.
대시보드 대신 프로그래밍 방식으로 아웃바운드 통화를 트리거하려면 Exotel을 통한 아웃바운드 통화 엔드포인트를 사용하세요. API 레퍼런스에는 요청 스키마와 바로 사용할 수 있는 SDK 스니펫이 포함되어 있습니다.
에이전트 구성 요구 사항
Voicebot 애플릿은 8 kHz PCM으로 오디오를 스트리밍합니다. ElevenLabs 플랫폼이 오디오 형식 변환을 자동으로 처리합니다. 에이전트의 TTS 또는 입력 오디오 설정을 변경할 필요가 없습니다.
전화번호 형식
전화번호는 E.164 형식으로 저장됩니다(예: +918048961234). 현지에서는 08048961234 또는 8048961234로 표기할 수 있는 인도 Exotel 번호를 가져올 때는 +918048961234로 입력하세요. ElevenLabs는 동일한 번호를 다른 형식으로 중복 가져오는 것을 거부합니다.
통화 전환
에이전트에 Transfer to number 도구를 구성하여 에이전트에서 Exotel로 통화를 전환할 수 있습니다. 도구가 실행되면 ElevenLabs는 Voicebot 구간을 종료하고 Exotel은 연결된 Connect 애플릿의 동적 URL에서 대상 번호를 가져온 후 대상에게 발신합니다.
이를 사용하려면 둘 다 필요합니다.
- ExoML 흐름에서 Voicebot 애플릿 바로 뒤에 구성된 선택 사항인 Connect 애플릿(Exotel 설정의 5단계 참조)
- 에이전트에 구성된 Transfer to number 도구. 에이전트 전환 가이드를 참조하세요.
흐름에 Connect 애플릿이 없으면 Voicebot 종료 후 Exotel이 통화를 라우팅할 위치가 없으므로 에이전트의 전환 시도가 실패합니다.
문제 해결
아웃바운드 통화 시작 시 exotel_connect_failed 오류
아웃바운드 통화 시작 시 exotel_connect_failed 오류
ElevenLabs가 Exotel Connect API에서 200이 아닌 응답을 받았습니다. 가장 일반적인 원인은 다음과 같습니다.
- 잘못된 Region. 가져오기 시 선택한 리전이 계정이 속한 Exotel 클러스터(
Singapore또는Mumbai)와 일치하는지 확인하세요. - 잘못된 API Key 또는 API Token. Exotel API Settings 페이지에서 자격 증명을 다시 확인하고 올바른 값으로 번호를 다시 가져오세요.
- Account SID가 API Key / Token 쌍과 일치하지 않습니다.
- 대상 번호가 E.164 형식이 아닙니다.
인바운드 통화가 에이전트에 연결되지 않음
- Voicebot 애플릿의 URL 필드가 데이터 레지던시에 맞는 ElevenLabs WebSocket 엔드포인트와 정확히 일치하는지(
wss://포함) 확인하세요. - Exotel phone number가 Voicebot 애플릿이 포함된 ExoML 앱으로 라우팅되는지 확인하세요(Exotel 대시보드, ExoPhones, 번호, Installed App).
- ElevenLabs의 Phone Numbers 탭에서 전화번호에 에이전트가 할당되어 있는지 확인하세요.
가져오기 시 Applet ID 불일치 오류
가져오기 시 Applet ID 불일치 오류
Voicebot Applet ID 필드는 ExoML 편집기 URL의 숫자 App ID를 예상합니다(예: .../exoml/start_voice/12345의 경우 ID는 12345). 전체 URL을 붙여 넣지 마세요. ID만 사용하세요.
전화번호를 다른 형식으로 두 번 가져옴
ElevenLabs는 Exotel 번호를 저장하기 전에 E.164로 정규화하고 (provider, phone_number)에 고유성을 적용합니다. 이전에 같은 번호를 E.164가 아닌 형식으로 가져왔다면 기존 항목을 먼저 삭제한 후 E.164 형식으로 다시 가져오세요.