Skip to content

Twilio Voice Integration

This guide walks through connecting Twilio to Frona AI so agents can make and receive phone calls.

  • A Twilio account
  • A Twilio phone number
  • A publicly accessible URL for your Frona instance (or ngrok for development)

From the Twilio Console:

  • Account SID: found on the dashboard
  • Auth Token: found on the dashboard (click to reveal)
  • Phone Number: the number you purchased or were assigned

Add these to your .env file:

FRONA_VOICE_TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
FRONA_VOICE_TWILIO_AUTH_TOKEN=your-auth-token
FRONA_VOICE_TWILIO_PHONE_NUMBER=+15551234567
FRONA_VOICE_CALLBACK_BASE_URL=https://your-public-url.com

The callback URL must be publicly accessible. Twilio sends call events to this URL.

Set FRONA_VOICE_CALLBACK_BASE_URL to your public domain:

FRONA_VOICE_CALLBACK_BASE_URL=https://frona.example.com

The Docker Compose setup includes ngrok. Check your ngrok dashboard at http://localhost:4040 for the generated public URL, then set:

FRONA_VOICE_CALLBACK_BASE_URL=https://abc123.ngrok.io
docker compose restart frona

Start a conversation with the Receptionist agent and ask it to make a call:

Call +15559876543 and ask about their business hours.

The agent will:

  1. Read your memory for relevant context
  2. Initiate the call via Twilio
  3. Handle the conversation
  4. Report back with the results

All phone numbers must be in E.164 format: + followed by the country code and number, with no spaces or dashes.

  • Correct: +15551234567
  • Incorrect: (555) 123-4567, 555-123-4567
  • Calls not connecting: verify your Twilio credentials and that the phone number is active
  • Callback errors: check that FRONA_VOICE_CALLBACK_BASE_URL is publicly accessible
  • Agent not making calls: verify the Receptionist agent has the make_voice_call tool enabled