Files
adolf/docs/cli/voicecall.md
alvis bedb527145
Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Vendor OpenClaw source as Adolf fork baseline
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11),
free to diverge. Tree copied sans upstream .git; upstream remote added for
future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19.
Preserves docs/ARCHITECTURE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
2026-07-05 09:36:54 +00:00

213 lines
9.0 KiB
Markdown

---
summary: "CLI reference for `openclaw voicecall` (voice-call plugin command surface)"
read_when:
- You use the voice-call plugin and want every CLI entry point
- You need flag tables and defaults for setup, smoke, call, continue, speak, dtmf, end, status, tail, latency, expose, and start
title: "Voicecall"
---
# `openclaw voicecall`
`voicecall` is a plugin-provided command. It only appears when the voice-call
plugin is installed and enabled.
When the Gateway is running, operational commands (`call`, `start`,
`continue`, `speak`, `dtmf`, `end`, `status`) route to that Gateway's
voice-call runtime. If no Gateway is reachable, they fall back to a standalone
CLI runtime.
## Subcommands
```bash
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>]
```
| Subcommand | Description |
| ---------- | --------------------------------------------------------------- |
| `setup` | Show provider and webhook readiness checks. |
| `smoke` | Run readiness checks; place a live test call only with `--yes`. |
| `call` | Initiate an outbound voice call. |
| `start` | Alias for `call` with `--to` required and `--message` optional. |
| `continue` | Speak a message and wait for the next response. |
| `speak` | Speak a message without waiting for a response. |
| `dtmf` | Send DTMF digits to an active call. |
| `end` | Hang up an active call. |
| `status` | Inspect active calls (or one by `--call-id`). |
| `tail` | Tail `calls.jsonl` (useful during provider tests). |
| `latency` | Summarize turn-latency metrics from `calls.jsonl`. |
| `expose` | Toggle Tailscale serve/funnel for the webhook endpoint. |
## Setup and smoke
### `setup`
Prints human-readable readiness checks by default. Pass `--json` for scripts.
```bash
openclaw voicecall setup
openclaw voicecall setup --json
```
### `smoke`
Runs the same readiness checks. Places a real phone call only when both
`--to` and `--yes` are present.
| Flag | Default | Description |
| ------------------ | --------------------------------- | --------------------------------------- |
| `-t, --to <phone>` | (none) | Phone number to call for a live smoke. |
| `--message <text>` | `OpenClaw voice call smoke test.` | Message to speak during the smoke call. |
| `--mode <mode>` | `notify` | Call mode: `notify` or `conversation`. |
| `--yes` | `false` | Actually place the live outbound call. |
| `--json` | `false` | Print machine-readable JSON. |
```bash
openclaw voicecall smoke
openclaw voicecall smoke --to "+15555550123" # dry run
openclaw voicecall smoke --to "+15555550123" --yes # live notify call
```
<Note>
For external providers (`plivo`, `telnyx`, `twilio`), `setup` and `smoke` require a public webhook URL from `publicUrl`, a tunnel, or Tailscale exposure. A loopback or private serve fallback is rejected because carriers cannot reach it.
</Note>
## Call lifecycle
### `call`
Initiate an outbound voice call.
| Flag | Required | Default | Description |
| ---------------------- | -------- | ----------------- | -------------------------------------------------------------------------- |
| `-m, --message <text>` | yes | (none) | Message to speak when the call connects. |
| `-t, --to <phone>` | no | config `toNumber` | E.164 phone number to call. |
| `--mode <mode>` | no | `conversation` | Call mode: `notify` (hang up after message) or `conversation` (stay open). |
```bash
openclaw voicecall call --to "+15555550123" --message "Hello"
openclaw voicecall call -m "Heads up" --mode notify
```
### `start`
Alias for `call` with a different default flag shape.
| Flag | Required | Default | Description |
| ------------------ | -------- | -------------- | ---------------------------------------- |
| `--to <phone>` | yes | (none) | Phone number to call. |
| `--message <text>` | no | (none) | Message to speak when the call connects. |
| `--mode <mode>` | no | `conversation` | Call mode: `notify` or `conversation`. |
### `continue`
Speak a message and wait for a response.
| Flag | Required | Description |
| ------------------ | -------- | ----------------- |
| `--call-id <id>` | yes | Call ID. |
| `--message <text>` | yes | Message to speak. |
### `speak`
Speak a message without waiting for a response.
| Flag | Required | Description |
| ------------------ | -------- | ----------------- |
| `--call-id <id>` | yes | Call ID. |
| `--message <text>` | yes | Message to speak. |
### `dtmf`
Send DTMF digits to an active call.
| Flag | Required | Description |
| ------------------- | -------- | ------------------------------------------------ |
| `--call-id <id>` | yes | Call ID. |
| `--digits <digits>` | yes | DTMF digits (for example `ww123456#` for waits). |
### `end`
Hang up an active call.
| Flag | Required | Description |
| ---------------- | -------- | ----------- |
| `--call-id <id>` | yes | Call ID. |
### `status`
Inspect active calls.
| Flag | Default | Description |
| ---------------- | ------- | ---------------------------- |
| `--call-id <id>` | (none) | Restrict output to one call. |
| `--json` | `false` | Print machine-readable JSON. |
```bash
openclaw voicecall status
openclaw voicecall status --json
openclaw voicecall status --call-id <id>
```
## Logs and metrics
### `tail`
Tail the voice-call JSONL log. Prints the last `--since` lines on start, then
streams new lines as they are written.
| Flag | Default | Description |
| --------------- | -------------------------- | ------------------------------ |
| `--file <path>` | resolved from plugin store | Path to `calls.jsonl`. |
| `--since <n>` | `25` | Lines to print before tailing. |
| `--poll <ms>` | `250` (minimum 50) | Poll interval in milliseconds. |
### `latency`
Summarize turn-latency and listen-wait metrics from `calls.jsonl`. Output is
JSON with `recordsScanned`, `turnLatency`, and `listenWait` summaries.
| Flag | Default | Description |
| --------------- | -------------------------- | ------------------------------------ |
| `--file <path>` | resolved from plugin store | Path to `calls.jsonl`. |
| `--last <n>` | `200` (minimum 1) | Number of recent records to analyze. |
## Exposing webhooks
### `expose`
Enable, disable, or change the Tailscale serve/funnel configuration for the
voice webhook.
| Flag | Default | Description |
| --------------------- | ----------------------------------------- | ----------------------------------------------- |
| `--mode <mode>` | `funnel` | `off`, `serve` (tailnet), or `funnel` (public). |
| `--path <path>` | config `tailscale.path` or `--serve-path` | Tailscale path to expose. |
| `--port <port>` | config `serve.port` or `3334` | Local webhook port. |
| `--serve-path <path>` | config `serve.path` or `/voice/webhook` | Local webhook path. |
```bash
openclaw voicecall expose --mode serve
openclaw voicecall expose --mode funnel
openclaw voicecall expose --mode off
```
<Warning>
Only expose the webhook endpoint to networks you trust. Prefer Tailscale Serve over Funnel when possible.
</Warning>
## Related
- [CLI reference](/cli)
- [Voice call plugin](/plugins/voice-call)