Use 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:
Account: "Do you have a Twilio account? If not, create one at console.twilio.com"
Phone number: "You need a Twilio phone number with Voice capability. Go to Phone Numbers > Manage > Active Numbers. Do you have one, or do you need to buy one?"
Account SID + Auth Token: "On the Twilio Console dashboard under 'Account Info', you'll see your Account SID and Auth Token. Give me both."
Configure: Set via openclaw config set:
text
openclaw config set clawvoice.telephonyProvider twilio
openclaw config set clawvoice.twilioAccountSid <sid>
openclaw config set clawvoice.twilioAuthToken <token>
openclaw config set clawvoice.twilioPhoneNumber <number>
Webhook (for inbound calls): "To receive inbound calls, set your Twilio Voice webhook URL to:
https://<your-public-host>/clawvoice/webhooks/twilio/voice (HTTP POST).
For outbound-only, you can skip this."
SMS webhook (optional): "For inbound SMS, set the Messaging webhook to:
https://<your-public-host>/clawvoice/webhooks/twilio/sms (HTTP POST)."
Media stream URL: "Twilio needs a public WebSocket endpoint for live call audio. You need a tunnel. See Phase 3: Tunnel Setup."
Walk through these steps one at a time:
Account: "Do you have a Telnyx account? If not, create one at telnyx.com"
Phone number + Connection: "You need a Telnyx phone number and a Call Control connection. In Mission Control, create a Call Control App and assign your number to it."
Credentials: "I need your API Key, Connection ID, and phone number (E.164 format like +15551234567)."
Configure: text
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>
Webhook: "Set your Call Control App's inbound webhook URL to:
https://<your-public-host>/clawvoice/webhooks/telnyx"
Webhook secret (recommended): "For request verification, set clawvoice.telnyxWebhookSecret to your Telnyx webhook signing secret."
Ask: "Which voice provider — Deepgram (recommended, lower latency) or ElevenLabs (premium voice quality)?"
Account: "Create an account at deepgram.com if you don't have one."
API key: "Go to Dashboard > API Keys and create a key. It needs Speech and Voice Agent permissions (or use the default full-access key)."
Configure: text
openclaw config set clawvoice.voiceProvider deepgram-agent
openclaw config set clawvoice.deepgramApiKey <key>
Voice (optional): "The default voice is 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:"
PermissionLevelRequired?ElevenAgents****WriteYes — this is the Conversational AI endpointText to SpeechAccessOptional — only if you use elevenlabsVoiceId overrideSpeech to SpeechNo AccessNot usedSpeech to TextNo AccessNot usedSound EffectsNo AccessNot usedAudio IsolationNo AccessNot usedMusic GenerationNo AccessNot usedDubbingNo AccessNot usedProjectsNo AccessNot usedAudio NativeNo AccessNot usedVoicesReadOptional — only if you want to list/browse voices via APIVoice GenerationNo AccessNot usedForced AlignmentNo AccessNot usedHistoryNo AccessNot usedModelsNo AccessNot usedPronunciation DictionariesNo AccessNot usedUserNo AccessNot usedWorkspaceNo AccessNot usedAll other admin permissionsNo AccessNot 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: text
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?"
bash
ngrok http 3101
Then set the stream URL:
text
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:
text
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.
ProviderWhat you needWhere to get itTwilioAccount SID, Auth Token, Phone Number (voice-capable)console.twilio.comTelnyxAPI Key, Connection ID, Phone Numberportal.telnyx.comDeepgramAPI Key (Speech + Voice Agent permissions)console.deepgram.comElevenLabsAPI Key (ElevenAgents: Write), Agent IDelevenlabs.ioTunnelPublic ngrok/CF URL for webhooks + WSSngrok http 3101
Instead of conversational setup, users can run:
bash
openclaw clawvoice setup
This interactive wizard asks for provider selection, API keys, and tunnel URL in sequence.