Skip to main content
이벤트별 페이로드 필드와 예시를 정리했습니다. 본문 키는 이벤트마다 call, operator_call, sms, campaign, sms_batch로 다릅니다. 본문 식별자는 call_id, operator_call_id, campaign_id, batch_id처럼 리소스별 키를 쓰며 REST API 응답의 id와 이름이 다릅니다.
비용과 분석 결과는 call_analyzed에서 확인하세요. call_ended에는 포함되지 않습니다.

통화 이벤트

통화 데이터 웹훅은 통화 진행 상태와 분석 완료 상태를 나누어 전송합니다. call_analyzed는 통화 종료 후 비동기로 전송됩니다.

call_started

mid_call

AI 통화 중 플로우 전환이나 발화가 발생하면 전송됩니다. 상담원에게 전환된 뒤의 발화는 상담원 구간의 mid_call을 참고하세요.

call_ended

통화 시간은 end_at - start_at으로 계산합니다.

녹음 파일 다운로드

recording_url은 인증이 필요한 엔드포인트입니다. API 키로 녹음을 내려받는 방법과 스테레오 OGG 채널 분리 형식은 통화 녹음에서 확인하세요.

스크립트 형식

transcript는 발화와 도구 호출 기록을 한 배열에 담습니다. 도구를 사용하지 않은 통화에는 agentuser 항목만 들어갑니다.
transcript는 통화 데이터 저장 제외 설정이나 통화 처리 상태에 따라 null일 수 있습니다.

call_analyzed

상담원 통화 이벤트

AI 통화에서 상담원에게 전환된 뒤의 이벤트입니다. 안내 후 전환과 Desk 이어받기에 적용됩니다. 통화 데이터 웹훅 URL을 설정하면 별도 구독 없이 전송됩니다. 전송 흐름은 안내 후 전환 라이프사이클을 참고하세요.

operator_call_started

mid_call

고객이나 상담원의 발화가 확정되면 전송됩니다. AI 구간과 같은 mid_call 이벤트이며, call.operator_call_id로 구분합니다.

operator_call_ended

시작 이벤트에는 start_at이 없고 occurred_at이 상담원 통화 조회 응답의 start_at과 같습니다. 종료 이벤트의 occurred_atend_at과 같습니다.
종료 이벤트의 recording_url은 만료되지 않습니다.
dynamic_variables, metadata, mode, source, handoff_id는 이벤트가 발생한 통화와 연결 경로를 설명하는 웹훅 전용 컨텍스트입니다. v3 API 참조상담사 통화 > 상담사 통화 조회 응답에는 포함되지 않습니다.
이전에 문서화되지 않은 takeover 이벤트를 받고 있었다면 이 두 이벤트로 대체됩니다. 본문 키는 operator_call이고 takeover_id, takeover_event_type, message_count, duration_ms는 없습니다.

상담원 통화 상세 조회

대화록, 비용 또는 종료 이벤트에 포함되지 않은 녹음 URL이 필요하면 v3 API 참조상담사 통화 > 상담사 통화 조회를 호출하세요.
cURL
일부 과거 통화는 만료가 없는 다운로드 URL로 반환될 수 있습니다. 상담원 통화 조회는 통화 조회와 같은 워크스페이스 요청 한도를 공유합니다. 주기적으로 폴링하지 말고 웹훅을 받은 뒤 필요한 통화만 조회하세요.
단건 응답의 recording_url은 15분 뒤 만료되는 서명 URL입니다. URL을 저장해 두지 말고 재생 시점에 다시 조회하세요.

전달 보장과 재시도

수신 서버가 응답을 돌려주면 상태 코드와 무관하게 그 시도는 끝납니다. 4xx나 5xx로 재시도를 유도할 수 없습니다. 응답이 없거나 연결이 끊기면 제한된 횟수만 재시도합니다. 수신 서버가 응답한 뒤 vox.ai가 결과를 저장하기 전에 장애가 나면 같은 이벤트가 다시 전송됩니다. 같은 이벤트를 한 번만 처리하려면 다음 키를 쓰세요. 통화 이벤트는 (event, call_id), 상담원 통화 이벤트는 (event, operator_call_id)입니다. mid_call은 AI 구간에서 call_id, 상담원 구간에서 operator_call_id를 쓰세요. 여기에 event, occurred_at, event_type, event_data를 더해 키를 구성하세요.
응답이 늦어 타임아웃되면 재시도로 같은 이벤트가 다시 전송됩니다. 요청을 먼저 저장하고 2xx를 바로 반환한 뒤 후속 처리는 비동기로 실행하세요.

