# 직접 만들기 (/docs/build)

## 직접 만들기 (VoiceML)

한국AI통신에서 통화를 처리하는 두 가지 방식 중 *서버가 통화 흐름을 직접 제어* 하는 경로입니다.
공인 HTTPS 엔드포인트를 두고, 통화가 들어오면 한국AI통신이 보내는 webhook 에 **VoiceML(XML)** 로 응답합니다.

  검증 상태는 **동사·속성 단위로 다릅니다.** 운영 환경 실통화로 검증된 범위는
  [VoiceML 동사별 검증 상태](/docs/build/voiceml#동사별-검증-상태)와 [Stream](/docs/build/stream) 에
  적혀 있습니다. 그 표에서 「미검증」으로 남은 속성은 운영 적용 전에 자체 테스트가 필요합니다.

한국AI통신의 또 다른 경로인 [Voice Agent](/docs/voice-agent) 는 SDK 가 한국AI통신 서버에 WebSocket 으로
역접속하여 AI 통화 봇을 만드는 방식입니다. 두 경로는 서로 배타적이지 않으며, 같은 계정에서 번호별로
선택해 쓸 수 있습니다.

## Voice Agent vs VoiceML

| 비교 항목     | Voice Agent (SDK)                                      | VoiceML (직접 만들기)                                                  |
| ------------- | ------------------------------------------------------ | ---------------------------------------------------------------------- |
| 구현 언어     | Python / Node.js (공식 SDK)                            | 언어 무관 (HTTP/XML 응답 가능한 모든 서버)                             |
| 인프라        | SDK 가 한국AI통신 서버에 WS 역접속 (공인 엔드포인트 불필요) | 공인 HTTPS 엔드포인트 필요                                            |
| AI 통합       | STT / LLM / TTS 빌트인 — OpenAI Realtime / Gemini Realtime / Pipeline | 자체 AI 없음. 필요 시 `<Connect><Stream>` 으로 외부 AI 서버 연결 |
| 통화 제어     | 빌트인 도구 4종 + Python/Node 함수 등록 (`@agent.tool`) | XML 동사 8종 (`<Say>` `<Play>` `<Gather>` `<Record>` `<Dial>` `<Connect>` `<Hangup>` `<Redirect>`) |
| TwiML 호환    | —                                                      | ✓ (기존 TwiML 코드를 최소 수정으로 이전 가능)                          |
| 부가 기능     | 자동 녹음, MCP 서버 연동, OpenTelemetry 트레이싱        | `<Record>` 동사로 녹음. 그 외는 직접 구현                              |
| 검증 상태     | **OpenAI Realtime 만 검증 완료** (Gemini/Pipeline 검증 전) | 동사별로 다름 — `<Connect><Stream>` 포함 대부분 검증 완료, 일부 속성 미검증 ([동사별 검증 상태](/docs/build/voiceml#동사별-검증-상태)) |

## 어떤 걸 골라야 하나

- **AI 음성 봇이 목적이고 빠르게 만들고 싶다** → [Voice Agent](/docs/voice-agent)
  공인 엔드포인트, XML 작성, 시그널/미디어 채널 분리를 SDK 가 다 처리합니다.
- **IVR / 분기 / 녹음 / 다른 번호로 전달 등 *통화 흐름* 자체를 제어해야 한다** → VoiceML
  AI 가 필요 없거나, AI 를 *부분적* 으로만 쓰고 나머지는 룰 기반으로 처리하고 싶을 때 적합합니다.
- **기존 TwiML 코드를 옮긴다** → VoiceML
  본 문서 [VoiceML](/docs/build/voiceml) 의 차이점만 확인하면 대부분 그대로 동작합니다.
- **둘이 필요하다** → 동시 사용 가능
  번호별로 한쪽을 골라 쓰면 됩니다. VoiceML 흐름 안에서 `<Connect><Stream>` 으로 외부 AI(자체 호스팅 모델 포함)를 끼워 넣을 수도 있습니다.

## 이 그룹 페이지

- [VoiceML](/docs/build/voiceml) — XML 동사 레퍼런스, 요청/응답 형식, 서명 검증
- [Stream](/docs/build/stream) — `<Connect><Stream>` WebSocket 프로토콜, 메시지 형식, 오디오 사양
