--- name: twilio-phone description: 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. --- # 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: ```bash ./.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 ```bash 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 ```bash 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 ```bash twilio api:core:calls:create \ --from "+61348279516" \ --to "+61XXXXXXXXXX" \ --twiml "https://tmpfiles.org/dl/XXXXXX/call_audio.mp3" ``` ## Basic Twilio TTS Call (No ElevenLabs) ```bash twilio api:core:calls:create \ --from "+61348279516" \ --to "+61XXXXXXXXXX" \ --twiml "Your message here." ``` ## Sending SMS ```bash twilio api:core:messages:create \ --from "+61348279516" \ --to "+61XXXXXXXXXX" \ --body "Your message here" ``` ## TwiML Elements ### Play - Play audio file ```xml https://example.com/audio.mp3 ``` ### Say - Text to speech (Twilio built-in) ```xml Text to speak ``` ### Pause - Add silence ```xml ``` ### Gather - Collect DTMF input ```xml Press 1 for sales, 2 for support. ``` ## 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 ```bash # 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 1. **Phone format**: Use E.164 format (+61 for Australia, +1 for US) 2. **Australian mobiles**: +614XXXXXXXX (drop leading 0) 3. **Audio hosting**: tmpfiles.org URLs expire after some time 4. **ElevenLabs model**: `eleven_v3` is the most natural sounding 5. **Default voice**: Charlie (Australian accent)