Skip to main content
진행 중인 통화의 에이전트에게 API로 텍스트 맥락을 넣어요. 에이전트는 통화가 끝날 때까지 이 맥락을 반영하고, 응답 방식에 따라 먼저 말하기도 해요.

언제 사용하나요

  • 통화 중에 외부 처리가 끝났을 때: 결제나 본인 확인 결과로 바로 안내하게 해요.
  • CRM 정보를 알려 줄 때: 고객 등급이나 최근 주문을 이후 답변에 쓰게 해요.
  • 잘못된 안내를 바로잡을 때: interrupt_agent로 말을 끊고 고친 내용으로 답하게 해요.

응답 방식 고르기

response로 에이전트가 맥락을 받은 뒤 먼저 말할지 정해요. when_idle과 interrupt_agent는 expires_in_seconds 안에 말을 시작하지 못하면 말하지 않아요. 이때도 맥락은 계속 반영돼요.

API로 맥락 넣기

cURL
Idempotency-Key 헤더는 필수예요. 같은 키와 본문으로 다시 보내면 24시간 동안 처음 결과를 돌려주고 맥락을 다시 넣지 않아요. 같은 키에 다른 본문을 보내면 409 IDEMPOTENCY_KEY_CONFLICT가 와요. HTTP 202는 통화에 전달했다는 뜻까지예요. 응답의 control_id를 저장하고 결과는 call_context 웹훅으로 확인하세요. 주요 거절 코드예요.
  • 409 CALL_NOT_ACTIVE: 진행 중(ongoing) 통화가 아니에요.
  • 409 CONTEXT_NOT_SUPPORTED: 음성 통화가 아니에요.
  • 409 CONTEXT_TARGET_AMBIGUOUS: 통화에 에이전트가 둘 이상이에요.
  • 400 INVALID_CONTEXT_REQUEST: 본문이 필드 규칙에 맞지 않아요.
  • 429 CONTEXT_LIMIT_EXCEEDED: 통화당 한도(초당 2회, 분당 10회, 말하기 대기 8건, 누적 64KiB)를 넘었어요.
  • 503 CONTEXT_COMMAND_UNAVAILABLE: 전달하지 못했어요. details.retryable이 true면 같은 키로 다시 보내세요. false면 이미 전달됐을 수 있어 새 키로 보내면 두 번 들어갈 수 있어요.
전체 필드와 응답 예시는 진행 중 통화에 맥락 주입 API에 있어요. CLI에서는 vox call context <call-id> --text "..." --response interrupt_agent로 보내요. MCP에서는 inject_call_context 도구로 같은 요청을 보내요.

통화에서 일어나는 일

  • 맥락은 업무 시스템이 보낸 데이터로 전달돼요. 에이전트는 고객의 말이나 지시로 다루지 않고, 스크립트에도 남지 않아요.
  • when_idle은 조용해진 뒤 잠시 기다려요. 고객과 에이전트가 말을 멈추고 기본 1.5초가 지나면 말해요. 그사이 고객이 말하면 다시 기다려요.
  • interrupt_agent는 기다리지 않아요. 에이전트가 말하는 중이면 새 답을 준비하는 동안 그 말을 이어 가다가, 새 답의 음성이 준비되는 순간 끊어요. 고객에게는 문장이 중간에 멈추고 맥락에 대한 답이 바로 이어져요.
  • 끊지 않는 말도 있어요. 끼어들 수 없게 보호한 첫 메시지와 도구 실행 중인 말은 끝난 뒤 답해요.
  • 말할 요청이 여러 개면 한 번에 말해요. 도착 순서대로 모아 한 번에 답하고, interrupt_agent 요청이 있으면 그 시점을 따라요.
  • 상담사 전환 중이나 통화 종료 중에는 반영하지 않아요. 새 요청은 거절되고, 말하기를 기다리던 요청은 취소돼요.

결과 확인하기

요청마다 결과가 정해지면 통화 데이터 웹훅 URL로 call_context 이벤트가 한 번 와요. 따로 구독하지 않아도 와요. control_id로 요청과 짝을 맞추세요. 말했는지는 reply로 보세요. 끝까지 말하면 completed, 말하다 끊기면 interrupted, 고객 말에 대한 답에 합쳐지면 merged, 기한 안에 시작하지 못하면 expired예요. 값 전체는 웹훅 스키마에 있어요.

문제가 생겼을 때

response를 when_idle이나 interrupt_agent로 보내세요. none은 맥락을 기억만 하고 고객의 다음 말에 답할 때부터 반영해요.
첫 메시지 설정에서 첫 메시지 인터럽트 허용을 켜세요. 끼어들 수 없게 보호한 첫 인사나 도구를 실행하는 중인 말은 끊지 않고, 끝난 뒤 답해요.
expires_in_seconds를 늘리세요. 고객이 길게 말하거나 끊을 수 없는 말이 이어지면 기한 안에 말을 시작하지 못해요.
에이전트나 워크스페이스에 통화 데이터 웹훅 URL을 설정하세요. URL이 없으면 결과를 보내지 않아요.

관련 문서