sms_received

sms_received는 워크스페이스 번호로 SMS나 MMS를 수신할 때 전송됩니다. 워크스페이스 웹훅 전용이며 설정 > 웹훅이벤트 구독에서 수신 문자를 선택한 워크스페이스에만 전송됩니다. 본문 키는 통화 이벤트와 달리 call이 아니라 sms입니다.

첨부 파일 다운로드

file_key로 첨부 파일 원본을 받으려면 파일 다운로드 API를 호출하세요.
cURL
응답 본문이 파일 원본입니다. Content-Typeimage/jpeg, image/png, image/gif 중 저장된 MIME 타입을 그대로 따릅니다. 같은 워크스페이스가 소유한 file_key만 받을 수 있습니다. 전체 파라미터는 v3 API 참조파일 > 파일 다운로드에서 확인하세요.
본문 키가 call이 아니라 sms입니다. event 키로 분기하는 핸들러는 수정 없이 동작합니다. call 키를 무조건 읽는 핸들러는 sms_received를 별도로 분기하세요.
서명 방식은 통화 데이터 웹훅과 동일합니다. 대시보드 설정 > 웹훅이벤트 구독에서 수신 문자를 선택하고 저장하면 전송됩니다. 기본값은 선택 해제이고 선택한 이후 수신분부터 전송됩니다.

대량 발신 이벤트

campaignsms_batch는 대시보드 설정 > 웹훅이벤트 구독에서 캠페인 종결문자 대량 발신 종결을 선택하고 저장합니다. 워크스페이스 설정 API의 webhook_event_subscriptions에 이벤트 값을 추가해도 됩니다.
이 두 이벤트도 워크스페이스 웹훅 URL과 같은 서명 방식을 따릅니다. 중복 처리는 전달 보장과 재시도를 따르세요.

campaign

campaign은 대량 발신 캠페인이 success 또는 canceled로 종결될 때 전송됩니다. 캠페인을 시작, 일시정지, 재개할 때는 전송하지 않습니다. 웹훅은 캠페인 단위로 전송됩니다. 자동 재시도를 켠 캠페인은 실패분을 재발신할 때 새 캠페인이 생성되므로 종결 웹훅도 원본과 재시도분이 각각 전송됩니다. 재시도 캠페인의 sheet_id는 원본과 같습니다. 시트 전체의 완료 여부는 판정하지 않으므로 수신 서버에서 조합하세요.
campaign 본문은 캠페인 조회 API 응답 필드에 sheet_idoccurred_at을 추가한 구조입니다.

sms_batch

sms_batch는 대량 문자 배치가 success 또는 fail로 종결될 때 전송됩니다. 발송이 시작되어 상태가 ongoing이 될 때는 전송하지 않습니다.
sms_batch 본문은 대량 문자 배치 조회 API 응답에서 items를 제외하고, sheet_idoccurred_at을 추가한 구조입니다.

서버 구현 체크리스트

  • 수신 스키마에 최상위 webhook_version 필드를 포함하세요.
  • call_ended에서 비용이나 분석 필드를 기대하지 마세요.
  • 분석 결과 저장, 후속 자동화, 비용 집계는 call_analyzed에서 실행하세요.
  • 통화 결과는 call_statusdisconnection_reason을 함께 확인하세요.
  • 통화 시간은 end_at - start_at으로 계산하세요.
  • operator_call_startedoperator_call_endedoperator_call 키를 사용합니다.
  • 상담원 구간의 mid_callcall 키를 사용합니다.
  • sms_received, campaign, sms_batch는 각 리소스 키를 사용합니다.
  • event별로 본문 키를 분기하세요.

관련 문서


웹훅 스키마, webhook schema, call_analyzed, call_ended, operator_call_started, operator_call_ended, 상담원 통화 웹훅, 상담사 통화 웹훅, operator call webhook, mid_call, sms_received, campaign, sms_batch, 대량 발신 캠페인 웹훅, 대량 문자 배치 웹훅, outbound campaign webhook, bulk sms webhook, 수신 문자 웹훅, inbound sms webhook, MMS 수신, attachments, 웹훅 페이로드, webhook payload, recording_url, 녹음 다운로드, recording download, 녹음 파일 URL