Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

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) are routed to that Gateway’s voice-call runtime. If no Gateway is reachable, they fall back to a standalone CLI runtime.

Subcommands

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>]
SubcommandDescription
setupShow provider and webhook readiness checks.
smokeRun readiness checks; place a live test call only with --yes.
callInitiate an outbound voice call.
startAlias for call with --to required and --message optional.
continueSpeak a message and wait for the next response.
speakSpeak a message without waiting for a response.
dtmfSend DTMF digits to an active call.
endHang up an active call.
statusInspect active calls (or one by --call-id).
tailTail calls.jsonl (useful during provider tests).
latencySummarize turn-latency metrics from calls.jsonl.
exposeToggle Tailscale serve/funnel for the webhook endpoint.

Setup and smoke

setup

Prints human-readable readiness checks by default. Pass --json for scripts.
openclaw voicecall setup
openclaw voicecall setup --json

smoke

Runs the same readiness checks. It will not place a real phone call unless both --to and --yes are present.
FlagDefaultDescription
-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>notifyCall mode: notify or conversation.
--yesfalseActually place the live outbound call.
--jsonfalsePrint machine-readable JSON.
openclaw voicecall smoke
openclaw voicecall smoke --to "+15555550123"        # dry run
openclaw voicecall smoke --to "+15555550123" --yes  # live notify call
For external providers (twilio, telnyx, plivo), 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.

Call lifecycle

call

Initiate an outbound voice call.
FlagRequiredDefaultDescription
-m, --message <text>yes(none)Message to speak when the call connects.
-t, --to <phone>noconfig toNumberE.164 phone number to call.
--mode <mode>noconversationCall mode: notify (hang up after message) or conversation (stay open).
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.
FlagRequiredDefaultDescription
--to <phone>yes(none)Phone number to call.
--message <text>no(none)Message to speak when the call connects.
--mode <mode>noconversationCall mode: notify or conversation.

continue

Speak a message and wait for a response.
FlagRequiredDescription
--call-id <id>yesCall ID.
--message <text>yesMessage to speak.

speak

Speak a message without waiting for a response.
FlagRequiredDescription
--call-id <id>yesCall ID.
--message <text>yesMessage to speak.

dtmf

Send DTMF digits to an active call.
FlagRequiredDescription
--call-id <id>yesCall ID.
--digits <digits>yesDTMF digits (e.g. ww123456# for waits).

end

Hang up an active call.
FlagRequiredDescription
--call-id <id>yesCall ID.

status

Inspect active calls.
FlagDefaultDescription
--call-id <id>(none)Restrict output to one call.
--jsonfalsePrint machine-readable JSON.
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.
FlagDefaultDescription
--file <path>resolved from plugin storePath to calls.jsonl.
--since <n>25Lines 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.
FlagDefaultDescription
--file <path>resolved from plugin storePath 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.
FlagDefaultDescription
--mode <mode>funneloff, serve (tailnet), or funnel (public).
--path <path>config tailscale.path or --serve-pathTailscale path to expose.
--port <port>config serve.port or 3334Local webhook port.
--serve-path <path>config serve.path or /voice/webhookLocal webhook path.
openclaw voicecall expose --mode serve
openclaw voicecall expose --mode funnel
openclaw voicecall expose --mode off
Only expose the webhook endpoint to networks you trust. Prefer Tailscale Serve over Funnel when possible.