한국에서 SIP API 사용하기: 070 번호 연동 가이드
한국에서 SIP API 사용하기: 070 번호 연동 가이드
한국에서 SIP API 써보려고 했던 분이라면 공감하실 텐데, 정보가 진짜 없습니다.
영어로 검색하면 Twilio, Vonage, Plivo 같은 서비스가 바로 나오는데, 한국 070 번호를 API로 쓸 수 있는 서비스는 찾기가 어렵습니다. 그래서 직접 삽질한 내용을 정리해봤습니다.
SIP이 뭔지부터
SIP(Session Initiation Protocol)은 RFC 3261로 정의된 인터넷 전화 표준 프로토콜입니다. 이름 그대로 세션을 시작(Initiate)하는 역할이에요.
동작 흐름은 이렇습니다:
발신자 SIP 서버 수신자
│── INVITE ──────────────▶│ │
│ │── INVITE ─────────────────▶│
│ │◀─ 180 Ringing ────────────│
│◀─ 180 Ringing ─────────│ │
│ │◀─ 200 OK ────────────────│
│◀─ 200 OK ──────────────│ │
│── ACK ─────────────────▶│── ACK ───────────────────▶│
│◀═══════════ RTP 미디어 스트림 (양방향) ═══════════▶│
│── BYE ─────────────────▶│── BYE ───────────────────▶│
INVITE로 전화 걸고, 200 OK로 수락하고, ACK로 확인하고, RTP로 실제 음성 데이터를 주고받습니다. 끊을 때 BYE. HTTP 요청-응답이랑 비슷한 구조라 개발자가 이해하기 어렵진 않습니다.
실제 음성은 SIP이 아니라 RTP(Real-time Transport Protocol)로 전송됩니다. SIP은 전화 연결/해제만 담당하고, 통화 자체는 RTP가 처리합니다.
한국 SIP 트렁크 현황
한국에서 070 번호를 API로 쓰려면 SIP 트렁크 사업자와 계약해야 합니다.
상황을 정리하면:
- Twilio: 한국 070 번호 미지원. 한국 일반 번호도 개인 개발자한테 발급 안 해줍니다
- Vonage/Plivo: 한국 번호 지원 제한적. 법인 인증 필요하고 절차가 복잡합니다
- 국내 SIP 사업자: WYZ070 같은 곳이 있긴 한데, API가 제한적이고 개발자 문서가 부족합니다
글로벌 서비스는 한국 번호가 안 되고, 국내 서비스는 API가 개발자 친화적이지 않은 게 현실입니다.
직접 구축할 때 부딪히는 문제들
SIP 트렁크를 확보했다 칩시다. 그다음에 만나는 문제들이 진짜입니다.
NAT Traversal
서버가 AWS나 클라우드에 있으면 사설 IP 뒤에 있습니다. SIP INVITE 메시지의 Contact 헤더에 사설 IP가 들어가면 통신사 SBC가 응답을 못 보냅니다. STUN 서버로 공인 IP를 알아내거나 SIP ALG를 설정해야 하는데, 이게 환경마다 다르게 동작해서 디버깅이 고통스럽습니다.
SBC 연동과 SDP 네고시에이션
통신사 SBC(Session Border Controller)랑 SDP(Session Description Protocol) 협상을 해야 합니다. 코덱 우선순위, 미디어 포트 범위, DTMF 전송 방식(RFC 2833 vs SIP INFO) 같은 걸 맞춰야 하는데, 통신사마다 요구사항이 다릅니다.
tcpdump로 SIP 패킷 캡처해서 SDP offer/answer를 하나하나 비교하면서 맞추는 작업입니다. 이거 해보신 분은 아시겠지만 한 파라미터 잘못 넣으면 "통화 연결됐는데 소리가 안 들린다" 같은 증상이 나옵니다.
SRTP 암호화
통화 내용 보안을 위해 SRTP(Secure RTP) 암호화 설정이 필수입니다. 키 교환 방식(SDES vs DTLS-SRTP)을 SBC랑 맞춰야 합니다. 여기서도 호환성 이슈가 잘 터집니다.
코덱 이슈
한국 통신사는 보통 G.711 A-law를 쓰는데, 서버 쪽에서 Opus나 G.722를 기대하고 있으면 당연히 안 됩니다. 코덱 네고시에이션 실패하면 통화가 아예 안 되거나 한쪽만 소리가 나는 현상이 생깁니다.
ClawOps: SIP 레이어 추상화
이 문제들을 전부 안 겪는 방법이 있습니다. ClawOps가 SIP 인프라를 통째로 추상화해놨습니다.
070 번호 발급:
curl -X POST https://api.claw-ops.com/v1/accounts/{accountId}/numbers \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"webhookUrl": "https://your-server.com/voice"}'
전화 걸기:
curl -X POST https://api.claw-ops.com/v1/accounts/{accountId}/calls \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"to": "01012345678", "from": "07052358010", "webhookUrl": "https://your-server.com/status"}'
NAT? SBC? SRTP? 코덱? 전부 내부에서 처리됩니다. GCP 한국 리전 (서울)에서 돌아가서 국내 레이턴시가 500ms 미만이고 (자체 비교 기준), 국내 서버 데이터 처리에 SRTP 암호화가 기본 적용됩니다.
SIP/RTP를 직접 다루는 건 공부 차원에서는 추천하지만, 프로덕션 서비스에 넣으려면 유지보수가 만만치 않습니다. SBC 업데이트, 코덱 호환성, 장애 대응까지 계속 신경 써야 하거든요. 직접 구축한다면 FreeSWITCH나 Asterisk 경험이 필수입니다.
발신 분당 116원, 수신은 무료. Starter ₩19,900/월(60분, 전화회선 1개), Growth ₩49,900/월(300분, 전화회선 3개, 동시통화 3건), Business ₩149,000/월(1000분, 전화회선 10개, 동시통화 10건). 수신통화 무제한 무료. 약정 없음.
참고 링크
관련 글 더 보기
070 번호 API: REST API 한 줄로 전화번호 발급받기
070 인터넷전화 번호를 REST API 한 줄로 발급받는 방법. 기존 통신사 계약 방식 대비 10초 만에 번호를 발급받고 바로 전화를 걸 수 있습니다.
가이드WebRTC + SIP 게이트웨이: 브라우저에서 바로 전화 걸기
WebRTC와 SIP 게이트웨이를 연동하여 브라우저에서 070 전화를 거는 방법. 한국 SIP 환경에서의 WebRTC 구현, SRTP 변환, NAT 처리까지 실전 가이드를 제공합니다.
가이드전화 봇 만들기: AI가 진짜로 전화 걸고 받는 봇 구축하기
ClawOps MCP 서버를 활용해 한국어 AI 전화 봇을 처음부터 끝까지 구축하는 방법. 070 번호 발급, 발신/수신 전화 처리, 웹훅 연동까지 단계별로 안내합니다.
가이드MCP 서버로 Claude에게 전화 기능 붙이기
MCP(Model Context Protocol) 서버를 설정해 Claude Desktop에서 한국 070 번호로 실제 전화를 걸고 받는 방법. call-me-mcp 설치부터 실제 통화 데모까지 안내합니다.
가이드AI 자동 전화 시스템, 개발자가 직접 구축하는 법
AI 자동 전화 시스템의 5단계 아키텍처를 설명합니다. SIP Gateway, STT, LLM, TTS 각 레이어의 역할과 직접 구축 시 주의점, 전화 인프라 API 활용 방법을 다룹니다.