Skip to content
DWKD
Journal 8 min read Intermediate AI

A useful voice agent knows how to recover

Natural speech is only one part of a good voice experience. Design interruptions, confirmations, tool failures, and human handoffs before giving an agent a real phone line.

The voice sounds natural. The caller says, “Actually, make that Thursday.” The agent continues explaining a Wednesday appointment, then announces that it has completed the booking.

This is a conversation failure with a systems consequence. Better pronunciation will not fix it. The application needs to understand which information changed, stop the obsolete response, and confirm the actual transaction before reporting success.

A useful voice agent is built around recovery. People interrupt, correct themselves, pause to find information, and ask for help outside the original script. The design has to support those ordinary behaviors without making callers manage the technology.

Choose a task with a clear finish

“Answer customer calls” is too broad for a first deployment. Choose a bounded job with a recognizable result: report business hours, collect a callback request, check an eligible order’s status, or route a caller to the right team.

Write the finish in terms of the caller’s need. A callback task is complete when the request is saved with the correct contact information and the caller understands what will happen next. Merely extracting a phone number is an intermediate step.

Decide which requests are outside scope. A callback agent might collect a brief description of a billing concern but lack permission to change a bill. Its language should make that boundary clear without making the caller repeat the story.

Start with a task where errors can be recognized and recovered. High-consequence decisions need a more demanding process than a first voice prototype can establish. Keeping scope small gives you a useful test of the interaction before you increase its authority.

Understand the chain behind the voice

A voice experience typically involves receiving audio, detecting speech, interpreting the request, consulting data or tools, generating a response, and playing speech back. Different products combine those functions in different ways.

Twilio’s ConversationRelay documentation, for example, describes a service that handles speech recognition and text-to-speech while an application supplies its own conversational logic. The product boundary matters because it determines which team must diagnose a failure.

A wrong date could originate in transcription, reasoning, a tool argument, or the booking system. A long pause could come from endpointing, model generation, an external lookup, or audio playback. Keep enough stage-level evidence to distinguish those causes.

Do not use a single “AI response time” number as your whole diagnosis. Measure the caller’s experience from the end of their utterance to a meaningful response, then inspect the contributing stages when the experience is poor.

Treat interruptions as changes to the conversation

Stopping playback is only the first part of interruption handling. The application must also decide which information the caller heard and whether the new utterance changes the pending action.

The ConversationRelay configuration reference distinguishes interruption behavior from reporting input while the agent speaks. An application can receive speech without stopping playback, depending on configuration. Those are separate controls to test together.

Imagine an agent reads two appointment options. The caller interrupts after the first and says, “No, the afternoon one.” If the application assumes the entire prepared response was heard, it may associate that phrase with an option the caller never heard.

Store the conversation state deliberately: options actually offered, facts confirmed, action still pending, and new information received. When a correction changes an important field, invalidate the previous confirmation. The goal is to keep spoken understanding aligned with the action the system is about to take.

Work through a callback request

Consider an illustrative agent for an equipment rental desk. Its job is to collect callback requests when the desk is busy. It can read opening hours and save a request, but it cannot promise equipment availability or quote a final price.

The agent identifies itself as an automated assistant and explains that it can arrange a callback. The caller describes a rental need, gives a contact number, and says tomorrow morning would be best. The agent asks for the relevant date and time zone if those details are ambiguous.

Before saving, it reads the important facts briefly: contact number, requested callback window, and the subject. The caller corrects one digit. The agent updates that field and reconfirms the corrected number. It does not replay the entire conversation.

The save operation returns a request ID. Only then does the agent say the request was recorded. If the tool times out, the agent checks the request state or follows the defined fallback. It never turns an uncertain system response into a confident promise.

Build a state and recovery table

The artifact behind that conversation can fit on one page. Each state needs an allowed next action and an honest recovery path. The following table is an illustrative starting point.

Callback agent states and recovery rules
State Expected progress Recovery
Understand request Identify whether a callback can address the need. Explain scope and offer the supported human route.
Collect contact Obtain and read back the contact number. Ask for one segment again or offer an alternative input route.
Confirm details Confirm number, request, and callback window. Update corrected fields and repeat only what needs confirmation.
Save request Receive a durable request ID. Resolve uncertain state before retrying; avoid duplicate requests.
Handoff Connect to the configured destination with a concise summary. If unavailable, explain the actual callback or voicemail option.
Close State what happened and what remains pending. Allow one last correction without pretending the call already ended.

The table also exposes missing product decisions. If nobody knows what happens when a person is unavailable, a natural-language prompt cannot supply a real escalation service. Resolve the operating policy first.

Design the human handoff as a real service

