Skip to content

Voice

Voice tools let agents make and manage phone calls through Twilio integration.

Places an outbound voice call on behalf of the user.

voice_call(
phone_number: "+15551234567",
name: "Acme Support",
objective: "Ask about the status of order #12345"
)
ParameterTypeRequiredDescription
phone_numberstringyesPhone number in E.164 format (e.g., +15551234567)
namestringyesName of the person or company being called
objectivestringyesThe specific goal of the call
initial_greetingstringnoMessage spoken by the agent when the call connects
hintsstringnoComma-separated words or phrases to improve speech recognition

Sends DTMF (touch-tone) signals during an active call. Useful for navigating automated phone menus or entering PINs.

send_dtmf(digits: "1")
ParameterTypeRequiredDescription
digitsstringyesDTMF digits to send (0-9, *, #)

Ends the active voice call.

hangup_call()

No parameters.

Voice features require:

  • A Twilio account with a phone number
  • The following environment variables configured:
VariableDescription
FRONA_VOICE_TWILIO_ACCOUNT_SIDYour Twilio account SID
FRONA_VOICE_TWILIO_AUTH_TOKENYour Twilio auth token
FRONA_VOICE_TWILIO_PHONE_NUMBERYour Twilio phone number (E.164 format)
FRONA_VOICE_CALLBACK_BASE_URLPublic URL for Twilio callbacks

Twilio needs a publicly accessible URL to send call events to. Set FRONA_VOICE_CALLBACK_BASE_URL to your public URL. This overrides FRONA_SERVER_BASE_URL for voice callbacks.

During development, you can use ngrok (included in the Docker Compose setup) to expose your local instance.

The built-in Receptionist agent is pre-configured for voice calls. It has the voice tools enabled and system prompts designed for phone interactions. It reads your memory before making calls to understand context.

See Agent Types for more on the Receptionist.

For a complete setup walkthrough, see the Twilio Voice Integration guide.