블로그 목록

가이드

자체 음성 AI에 한국 070 번호와 SIP만 연결하는 방법: 번호 발급부터 시험 통화까지

이미 만든 음성 AI는 그대로 두고 한국 070 번호와 통신만 붙이는 방법을 정리했어요. 번호 발급, 외부 SIP URI 설정, 시험 통화로 확인할 것, 지금 되는 조합과 안내하지 않는 조합을 담았어요.

안녕하세요. 한국AI통신에서 070 번호와 통화 인프라를 만들고 있어요.

이미 만든 음성 AI가 있다면 AI는 그대로 두고 번호와 통신만 붙일 수 있어요. 070 번호를 받아 걸려 온 전화를 내 SIP 주소로 보내고, 전화를 걸 때는 내 AI가 저희 SIP 서버로 요청을 보내면 돼요.

그런데 "SIP 트렁크를 지원한다"는 말만으로는 연동이 끝나지 않아요. 착신과 발신은 설정하는 곳이 다르고, 전송 방식과 음성 암호화를 양쪽이 맞추지 않으면 전화가 연결되지 않거든요.

이 글에서는 필요한 준비물, 착신 설정, 발신 설정, 시험 통화로 확인할 것, 지금 되는 조합을 차례로 정리해 볼게요. 2026년 11월 6일 운영에서 확인한 값은 그렇게 표시하고, 문서를 기준으로 쓴 값은 문서 기준이라고 적었어요.

필요한 건 공인 SIP 주소 하나예요

내 AI가 공인 도메인이나 공인 IP에서 SIP 요청을 받을 수 있어야 해요. 사설 주소로는 라우트를 만들 수 없어요. 2026년 11월 6일 운영에서 사설 주소를 넣어 보니 이런 400 응답이 돌아왔어요.

내부·사설 주소로는 라우트를 만들 수 없습니다

그 밖에 준비할 것은 세 가지예요.

  1. 번호를 받을 자격: 개인 계정은 소유자 본인확인, 사업자 계정은 사업자 인증을 마쳐야 번호를 발급할 수 있어요.
  2. SIP 트렁크 연결 부가서비스: 콘솔의 부가서비스 화면에서 켜요. 체험 계정도 켤 수 있어요.
  3. API 키: 콘솔의 개발자 › API 키 화면에서 계정 ID와 함께 확인해요. 콘솔에서 설정한다면 필요 없어요.

내 고객에게 번호를 나눠 줄 거라면요?

내 고객 각자가 자기 번호로 쓰게 하려면 일반 번호 대신 관리번호를 써요. 고객이 직접 본인확인을 하고 자기 명의로 번호를 받는 방식이에요. 자세한 내용은 관리번호 글과 고객사별 번호 문서에 있어요.

착신과 발신은 설정하는 곳이 달라요

방향은 둘이에요. 필요한 방향만 설정해도 돼요.

  1. 착신: 전화 거는 사람 → 070 번호 → 라우트의 SIP URI → 내 음성 AI
  2. 발신: 내 음성 AI → Digest 인증, TLS 5061 → 한국AI통신 SIP → 전화 받는 사람

착신은 "번호 → 엔드포인트 → 라우트" 순서로 이어져요. 라우트에 내 AI의 SIP 주소를 적고, 번호가 그 엔드포인트를 가리키게 해요. 발신은 SIP 자격증명을 만들어 내 AI에 넣어요.

번호를 받고 착신을 내 AI로 보내요

콘솔에서는 전화번호 › SIP 라우팅에서 엔드포인트를 추가하고, 전화번호 › 내 번호에서 번호를 열어 인바운드 라우팅을 SIP로 바꾸면 돼요.

API로 하면 아래 네 번의 요청이에요. 코드는 API 문서의 명세를 기준으로 썼고, 엔드포인트 ID는 응답의 id 값을 그대로 써요.

BASE=https://api.claw-ops.com/v1/accounts/$CLAWOPS_ACCOUNT_ID
AUTH="Authorization: Bearer $CLAWOPS_API_KEY"
JSON="Content-Type: application/json"

# 1. 070 번호 발급
curl -X POST $BASE/numbers -H "$AUTH" -H "$JSON" -d '{}'

# 2. 엔드포인트 만들기
curl -X POST $BASE/sip-endpoints -H "$AUTH" -H "$JSON" \
  -d '{"name":"my-voice-ai"}'

