> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pyai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Build an AI receptionist: 24/7 phone answering with PyAI Omni

> Build an AI receptionist that answers every call, greets callers, answers questions from your knowledge base, books appointments through your tools, and transfers to a human, on one PyAI Omni session.

An AI receptionist on PyAI is one **Omni** session: the caller speaks, the
agent hears, reasons, answers from your knowledge base, takes actions through
your tools (book the appointment, look up the order), and speaks back at human
conversational pace. There is no speech-to-text plus LLM plus text-to-speech
pipeline to assemble; Omni is all of it in one model, over one WebSocket. You
can go from API key to a live, ringing phone call in minutes.

If you want a managed answering service with human agents backing up the AI
(Smith.ai, Ruby, and similar), buy that instead. Build on PyAI when the
receptionist is part of your product or your own front desk, when you want it
answering from *your* knowledge base and booking into *your* systems, and when
per-minute usage pricing beats per-call or per-seat service fees.

## What you're building

```mermaid theme={null}
flowchart LR
  caller[Caller] -->|phone| num[PyAI managed number or your Twilio trunk]
  num --> omni[Omni session]
  omni --> kb[Your knowledge base endpoint]
  omni --> tools[Your tools: booking, lookup, transfer]
  omni --> recap[Recap: summary after each call]
  omni --> trace[Trace: compliance scorecard]
```

## The PyAI stack for this build

| Piece                 | PyAI product                                  | How                                                                            |
| --------------------- | --------------------------------------------- | ------------------------------------------------------------------------------ |
| The agent itself      | Omni                                          | `wss /v1/omni`, one `configure` frame carries voice, persona, knowledge, tools |
| The phone number      | Managed telephony (or keep your Twilio trunk) | `/v1/telephony/*` or the [Twilio drop-in](/guides/twilio-voice-agent)          |
| The greeting          | Omni agent profile                            | `greeting` spoken at turn 0, `consent_line` before recording                   |
| Booking and lookups   | Omni tools                                    | Hosted tools by name, or your signed webhook                                   |
| The escape hatch      | Omni call control                             | `transfer_to_human` built in                                                   |
| After-call summary    | Recap                                         | Fires on call end, no bot to invite                                            |
| Compliance monitoring | Trace                                         | Scores every call against rule packs                                           |

## Build order

<Steps>
  <Step title="Get a key and say hello">
    An instant [sandbox key](/quickstart) includes the `omni:session` scope.
    Open the socket and send one `configure` frame with a voice and a persona;
    the [browser voice agent guide](/guides/browser-voice-agent) gets you
    talking to it from your machine in about ten minutes.
  </Step>

  <Step title="Give it your business knowledge">
    Point `kb_endpoint` at your own HTTP endpoint (hours, pricing, policies,
    FAQs) and Omni grounds its answers in it per turn. The `session_label` on
    the connect URL is echoed to your endpoint so you can branch per business
    or location.
  </Step>

  <Step title="Wire booking and lookups as tools">
    Declare functions in the `configure` frame (check availability, book a
    slot, look up an account); PyAI calls your signed webhook when the agent
    invokes one. Hosted tools (web search, datetime, math, and more) need no
    setup at all. See the [Omni tools guide](/guides/omni-tools).
  </Step>

  <Step title="Set the greeting and the rules of escalation">
    Store `greeting` and `consent_line` on an agent profile so every call
    opens correctly and discloses recording. Decide when the agent hands off:
    `transfer_to_human` is built into the engine. The
    [agent greeting guide](/guides/agent-greeting) covers profiles.
  </Step>

  <Step title="Put a phone number on it">
    Provision a managed number and route it to the agent, or point your
    existing Twilio trunk at the same session. This is the moment the phone
    actually rings.
  </Step>

  <Step title="Watch every call">
    Recap summarizes each call when it ends; Trace scores it against
    compliance packs. Both are in the console with no extra wiring.
  </Step>
</Steps>

<Note>
  **No code?** [Agents Beta](/agents/getting-started) builds the same
  receptionist from the console: configure, test, and connect a number without
  writing the WebSocket client yourself.
</Note>

## FAQ

### Can a PyAI receptionist book into my calendar or CRM?

Yes. Declare a booking function in the session's `tools` and PyAI calls your
signed webhook when the agent invokes it, so the agent can check real
availability and write real appointments into any system you can reach over
HTTP.

### What happens when the agent does not know an answer?

You control the fallback in the persona and tools: offer to take a message,
or transfer to a human with the built-in `transfer_to_human` call control.
Trace and Recap records let you review every call where it happened.

### Do I need to replace my existing phone system?

No. You can keep your current carrier or Twilio trunk and forward to a PyAI
managed number, or port numbers over. Managed telephony is billed separately
from the Omni session minutes.

### How much does an AI receptionist cost on PyAI?

Everything is per-minute usage: the Omni session, plus managed telephony
minutes if PyAI carries the call. No seats, no per-call service fees. Current
rates are on the [pricing page](https://pyai.com/pricing).

## Start building

[Get an instant sandbox key](/quickstart) and follow the
[Twilio voice agent guide](/guides/twilio-voice-agent) to make a real phone
ring, or open [Agents Beta](/agents/getting-started) and build it in the
console.
