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

# Guardrails & conversation quality

> Background audio, interruptions, filler phrases, idle and voicemail handling, ringing, consent, transcript privacy, 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.

As a starting point, outbound assistants usually work better when they're easier to interrupt — a caller who wants to jump in shouldn't have to talk over a pitch. Reception and front-desk assistants often benefit from a bit more stability, so a stray cough or background voice doesn't cut the assistant off mid-sentence.

## Noise & VAD environment presets

Under **Conversation → Latency**, **Noise & echo cancellation** is a single on/off toggle — the right model for the channel (phone or web) is picked for you. Below it, **VAD sensitivity / noise threshold** offers four environment presets that decide how loud something has to be before it counts as speech:

| Preset                     | Threshold | Use when                             |
| -------------------------- | --------- | ------------------------------------ |
| Quiet office               | 0.35      | Soft speech, little background noise |
| Standard                   | Auto      | Default: 0.5 web / 0.7 phone         |
| Loud / Restaurant / Street | 0.70      | Chatter, clatter, traffic            |
| Extreme                    | 0.85      | Very noisy lines                     |

A live **latency waterfall** (STT / LLM TTFT / TTS TTFB / E2E) appears only in the studio web-call test panel — never in the public widget.

<Note>
  Telecom guidance (ITU-T G.114) targets one-way latency under 150 ms for a call to feel natural — a useful benchmark when deciding how aggressively to tune interruption and VAD sensitivity for your use case.
</Note>

## 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.

## Voicemail

This setting only decides what happens once answering-machine detection (AMD) reports a mailbox on an outbound call — not what happens when a call simply rings out unanswered.

* **Leave a voicemail message** — on: the assistant speaks a message, then hangs up. Off: the assistant hangs up immediately, leaving nothing.
* **Voicemail message** — the free-text message spoken via TTS when a mailbox is detected. Keep it short and include a callback number. Leave it empty and the greeting / first message is used instead.

AMD runs automatically on direct outbound calls. On campaign calls, it runs when the campaign has AMD enabled or this toggle is on.

<Note>
  The response to a detected mailbox always comes from the assistant's settings here, not from the campaign that placed the call — even though a campaign can separately turn answering-machine detection itself on or off.
</Note>

## Ringing

Two independent timeouts control how long a call rings before something happens:

| Control                       | Range    | Default | What it does                                                                                                                    |
| ----------------------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Inbound ringing duration**  | 30–120 s | 60 s    | How long an inbound caller hears ringing while the assistant joins. Applies to both bring-your-own and platform-managed trunks. |
| **Outbound ringing duration** | 15–80 s  | 45 s    | How long outbound and WhatsApp voice calls ring before counting as no answer.                                                   |

<Note>
  This is separate from the [Call transfer](/assistants/built-in-tools#transfers) tool's own ringing timeout, which times a single transfer attempt rather than the original call.
</Note>

## 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](/assistants/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>

## Recording privacy: redaction and re-transcription

Two more controls sit next to recording, under **Settings → Privacy**.

### Redact PII in transcript

Selected categories of personal data are replaced with `[REDACTED:type]` before the transcript is stored — data minimisation, not just display masking. It applies to newly finished calls only; transcripts already stored keep their original text.

Turning it on starts with four categories selected — email address, phone number, IBAN, and credit card number. The full built-in list is much larger, spanning identity, contact, government-ID, financial, security-credential, and health information, and you can select any combination of it. Beyond the built-in categories, add up to 20 of your own named patterns (regular expressions) for anything specific to your business.

### Automatic re-transcription

Independently of the manual **Re-transcribe** action in History, **Re-transcribe recording** can run for every recorded call automatically. When it's on, each finished call's recording is transcribed again with a higher-accuracy engine once the call ends; the enhanced transcript appears in the call's detail view next to the live transcript. It requires **Record calls** to be on.

<Note>
  Automatic re-transcription bills per recorded minute (rounded up) at the workspace's **Re-transcribe** rate; current rates are on the [Usage page](https://app.famulor.io/usage).
</Note>

## 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.

## Troubleshooting

| Symptom                                                                | Try                                                                                                                                                                                                                                                                                                                   |
| ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Noise cancellation eats caller speech in the transcript                | Turn **Noise & echo cancellation** off for that assistant (Conversation → Latency) and test again                                                                                                                                                                                                                     |
| Assistant answers while the caller is still speaking                   | Raise **Min. silence (VAD)** so it waits longer before deciding the turn is over                                                                                                                                                                                                                                      |
| A cough or background voice stops the assistant mid-sentence           | Raise **Min. interruption duration**, and move the VAD preset up (toward Loud / Restaurant / Street)                                                                                                                                                                                                                  |
| Responses feel sluggish to start                                       | Lower **Min. silence (VAD)** in small steps, and move the VAD preset down if callers speak softly                                                                                                                                                                                                                     |
| A caller declines something mid-call and you want a human to take over | The built-in **On decline** setting only continues or ends the call — add a prompt rule that detects the decline (for example: "if the caller says they don't want to share personal data, transfer the call") and pair it with a [Call transfer](/assistants/built-in-tools#transfers) tool pointed at a team member |

Change one setting at a time and re-test with a realistic call — small, isolated changes are much easier to judge than several at once.
