인바운드 웹훅
걸려온 통화의 발신·수신 번호를 기반으로, 사용자가 운영하는 서버에서 동적 변수와 메타데이터를 반환하는 방식입니다. CRM/DB에 있는 고객 정보를 프롬프트에 녹일 때 가장 많이 쓰이는 경로입니다. 이 페이지는 동적 변수의 인바운드 웹훅 주입 경로를 다룹니다.
웹훅 URL 설정
에이전트 빌드 화면의 웹훅 설정 아코디언을 열면 인바운드 웹훅 URL 필드가 있습니다. 여기에 사용자가 운영하는 엔드포인트를 입력하고 저장합니다.- placeholder:
https://api.example.com/webhook/inbound - 설명: “통화 시작 전 발신 번호를 기반으로 동적 변수(고객명, 상품명 등)를 프롬프트에 주입합니다.”
요청 페이로드
인바운드 통화가 들어오면 vox.ai가 다음 JSON 바디로 POST 요청을 보냅니다. 페이로드 형식은 고정입니다.- 타임아웃: 10초 안에 응답해야 통화가 정시 시작됩니다
- 재시도: 실패 시 짧은 간격으로 최대 2회 재시도합니다. 재시도 호출은 같은
(call_from, call_to)로 들어오므로 중복 감지가 필요하면 서버에서 자체 키로 처리하세요 - 실패 시 동작: 재시도 후에도 실패하면 동적 변수 없이 통화가 이어집니다 — 프롬프트에서 변수 누락을 가정한 분기 처리를 두는 것이 안전합니다
응답 스키마
응답 JSON은 다음 구조를 따라야 합니다.dynamic_variables의 키를 프롬프트의 {{변수명}}과 일치시키면 자동으로 치환됩니다.
dynamic_variables— 키-값 쌍. 값은 문자열·숫자·불리언만 지원합니다. 중첩 값(배열·객체) 의 처리 방식과 워크어라운드는 동적 변수 작성 문법 Warning 을 참고하세요.metadata— 에이전트 프롬프트에는 주입되지 않고, 이 통화의 메타데이터로 저장됩니다. 나중에 통화 데이터 웹훅의call.metadata로 그대로 전달되므로, 내부 고객 ID 처럼 다운스트림에서 필요한 식별자를 실어 보낼 수 있습니다.
서버 구현 예시
보안
HMAC 서명 검증 (선택)
에이전트 설정의 웹훅 설정 섹션에서 인바운드 웹훅 서명 토글을 켜면, 인바운드 웹훅 요청에 HMAC-SHA256 서명 헤더가 포함됩니다. endpoint 가 이 요청이 vox.ai 에서 온 것인지 검증할 수 있습니다. 기본값은 꺼짐이며, 꺼진 상태의 요청은 기존과 동일하게 서명 없이 전송됩니다.| 헤더 | 설명 | 예시 |
|---|---|---|
X-Webhook-Timestamp | 서명 생성 시점 (Unix, 초) | 1738900000 |
X-Webhook-Signature | HMAC-SHA256 서명 | sha256=a1b2c3... |
"{timestamp}.{원본 요청 본문}" 을 서명하며, 받은 원본 본문 그대로 검증해야 합니다. 통화 데이터 웹훅 서명을 이미 검증하고 있다면 같은 검증 코드를 그대로 재사용하세요.
- 서명 키는 대시보드 설정 > 웹훅 에서 발급하는 워크스페이스 웹훅 서명 키를 함께 사용합니다. 에이전트별 키는 없습니다.
- 워크스페이스에 서명 키가 없으면 토글을 켜도 서명 없이 전송됩니다. 토글을 켜기 전에 키를 먼저 발급하세요.
endpoint 쪽 추가 방어
서명 검증과 별개로, 사용자 endpoint 쪽에서 다음을 적용할 수 있습니다.- HTTPS 전용 — 인바운드 웹훅 URL 은
https://만 허용됩니다 (http://는 저장 불가) - 자체 토큰 — URL path 또는 query 에 secret token 을 포함시켜 서버에서 검증합니다. 예:
https://api.example.com/webhook/inbound?token={{시크릿}} - 요청 검증 —
call_from형식이 E.164 또는 한국 휴대전화 패턴인지,call_to가 자사가 등록한 수신 번호인지 확인합니다
테스트
페이로드 형식이 고정이므로 사용자 endpoint 자체는 curl 로 직접 시뮬레이션할 수 있습니다.보조 수단 — SIP 헤더
SIP 트렁킹으로 인바운드 통화를 받는 경우, PBX가X-로 시작하는 커스텀 헤더에 고객 정보를 실어 보내면 웹훅 서버 없이도 자동으로 동적 변수로 주입됩니다. 웹훅과 동시에 사용할 수 있습니다 (충돌 시 우선순위는 예외 상황 참고). 자세한 내용은 시스템 변수 > SIP 헤더로 동적 변수 자동 주입과 SIP 트렁킹 가이드를 참고하세요.
예외 상황
| 상황 | 동작 |
|---|---|
| 타임아웃 / 실패 | 재시도 2회 후에도 실패하면 dynamic_variables 없이 통화 진행 — 프롬프트의 {{변수명}} 은 그대로 LLM 에 전달 |
| SIP 헤더와 웹훅 응답 키 충돌 | 웹훅 응답 값이 우선 |
| 응답 JSON 형식 오류 | 동적 변수 없이 통화 진행 (재시도 없음) |
빈 dynamic_variables 반환 | 정상 응답으로 간주, 변수 없이 통화 진행 |
관련 문서
- 동적 변수 — 인바운드 웹훅 외 4가지 주입 경로 (단건/대량 발신, SDK, 테스트 프리셋)
- 시스템 변수 — 자동 주입 변수와 SIP 헤더 자동 주입
- SIP 트렁킹
- 통화 데이터 웹훅
연관 검색어
연관 검색어
인바운드 웹훅, inbound webhook, 발신 번호 인식, 고객 정보 주입, CRM 연동, X-헤더, SIP 헤더, dynamic_variables, 통화 시작 웹훅, call_from, call_to, webhook 응답 스키마, 화이트리스트, 재시도 정책, webhook 인증, webhook 보안, HMAC 서명, 서명 검증, X-Webhook-Signature, 인바운드 웹훅 서명