Programmable Voice API
Programmable Voice API
전화 걸기, 진행 중인 통화 수정, 통화 로그 조회 같은 일을 코드로 처리하려면 REST API가 필요해요. Twilio Voice API는 전 세계 어디에서든 통화를 만들고 받고 모니터링할 수 있게 해주는 REST 인터페이스예요. 발신 통화 생성부터 컨퍼런스·큐·녹음·변환 관리까지, 통화 상태를 코드로 다루고 싶을 때 이 API를 써요.
베이스 URL과 인증
Twilio REST API는 HTTPS로만 제공돼요. 암호화되지 않은 HTTP는 지원하지 않으니, 데이터 프라이버시를 지키려면 HTTPS를 써야 해요.
https://api.twilio.com/2010-04-01— Calls, Recordings, Transcriptions, OutgoingCallerIds, Conferences, Queues 같은 주요 리소스의 베이스 URL.https://voice.twilio.com/v1— 발신 제한(Dialing Permissions) 관련 Countries·Settings 리소스.https://voice.twilio.com/v2— Client 리소스.
엣지(edge) 로케이션을 서브도메인에 넣어 연결 지점을 제어할 수도 있어요. 예를 들어 호주 인프라를 쓰는 고객은 sydney 엣지를 써서 https://api.sydney.us1.twilio.com/2010-04-01을 베이스 URL로 쓸 수 있어요.
인증은 HTTP Basic authentication을 사용해요. API key SID를 username, API key secret을 password로 넣어요. 호출 예시는 다음과 같아요.
curl -X GET "https://api.twilio.com/2010-04-01/Accounts.json?PageSize=20" \
-u $TWILIO_API_KEY:$TWILIO_API_SECRET
통화 만들고 관리하기
발신 통화를 만들려면 Calls 리소스로 POST를 보내요. REST API로 다음 상태도 조회·관리할 수 있어요.
- Call quality feedback — 통화 품질 피드백.
- Conferences / Participants — 컨퍼런스와 참가자.
- Outgoing caller IDs — 발신자 표시 번호.
- Queues / Members — 대기열과 대기열 구성원.
- Recordings / Transcriptions — 녹음과 변환.
통화 흐름의 기본은 텍스트 문자열을 읽어주고 키패드(DTMF) 입력을 수집하는 일이에요. 대부분의 동작은 TwiML로 제어돼요. 예를 들어 통화 중인 사람에게 텍스트를 읽어주려면 TwiML의 <Say>를 써야 해요. Twilio는 C#/.NET, Java, Node.js, PHP, Python, Ruby 6개 웹 언어의 SDK를 제공해 TwiML을 손쉽게 만들게 해줘요.
컨퍼런스 콜과 큐잉
- 컨퍼런스는 TwiML의
<Dial>안에<Conference>명사를 써서 만들어요. 이렇게 참가자를 추가하면 Twilio가 Conference 리소스와 참가자를 나타내는 Participant 서브리소스를 생성해요. - Conference 리소스로 계정의 컨퍼런스 목록을 조회하고, 상태를 갱신하고, 참가자 정보를 질의할 수 있어요.
- 큐(Queue)는 Queues 리소스로
POST하거나 TwiML의<Enqueue>동사로 만들 수 있어요.
통화 녹음
녹음·저장·변환은 코드 몇 줄로 가능해요.
- REST API로 통화를 만들 때
Record=true로 설정해 녹음을 시작할 수 있어요. - TwiML
<Dial>의record속성으로도 녹음을 만들 수 있고, 살아있는 통화의 Recordings 리소스로POST해서도 가능해요. - 녹음된 오디오를 변환(트랜스크립션)하려면 변환 옵션을 함께 설정해요.
SIP 연동
Twilio Voice API는 기존 VoIP 인프라에서도 쓸 수 있어요. Programmable Voice SIP 인터페이스로 기존 전화 장비나 통신사를 옮기지 않고도 통화를 Twilio의 프로그램 제어 아래 라우팅할 수 있어요. 유선·휴대폰·브라우저·모바일 앱·SIP 엔드포인트 어디로든 전 세계 도달 범위로 통화를 연결해요.