twilio-phone
Make phone calls with natural AI voices (ElevenLabs) and send SMS using Twilio CLI. Use this skill when the user wants to make a phone call, send a text message, or use AI-generated voice for calls. Requires Twilio CLI authenticated and ElevenLabs API key.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Twilio Phone Skill
Make phone calls with natural AI-generated voices (ElevenLabs) and send SMS using the official Twilio CLI.
Quick Start - AI Voice Call
To make a call with a natural ElevenLabs voice, run the script:
./.claude/skills/twilio-phone/scripts/voice_call.py \
--to "+61XXXXXXXXXX" \
--message "Your message here"
Available Phone Numbers
| Number | Region | Use For |
|---|---|---|
| +61 3 4827 9516 | Australia | Australian calls/SMS |
| +1 978 878 5597 | USA | US calls/SMS |
ElevenLabs Voices
| Voice ID | Name | Accent |
|---|---|---|
| IKne3meq5aSn9XLyUdCD | Charlie | Australian |
| JBFqnCBsd6RMkjVDRZzb | George | British |
| Xb7hH8MSUJpSbSDYk0k2 | Alice | British |
| EXAVITQu4vr4xnSDxMaL | Sarah | American |
| CwhRBWXzGAHq8TQ4Fs17 | Roger | American |
Default: Charlie (Australian) with eleven_v3 model
Manual Process (Step by Step)
1. Generate audio with ElevenLabs
curl -X POST "https://api.elevenlabs.io/v1/text-to-speech/IKne3meq5aSn9XLyUdCD?output_format=mp3_44100_128" \
-H "xi-api-key: $ELEVENLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Your message here",
"model_id": "eleven_v3",
"voice_settings": {
"stability": 0.5,
"similarity_boost": 0.75
}
}' \
--output /tmp/call_audio.mp3
2. Upload audio to public URL
curl -s -X POST -F "file=@/tmp/call_audio.mp3" "https://tmpfiles.org/api/v1/upload"
# Returns: {"data":{"url":"http://tmpfiles.org/XXXXXX/call_audio.mp3"}}
# Convert to direct URL: https://tmpfiles.org/dl/XXXXXX/call_audio.mp3
3. Make call with Twilio
twilio api:core:calls:create \
--from "+61348279516" \
--to "+61XXXXXXXXXX" \
--twiml "<Response><Play>https://tmpfiles.org/dl/XXXXXX/call_audio.mp3</Play></Response>"
Basic Twilio TTS Call (No ElevenLabs)
twilio api:core:calls:create \
--from "+61348279516" \
--to "+61XXXXXXXXXX" \
--twiml "<Response><Say voice=\"alice\" language=\"en-AU\">Your message here.</Say></Response>"
Sending SMS
twilio api:core:messages:create \
--from "+61348279516" \
--to "+61XXXXXXXXXX" \
--body "Your message here"
TwiML Elements
Play - Play audio file
<Response><Play>https://example.com/audio.mp3</Play></Response>
Say - Text to speech (Twilio built-in)
<Response><Say voice="alice" language="en-AU">Text to speak</Say></Response>
Pause - Add silence
<Pause length="2"/>
Gather - Collect DTMF input
<Gather numDigits="1" action="https://example.com/handle-key">
<Say>Press 1 for sales, 2 for support.</Say>
</Gather>
Call Options
| Option | Description |
|---|---|
--timeout 30 |
Ring for 30 seconds before giving up |
--record |
Record the call |
--machine-detection Enable |
Detect answering machines |
--send-digits "W1234#" |
Dial extension after connecting |
Check Status
# List recent calls
twilio api:core:calls:list --limit 10
# Get specific call details
twilio api:core:calls:fetch --sid CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# List recent SMS
twilio api:core:messages:list --limit 10
Environment Variables
Required in .env:
ELEVENLABS_API_KEY=sk_xxxxx
Twilio CLI must be authenticated first. Run twilio login to configure.
Important Notes
- Phone format: Use E.164 format (+61 for Australia, +1 for US)
- Australian mobiles: +614XXXXXXXX (drop leading 0)
- Audio hosting: tmpfiles.org URLs expire after some time
-
ElevenLabs model:
eleven_v3is the most natural sounding - Default voice: Charlie (Australian accent)
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-02-02
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!