# 3. 내 AI의 SIP 주소를 라우트로 등록
curl -X POST $BASE/sip-endpoints/$ENDPOINT_ID/routes -H "$AUTH" -H "$JSON" \
  -d '{"uri":"sip:agent.example.com:5061","transport":"tls","priority":10}'

# 4. 번호를 SIP 라우팅으로 전환
curl -X PUT $BASE/numbers/07012340001 -H "$AUTH" -H "$JSON" \
  -d '{"routingType":"sip","sipEndpointId":"'$ENDPOINT_ID'"}'

URI에 사용자 부분을 비우면 걸려 온 070 번호가 그 자리에 들어가요. 넣으면 적은 값 그대로 보내요. 내 AI가 번호로 에이전트를 고른다면 비워 두고, 프로젝트 ID 같은 고정값을 요구한다면 적으면 돼요(문서 기준).

왜 transport를 꼭 적어야 할까요?

전송 방식은 URI가 아니라 transport 칸이 정하거든요. 기본값은 udp예요. 2026년 11월 6일 운영에서 transport를 빼고 URI에만 ;transport=tls를 적어 봤는데, 요청은 201로 성공했고 transport는 udp로 저장됐어요.

오류 없이 저장되니 알아채기 어려워요. 라우트를 만든 뒤 응답의 transport 값을 꼭 확인해 보세요.

순서를 지켜야 번호가 연결돼요

번호를 먼저 연결하면 거절돼요. 2026년 11월 6일 운영에서 라우트 없는 엔드포인트에 번호를 연결하면 409 NO_ACTIVE_ROUTES가 돌아왔어요.

엔드포인트에 활성 라우트가 1개 이상 필요합니다

라우트를 고칠 때 메서드는 PUT이에요. 같은 날 PATCH로 보내면 405였어요.

라우트를 두 개 두면 다음 주소로 넘어가요

우선순위 숫자가 낮은 라우트부터 시도하고, 실패하면 다음 라우트로 넘어가요. 2026년 11월 6일 운영에서 priority 1에 잘못된 도메인을, priority 10에 정상 주소를 넣었더니 2순위로 연결됐어요.

잘못된 도메인으로 시험한 결과예요. 응답하지 않는 서버에서 넘어가기까지 걸리는 시간은 재지 않았어요.

내 AI가 전화를 걸 때는 Digest로 들어와요

발신은 SIP 자격증명으로 인증해요. 콘솔의 전화번호 › SIP 단말에서 만들거나 API로 만들어요. 비밀번호는 만들 때의 응답에서 한 번만 볼 수 있어요.

curl -X POST $BASE/sip-credentials -H "$AUTH" -H "$JSON" \
  -d '{"name":"my-voice-ai","username":"my_voice_ai","allowedNumbers":["07012340001"]}'

내 AI의 발신 설정에는 이 값을 넣어요.

항목값
접속 주소<계정 ID 소문자>.sip.claw-ops.com
전송TLS, 포트 5061
인증SIP Digest(자격증명의 username·password). REGISTER 없이 INVITE만 보내도 돼요
From계정이 보유한 번호
받는 번호국내 형식 또는 +82 형식. 국제 발신은 지원하지 않아요

2026년 11월 6일 운영에서 From을 국내 형식과 +82 형식으로 한 번씩 보냈어요. 둘 다 연결됐고, +82 형식은 국내 형식으로 기록됐어요.

From이 맞지 않으면 403으로 끝나요. 같은 날 외부 번호로 걸어 본 응답이에요.

From응답
계정이 보유하지 않은 번호403 Caller ID not owned by account
보유했지만 allowedNumbers에 없는 번호403 Caller ID not allowed for this credential

IP만으로 인증할 수 있나요?

내 AI에서 저희로 들어오는 요청은 Digest 인증이 항상 필요해요. 허용 IP 대역(IP ACL)은 Digest를 대신하지 않고 그 위에 조건을 더하는 기능이에요.

시험 통화로 세 가지를 확인해요

