Skip to main content
Turn an Agent into a phone assistant — start the call server and connect a phone number to talk to it over the line.

AI Customer Service

PraisonAI Call is a feature that enables voice-based interaction with AI models through phone calls. This functionality allows users to have natural conversations with AI agents over traditional phone lines.

Installation

Step 1

Step 2

Buy a number at PraisonAI Dashboard

Step 3

Enter the Public URL in the PraisonAI Dashboard phone number field

Authentication

Breaking Change: When upgrading from earlier versions, the call server requires authentication configuration or it will fail with a 503 error.
The PraisonAI Call server now requires authentication configuration for security. You have two options: Set a secure token for API authentication:
API requests must include the token in the Authorization header:

Option 2: Disable Authentication (Local Development Only)

For local development on your own machine, you can disable authentication. The CLI sets the bind-host env var for you, so this is enough when launching via praisonai call:
If you launch the server programmatically (custom uvicorn, embedding praisonai.api.agent_invoke in another app, or any path that does NOT go through praisonai call / praisonai serve), you must also pin the bind host:
Without PRAISONAI_CALL_BIND_HOST set to a localhost value, every request is rejected with:
Never use PRAISONAI_CALL_AUTH=disabled in production. It is rejected outright unless the server is bound to localhost, and even then it bypasses all caller verification.

Authentication Flow

When CALL_SERVER_TOKEN is not configured and the environment is not development, the server returns:
When PRAISONAI_CALL_AUTH=disabled is set but the bind host is not localhost:

Environment Variables

Binding & Network Access

The call server binds to 127.0.0.1 by default, so it is only reachable from the same machine.
Breaking change (earlier versions → this release): Earlier versions of praisonai call bound to 0.0.0.0 unconditionally, exposing the server to your entire LAN. Starting in this release, the default is 127.0.0.1. Production deployments that previously relied on the LAN-exposed default must add --host 0.0.0.0 (or a specific NIC) and ensure CALL_SERVER_TOKEN is set.

Features

  • Make and receive phone calls with AI agents
  • Natural language processing for voice interactions
  • Support for multiple phone carriers and providers
  • Call recording and transcription capabilities
  • Integration with other PraisonAI features

Adding Tools

  1. Create a file called tools.py
  2. Add the following code:
pip install yfinance

Manage Google Calendar Events

See Google Calendar Tools

Deploy

Docker Deployment

How It Works

A caller dials your number, the provider forwards audio to the call server, and the Agent responds with synthesized speech.

Best Practices

The server fails with 503 unless a token is set or auth is explicitly disabled for localhost. Never disable auth on a public bind.
praisonai call binds to 127.0.0.1 by default. Add --host 0.0.0.0 only inside a container or when you deliberately expose the LAN.
Export OPENAI_API_KEY, NGROK_AUTH_TOKEN, and CALL_SERVER_TOKEN in your shell — never inline the raw values.
Register async tool handlers (like a stock-price lookup) so the phone agent can fetch live data during a call.

Tools

Give your call agent live data and actions.

Security

Harden the call server before exposing it.