A handoff involves a destination, availability, context, and responsibility. “Transfer to a human” is incomplete if the line goes unanswered or the receiving person cannot see what the caller already explained.

ElevenLabs documents enterprise real-time monitoring. Phone transfer requires a configured transfer tool; the direct human-takeover commands described there apply to chat. Check the plan, channel, and integration before promising intervention. The organization still needs staffing, routing rules, and a fallback when intervention is unavailable.

Define triggers that are understandable to an operator: an explicit request for a person, repeated inability to understand a critical fact, a request outside the agent’s authority, or a tool failure that prevents an honest result. Preserve a concise summary of confirmed facts and unresolved questions.

Do not equate a transfer attempt with a successful handoff. Record whether the destination answered and accepted the call. When the handoff fails, tell the caller what actually happened and offer the next supported option. DWKD’s lesson on deciding what a human must approve helps separate the agent’s authority from the person’s responsibility.

Test conversations that refuse to follow the script

A voice test should include the clean path and the ordinary disruptions. Use varied speaking speeds, pauses, corrections, background noise, and supported accents or languages. Test with people who did not write the prompt.

ElevenLabs’ agent testing documentation describes next-reply checks, expected tool calls, and simulated conversations. These are useful for repeatable regression checks. Simulated callers should be supplemented by real listening tests because the acoustic and social experience is part of the product.

For the callback example, include a caller who changes the number after confirmation, one who asks for an unsupported service, one who interrupts the closing message, and one whose save request times out. Include a person who asks for a human immediately, without explaining why.

Record the actual tool arguments, saved result, and final statement to the caller. A transcript that sounds reassuring can conceal an incorrect system change. Check all three before calling the case a success.

Measure completion and repair

Define success separately for each task. For callback requests, the verified outcome is a saved, usable request with the correct contact details. For routing, it is arrival at the appropriate destination or an honestly explained fallback.

Proposed pilot criteria for the illustrative callback agent could require every tested correction to update the saved number, every uncertain save to avoid duplicate creation, every unsupported request to take the documented fallback, and every human request to trigger the supported handoff route.

Add experience measures: how often callers repeat information, how often they abandon during silence, how often the agent speaks over a correction, and how long a completed task takes. Segment results by scenario so easy calls cannot hide a recurring failure with names or numbers.

Keep the targets tied to the pilot’s scope and evidence. A small test set can identify defects and support a limited release decision; it cannot prove reliability across all callers. Review failures after launch and add representative cases to the test set.

Know when voice makes the task harder

Voice is useful when speaking is convenient, but some information is easier to inspect than hear. Long identifiers, detailed comparisons, dense terms, and complex instructions may need a screen, message, or human conversation.

Offer a supported alternative when the caller cannot or does not want to use speech. Do not force repeated spoken attempts at a field the system keeps mishearing. A keypad route, accessible text channel, or human handoff can be the better experience.

Operational failures also deserve attention. Background systems may close for maintenance while the voice agent remains available. A knowledge document can contain old hours. A routing number can change. Assign owners to those dependencies and include them in the automation runbook.

Recording and data handling need explicit decisions for the deployment: what is captured, who can access it, how long it remains, and what callers are told. Collect only what the task requires, and obtain the appropriate review for the locations and use case involved.

Show the thing

Show a short demonstration with synthetic caller details and permission from anyone participating. Include an ordinary completion, a correction, a tool failure, and an unavailable handoff destination. The recovery cases reveal more about the design than a polished opening greeting.

Attach the state table and test results. Distinguish a configured platform feature from behavior you actually observed. If a transfer has not been tested with the real destination, mark it as unverified.

The most useful demonstration lets someone compare what the caller asked, what the system saved, and what the agent claimed. When those agree, the conversation has earned trust through evidence.

A voice agent should reduce the work of reaching an outcome. Its value becomes clear when the caller makes an ordinary mistake and the system helps repair it without losing the task, the context, or the person’s patience.

Source note: Twilio and ElevenLabs documentation was reviewed on September 23, 2026. Product settings and supported integrations can change. The rental-desk workflow and pilot criteria are illustrative; no measured production performance is claimed.

Continue the field guides: AI customer service needs a case lifecycle, not just a good answer or An AI evaluation should end in a release decision.

Try this

Choose a low-risk phone task, such as checking opening hours or collecting a callback request. Write a six-turn conversation that completes it. Then have a colleague play a caller who interrupts twice, corrects a number, and asks for a person. Do not improvise new policy while playing the agent; use only the rules on your page. Mark every point where the script cannot continue honestly. Add one recovery rule for each gap and repeat the exercise. Keep both versions so you can show which ambiguities were resolved before any voice tool was configured.