> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 음성 통화

# `openclaw voicecall`

`voicecall`은 Plugin에서 제공하는 명령입니다. 음성 통화 Plugin이 설치되고 활성화된 경우에만 표시됩니다.

Gateway가 실행 중이면 운영 명령(`call`, `start`, `continue`, `speak`, `dtmf`, `end`, `status`)이 해당 Gateway의 음성 통화 런타임으로 라우팅됩니다. 도달 가능한 Gateway가 없으면 독립 실행형 CLI 런타임으로 대체됩니다.

## 하위 명령

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw voicecall setup    [--json]
openclaw voicecall smoke    [-t <phone>] [--message <text>] [--mode <m>] [--yes] [--json]
openclaw voicecall call     -m <text> [-t <phone>] [--mode <m>]
openclaw voicecall start    --to <phone> [--message <text>] [--mode <m>]
openclaw voicecall continue --call-id <id> --message <text>
openclaw voicecall speak    --call-id <id> --message <text>
openclaw voicecall dtmf     --call-id <id> --digits <digits>
openclaw voicecall end      --call-id <id>
openclaw voicecall status   [--call-id <id>] [--json]
openclaw voicecall tail     [--file <path>] [--since <n>] [--poll <ms>]
openclaw voicecall latency  [--file <path>] [--last <n>]
openclaw voicecall expose   [--mode <m>] [--path <p>] [--port <port>] [--serve-path <p>]
```

| 하위 명령      | 설명                                               |
| ---------- | ------------------------------------------------ |
| `setup`    | 공급자 및 Webhook 준비 상태 검사를 표시합니다.                   |
| `smoke`    | 준비 상태 검사를 실행합니다. `--yes`가 있을 때만 실제 테스트 통화를 겁니다.  |
| `call`     | 발신 음성 통화를 시작합니다.                                 |
| `start`    | `--to`가 필수이고 `--message`가 선택 사항인 `call`의 별칭입니다.  |
| `continue` | 메시지를 말하고 다음 응답을 기다립니다.                           |
| `speak`    | 응답을 기다리지 않고 메시지를 말합니다.                           |
| `dtmf`     | 활성 통화에 DTMF 숫자를 보냅니다.                            |
| `end`      | 활성 통화를 끊습니다.                                     |
| `status`   | 활성 통화를 검사합니다(`--call-id`로 하나만 검사 가능).            |
| `tail`     | `calls.jsonl`을 tail합니다(공급자 테스트 중 유용).            |
| `latency`  | `calls.jsonl`의 턴 지연 시간 메트릭을 요약합니다.               |
| `expose`   | Webhook 엔드포인트에 대한 Tailscale serve/funnel을 전환합니다. |

## 설정 및 스모크

### `setup`

기본적으로 사람이 읽을 수 있는 준비 상태 검사를 출력합니다. 스크립트용으로는 `--json`을 전달하세요.

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw voicecall setup
openclaw voicecall setup --json
```

### `smoke`

동일한 준비 상태 검사를 실행합니다. `--to`와 `--yes`가 모두 있는 경우가 아니면 실제 전화 통화를 걸지 않습니다.

| 플래그                | 기본값                               | 설명                                 |
| ------------------ | --------------------------------- | ---------------------------------- |
| `-t, --to <phone>` | (없음)                              | 실제 스모크 통화를 걸 전화번호입니다.              |
| `--message <text>` | `OpenClaw voice call smoke test.` | 스모크 통화 중 말할 메시지입니다.                |
| `--mode <mode>`    | `notify`                          | 통화 모드: `notify` 또는 `conversation`. |
| `--yes`            | `false`                           | 실제 발신 통화를 겁니다.                     |
| `--json`           | `false`                           | 기계가 읽을 수 있는 JSON을 출력합니다.           |

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw voicecall smoke
openclaw voicecall smoke --to "+15555550123"        # 드라이 런
openclaw voicecall smoke --to "+15555550123" --yes  # 실제 알림 통화
```

<Note>
  외부 공급자(`twilio`, `telnyx`, `plivo`)의 경우 `setup` 및 `smoke`에는 `publicUrl`, 터널 또는 Tailscale 노출에서 제공되는 공개 Webhook URL이 필요합니다. 통신사가 도달할 수 없으므로 루프백 또는 비공개 serve 대체 경로는 거부됩니다.
</Note>

## 통화 수명 주기

### `call`

발신 음성 통화를 시작합니다.

| 플래그                    | 필수  | 기본값               | 설명                                                 |
| ---------------------- | --- | ----------------- | -------------------------------------------------- |
| `-m, --message <text>` | 예   | (없음)              | 통화가 연결될 때 말할 메시지입니다.                               |
| `-t, --to <phone>`     | 아니요 | config `toNumber` | 통화할 E.164 전화번호입니다.                                 |
| `--mode <mode>`        | 아니요 | `conversation`    | 통화 모드: `notify`(메시지 후 끊기) 또는 `conversation`(열어 둠). |

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw voicecall call --to "+15555550123" --message "Hello"
openclaw voicecall call -m "Heads up" --mode notify
```

