Skip to content

SIP PBX Call Actions

Andrey Egorov edited this page May 18, 2026 · 4 revisions

Overview

The Call resource contains operations that act on live PBX legs.

Operations

Operation Purpose Output branches
Ringing Start ringing for a leg. Result
Answer Answer a leg. Result
Hangup Hang up a leg. Result
Bridge Connect two live legs. Success
Unbridge Break an existing bridge and emit both sides. Orig, Peer
Wait Event Wait for DTMF, interruption, timeout, or end. Dynamic rule branches plus static tail

Common Leg Resolution

Unless an operation explicitly asks for different fields, call actions resolve legId in this order:

  1. explicit Options -> Leg ID
  2. item.json.legId
  3. item.json.sipPbx.legId

Operation: Ringing

Parameters

Parameter Required Description
Options -> Leg ID No Explicit target leg. Required only when the input item does not already carry a leg ID.

Output

Branch Fields
Result legId

Operation: Answer

Parameters

Parameter Required Description
Options -> Leg ID No Explicit target leg. Required only when the input item does not already carry a leg ID.

Output

Branch Fields
Result legId

Operation: Hangup

Parameters

Parameter Required Description
Options -> Leg ID No Explicit target leg. Required only when the input item does not already carry a leg ID.

Output

Branch Fields
Result legId

Operation: Bridge

Parameters

Parameter Required Description
Leg A ID Yes First live leg to bridge.
Leg B ID Yes Second live leg to bridge.
Options -> Emit DTMF Events No If enabled, the bridge still emits DTMF events into the workflow event stream.
Options -> Relay DTMF No DTMF relay method: Disabled, Auto, RFC2833, SIP INFO, Inband.

Output

Branch Fields
Success legIdA, legIdB

Operation: Unbridge

Parameters

Parameter Required Description
Options -> Leg ID No Explicit target leg. Required only when the input item does not already carry a leg ID.

Output

Branch Fields
Orig legId of the leg you asked to unbridge.
Peer legId of the bridged peer, when present.

Operation: Wait Event

Parameters

Parameter Required Description
Overall Timeout (Seconds) No Maximum total wait time before the action takes the Timeout branch.
DTMF Rules No Fixed collection of Pattern + Label. Each label becomes its own output branch.
DTMF Fallback No If enabled, unmatched digits are emitted to a generic fallback branch.
Multi-Digit DTMF Fallback No If enabled, fallback capture continues across multiple digits until timeout or terminator.
Terminator Digit No Single digit that finalizes multi-digit fallback capture.
Leg IDs No Explicit wait target list. If empty, the node falls back to the current item leg.
Options -> Interrupt On No Multi-select allow-list for leg interrupt reasons. If empty, call.wait ignores interrupt events, removes them from the leg event queue, and does not show the Interrupted branch.
Options -> Clear Queued DTMF No If enabled, drops queued DTMF events before the wait starts. Use this when the action should react only to newly entered digits.
Options -> Interdigit Timeout (Seconds) No Timeout between digits during fallback capture.

Output Branches

Branch When it appears Meaning
<Rule Label> One per rule Emitted when the received DTMF matches that rule's pattern.
DTMF Fallback DTMF Fallback = on Emitted for unmatched digits.
Interrupted Options -> Interrupt On is not empty Emitted when a leg-level interrupt event reaches the waited leg and its reason is selected in Interrupt On.
Timeout Always Emitted when overall timeout expires.
Ended Always Emitted when the leg ends.

Output Payload

Branch Typical fields
<Rule Label> legId, eventType = "dtmf", digits or matched digit payload, label
DTMF Fallback legId, eventType = "dtmf", digits
Interrupted legId, eventType = "interrupt", reason
Timeout legId, eventType = "timeout"
Ended legId, eventType = "ended", optional reason

Interrupted reasons

Current runtime reasons for call.wait -> Interrupted are:

These values come from the shared built-in interruptReason catalog. call.wait uses only the bridge and queue subset of that global list.

If Interrupt On is empty, these events are consumed and ignored by call.wait. They do not terminate the wait and they do not remain queued for a later call.wait.

reason When it happens
call_bridge_joined The leg was joined into a bridge by call.bridge.
call_bridge_removed_peer_ended The leg survived an active bridge, but the other side of that bridge ended later.
call_bridge_removed_unbridge The leg was detached from a bridge by explicit call.unbridge.
call_bridge_removed_rollback Bridge activation had to be rolled back after a transport failure.
call_bridge_removed_rebridge The leg was detached from its previous bridge because a new call.bridge re-used that leg.
call_queue_placed The leg was placed into a queue by queue.putLeg or by queue rejoin.
call_queue_removed The leg left a live queue because it was removed, taken by dispatch, or finalized offline. Enabling callback does not emit this signal by itself, and when the leg itself ends that path stays Ended.

Clone this wiki locally