> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ouraicalling.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Guardrails & conversation quality

> Background audio, interruptions, filler phrases, idle handling, consent, and guardrails

These settings make the difference between "obviously a robot" and a conversation people stay in. All of them are per-assistant.

## Background audio

Complete silence sounds artificial on the phone. You can layer in:

* **Ambient sound** — office, city, forest, crowded room, or keyboard typing, with adjustable volume (or your own uploaded audio).
* **Thinking sound** — a subtle sound while the assistant is thinking — during the LLM wait and any tool calls — so processing never sounds like a dropped call.

Hold music is not part of this section: it's configured directly on the [warm transfer tool](/flow-builder/nodes#warm-transfer) (built-in track or your own upload), since it only ever plays while a supervisor is being briefed.

## Interruption handling

Callers interrupt — good assistants deal with it gracefully.

* **Allow interruptions** — on by default; the assistant stops speaking when the caller talks over it.
* **Minimum interruption duration** — ignores very short noises so a cough doesn't cut the assistant off.
* **Adaptive interruptions** — backchanneling like "mhm", "okay", or "right" is *not* treated as an interruption, so the assistant keeps talking through natural listener feedback but yields to a real interjection. In compatible realtime modes, select **Adaptive** under **Turn detection** to use this behavior.

## Filler phrases & async tools

When a tool call (CRM lookup, availability check) takes seconds, the assistant can bridge the gap:

* **Speak-during text** — a fixed announcement at tool start ("One moment, I'm checking that…").
* **Filler phrases** — a rotating set of short phrases spoken during longer waits, with configurable initial delay and interval. Spoken only in pauses — they never talk over the caller.
* **Async tools** — mark a [tool node](/flow-builder/nodes#tool) as asynchronous and the conversation continues while the tool runs; the result is woven in once it arrives.

## Idle handling

Nobody wants a call that hangs forever in silence:

* **Idle timeout** — after this many seconds of silence, the assistant checks in ("Are you still there?").
* **Idle messages** — optional fixed phrases for those check-ins; leave empty for natural LLM-generated ones.
* **Max rounds** — after N unanswered check-ins, the assistant says goodbye and hangs up. This also protects your minute balance.

Independently, **max call duration** caps every call: when reached, the assistant wraps up politely and ends the call.

## Consent

For jurisdictions requiring all-party consent (Germany: §201 StGB):

* **Consent announcement** — a configurable message played at call start (pre-generated, zero added latency).
* **Consent mode** — the caller agrees **verbally** or by **pressing a key** (DTMF).
* **On decline** — either continue the call, or end it politely.
* The consent result is stored with the call, audit-proof.

### What the consent covers

One announcement can cover two separate purposes. Tick them independently in the assistant editor:

* **Recording the call** — the recording starts *only after* consent, never before, and additionally
  requires **Record calls**. Asked on **every** call, because each recording needs its own permission.
* **Remember callers** — a granted consent unlocks that caller's durable memory, so returning callers are
  recognised without anyone approving them by hand under **Audience → Customer memory**. Asked **once**.

A declined consent is never stored as a permanent refusal: the caller is simply asked again on a later call.
The memory consent is re-asked only after the retention window under **Settings → Memory** has lapsed
without a call — the expired memory is deleted, so the next call starts fresh.

<Warning>
  Each purpose must be named in the announcement. Consent to being recorded is **not** consent to storing a
  customer profile — they are different purposes under GDPR. When you tick a purpose, the editor offers
  matching wording in the assistant's language; leaving the text empty falls back to a purpose- and
  language-aware default.

  If **Record calls** is on while the announcement does not cover recording, the assistant refuses to record
  and logs `recording_skipped_no_consent` — it will never record without a notice.
</Warning>

## Guardrails

Deterministic safety rails on top of the prompt:

* **Manipulation → Prompt injection** — blocks attempts to bypass or override system instructions (jailbreak detection in the caller’s speech). Available on every plan, **on by default**; uncheck to opt out (`guardrails.input.jailbreak`).
* **Blocked topics** — subjects the assistant must refuse; matched output is replaced by your **refusal text** (Fallbacks & Guardrails).
* **Escalation keywords** — if the caller mentions one (e.g. "lawyer", "emergency"), the platform — not the LLM — triggers an immediate transfer to your **escalation number** (Fallbacks & Guardrails).

<Note>
  Topic and category filters are enforced in the output path, so they hold even when a clever caller talks the model around its prompt.
</Note>

## Pronunciation & text cleanup

See [Models & voices → Speaking style](/assistants/models-and-voices#speaking-style): pronunciation dictionary, markdown/emoji filtering, speaking rate, and output volume.
