Dograh

Changing What Your Voice Agent Says During an Outage

Changing What Your Voice Agent Says During an Outage
TechnicalNovember 10, 2026·7 min read

Changing What Your Voice Agent Says During an Outage

Pritesh Kumar
Pritesh Kumar·Co-founder, Dograh AI

Building Dograh, the open-source alternative to Vapi. OSS and Voice AI. Exit founder and YC alum.

Prepare the switch before anything breaks. Keep a notice flag in your own system that the agent reads at the start of each call, and give every slow tool a spoken fallback line. Dograh, the open-source AI voice agent platform we build, supports both, self-hosted or on Dograh Cloud.

Key Takeaways

  • Read a notice flag at call start, so changing the message needs no republish.
  • A recorded notice still plays when your voice provider is the outage.
  • Plan the way back: flag off, number back, campaign resumed, calls reviewed.

This post is part of our guide to testing, monitoring and scaling AI voice agents, where the flow keeps changing once real callers arrive. Below, we cover a notice switch, a recorded outage agent, fallback lines for tools, pausing outbound calls and switching back, each set up in Dograh.

What callers hear if nothing is ready

Outages are common, and the ones that hurt a voice agent are often not your own. In Uptime Institute's outage analysis, 57% of respondents to its 2025 Annual Survey said their most recent major outage cost more than $100,000. Across nine years of publicly reported outages, third parties such as cloud and internet companies, telecoms firms and colocation providers caused about two-thirds.

A voice agent depends on several of them at once. The phone carrier, the speech and voice providers, the language model, and your own booking system, CRM or payment page each sit on the call path. When the agent is up but your booking API is down, it keeps answering calls it can no longer complete.

If nothing is prepared, a tool that hangs leaves the caller listening to silence. In Dograh, the agent gets 35 seconds to produce audio, and then the call ends as an error. So decide the message before the outage starts.

Put a notice switch in your own system

The fastest switch is a status flag that your own system holds and the agent reads at the start of every call. Engineers call this a feature flag. Flip the flag in your system and the next call hears the notice. Clear it and the normal script comes back, with no edit to the agent.

You flip a status flag on a small status service kept apart from the booking system that is down, and on the next call through your phone number the agent reads the flag at the start and tells the caller the booking system is down and offers a call back.
If nothing is prepared, a tool that hangs leaves the caller listening to silence. So decide the message before the outage starts.

In Dograh, the flag is read by Pre-Call Data Fetch, at the bottom of the Start Call node. Set it to Always or to one call direction, and give it the Endpoint URL of a small status service. Your endpoint returns initial_context, and the field to watch is service_notice:

{
  "initial_context": {
    "service_notice": "Our booking system is down right now. I can take your number and call you back once it is up."
  }
}

What this does: It puts the notice into the call's context before the agent speaks. When your status service returns no service_notice, the agent falls back to its normal script.

Put the notice where its wording has to hold. Greeting Text is spoken word for word, so Thanks for calling Acme. {{service_notice | How can I help today?}} plays the notice during an outage and the usual question the rest of the time. Allow Greeting Interruption is on by default, so switch it off on the Start Call node or a caller can cut the notice short. A prompt rule such as "if the service notice is not none, offer a callback" works too, with none as the fallback value in {{service_notice | none}}.

Host the status endpoint apart from the system it reports on. If the fetch fails or takes longer than 10 seconds, the call goes on with its earlier context, which means the normal script. The caller hears ringing until the fetch returns. The same response can also return model_overrides for the language model or the voice, which helps when a model provider is the thing that is down.

Keep a recorded outage agent ready

A recorded notice still plays when the voice provider is down. On the Start Call node, set Greeting Type to Pre-recorded Audio and pick a clip from the Recordings page. A pre-recorded greeting needs no text-to-speech at all, so the caller hears a real voice even while your speech provider is failing.

Build a short outage agent before you need it. It plays the recorded notice and offers a callback, and urgent callers go to a person through Transfer Call. Dograh dials the destination while the caller hears hold music, and connects the caller once a person answers. No answer, a busy line, a failed dial or a timeout comes back to the agent as transfer_failed, and the call carries on with the outage agent. Transfer to a phone number works on Twilio, Telnyx, Plivo, Cloudonix and Asterisk ARI.

When the outage starts, open the phone number and change its Inbound workflow to the outage agent. Switch it back when the system is fixed. You can also edit the main agent's Greeting Text or Global Prompt and publish, which reaches calls that start after you publish.

Dograh

Open Source Alternative to Vapi / Retell

Self-hosted voice agent platform — no per-minute fees

dograh-hq/dograh

Star on GitHub

Give every tool a fallback line

A slow tool is a small outage inside one call, and it needs its own words. An HTTP API tool stops waiting after 5 seconds by default, and a timeout or an error response comes back to the agent as an error, never as a success.

Tool Messages fill the gap. "When the tool starts" plays a line such as "Let me check that" while the request runs. "While the tool is running" adds delayed tool updates after a wait you set in milliseconds, up to 10 of them, each with up to 20 variants picked at random. An update set at or past the tool's timeout will not play. On speech-to-speech models, text lines do not play, so record those lines instead.

Then tell the agent in its prompt what to do with an error. It should apologise once and offer a callback or a person, and it should never guess the booking or balance it could not fetch. Those words come from the language model, so the meaning holds but the wording changes. Our post on prompt and flow design patterns explains which lines Dograh speaks exactly and which the model writes.

Short lookups can run in silence, but longer ones need a spoken line, because there is a point past which callers think the line has dropped. If the language model itself is the problem, set a backup LLM with your own keys. It is off by default and takes over when the main model errors or stays silent past its limit.

Pause outbound calls until it is fixed

Outbound campaigns should stop while the system they depend on is down. The campaign page has a Pause Campaign button, and Resume Campaign starts it again.

The campaign circuit breaker covers the case nobody noticed. Once it is on, it pauses the campaign when failures pass the threshold you set. How calls end once you hit a capacity limit is covered in our guide to load testing through the real phone path.

Switch back and check the calls

Going back is part of the plan, and it should take the same few steps as going in. Clear the flag and point the number back at the main agent. If you paused a campaign, resume it.

If you edited and published during the outage, open Version History in the agent editor. Compare the outage version with the one before it, so you remove the notice and nothing else changed with it. Naming each version when you publish, such as "outage notice on", makes that list easy to read later.

Then review the calls taken during the outage window. Reading call traces shows whether each caller heard the notice and which tool failed. Set the QA node's Sample Rate to 100% for that window, and automated QA scores every one of those calls. Self-hosted Dograh keeps those recordings, transcripts and traces on your own servers, so the review needs no export from anyone else.

Join the Dograh Community

Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.

Glossary

Status flag
A value your own system holds, such as service_notice, that the voice agent reads at the start of each call. Changing it changes what the next caller hears without editing or republishing the agent.
Fallback value
The text after the bar in a template variable, such as {{service_notice | none}}. The agent uses it when the variable has no value, so the normal script returns once the notice is cleared.
Delayed tool update
A line set under While the tool is running on an HTTP API tool that plays after a set number of milliseconds if the request is still going. An update at or past the tool's timeout never plays.
Outage agent
A short agent built in advance that plays a recorded notice and offers a callback or a transfer to a person. During an outage the phone number's Inbound workflow points at it, and afterwards it points back.

Frequently Asked Questions

Get started with Dograh

Build, deploy, and scale AI agents with Dograh. Join the community of developers building the future.