저희는 2026년 11월 6일 운영에서 LiveKit Cloud(미국 동부)를 상대로 시험했어요. 같은 순서로 확인하면 어디서 막혔는지 나눠 볼 수 있어요.

  1. 내 AI에 INVITE가 도착하는지 봐요. Request-URI의 사용자 부분에 기대한 값이 있는지, X-ClawOps-CallId와 X-ClawOps-To 헤더가 있는지 확인해요(헤더는 문서 기준).
  2. 통화가 연결되는지 봐요. X-ClawOps-CallId 값으로 통화 기록과 이벤트를 조회할 수 있어요.
  3. 양쪽 음성이 들리는지 직접 들어 봐요. 이번 시험에서는 연결까지만 확인했고 양방향 음성은 확인하지 않았어요. 품질과 지연도 내 AI의 위치와 구성에 따라 달라지니 직접 재 보는 게 좋아요.
curl $BASE/calls/$CALL_ID -H "$AUTH"
curl $BASE/calls/$CALL_ID/events -H "$AUTH"

통화가 바로 실패해요

음성 암호화 설정이 양쪽에서 어긋났는지 먼저 봐요. 같은 시험에서 나온 결과예요.

라우트 mediaCrypto상대 쪽 암호화결과
rtp끔연결
sdes필수(REQUIRE)연결
sdes끔실패: 착신 기록 failed, app_error
rtp필수(REQUIRE)실패: 착신 기록 failed, app_error

두 실패 모두 건 쪽 통화 기록은 canceled였어요.

벨만 울리고 받지 않아요

받는 쪽에 통화를 처리할 에이전트가 없으면 응답 없이 벨만 울릴 수 있어요. 받는 쪽 로그에 INVITE가 있는지, 그 번호를 처리할 에이전트가 연결돼 있는지 확인해 보세요.

소리가 한쪽만 들려요

방화벽에서 신호 IP만 열었을 수 있어요. 신호와 음성은 서로 다른 IP에서 나가서 둘 다 허용해야 해요. 값은 네트워크 문서에서 확인해 주세요.

되는 조합과 안내하지 않는 조합을 나눠 볼게요

2026년 11월 6일 운영에서 연결까지 확인한 조합이에요.

방향조합설정
착신TLS, 평문 RTP"transport":"tls"
착신TLS, SRTP(SDES)"transport":"tls","mediaCrypto":"sdes"
발신Digest, TLS 5061SIP 자격증명

문서 기준으로 코덱은 착신 라우트로 나가는 통화가 PCMU·PCMA이고, DTMF는 RFC 4733이에요. SIP INFO는 지원하지 않아요. 내 AI는 PCMU나 PCMA를 받을 수 있게 맞춰 두세요.

아래는 다른 조합이에요.

조합상태
착신 라우트의 TCP지원하지 않아요. transport는 udp와 tls만 받아요
UDP 라우트에 SRTP지원하지 않아요. 400 "mediaCrypto=sdes 는 transport=tls 일 때만 쓸 수 있습니다"(11월 6일 확인)
DTLS-SRTP지원하지 않아요. 키 교환은 SDES예요
착신 UDP 라우트저장할 수 있지만 이번 시험에는 넣지 않았어요. 이 글의 예시는 TLS로 썼어요
착신 라우트의 외부 SIP 인증(outboundAuth)지금은 안내하지 않는 조합이에요
발신 통화에서 보내는 REFER지금은 안내하지 않는 조합이에요

음성은 한국AI통신을 거쳐 오가요

통화가 이어지는 동안 음성은 한국AI통신을 거쳐요. 그래서 내 AI 쪽 방화벽에서 저희 신호·음성 IP를 허용해야 해요.

SRTP를 켜면 암호화되는 구간은 한국AI통신과 내 AI 사이예요. 전화망 구간은 포함하지 않아요.

통화 녹음은 콘솔에서 켜고 끌 수 있어요.

비용은 나눠서 봐야 해요

SIP 트렁크 연결은 월 ₩99,000이고, 체험 기간과 프로모션 중에는 무료예요. 번호와 통화 요금은 요금 페이지에서 확인할 수 있어요.

외부 AI 비용은 그 업체에 따로 내요. 문서 기준으로 체험 계정의 발신 시간과 동시 통화 제한은 SIP로 건 통화에도 그대로 적용돼요.

자주 묻는 질문

이미 만든 음성 AI를 바꾸지 않고 한국 070 번호만 쓸 수 있나요?

네. 내 AI가 SIP로 전화를 받거나 걸 수 있으면 돼요. 번호와 라우트는 한국AI통신에서 설정하고, 대화 처리는 내 AI가 맡아요.

국내 SIP 트렁크를 체험 계정으로 시험할 수 있나요?

