Phone

Workspace-wide voice defaults — default phone number, audio recording, and voicemail detection on AI-initiated outbound calls.

Intermediate
4 min read

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.

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.

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(...).