OpenPhonexDocs

Acknowledgements

Let an agent say a short "One moment" in its own voice while a slow reply is still being prepared, and choose what the caller hears while a slow tool call runs.

Between the end of a caller's turn and the first word of the reply there is a gap: the model is still writing and the voice has not started. When that gap runs long, callers hear dead air. Acknowledgements fill it the way a human receptionist does, with one short neutral phrase such as "One moment" or "Let me check", spoken in the agent's own voice, model and language.

They are off unless you enable them, per agent, and they never change what the agent says: an acknowledgement is not part of the conversation, is not returned to the model as its own previous utterance, and is not a transcript line.

Switch acknowledgements on in the agent editor

Open the agent in the workspace and choose Acknowledgements in the section list, next to Voice stack. The switch is off for every agent until you turn it on there. With it on you can:

  • add up to six phrases of your own, each at most five words and forty characters, with no digits, currency marks or claim words; the editor refuses a phrase for the same reason the API would and says why. Leave the list empty to use the built-in phrases for the agent's language, which the editor shows dashed. A language with no built-in phrases (Estonian and Sinhala today) needs phrases of your own before the feature does anything;
  • set how long a reply may take before the agent acknowledges, from 0.6 to 3.0 seconds, default 1.2;
  • press Hear an acknowledgement as your AI agent to play one acknowledgement in the agent's own voice, with the agent's delivery profile, through the same preview a call's synthesis uses. It counts against the voice-preview allowance like any other preview.

The fixed rules stated in the section are not editable: never over the caller, cancelled the moment the reply starts, at most one every three turns and six per call, and never in the transcript. Changes apply to new calls after you save the agent.

Enable acknowledgements through the API

PATCH /v1/agents/{agent_id}/voice-stack accepts an optional voice_polish.acknowledgements section:

{
  "voice_polish": {
    "acknowledgements": {
      "enabled": true,
      "phrases": ["One moment.", "Let me check that for you."],
      "delay_ms": 1200
    }
  }
}
FieldMeaning
enabledtrue turns the feature on. Absent or false is off, and an agent that never configured the section has no acknowledgements key in its responses.
phrasesOptional. Up to 6 short neutral phrases, each at most 40 characters. Digits and currency marks are rejected so a phrase can never carry a factual, payment, legal or consent claim. Without phrases the platform's reviewed list for the agent's language is used.
delay_msOptional, 600 to 3000, default 1200. How long the reply may take before an acknowledgement is worth speaking. Shorter delays collide with fast replies; longer ones leave more silence.

The same section is accepted by the MCP set_agent_voice_stack tool and is returned by GET /v1/agents/{agent_id}/voice-stack. The exact schema is in the generated API reference. The editor reads and writes this same section, so a setting made through the API shows up in the editor and a save from the editor never drops a field the API stored.

How the worker uses it

  • Language follows the call. Phrases you supply are spoken as written. Without your own phrases, the reviewed list for the call's language applies; a language with no reviewed list stays silent rather than acknowledging in English. An agent that follows the caller's language keeps that rule per call.
  • Own voice. Each phrase is synthesized once per call with the agent's selected voice and model and billed to that call like any other synthesis. Clips are prepared in the background after the greeting, so enabling the feature never delays the first words of a call.
  • At most once per turn, never over anyone. The worker starts waiting when the reply is being prepared and speaks only if the reply has not started after delay_ms. If the caller starts talking, or the reply begins, the acknowledgement is cancelled or cut immediately. A cooldown keeps consecutive turns quiet so it never becomes a tic, and nothing is spoken in front of the agent's goodbye.
  • Separate track. Acknowledgements play on the same outgoing background track as audio environments, not on the agent's speech track. Call evidence therefore contains no acknowledgement audio or text; the transcript's semantic_response_audio_policy states filler_acknowledgements_enabled: true for calls where the feature was on, so a reviewer knows the caller may have heard a filler the transcript does not show.

