Per-user call forwarding
Every user controls where inbound calls to their own extension ring, from Me → Voice preferences in the dashboard. No admin role is needed — each person manages their own rule, and the rule applies only to calls addressed to them. This is the Find Me / Follow Me pattern familiar from RingCentral, Zoom Phone, and 8x8: sim-ring a mobile alongside the desktop softphone, roll a call through a list of destinations until someone answers, and let an assistant screen an executive’s calls. Until now these constructs were why teams kept a parallel legacy PBX; here they are per-user settings.Forwarding modes
Pick one mode per user. Each mode answers “when a call comes in for me, what rings?”
Destinations are PSTN numbers in E.164 format (for example
+14155551234) or internal SIP URIs (sip:alice@orbit.devotel.io). A rule
holds up to 5 destinations, each with an optional label (“Mobile”,
“Home office”). Modes other than none require at least one destination.
Ring timeout (5–120 seconds) sets how long each leg rings before the
call moves on. It applies to sim_ring, sequential, and
forward_after_timeout.
Optional active window — set Active from / Active until and the
rule applies only inside that window; outside it, calls fall back to the
dashboard softphone. Add a short note (“Vacation 6/10 – 6/20”) so the
reason for the rule is visible later.
Clear rule reverts everything to none in one step: destinations,
active window, and note are removed after a confirmation.
How each mode resolves
Forwarding destinations are configuration only. The actual outbound leg
to a PSTN destination is placed by the call router over the tenant’s
configured carrier — the page itself never dials.
API contract — call handling (Find Me / Follow Me)
Everything the Call handling card saves is a per-user rule you can also drive over the API. These routes are self-scoped — any authenticated user manages their own rule; no admin role is needed. Base path:/api/v1/voice.
Read the current rule — returns the resolved rule. A user who has
never configured one gets a synthetic none back, so this endpoint
never 404s:
{ kind: "pstn" | "sip", value, label? } — an E.164
number for pstn, a sip:-prefixed URI for sip. The array is
ordered and capped at 5 entries.
Upsert the rule — idempotent; replaces the current rule in full.
Send only mode and the defaults below fill the rest (destinations
empty, ring_timeout_sec 20, active window null, reject_anonymous
false):
sip: prefix) return 400 with per-field details.
Clear the rule — reverts to none and removes destinations, the
active window, and the note in one call. Returns 204 with no body:
Org owners and admins can also provision rules on behalf of users in
their organization via the
/api/v1/voice/call-forwarding/users
admin surface — same rule shape, plus user_id per entry.Find Me / Follow Me ring ladder
The Find me / follow me card is a planner for a per-step reach order: an ordered ladder where each step rings for its OWN window before rolling to the next — the full RingCentral-class construct, beyond the flat sequential mode’s single shared timeout. Build the ladder from steps of any mix: desk phone, mobile, softphone, a PSTN number, or a SIP URI. Each step rings between the server-advertised minimum and maximum window, and the ladder is capped at a maximum number of steps and a total ring budget. A End at voicemail toggle decides where an unanswered call lands after the last step. As you type, the card previews the resolved timeline live — “rings desk 0–12s, mobile 12–32s, voicemail at 32s” — so the reach order is visible before it matters.The ring ladder is currently preview-only: it shows the reach order the
call router applies at dial time, but the ladder itself is not saved yet.
To persist call forwarding today, use the Call handling modes above.
Voicemail greeting
The Voicemail greeting card manages the audio callers hear when a call reaches your voicemail box.- Upload an
.mp3or.wavfile up to 2 MB. - Generate from text — type up to 500 characters and the greeting is rendered as synthesized speech, stored exactly like an upload. When text-to-speech is not configured for the tenant this option reports unavailable and the upload path remains.
- Revert to the tenant default greeting at any time; the uploaded file is kept in cold storage but no longer plays.
Call delegation (boss-admin)
The Call delegation card lets an executive grant assistants the right to act on their calls — the classic boss-admin arrangement. The executive owns every call; saved assistants share control of it. Delegated actions per assistant — grant any subset:
Ring distribution decides how inbound calls split between executive
and assistants:
- Screen first — the assistant answers, announces the caller, then extends to the executive. Requires at least one assistant granted the Screen action.
- Simul-ring — executive and all assistants ring together.
- Assistant first — assistants ring first; the call rolls to the executive on no-answer.
- Executive first — the executive rings first; assistants ring on no-answer.
API contract — call delegation (boss-admin)
The policy the Call delegation card saves is also available over the API. Persistence is self-scoped: an executive saves their OWN policy —executive_user_id must be the authenticated user, and every assistant
grant must name a user inside the caller’s organization. Base path:
/api/v1/voice/delegation.
Preview a policy — validates a posted policy and returns the resolved
plan (ordered ring stages, per-participant permitted actions, shared
ownership) without persisting anything. This is what the card uses to
render the live stage preview:
{ assistant_user_id, assistant_label?, actions, ring_priority? }
— actions is a non-empty subset of screen, answer, place,
transfer, monitor; ring_priority (0–99, default 0) orders
assistants within a stage, lowest first. The four ring modes are
screen_first (the default; requires at least one grant with the
screen action), simul_ring, assistant_first, and exec_first
(executive first). The advertised bounds (screen-timeout 5–120 s,
max 10 delegates, ring-priority 0–99) and the action/ring-mode
catalogs are published by the static
GET /api/v1/voice/delegation/capabilities endpoint so an editor
renders against the server’s own limits.
Save the policy — persists it; inbound calls to the executive are
then distributed per the resolved plan. executive_user_id must be the
caller (403 otherwise), and unknown assistant ids are rejected with 422:
policy alongside its resolved plan.
Read the saved policy — returns { policy, plan }, or both null
when none is saved:
{ deleted: true }: