Skip to main content

Phone

Workspace-wide defaults for voice calls placed and received through Gravity Rail. Per-number configuration (work mode, brand, signup, anonymous calling) lives on each phone number itself — see Phone & Voice.

Go to SettingsWorkspacePhone.

Settings

SettingWhat It Does
Default Phone NumberThe number used by default when an outbound call or SMS doesn't specify one (e.g., AI-initiated outreach with no per-workflow override).
Enable Audio RecordingWhen on, voice calls are recorded and stored securely in S3 for playback. Default off.
Enable Voicemail DetectionWhen on, AI-initiated outbound calls detect whether a human or voicemail answers. Default off.
Transcription ModelThe speech-to-text (STT) model used to transcribe live operator sessions. Leave blank to use the workspace default.

Enable Audio Recording

When enabled, every voice call on this workspace is recorded and the audio file is saved for later review. Recordings are encrypted at rest and accessed through the call detail view. For step-by-step playback, transcript sync, and compliance practices, see Call Recordings.

HIPAA note: Recordings can contain PHI. Treat them like any other patient data — limit access via roles, document the recording disclosure in your phone greeting, and follow your organisation's retention policy.

Enable Voicemail Detection

When enabled, AI-initiated outbound calls run Answering Machine Detection (AMD) at connect time. The result is exposed to your workflows so you can play a voicemail-drop, hang up, or proceed normally depending on what answered.

What it does

  1. The call connects and Twilio runs ~3–5 seconds of audio analysis.
  2. Twilio reports the result to Gravity Rail.
  3. The result is persisted on the PhoneCall record as answered_by and exposed to event rules and templates as call.answered_by.
  4. Your workflow can branch on the value.

Possible values for call.answered_by

ValueMeaning
humanA human answered.
machine_startVoicemail/answering machine detected, greeting is starting.
machine_end_beepVoicemail greeting finished with a beep — safe to start recording your message.
machine_end_silenceVoicemail greeting finished with silence.
machine_end_otherVoicemail greeting finished but the ending was ambiguous.
faxA fax machine answered.
unknownAMD couldn't classify the line in time.

Branching on the result with an Event Rule

The most common pattern is to play a pre-recorded voicemail message and hang up when AMD reports a voicemail. Configure an event rule on the task:

  • Object: any task on the workflow that initiates the call
  • Event: task:execute
  • Condition (CEL): call.answered_by.startsWith("machine_end_")
  • Action: audio:play with parameters:
    • clip_file_id: the file ID of the pre-recorded clip
    • allow_interrupt: false
    • hang_up_on_audio_end: true

Humans (and ambiguous results) skip the rule and the regular AI conversation runs.

Latency cost

AMD adds ~3–5 seconds before the call is handed to the AI agent — even when a human answers. Combined with first-byte TTS latency (~1–2 s), human pickups feel ~4–7 s slower than calls placed without detection.

The setting is workspace-wide and off by default so only workspaces that need voicemail handling pay the cost. Toggle it on per workspace once you've configured the matching event rules.

Compliance

Twilio's AMD result is the only PHI-free data point we persist (it's an enum value, not audio). Audio is not stored as part of detection. If you also enable Audio Recording, the call audio is recorded as usual and inherits the same compliance treatment.

Transcription Model

The Transcription Model setting controls which speech-to-text (STT) engine is used when live operator sessions are transcribed in real time (i.e. when a human operator is on a call and their side of the conversation is being captured as text for AI assistance or audit purposes).

What it does

When set, Gravity Rail uses the selected STT model instead of the workspace-wide platform default to transcribe the operator's audio during a live session. This lets you tune transcription accuracy for a specific language, accent, or use-case without changing the global default.

Accepted values

ValueProviderNotes
(blank)Uses platform default (deepgram:stt:flux-general-en). Recommended for most workspaces.
(empty string)Disables live transcription for operator sessions.
deepgram:stt:flux-general-enDeepgramEnglish-optimised Flux model. Platform default.
deepgram:stt:flux-general-en:selfhostDeepgramEnglish Flux model on Gravity Rail's self-hosted GPU. Lower latency. Only selectable in environments where the self-hosted service is deployed (prod).
deepgram:stt:flux-general-multiDeepgramMultilingual Flux model. Use when operators speak languages other than English.
deepgram:stt:flux-general-multi:selfhostDeepgramMultilingual Flux model on Gravity Rail's self-hosted GPU. Lower latency. Only selectable in environments where the self-hosted service is deployed (prod).
elevenlabs:stt:scribeElevenLabsElevenLabs Scribe model.
elevenlabs:stt:scribe_v2ElevenLabsElevenLabs Scribe v2.
elevenlabs:stt:scribe_v2_realtimeElevenLabsElevenLabs Scribe v2 real-time variant.

The value you enter is validated against the active model registry when the setting is saved. An invalid model ID is rejected with an error.

When to change it

  • Multilingual operator teams — switch to deepgram:stt:flux-general-multi if operators regularly speak languages other than English.
  • Accuracy-sensitive workflows — try alternative models if you find that the default produces too many transcription errors for a particular accent or terminology set.
  • Disable transcription — set to an empty string if your workspace does not use live operator assistance and you want to avoid the transcription overhead.

Compliance

Live transcription output can contain PHI (patient names, symptoms, phone numbers spoken aloud). Each finalised turn is persisted as a chat message on the session's chat, encrypted at rest in the workspace database — it is not written to a separate transcript file, and the audio is not sent to any third-party transcription store beyond the STT provider that returns the text. Because transcripts live as ordinary chat messages, they follow the platform's default message handling: by default messages are retained for the life of the chat (Gravity Rail does not auto-expire them), and they are visible to anyone with role access to that chat. Treat transcripts like any other PHI — limit chat access via roles, document any operator-recording disclosure in your call greeting, and delete the chat when your organisation's retention policy requires it.

Tips

  • Set the default phone number per workspace, not per workflow. Workflows can override it when needed, but a single workspace default keeps outbound caller ID consistent.
  • Pair voicemail detection with a voicemail-drop clip. Without an audio:play event rule, voicemail-answered calls just fall through to the AI greeting, which talks to a voicemail box.
  • Test on a known voicemail before rolling out. Call a phone you can leave a voicemail on, confirm call.answered_by == "machine_end_beep", and verify your event rule plays the clip end-to-end.
  • Phone & Voice — Per-number configuration: work modes, signup, anonymous callers, voicemail.
  • Voice — Voice models, speech recognition, and pipeline tuning.
  • Automation — Event rules and the audio:play action.
  • CEL Expressions — Conditions like call.answered_by.startsWith(...).