탐색으로 건너뛰기

Twilio 통화 등록

자체 Twilio 인프라를 사용하여 통화를 ElevenLabs 에이전트에 연결하세요.
고급

이 가이드에서는 Twilio 인프라를 완전히 제어해야 하는 개발자를 위한 고급 통합 패턴을 다룹니다. 더 간단한 설정을 원한다면 구성을 자동으로 처리하는 기본 Twilio 통합을 사용해 보세요.

접근 방식별 사용 시점

시작하기 전에 기본 통합과 통화 등록 방식 간의 장단점을 알아보세요.

기능기본 통합통화 등록
설정 용이성더 쉬움더 복잡함
통화 전환지원됨지원되지 않음
맞춤 Twilio 로직제한적완전한 제어
전화번호 관리ElevenLabs를 통해Twilio를 통해

개요

통화 등록 엔드포인트를 사용하면 ElevenLabs 에이전트를 대화에 활용하면서 자체 Twilio 인프라를 사용할 수 있습니다. Twilio 번호를 ElevenLabs로 가져오는 대신, Twilio 설정을 완전히 제어하고 ElevenLabs API를 사용하여 통화를 등록하고 에이전트에 연결하기 위한 TwiML을 받을 수 있습니다.

이 방식은 다음과 같은 경우에 적합합니다.

  • 기존 Twilio 인프라와 워크플로를 유지해야 하는 경우
  • 통화 라우팅 및 처리에 대한 프로그래밍 방식의 제어가 필요한 경우
  • 에이전트에 연결하기 전에 맞춤 Twilio 로직이 필요한 복잡한 통화 흐름이 있는 경우
  • ElevenLabs 에이전트를 기존 전화 통신 시스템에 통합해야 하는 경우

작동 방식

  1. 서버가 수신 통화를 받거나 Twilio를 통해 발신 통화를 시작합니다.
  2. 서버가 에이전트 및 통화 세부 정보와 함께 ElevenLabs 통화 등록 엔드포인트를 호출합니다.
  3. ElevenLabs가 WebSocket을 통해 통화를 에이전트에 연결하는 TwiML을 반환합니다.
  4. 연결을 설정하기 위해 이 TwiML을 Twilio에 반환합니다.

통화 등록 엔드포인트를 사용할 때는 ElevenLabs가 Twilio 계정 자격 증명에 직접 접근할 수 없으므로 통화 전환 기능을 사용할 수 없습니다.

사전 요구 사항

에이전트 구성

통화 등록 엔드포인트를 사용하기 전에 Twilio가 지원하는 올바른 오디오 형식을 사용하도록 에이전트를 구성하세요.

1

TTS 출력 구성

  1. 에이전트 설정으로 이동합니다.
  2. Voice 섹션으로 이동합니다.
  3. 드롭다운에서 “μ-law 8000 Hz”를 선택합니다.
2

입력 형식 설정

  1. 에이전트 설정으로 이동합니다.
  2. Advanced 섹션으로 이동합니다.
  3. 입력 형식으로 “μ-law 8000 Hz”를 선택합니다.

API 레퍼런스

통화 등록 엔드포인트는 다음 매개변수를 허용합니다.

매개변수유형필수 여부설명
agent_idstring예통화를 처리할 에이전트의 ID
from_numberstring예발신자 전화번호
to_numberstring예수신 전화번호
directionstring아니요통화 방향: inbound(기본값) 또는 outbound
conversation_initiation_client_dataobject아니요동적 변수 및 구성 재정의

엔드포인트는 Twilio에 직접 전달해야 하는 TwiML을 반환합니다.

구현

import os
from fastapi import FastAPI, Request
from fastapi.responses import Response
from elevenlabs import ElevenLabs
app = FastAPI()
elevenlabs = ElevenLabs()
AGENT_ID = os.getenv("ELEVENLABS_AGENT_ID")
@app.post("/twilio/inbound")
async def handle_inbound_call(request: Request):
form_data = await request.form()
from_number = form_data.get("From")
to_number = form_data.get("To")
# Register the call with ElevenLabs
twiml = elevenlabs.conversational_ai.twilio.register_call(
agent_id=AGENT_ID,
from_number=from_number,
to_number=to_number,
direction="inbound",
conversation_initiation_client_data={
"dynamic_variables": {
"caller_number": from_number,
}
}
)
# Return the TwiML directly to Twilio
return Response(content=twiml, media_type="application/xml")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)

발신 통화

발신 통화의 경우 Twilio를 통해 통화를 시작하고 webhook URL을 서버로 지정하면, 서버가 ElevenLabs에 등록합니다.

from twilio.rest import Client
import os
from fastapi import Request
from fastapi.responses import Response
from elevenlabs import ElevenLabs
# Initialize clients
twilio_client = Client(
os.getenv("TWILIO_ACCOUNT_SID"),
os.getenv("TWILIO_AUTH_TOKEN")
)
elevenlabs = ElevenLabs()
AGENT_ID = os.getenv("ELEVENLABS_AGENT_ID")
def initiate_outbound_call(to_number: str):
call = twilio_client.calls.create(
from_=os.getenv("TWILIO_PHONE_NUMBER"),
to=to_number,
url="https://your-server.com/twilio/outbound"
)
return call.sid
@app.post("/twilio/outbound")
async def handle_outbound_webhook(request: Request):
form_data = await request.form()
from_number = form_data.get("From")
to_number = form_data.get("To")
twiml = elevenlabs.conversational_ai.twilio.register_call(
agent_id=AGENT_ID,
from_number=from_number,
to_number=to_number,
direction="outbound",
)
return Response(content=twiml, media_type="application/xml")

대화 개인화

conversation_initiation_client_data 매개변수를 사용하여 동적 변수를 전달하고 에이전트 구성을 재정의하세요.

{
"agent_id": "your-agent-id",
"from_number": "+1234567890",
"to_number": "+0987654321",
"direction": "inbound",
"conversation_initiation_client_data": {
"dynamic_variables": {
"customer_name": "John Doe",
"account_type": "premium",
"order_id": "ORD-12345"
}
}
}

동적 변수 및 재정의에 관한 자세한 내용은 동적 변수 및 재정의 문서를 참조하세요.

Twilio 구성

Twilio 전화번호가 서버를 가리키도록 구성하세요.

1

공개 URL 생성

로컬 개발에서는 ngrok을 사용하여 서버를 공개하세요.

ngrok http 8000
2

Twilio 번호 구성

  1. Twilio Console로 이동합니다.
  2. Phone Numbers > Manage > Active numbers로 이동합니다.
  3. 전화번호를 선택합니다.
  4. “Voice Configuration”에서 webhook URL을 서버 엔드포인트로 설정합니다(예: https://your-ngrok-url.ngrok.app/twilio/inbound).
  5. HTTP 메서드를 POST로 설정합니다.

제한 사항

기본 통합 대신 통화 등록 엔드포인트를 사용할 경우:

  • 통화 전환 불가: ElevenLabs가 Twilio 자격 증명에 접근할 수 없으므로 전환 기능을 사용할 수 없습니다.
  • 수동 구성: 오디오 형식을 구성하고 TwiML 라우팅을 직접 처리해야 합니다.
  • 대시보드 가져오기 없음: 이 방식으로 등록한 전화번호는 ElevenLabs 전화번호 대시보드에 표시되지 않습니다.