Navigation
ELOWEN · Documentation

Last updated: October 27, 2026

Browse documentation · Connect the phone service for calls

Connect the phone service for calls

The voice-bot plugin lets Chetty place real outbound calls through your own voice service. The service dials, talks to the person and reports back; Chetty briefs it and keeps the record. The user side is Have Chetty make a phone call.

Set up the voice service

  1. Open Settings → Access and expand voice-bot.
  2. Enter the Call endpoint: the full address of your voice service. Both HTTP and HTTPS are accepted.
  3. Enter the API token: the service's bearer token. Chetty sends it as a bearer authorization header, never writes it to a log and never shows it to the assistant, not even in an error.
  4. Save. Both fields are required before the call tool is offered at all.

The plugin needs Chetty 0.30.47 or newer. Saving plugin settings restarts Chetty, so the configuration applies after the restart; the screen says that the change was saved and that Chetty is restarting to load it.

Your service must accept a POST request and keep it open until the call ends. When the reply cannot be read, or does not say whether the call was answered, Chetty reports the outcome as unknown and shows the start of the reply, because the call may well have taken place.

Allow accounts to place calls

  1. Open Users and choose the account.
  2. In Granted plugins, select voice-bot.

The plugin is user-grantable and there is no administrator bypass, so an administrator needs the same grant before placing a call. Account tool permissions can still restrict access.

There is no per-call confirmation and no allowlist of numbers. The hourly limit is the only automatic brake on repeated calls, which is why people are told to confirm the number with the person first.

Limits and unknown outcomes

Setting Default Allowed range
Maximum calls per hour 10 1–200
Longest call 300 seconds 60–1,800 seconds

Maximum calls per hour is marked High risk. It counts calls started in any rolling 60-minute window, failed calls included, and the count survives a restart. When the limit is reached, the tool refuses without dialling and reports roughly when another call will be allowed.

Longest call is not a connection timeout: the service waits for the outcome for the whole call. Set it too low and a real call ends with an unknown outcome. A request that times out is never retried automatically.

Records: a call refused before dialling, such as a malformed number or an over-long instruction, is not recorded. A failed or uncertain call is recorded and counts towards the hourly limit. Every stored response is cut to 8,000 characters, and deleting the account deletes its call records.

Developer reference

Implementation and error rendering describes the shared error boundary and the full response contract of the voice service.