Use Cases8 min read

How to Build an AI Receptionist with BubblyPhone Agents

An AI receptionist answers incoming calls, understands what the caller needs, and takes action — booking appointments, routing calls, or answering FAQs. With BubblyPhone Agents, you can build one in under an hour using webhooks or real-time streaming.

Prerequisites

  • A BubblyPhone Agents account — sign up free
  • A phone number purchased through the platform ($3/month)
  • A server endpoint that can receive webhooks (or use streaming mode)
  • An AI/LLM of your choice (OpenAI, Anthropic, Groq, etc.)

Webhook vs Streaming Mode

BubblyPhone Agents supports two modes for handling calls. Choose based on your use case:

FeatureWebhook ModeStreaming Mode
How it worksEvents sent to your endpoint, you respond with actionsReal-time audio bridge connects caller to your AI model
LatencyDepends on your server + LLM response timeSub-second — audio streams directly
ComplexitySimple — just handle HTTP requestsSimpler — configure model + prompt, we handle the rest
Best forCustom logic, multi-step flows, tool useConversational agents, quick setup

Step 1: Get a Phone Number

Purchase a phone number through the API. This is the number callers will dial to reach your AI receptionist.

curl -X POST https://agents.bubblyphone.com/api/v1/phone-numbers \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone_number": "+14155550100",
    "label": "AI Receptionist",
    "webhook_url": "https://your-server.com/webhook",
    "mode": "webhook"
  }'

Step 2: Handle Incoming Calls

When someone calls your number, BubblyPhone sends a webhook to your endpoint. Respond with an action to answer the call and greet the caller.

// Incoming webhook payload
{
  "event": "call.incoming",
  "call_id": "call_abc123",
  "from": "+14155551234",
  "to": "+14155550100",
  "direction": "inbound",
  "timestamp": "2026-04-02T10:30:00Z"
}

Your server responds with an action:

// Your response
{
  "action": "answer",
  "text": "Hello! Thank you for calling. How can I help you today?"
}

Step 3: Process Speech and Respond

After the greeting, BubblyPhone transcribes the caller's speech and sends it to your webhook. Feed it to your LLM and respond.

Tip:For the fastest response times, use a fast model like Groq's Llama or GPT-4o-mini. The caller is waiting on the line — every millisecond counts.

Step 4: Add Tool Use (Optional)

Make your receptionist actionable. In streaming mode, define tools that your AI can call — like booking an appointment or looking up a customer.

// Configure tools on your phone number
{
  "mode": "streaming",
  "model": "gpt-4o",
  "system_prompt": "You are a friendly receptionist for Acme Corp...",
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "book_appointment",
        "description": "Book an appointment for the caller",
        "parameters": {
          "type": "object",
          "properties": {
            "date": { "type": "string" },
            "time": { "type": "string" },
            "name": { "type": "string" }
          }
        }
      }
    }
  ],
  "tool_webhook_url": "https://your-server.com/tools"
}

Summary

You now have a working AI receptionist that can answer calls, understand natural language, and take actions. From here you can:

  • Add more tools for appointment booking, order lookup, etc.
  • Switch to streaming mode for lower latency conversations
  • Set up call recording and transcription for quality assurance
  • Configure max call duration and silence timeouts

Ready to build?

Get started with BubblyPhone Agents in minutes. No contracts, pay as you go.