전화번호
전화번호
전화번호는 ClawOps의 통화와 문자가 드나드는 창구입니다. 하나의 번호로 전화를 받고, 전화를 걸고, 문자를 보냅니다. 번호를 발급한 뒤 착신 라우팅을 지정하면 그 번호로 걸려온 전화를 누가 받을지 정해집니다.
번호는 ClawOps 번호 풀에서 자동으로 배정됩니다. 국가, 지역번호, 뒷자리를 지정할 수 없고 발급 전에 후보를 미리 볼 수도 없습니다. 어떤 번호가 나올지는 발급 응답에서 확인합니다.
번호 객체
발급, 조회, 수정 응답이 모두 같은 형태입니다.
라우팅에 쓰이지 않는 필드는 null로 내려옵니다. 예를 들어 routingType이 agent이면 callFlowId, forwardTo, sipEndpointId, sipCredentialId는 모두 null입니다.
번호 발급
본문은 모두 선택이며 {}로 요청해도 발급됩니다. 여기서 지정한 값은 발급된 번호에 그대로 적용됩니다.
발급만으로는 전화를 받지 못합니다. 발급 직후 번호는 routingType이 webhook이고 webhookUrl이 비어 있어, 이 상태로 걸려온 전화는 거절됩니다. 이어서 착신 라우팅을 지정하세요.
발급 조건
세 가지를 모두 만족해야 발급됩니다.
번호 풀이 비어 있으면 503이 반환됩니다. 이 경우 요청을 바꿔도 결과가 같으므로 잠시 후 다시 시도하세요.
번호 목록 조회
착신 라우팅
routingType이 이 번호로 걸려온 전화를 누가 받을지 결정합니다.
라우팅 변경
경로의 {number}는 번호 그 자체입니다(예: 07012341234). 보낸 필드만 바뀌고 생략한 필드는 그대로 유지됩니다.
라우팅을 바꾸면 다른 라우팅 필드는 자동으로 비워집니다. agent에서 webhook으로 되돌리면 agentId가 null이 되고, 다시 agent로 돌아갈 때 agentId를 새로 지정해야 합니다. 라우팅을 임시로 바꿨다가 되돌리는 운영을 한다면 원래 값을 직접 보관해 두세요.
에이전트가 받기
에이전트를 만드는 방법은 에이전트를 참고하세요. 번호에 연결된 에이전트는 삭제할 수 없으므로, 에이전트를 지우려면 먼저 번호의 라우팅을 다른 대상으로 바꿔야 합니다.
callContextUrl을 함께 지정하면 통화가 시작되기 직전에 그 주소를 호출해 통화별 지시문과 변수를 받아옵니다. 같은 에이전트로 걸려온 전화를 발신자에 따라 다르게 응대할 때 사용합니다. 조회에 실패하면 저장된 에이전트 설정만으로 통화를 계속합니다.
콜 플로우가 받기
내 서버가 받기
전화가 걸려오면 ClawOps가 이 주소를 호출하고, 응답으로 받은 VoiceML대로 통화를 진행합니다. 주소는 외부에서 접근할 수 있는 HTTP(S)여야 하며 내부망 주소는 거절됩니다.
보유한 다른 번호로 전환
forwardTo는 같은 계정이 보유한 번호여야 합니다. 휴대폰이나 사무실 번호처럼 계정 밖의 번호로는 전환할 수 없고, 자기 자신으로도 전환할 수 없습니다. 외부 번호로 연결하려면 callflow 또는 webhook 라우팅에서 <Dial>을 사용하세요.
SIP와 소프트폰
외부 PBX로 넘기거나(sip) 등록된 소프트폰 단말을 울리려면(softphone) SIP 트렁크 부가서비스가 활성화되어 있어야 합니다.
엔드포인트는 활성 상태여야 하고 활성 라우트가 하나 이상 있어야 합니다. 소프트폰은 활성화된 등록 단말이어야 하며, 세션용으로 발급한 임시 자격증명은 착신 대상이 될 수 없습니다.
수신 통화 상태 통지
statusCallback을 지정하면 이 번호로 걸려온 통화의 상태 전이를 그 주소로 통지합니다. 거는 통화의 상태는 통화를 생성할 때 지정하는 별도의 statusCallback으로 관리하며, 번호 설정은 관여하지 않습니다.
statusCallbackEvents를 생략하면 initiated ringing answered completed가 적용됩니다.
Webhook 헤더 추가
webhookHeaders로 Webhook 호출에 헤더를 덧붙일 수 있습니다. 수신 측에서 요청의 출처를 구분할 때 사용합니다.
null을 보내면 헤더가 제거되고, 필드를 아예 보내지 않으면 그대로 유지됩니다.
받아쓰기 사전 부착
dictionaryId를 지정하면 이 번호로 걸려온 통화의 전사에 해당 사전을 적용합니다. 상호명이나 제품명처럼 잘못 받아쓰기 쉬운 단어를 사전에 등록해 두면 정확도가 올라갑니다.
부착한 사전은 계정 기본 사전을 대체합니다. 두 사전의 단어가 합쳐지지 않으므로, 기본 사전의 단어도 필요하다면 부착할 사전에 함께 넣어야 합니다. null을 보내면 부착이 해제되고 계정 기본 사전으로 돌아갑니다.
발신번호로 쓰기
전화를 걸거나 문자를 보낼 때 From에는 계정이 보유한 번호만 지정할 수 있습니다. 보유하지 않은 번호를 넣으면 400이 반환되며, 발신번호를 자동으로 골라 주는 동작은 없습니다.
문자 발송의 발신번호 규칙은 문자 메시지를 참고하세요.
대표번호
15xx, 18xx로 시작하는 전국대표번호입니다. 일반 번호와 발급 경로와 제약이 다릅니다.
응답은 일반 번호와 같은 번호 객체이며 numberType이 representative입니다.
대표번호는 전화를 직접 처리하지 않고 보유한 다른 번호로 넘기는 창구입니다. 에이전트가 대표번호를 받게 하려면 대표번호를 에이전트가 연결된 070 번호로 전환하세요.
관리번호 발급 링크
내 서비스의 이용자가 직접 방문해 번호를 발급받게 하려면 일회용 발급 링크를 만듭니다. 링크는 한 번만 사용할 수 있고, 사용되거나 만료되면 재사용할 수 없습니다. 관리번호 발급 부가서비스가 필요하며, 자세한 요청과 응답은 API 레퍼런스의 발급 링크 생성을 참고하세요.
번호 반납
성공하면 204가 반환되고 본문은 없습니다. 번호는 즉시 풀로 돌아가 다른 계정에 배정될 수 있습니다.
반납은 되돌릴 수 없습니다. 같은 번호를 다시 발급받는다는 보장이 없으므로, 안내물이나 광고에 노출된 번호는 반납 전에 대체 번호를 먼저 준비하세요.
반납해도 그 번호로 주고받은 통화와 문자 이력은 남아 계속 조회할 수 있습니다. 반납한 번호로 forward 하던 다른 번호가 있으면 그 번호는 함께 반납되지 않고 전환 대상만 해제됩니다.
오류
오류 응답에는 항상 error에 사람이 읽을 메시지가 담깁니다.
code 필드는 일부 오류에만 붙습니다. 라우팅 변경 실패는 INVALID_AGENT, ENDPOINT_INACTIVE처럼 코드가 함께 오지만, 발급 실패(한도 초과, 구독 없음, 풀 고갈)는 error 메시지만 옵니다. 클라이언트에서 분기할 때는 code가 없을 수 있다는 전제로 HTTP 상태 코드를 기준으로 처리하세요.