Executive Summary
Most enterprise customer conversations still happen over the phone rather than in a web widget or a mobile app. If you want a voice agent doing real work, at some point it has to answer a 1-800 number. OpenAI's Realtime API now supports SIP (Session Initiation Protocol) natively, which means a phone call can route directly to the model with no media bridge or transcoding service in between, and the model responds in 200-300ms. That is close enough to human conversational cadence that the call feels like a conversation instead of an IVR tree.
That 200-300ms is also the number the rest of this guide is built around. Callers expect a response within about half a second, the model spends most of that budget itself, and whatever is left (roughly 100-200ms) is all your tools get. On the phone, retrieval latency, not speech, is what breaks the illusion. Our answer was to run the search index in-process and pre-load it while the greeting plays, and that pattern is where this guide ends up.
Getting there, we walk the whole path a call takes: SIP trunk configuration, the webhook that accepts the call, the WebSocket that carries session updates and tool calls, the low-latency retrieval pattern, and the production concerns that follow (multi-agent routing, compliance, observability, and scale).