Install
openclaw skills install clawvoiceInitiate and manage outbound phone calls via ClawVoice with guided setup, configuration, and post-call outcome capture.
openclaw skills install clawvoiceUse this skill when handling phone call workflows through ClawVoice.
NEVER generate, guess, or invent tunnel URLs, webhook URLs, or media stream URLs.
Twilio requires real, publicly reachable endpoints. If a URL is not configured:
ngrok http 3101)CLAWVOICE_TWILIO_STREAM_URLclawvoice setup for guided configurationclawvoice diagnostics to verify before callingDo NOT set placeholder URLs. A fake URL causes silent call failure — the caller hears an error message or silence with no useful debugging information.
When a user wants to set up ClawVoice, walk them through these steps conversationally. Ask one question at a time. Do not dump all steps at once.
Ask: "Which telephony provider do you want to use — Twilio or Telnyx?"
If they don't know, recommend Twilio (more common, better documentation).
Walk through these steps one at a time:
openclaw config set:
openclaw config set clawvoice.telephonyProvider twilio
openclaw config set clawvoice.twilioAccountSid <sid>
openclaw config set clawvoice.twilioAuthToken <token>
openclaw config set clawvoice.twilioPhoneNumber <number>
https://<your-public-host>/clawvoice/webhooks/twilio/voice (HTTP POST).
For outbound-only, you can skip this."https://<your-public-host>/clawvoice/webhooks/twilio/sms (HTTP POST)."Walk through these steps one at a time:
openclaw config set clawvoice.telephonyProvider telnyx
openclaw config set clawvoice.telnyxApiKey <key>
openclaw config set clawvoice.telnyxConnectionId <connection-id>
openclaw config set clawvoice.telnyxPhoneNumber <number>
https://<your-public-host>/clawvoice/webhooks/telnyx"clawvoice.telnyxWebhookSecret to your Telnyx webhook signing secret."Ask: "Which voice provider — Deepgram (recommended, lower latency) or ElevenLabs (premium voice quality)?"
openclaw config set clawvoice.voiceProvider deepgram-agent
openclaw config set clawvoice.deepgramApiKey <key>
aura-asteria-en (female, American English). Want to pick a different one?"
aura-luna-en (soft), aura-stella-en (conversational), aura-athena-en (British)aura-orion-en (American), aura-arcas-en (confident), aura-helios-en (British), aura-zeus-en (authoritative)Account: "Create an account at elevenlabs.io if you don't have one. You need a plan that includes Conversational AI (Starter or above)."
API key with correct permissions: "Go to Developers > API Keys and create a new key. Set these exact permissions:"
| Permission | Level | Required? |
|---|---|---|
| ElevenAgents | Write | Yes — this is the Conversational AI endpoint |
| Text to Speech | Access | Optional — only if you use elevenlabsVoiceId override |
| Speech to Speech | No Access | Not used |
| Speech to Text | No Access | Not used |
| Sound Effects | No Access | Not used |
| Audio Isolation | No Access | Not used |
| Music Generation | No Access | Not used |
| Dubbing | No Access | Not used |
| Projects | No Access | Not used |
| Audio Native | No Access | Not used |
| Voices | Read | Optional — only if you want to list/browse voices via API |
| Voice Generation | No Access | Not used |
| Forced Alignment | No Access | Not used |
| History | No Access | Not used |
| Models | No Access | Not used |
| Pronunciation Dictionaries | No Access | Not used |
| User | No Access | Not used |
| Workspace | No Access | Not used |
| All other admin permissions | No Access | Not used |
Minimum viable key: ElevenAgents → Write. Everything else can be No Access.
Create a Conversational AI agent:
docs/templates/ELEVENLABS_AGENT_PROMPT_TEMPLATE.md as a starting promptelevenlabs.io/app/agents/{agent-id} (~20 char alphanumeric string like J3Pbu5gP6NNKBscdCdwB)Important: You do NOT need to configure Twilio credentials inside ElevenLabs. ClawVoice handles telephony transport directly. ElevenLabs only needs the API key and Agent ID.
Configure:
openclaw config set clawvoice.voiceProvider elevenlabs-conversational
openclaw config set clawvoice.elevenlabsApiKey <key>
openclaw config set clawvoice.elevenlabsAgentId <agent-id>
Voice override (optional): "Your agent's voice is configured in the ElevenLabs dashboard. If you want to override it without editing the agent, set elevenlabsVoiceId to any Voice ID from your library."
If using Twilio, the user needs a public URL for:
https://<host>/clawvoice/webhooks/twilio/voicewss://<host>/media-streamAsk: "Do you already have a tunnel (ngrok, Cloudflare Tunnel, etc.) or do you need to set one up?"
ngrok http 3101
Then set the stream URL:
openclaw config set clawvoice.twilioStreamUrl wss://<your-ngrok-subdomain>.ngrok-free.dev/media-stream
And set the Twilio Voice webhook URL (in Twilio Console) to:
https://<your-ngrok-subdomain>.ngrok-free.dev/clawvoice/webhooks/twilio/voice
Known issue (as of 2025): Cloudflare Tunnel has a bug (cloudflared issue #1465) that breaks HTTP 101 WebSocket upgrades needed for Twilio Media Streams. Use ngrok for the media stream endpoint, or use Cloudflare only for the HTTPS webhook and ngrok for WSS.
openclaw clawvoice status — all checks should pass."openclaw clawvoice call +1XXXXXXXXXX to make a test call."If diagnostics fail, read the remediation text — it tells you exactly what's wrong and how to fix it.
| Provider | What you need | Where to get it |
|---|---|---|
| Twilio | Account SID, Auth Token, Phone Number (voice-capable) | console.twilio.com |
| Telnyx | API Key, Connection ID, Phone Number | portal.telnyx.com |
| Deepgram | API Key (Speech + Voice Agent permissions) | console.deepgram.com |
| ElevenLabs | API Key (ElevenAgents: Write), Agent ID | elevenlabs.io |
| Tunnel | Public ngrok/CF URL for webhooks + WSS | ngrok http 3101 |
Instead of conversational setup, users can run:
openclaw clawvoice setup
This interactive wizard asks for provider selection, API keys, and tunnel URL in sequence.