Skip to main content
The voice gateway decides when a caller’s turn ends and whether a call is recorded. Developers set most of this per application, but some defaults belong to you as the operator. Use this page to set the recording policy for the whole install or for one workspace, change the consent prompt, and know which turn detector your calls use. Every setting on this page lives in the gateway’s configuration, config/gateway.yaml.

Before you begin

You need Fonoster installed with Docker Compose. See Install with Docker Compose. Run the commands on this page from your fonoster folder.

Apply a change

Each section below edits config/gateway.example.yaml. After you edit it, write the configuration and recreate the voice gateway:
Recreating the gateway ends the calls in progress, so do it when the install is quiet. Records of those calls are still sealed.

Set the default recording policy

A call is recorded by the first policy that’s set, in this order:
  1. The application’s policy, set by the developer. See Record calls and ask for consent.
  2. The workspace’s policy, set by you.
  3. The install’s default, set by you.
  4. off.
Each policy is off, on or consent. With consent, the caller hears a short prompt before recording starts. Four stacked layers decide if a call is recorded: application policy, workspace policy, install default, and off. The application layer is set to Workspace default, so the call falls through to the workspace policy, which is on, and the call is recorded. Four stacked layers decide if a call is recorded: application policy, workspace policy, install default, and off. The application layer is set to Workspace default, so the call falls through to the workspace policy, which is on, and the call is recorded.
1

Set the install's default

Under callRecord, set recording. The Compose install ships with off:
2

Set a workspace's policy (optional)

Under callRecord, add workspaces, keyed by the workspace’s ID (WO…). The dashboard shows it as Access key ID under Settings:
That workspace’s applications left on Workspace default are now recorded. Applications with their own policy keep it.
3

Change the consent prompt (optional)

The prompt is “This call will be recorded.” by default. Set your own words under callRecord:
The prompt is the same for every application, in the application’s own voice. It isn’t translated, so write it in your callers’ language.
4

Apply it

Write the configuration and recreate the gateway, as in Apply a change.
Make a test call to an application left on Workspace default. With on, its call record has a recording. With consent, you hear the prompt first.
The gateway doesn’t start with any value other than off, on or consent. To catch a typo first, run npx -p @fonoster/common fonoster-config check.

Turn detection

The gateway decides when the caller has finished speaking with a turn detector. Every application in the Compose install uses the default detector, baseline: voice activity, final transcripts and a silence timer. Developers tune it per application with patience. See Turn-taking and barge-in. The gateway also has other detectors: The detector is set per application, with speech.detector, only for applications listed in the gateway’s own file. The Compose install keeps applications in its database, so the dashboard and the API create them, and they always use baseline. There’s no install-wide setting for the detector.

Audio filters

Applications can turn on noise cancelling (see Cancel background noise). The filter runs in AppBridge on the caller’s audio before speech recognition and turn detection, and it needs a noise-cancelling provider in the catalog with a key. Register the provider once, with the capability nc:
Give it a platform key in AppBridge’s configuration, as for a speech provider. Workspaces that add their own ai-coustics key on the Vendor keys page use that key instead.
Filtering never drops a call. A filter that can’t start or fails mid-call leaves the call unfiltered and the call record says so. The filter phones home: the vendor’s SDK authorizes the key and reports usage online, so AppBridge needs egress to ai-coustics at call time. The AppBridge image ships the vendor’s SDK and the Voice Focus model, so nothing is downloaded at call time. To pin a model file or turn the download off, set the filter’s server-side options in appbridge.yaml:

Next steps

Record calls and ask for consent

How developers set the policy per application.

Rotate call-record keys

Manage the key that signs your call records.