RoutingdialOutbeta

Dial out (conference-first)

Places a call from the phone on this leg to an outside number, conference-first: this leg waits in its own room hearing ringback while the number is calle…

What it does

Places a call from the phone on this leg to an outside number, conference-first (call-control review F9). This leg waits in its own room conf-<call sid> as the agent member, hearing ringback, while the walker calls the number into that room as the customer member. Because the call lives in a room, everything that works on a softphone's outbound call works on it: hold, blind and warm transfer, consult, 3-way, "Switch call here", "Move to desk phone", and the desk phone's own Hold and Transfer buttons.

The order of events:

  1. The account's calling rules (the dial policy: toll fraud, do-not-originate, the org's allowlist, suspension) run first. A refusal takes the refused edge with vars._dialBlockedSpoken set, and nothing is placed.
  2. This leg joins its room (conference, end-on-exit) and is tagged as the agent side of a desk-out call.
  3. Only after this leg has entered the room (the room's enter hook) is the number originated into it, on the org's own Ferivox key, presenting from. The two legs never join at the same moment.
  4. Ringback plays to this leg until the number answers and joins the room.
  5. If the number never answers — busy, no answer, not in service, declined, failed — the failed edge runs with vars._dialOutFailedSpoken saying which, in place of the carrier's own announcement (which never reaches a room). If this leg hangs up while the number is still ringing, the number is cancelled.

Emergency and special numbers (911, 933, 988, 711, in any spelling) never take this path: the node degrades to a plain dial verb for them, the way every device emergency call is dialed.

The node is hidden in the editor: the walker builds it for a desk phone's own call to an outside number. Flow Dial nodes stay as they are until they become conference-first too (F9 phase B).

When to use it

  • You don't place it yourself: every desk phone's call to an outside number runs it (desk_dial_out_flow in the walker).

Configuration

Places a call from the phone on this leg to an outside number, conference-first: this leg waits in its own room hearing ringback while the number is called into it, so the call can be held, transferred, consulted and moved like any softphone call. The account's calling rules run first. Emergency and special numbers (911, 933, 988, 711) are always dialed directly instead.

FieldLabelTypeRequiredDefaultNotes
toNumbertextRequired+15551234567The outside number, in E.164 format.
fromCaller IDphoneNumberOptional""One of the account's numbers. Defaults to the number that was called.
timeoutSecsRing timeoutselectOptional30Options: 30, 45, 60.
extensionIdCalling extensiontextOptional""Set by the device path: the extension the call is billed and attributed to.
ringbackRingbackaudioOptional—Library audio the phone hears while the number rings. Blank = the platform ringback.

Outgoing events: refused, failed, completed

Examples

The desk phone's outbound flow

{
  "start": "dialOut",
  "nodes": [
    {
      "id": "dialOut",
      "type": "dialOut",
      "config": { "to": "+18135551234", "from": "+16574397823", "timeoutSecs": 60, "extensionId": "<calling extension id>" },
      "on": { "refused": "refused", "failed": "failed", "completed": "end" }
    },
    { "id": "refused", "type": "say", "config": { "text": "{{vars._dialBlockedSpoken}}" }, "on": { "next": "end" } },
    { "id": "failed", "type": "say", "config": { "text": "{{vars._dialOutFailedSpoken}}" }, "on": { "next": "end" } },
    { "id": "end", "type": "hangup" }
  ]
}

Gotchas

  • The far leg is the call's billable customer leg (outbound, with the calling extension); this leg is the agent side and is never billed.
  • The conversation is anchored on the far leg, exactly like a softphone's outbound call. A refused call has no far leg, so its conversation stays on this leg.
  • The far leg's outcome reaches the session wherever its status lands: a status delivered to another walker replica is forwarded to the replica holding this session over the replica bus (docs/architecture/walker-multi-replica.md).

See also