동적 변수
동적 변수는 통화마다 값이 바뀌는 사용자 정의 변수입니다. 에이전트의 프롬프트·첫 메시지·키워드 강조·웹훅 URL 같은 영역에{{변수명}} 형태로 자리 표시자를 두면, 통화가 시작될 때 주입된 값으로 치환됩니다. 덕분에 동일한 에이전트 하나로 수많은 고객 상황에 맞는 개인화된 응대를 할 수 있습니다.
현재 시간(
current_time), 발신·수신 번호(call_from, call_to), 통화 ID(call_id), 에이전트 ID(agent_id) 는 플랫폼이 통화 시점에 자동으로 채워주는 시스템 변수입니다. 별도의 주입 설정이 필요 없으며, 프롬프트에서 바로 {{변수명}}으로 참조할 수 있습니다. 자세한 내용은 시스템 변수 문서를 확인하세요.이 문서는 사용자 정의 동적 변수를 주입하는 방법을 다룹니다.작성 문법
이중 중괄호 안에 영문·숫자·언더스코어로 된 변수명을 넣습니다. 변수명은 대소문자를 구분합니다.- 공백은 허용됩니다:
{{ user_name }}={{user_name}} - 치환은 프롬프트뿐 아니라 첫 메시지, 키워드 강조, API/MCP 도구의 웹훅 URL까지 동일하게 적용됩니다.
- 값이 없는 변수는 빈 값으로 처리됩니다. 오류는 발생하지 않지만, 변수 누락 시에도 자연스러운 문장이 되도록 프롬프트를 작성하세요.
주입 경로 선택 가이드
“언제 값을 넣을 수 있는가”는 어떤 방식으로 통화를 시작하는지에 따라 달라집니다. 아래 다섯 가지 경로 중 하나를 고르세요.① 인바운드 통화 — 웹훅
걸려온 번호를 보고 CRM에서 고객 정보를 조회해 주입합니다.
② 아웃바운드 단건 발신
대시보드 폼 또는 REST API로 한 통화씩 변수를 지정해 발신합니다.
③ 아웃바운드 대량 발신
시트에 행을 채우고 컬럼을 그대로 변수로 전송합니다.
④ SDK
웹·모바일 SDK의
dynamicVariables 파라미터로 전달합니다.⑤ 테스트 프리셋
대시보드에서 웹 테스트할 때만 사용하는 임시 프리셋입니다.
1. 인바운드 웹훅
걸려온 통화의 발신·수신 번호를 기반으로, 사용자가 운영하는 서버에서 동적 변수와 메타데이터를 반환하는 방식입니다. CRM/DB에 있는 고객 정보를 프롬프트에 녹일 때 가장 많이 쓰이는 경로입니다.
웹훅 URL 설정
에이전트 빌드 화면의 웹훅 설정 아코디언을 열면 인바운드 웹훅 URL 필드가 있습니다. 여기에 사용자가 운영하는 엔드포인트를 입력하고 저장합니다.- placeholder:
https://api.example.com/webhook/inbound - 설명: “통화 시작 전 발신 번호를 기반으로 동적 변수(고객명, 상품명 등)를 프롬프트에 주입합니다.”
요청 페이로드
인바운드 통화가 들어오면 vox.ai가 다음 JSON 바디로 POST 요청을 보냅니다. 페이로드 형식은 고정입니다.- 타임아웃: 10초
- 실패 시 재시도: 최대 2회
- 재시도 후에도 실패하면 동적 변수 없이 통화가 이어집니다 — 프롬프트에서 변수 누락을 가정한 분기 처리를 두는 것이 안전합니다.
응답 스키마
응답 JSON은 다음 구조를 따라야 합니다.dynamic_variables의 키를 프롬프트의 {{변수명}}과 일치시키면 자동으로 치환됩니다.
dynamic_variables— 키-값 쌍. 값은 문자열·숫자·불리언을 사용합니다.metadata— 에이전트 프롬프트에는 주입되지 않고, 이 통화의 메타데이터로 저장됩니다. 나중에 통화 데이터 웹훅으로 함께 전달되므로, 내부 고객 ID처럼 다운스트림에서 필요한 식별자를 실어 보낼 수 있습니다.
서버 구현 예시
보조 수단 — SIP 헤더
SIP 트렁킹으로 인바운드 통화를 받는 경우, PBX가X-로 시작하는 커스텀 헤더에 고객 정보를 실어 보내면 웹훅 서버 없이도 자동으로 동적 변수로 주입됩니다. 웹훅과 동시에 사용 가능하며, 같은 키가 겹치면 웹훅 응답 값이 우선합니다. 자세한 내용은 시스템 변수 > SIP 헤더로 동적 변수 자동 주입과 SIP 트렁킹 가이드를 참고하세요.
2. 아웃바운드 단건 발신
한 번에 한 통씩, 통화 시작 시점에 변수 값을 지정해 발신하는 경로입니다. 대시보드 폼과 REST API 두 가지 방법이 제공됩니다.- 대시보드
- REST API
대시보드 단건 발신 페이지에서 에이전트를 선택하면 프롬프트에 포함된 {{변수명}}이 자동으로 추출되어 변수 설정 카드에 입력란이 렌더링됩니다. 각 변수 값을 채우고 발신 버튼을 누르면 통화가 즉시 시작됩니다.발신 번호·수신 번호·에이전트 선택 등 전체 흐름은 단건 발신 가이드를 참고하세요.3. 아웃바운드 대량 발신
수십~수만 건을 한 캠페인으로 발신할 때는 시트를 사용합니다. 시트의 각 컬럼이 그대로 동적 변수 이름이 되고, 행 하나당 통화 하나가 생성됩니다.- 대시보드
- REST API
시트에서 phone 컬럼은 수신 전화번호 컬럼이고, 그 외에 직접 추가한 컬럼은 모두 해당 행 통화의 동적 변수로 주입됩니다. 컬럼명을 프롬프트의 {{변수명}}과 일치시키면 됩니다.{ user_name: "김철수", product_name: "보험상품A", grade: "vip" } 로 주입되어 발신됩니다. 빈 셀은 빈 값으로 처리됩니다.시트 구성·캠페인 실행·스케줄링·재시도 정책 등 자세한 내용은 대량 발신 가이드를 참고하세요.4. SDK
JavaScript, React, React Native, Flutter SDK는 모두 통화 시작 메서드의 옵션으로dynamicVariables 파라미터를 받습니다. 문자열·숫자·불리언 값을 키-값 쌍으로 전달하면 해당 통화에만 적용됩니다.
5. 테스트 프리셋 (웹 테스트 전용)
에이전트 빌드 화면의 테스트 영역에는 테스트 프리셋 시트가 있습니다. 여기서 설정한 동적 변수는 대시보드 웹 테스트 통화에서만 사용됩니다 — 실제 인바운드/아웃바운드 통화에는 전혀 반영되지 않으니 주의하세요.
- 시트 제목: 테스트 프리셋
- 설명: “동적 변수를 설정합니다.”
- 저장 버튼: 저장
예외 상황 정리
| 상황 | 동작 |
|---|---|
| 값이 없는 변수 | 빈 값으로 처리 (오류 없음) |
| 시스템 변수와 이름 충돌 | 시스템 변수가 사용자 정의 값을 덮어씀 |
| 인바운드 웹훅 타임아웃/실패 | 재시도 2회 후에도 실패 시 빈 dynamic_variables로 통화 진행 |
| SIP 헤더와 인바운드 웹훅 응답 키 충돌 | 웹훅 응답 값이 우선 |
| 대시보드 단건 발신에서 빈 입력 | 빈 값으로 전송 |
관련 문서
- 시스템 변수
- SIP 트렁킹 — SIP 헤더 기반 주입
- 단건 발신
- 대량 발신
- JavaScript SDK · React SDK · React Native SDK · Flutter SDK
- 통화 데이터 웹훅
연관 검색어
연관 검색어
동적 변수, dynamic variables, 변수 주입, 변수 치환, 인바운드 웹훅, 개인화, 테스트 프리셋, 사용자 정의 변수