Eliminate Dead Air in AI Voice Assistants with Filler Messages

harpreetseehra1 pts0 comments

Eliminate Dead Air in AI Voice Assistants with Filler Messages — Telnyx AI Assistant Webhook Demo | Low Latency Club

Skip to main content

Blog<br>Code-first technical deep dives

Glossary<br>Voice AI & telecom terminology

Developer Docs<br>API references & integration guides

GitHub<br>Open-source repos & SDKs

Articles<br>Tutorials & support articles

AI Agents<br>Build voice AI agents

Voice API<br>Programmable voice calls

ClawHouse<br>AI-powered voice assistant

ClawdTalk<br>Conversational AI platform

Events<br>Videos<br>Podcast<br>Integrations

Resources

Blog<br>Code-first technical deep dives

Glossary<br>Voice AI & telecom terminology

Developer Docs<br>API references & integration guides

GitHub<br>Open-source repos & SDKs

Articles<br>Tutorials & support articles

Products

AI Agents<br>Build voice AI agents

Voice API<br>Programmable voice calls

ClawHouse<br>AI-powered voice assistant

ClawdTalk<br>Conversational AI platform

Contact us<br>Join our Slack

When an AI voice assistant calls a sync webhook tool — to look up an order, query a database, check inventory — the caller hears silence. Five seconds of dead air on a phone call feels like thirty. Hang up. Call again. Complaint filed.

Filler messages solve this. Configured per-tool in Telnyx Mission Control, they let the AI Assistant speak scripted phrases while waiting for the webhook to respond: "Let me look that up for you." at 0 seconds, "Still working on this, one moment please." at 5 seconds, "Almost there, thanks for your patience." at 15 seconds. The caller stays engaged. The webhook takes the time it needs. No dead air.

This walkthrough builds a complete demo: a Flask webhook server with a live split-screen dashboard that shows the webhook call, the filler messages firing, and the countdown in real time. 124 lines of Python, one AI Assistant, one phone number, one dashboard — and zero silence.

What You'll Build

A webhook server that an AI Assistant calls when a caller asks about an order:

Caller dials the AI Assistant — a voice AI agent configured in Mission Control

Caller asks a question — "What's the status of my order 12345?"

AI Assistant calls the webhook — a sync tool call to /webhook/order-status

Webhook delays — intentionally sleeps for 12 seconds (configurable) to simulate a slow backend

Filler messages fire — the AI Assistant speaks scripted phrases at 0s, 5s, and 15s while the webhook is processing

Webhook responds — returns mock order status as JSON

AI Assistant reads the result — "Your order 12345 has shipped via FedEx, tracking number FX-98765, estimated delivery July 20th."

Dashboard shows everything — a split-screen browser UI with the call timeline on the left and server logs on the right, updated in real time via Server-Sent Events

The whole flow is visible: the tool call arrives, the filler messages fire, the countdown ticks, the response goes back.

Why Filler Messages Matter

Every voice AI developer hits the same problem: sync webhook tool calls take time. A database query takes 2 seconds. A third-party API takes 5 seconds. A complex lookup takes 10 seconds. On a phone call, that's dead air — and dead air is the enemy of conversation.

Without filler messages, developers build workarounds:

Background music — doesn't tell the caller what's happening

"Please hold" TTS — fires once, then silence resumes

Async tools — more complex to build, don't work for all use cases

Faster webhooks — not always possible when you depend on external systems

Filler messages are the carrier-grade solution: the AI Assistant speaks configurable phrases at configurable intervals while the webhook processes. The caller knows the system is working. The developer doesn't have to build a workaround.

Prerequisites

Python 3.8+

A Telnyx account with funded balance

A Telnyx API key

A Telnyx phone number assigned to an AI Assistant

An AI Assistant with telephony enabled

ngrok for exposing your local server

The Architecture

Caller dials AI Assistant<br>┌──────────────────────┐<br>│ Telnyx AI Assistant │<br>│ (Mission Control) │<br>└────────┬─────────────┘<br>│ sync tool call<br>┌──────────────────────┐ SSE ┌──────────────────┐<br>│ Flask Webhook Server │──────────►│ Browser Dashboard │<br>│ POST /webhook/ │ │ Split-screen UI │<br>│ order-status │ │ (timeline + logs) │<br>└──────────────────────┘ └──────────────────┘<br>delays N seconds,<br>then returns mock<br>order status<br>The AI Assistant calls the webhook as a sync tool. The webhook sleeps for WEBHOOK_DELAY_SECONDS (default 12). During that delay, the AI Assistant speaks the filler messages. The browser dashboard receives real-time events via SSE.

Step 1: Clone and Configure

git clone https://github.com/team-telnyx/telnyx-code-examples.git<br>cd telnyx-code-examples/ai-assistant-filler-messages-demo-python<br>cp .env.example .env<br>pip install -r requirements.txt<br>Edit .env with your credentials:

TELNYX_API_KEY=your_telnyx_api_key_here<br>WEBHOOK_DELAY_SECONDS=12<br>PORT=5000<br>The WEBHOOK_DELAY_SECONDS controls how long the webhook waits before responding. Set it to 12-15 seconds...

assistant webhook voice filler messages seconds

Related Articles