요금 문서 기준으로 체험 계정에서도 SIP 트렁크 연결을 켤 수 있어요. 체험 계정의 제한은 요금 페이지에 있어요.

발신번호에 +82 형식을 써도 되나요?

070 번호는 돼요. 2026년 11월 6일 운영에서 +82 형식 From으로 연결됐고 국내 형식으로 기록됐어요.

TLS 접속에서 unknown ca 오류가 나요

내 AI의 인증서 검증 깊이를 확인해 보세요. 2026년 11월 6일 조회한 5061 포트는 인증서 4장을 보내고, 체인이 ISRG Root X1까지 이어져요. 신뢰 저장소에 ISRG Root X1만 있으면 검증 깊이 2에서는 실패하고 3에서는 통과해요. 깊이를 3 이상으로 올리거나 ISRG Root X2를 신뢰 저장소에 추가하면 돼요.

내 AI의 사설 IP로 바로 보낼 수 있나요?

아니요. 라우트에는 공인 도메인이나 공인 IP만 쓸 수 있어요.

마치며

이미 만든 음성 AI가 공인 SIP 주소로 전화를 주고받을 수 있다면 번호와 통신만 붙이면 돼요. 연결이 안 되면 transport 값, 음성 암호화 설정, 방화벽의 IP 두 개부터 확인해 보세요.

번호 발급만 먼저 해 보고 싶다면 070 번호 API 글을, SIP 기본 개념이 궁금하다면 SIP API 가이드를 함께 봐 주세요. PC 소프트폰으로 먼저 번호를 확인해 보려면 Linphone 연결 글이 도움이 돼요.

콘솔에서 시작하기 · SIP 트렁크 문서 · 요금

참고한 자료

  1. 한국AI통신 문서: SIP 트렁크
  2. 한국AI통신 문서: 네트워크(IP 허용목록)
  3. 한국AI통신 문서: 전화번호 발급
  4. 한국AI통신 문서: 고객사별 번호
  5. RFC 4568: SDP Security Descriptions(SDES)
  6. RFC 4733: DTMF 전송

관련 글 더 보기

Claude Code MCP로 전화 비서 만들기: 체험 가입부터 첫 전화까지

Claude Code에 한국AI통신 MCP를 추가하고 체험 가입, 070 번호 발급, 전화 비서 준비, 첫 전화까지 따라가요. 실제 통화 기록과 막혔을 때 대처법도 함께 담았어요.

Linphone으로 070 번호 연결하는 방법: PC에서 전화 걸고 받기

무료 SIP 소프트폰 Linphone에 클로옵스 070 번호를 TLS로 등록해 PC에서 전화를 받고 거는 방법을 실제 화면으로 정리했어요. Zoiper 무료판이 연결되지 않는 이유와 설정하다 자주 막히는 곳도 함께 담았어요.

피클처럼 AI 통화를 실시간 글자로 보여 주려면: AI 전화 에이전트 실시간 전사 API 만들기

피클 같은 AI 전화 대행 앱은 통화 내용을 실시간으로 보여 줘요. 클로옵스 관리형 AI 에이전트의 실시간 전사(SSE)로 같은 화면을 내 서비스에 만드는 방법, Twilio·Vapi·Retell·ElevenLabs의 실시간 전사 방식 비교, 070 실통화 이벤트 240개를 그대로 재생한 영상을 정리했어요.

Eleven Realtime Max 에이전트 둘이 서로 전화를 걸게 했어요: AI 비서와 치과 상담원 통화 8번 실측

ElevenLabs Eleven Realtime v1 Max로 AI 비서와 치과 상담원 에이전트를 만들어 070 번호로 서로 통화시켰어요. Mini와 Max의 차이, 요금, 실제 통화 녹음과 8번의 실측 결과(검색 전 지어내기 포함)를 정리했어요.

Mistral Voxtral 3 정리: 받아쓰기·음성 합성·음성 에이전트 SDK와 한국어, 요금

Mistral이 10월 20일 발표한 Voxtral 3를 정리했어요. 받아쓰기·실시간 받아쓰기·음성 합성 모델과 음성 에이전트 SDK가 무엇을 하는지, 공식 비교 음성을 직접 들어 본 결과, 한국어가 어디까지 확인되는지, 요금과 전화 연결 조건을 담았어요.

한국AI통신 AI 전화 API로 시작하기

070 번호 발급부터 AI 음성 통화까지, REST API 몇 줄이면 됩니다.