개요
Twilio는 클라우드 통신 API 플랫폼으로, 음성 통화·SMS·비디오·이메일·인증을 API로 제공합니다. 음성 에이전트 구축에서는 전화 인프라 오케스트레이션 역할을 하며, Deepgram/LLM/TTS와 연동하여 AI 전화 에이전트를 만드는 핵심 컴포넌트입니다.
주요 제품
| 제품 | 설명 |
|---|
| Programmable Voice | 음성 통화 API (발신/수신, IVR, 녹음) |
| Programmable Messaging | SMS/MMS/WhatsApp 메시지 API |
| Twilio Verify | 2FA/OTP 인증 API |
| SendGrid | 이메일 API (2019 인수) |
| Twilio Segment | CDP (Customer Data Platform, 2020 인수) |
| Twilio Video | WebRTC 비디오 API |
| Twilio Flex | 클라우드 컨택센터 플랫폼 |
| Twilio Studio | 노코드 커뮤니케이션 플로우 빌더 |
음성 에이전트에서의 역할
Twilio는 전화 네트워크(PSTN)와 AI 파이프라인을 연결하는 브릿지 역할:
전화 수신 → [Twilio] → WebSocket → [서버]
├─ [Deepgram: STT]
├─ [LLM: 응답 생성]
└─ [ElevenLabs: TTS]
↓
[Twilio] ← WebSocket ← 음성 스트림
↓
전화로 응답 재생
음성 에이전트 구현
from fastapi import FastAPI, WebSocket
from twilio.twiml.voice_response import VoiceResponse, Connect
app = FastAPI()
# Twilio 웹훅 — 전화 수신 시 호출
@app.post("/incoming-call")
async def incoming_call():
response = VoiceResponse()
connect = Connect()
# 오디오를 WebSocket으로 스트리밍
connect.stream(url="wss://your-server.com/media-stream")
response.append(connect)
return str(response)
# 오디오 스트림 처리
@app.websocket("/media-stream")
async def media_stream(ws: WebSocket):
await ws.accept()
async for message in ws.iter_text():
data = json.loads(message)
if data["event"] == "media":
audio = base64.b64decode(data["media"]["payload"])
# → Deepgram STT로 전달
# → LLM 처리
# → TTS 생성
# → Twilio로 응답 스트리밍
TwiML (Twilio Markup Language)
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="alice" language="ko-KR">안녕하세요</Say>
<Gather input="speech" language="ko-KR" action="/process">
<Say>무엇을 도와드릴까요?</Say>
</Gather>
</Response>
핵심 기능
Programmable Voice
| 기능 | 설명 |
|---|
| 발신/수신 | 프로그래밍 방식 전화 걸기/받기 |
| IVR | 대화형 음성 응답 (키패드/음성 입력) |
| Media Streams | WebSocket으로 실시간 오디오 스트리밍 |
| 녹음 | 통화 녹음, 전사 |
| SIP Trunking | 기존 PBX 연동 |
| Conference | 다자 통화 |
| 전화번호 | 100+ 국가 전화번호 구매/관리 |
Programmable Messaging
from twilio.rest import Client
client = Client("ACCOUNT_SID", "AUTH_TOKEN")
# SMS 발송
message = client.messages.create(
body="인증번호: 123456",
from_="+1234567890",
to="+821012345678"
)
가격 (2026)
| 서비스 | 가격 |
|---|
| 음성 통화 (미국 수신) | $0.0085/분 |
| 음성 통화 (미국 발신) | $0.014/분 |
| 음성 통화 (한국) | $0.047/분 |
| SMS (미국) | $0.0079/건 |
| SMS (한국) | $0.063/건 |
| 전화번호 (미국) | $1.15/월 |
| Verify (인증) | $0.05/인증 |
| Media Streams | 음성 요금에 포함 |
Twilio vs 경쟁사
| 항목 | Twilio | Vonage (Nexmo) | Plivo | Bandwidth |
|---|
| 음성 | O | O | O | O |
| SMS | O | O | O | O |
| 비디오 | O | O | X | X |
| 이메일 | O (SendGrid) | X | X | X |
| Media Streams | O | O | X | O |
| 글로벌 커버리지 | 180+국 | 200+국 | 190+국 | 미국 중심 |
| 가격 | 중간 | 비슷 | 저가 | 저가 |
| 생태계 | 최대 | 큼 | 중간 | 작음 |
| AI 에이전트 연동 | 최적 | 좋음 | 제한적 | 제한적 |
SDK
| 언어 | 패키지 |
|---|
| Python | pip install twilio |
| Node.js | npm install twilio |
| Java | Maven com.twilio.sdk |
| Go | github.com/twilio/twilio-go |
| PHP | composer require twilio/sdk |
| Ruby | gem install twilio-ruby |
| C# | NuGet Twilio |
관련 항목