### `start`

다른 기본 플래그 형태를 가진 `call`의 별칭입니다.

| 플래그                | 필수  | 기본값            | 설명                                 |
| ------------------ | --- | -------------- | ---------------------------------- |
| `--to <phone>`     | 예   | (없음)           | 통화할 전화번호입니다.                       |
| `--message <text>` | 아니요 | (없음)           | 통화가 연결될 때 말할 메시지입니다.               |
| `--mode <mode>`    | 아니요 | `conversation` | 통화 모드: `notify` 또는 `conversation`. |

### `continue`

메시지를 말하고 응답을 기다립니다.

| 플래그                | 필수 | 설명         |
| ------------------ | -- | ---------- |
| `--call-id <id>`   | 예  | 통화 ID입니다.  |
| `--message <text>` | 예  | 말할 메시지입니다. |

### `speak`

응답을 기다리지 않고 메시지를 말합니다.

| 플래그                | 필수 | 설명         |
| ------------------ | -- | ---------- |
| `--call-id <id>`   | 예  | 통화 ID입니다.  |
| `--message <text>` | 예  | 말할 메시지입니다. |

### `dtmf`

활성 통화에 DTMF 숫자를 보냅니다.

| 플래그                 | 필수 | 설명                               |
| ------------------- | -- | -------------------------------- |
| `--call-id <id>`    | 예  | 통화 ID입니다.                        |
| `--digits <digits>` | 예  | DTMF 숫자입니다(예: 대기에는 `ww123456#`). |

### `end`

활성 통화를 끊습니다.

| 플래그              | 필수 | 설명        |
| ---------------- | -- | --------- |
| `--call-id <id>` | 예  | 통화 ID입니다. |

### `status`

활성 통화를 검사합니다.

| 플래그              | 기본값     | 설명                       |
| ---------------- | ------- | ------------------------ |
| `--call-id <id>` | (없음)    | 출력을 하나의 통화로 제한합니다.       |
| `--json`         | `false` | 기계가 읽을 수 있는 JSON을 출력합니다. |

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw voicecall status
openclaw voicecall status --json
openclaw voicecall status --call-id <id>
```

## 로그 및 메트릭

### `tail`

음성 통화 JSONL 로그를 tail합니다. 시작 시 마지막 `--since`줄을 출력한 다음, 새 줄이 기록되는 대로 스트리밍합니다.

| 플래그             | 기본값              | 설명                    |
| --------------- | ---------------- | --------------------- |
| `--file <path>` | Plugin 저장소에서 확인됨 | `calls.jsonl` 경로입니다.  |
| `--since <n>`   | `25`             | tail하기 전에 출력할 줄 수입니다. |
| `--poll <ms>`   | `250`(최소 50)     | 밀리초 단위의 폴링 간격입니다.     |

### `latency`

`calls.jsonl`의 턴 지연 시간 및 듣기 대기 메트릭을 요약합니다. 출력은 `recordsScanned`, `turnLatency`, `listenWait` 요약이 포함된 JSON입니다.

| 플래그             | 기본값              | 설명                   |
| --------------- | ---------------- | -------------------- |
| `--file <path>` | Plugin 저장소에서 확인됨 | `calls.jsonl` 경로입니다. |
| `--last <n>`    | `200`(최소 1)      | 분석할 최근 레코드 수입니다.     |

## Webhook 노출

### `expose`

음성 Webhook에 대한 Tailscale serve/funnel 구성을 활성화, 비활성화 또는 변경합니다.

| 플래그                   | 기본값                                       | 설명                                       |
| --------------------- | ----------------------------------------- | ---------------------------------------- |
| `--mode <mode>`       | `funnel`                                  | `off`, `serve`(tailnet) 또는 `funnel`(공개). |
| `--path <path>`       | config `tailscale.path` 또는 `--serve-path` | 노출할 Tailscale 경로입니다.                     |
| `--port <port>`       | config `serve.port` 또는 `3334`             | 로컬 Webhook 포트입니다.                        |
| `--serve-path <path>` | config `serve.path` 또는 `/voice/webhook`   | 로컬 Webhook 경로입니다.                        |

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw voicecall expose --mode serve
openclaw voicecall expose --mode funnel
openclaw voicecall expose --mode off
```

<Warning>
  신뢰하는 네트워크에만 Webhook 엔드포인트를 노출하세요. 가능한 경우 Funnel보다 Tailscale Serve를 선호하세요.
</Warning>

## 관련 항목

* [CLI 참조](/ko/cli)
* [음성 통화 Plugin](/ko/plugins/voice-call)