During tool waits

A tool call is the one wait the model cannot talk through. When the agent calls an integration action or searches a knowledge base, it is silent for as long as your endpoint takes; most calls return in well under a second, but the slow tail runs to several seconds, and dead air of that length reads as a dropped call. voice_polish.tool_wait chooses what the caller hears instead:

{
  "voice_polish": {
    "tool_wait": {
      "mode": "sound",
      "delay_ms": 1000
    }
  }
}
FieldMeaning
modeoff (default, not stored), sound or acknowledge. sound plays a quiet keyboard-typing bed on the separate outgoing track once the tool has run for delay_ms, and cuts it the instant the tool finishes; it is wordless, so it works in every language. acknowledge speaks one short phrase in the agent's own voice and language instead ("One moment while I check."), synthesized once per call like an acknowledgement.
delay_msOptional, 600 to 3000, default 1000. How long a tool may run before feedback starts. Most tools finish inside this and the caller hears nothing.
phrasesOptional, acknowledge only. Up to 6 short neutral phrases under the same rule as acknowledgements (at most 40 characters, no digits, currency marks or claim words). Without phrases the reviewed list for the call's language is used; a language without one stays silent rather than acknowledging in English. Rejected with mode: "sound".

How the worker behaves:

  • Never over anyone. Feedback waits until both the caller and the agent are silent. If the agent says "let me look that up" before calling the tool, the delay starts when those words end. Caller speech or the start of the reply cuts the feedback immediately, and a wait the caller interrupts stays quiet for the rest of that tool call.
  • Once per wait. Tools the model calls in parallel share one window, from the first start to the last end; the caller hears one bed or one phrase, not one per tool. The typing bed also stops after 15 seconds so a hung tool cannot type forever. A phrase that has started is allowed to finish unless the reply or the caller begins.
  • Not for the call's own controls. Ending the call, transferring to a human and the internal language switch never get feedback.
  • One spoken filler per turn. With acknowledgements enabled as well, the acknowledgement pauses while a tool runs and resumes afterwards; a turn that already heard one phrase does not hear a second. The typing bed is not speech and may still play.
  • Evidence. Like acknowledgements, feedback plays on the background track and never appears in the recorded agent audio or the transcript lines. The transcript's tool_wait_feedback section states the configured mode and lists every start and cut with its reason, and the effective voice stack identity records the mode when it is on. Once the call's artifacts are imported, the Calls page shows that record under Tool waits on the call detail (the setting the call ran with, then each start, cut, skip or failure with its reason, the tools that were running and the offset from call start), and GET /v1/calls/{call_id}/observability returns the same bounded projection as tool_wait_evidence (status complete, partial or unavailable with a reason, mode, up to 64 events, has_more). A call recorded before this section existed reads as unavailable, never as a quiet call.

In the workspace, open the AI agent, choose Acknowledgements in the editor rail and use During tool waits below the acknowledgements switch: pick Nothing, One phrase or Typing sound, move the wait between 0.6 and 3.0 seconds, and for a phrase add up to six of your own or leave the list empty to use the built-in ones shown dashed. Each mode has a preview under it: Hear the phrase plays the phrase a call would say first (your first phrase, or the language's first built-in) in the AI agent's own voice with its delivery profile, and Hear the typing sound plays a few seconds of the same typing bed at the level a call uses. The control writes the same voice_polish.tool_wait object as the API, is saved with the voice settings, and applies to new calls after you save.

What it does not do

Acknowledgements reduce perceived waiting, not the reply time itself. They do not change turn-taking, interruption sensitivity, the selected voice or the spoken language, and they cannot be used to say anything about the caller's case. Use turn-taking settings for barge-in behaviour and audio environments for ambience.

  • Delivery profiles choose how the voice performs every reply; acknowledgements only fill the wait before one starts. Both live in the same voice_polish object on the voice stack.

On this page