-
Notifications
You must be signed in to change notification settings - Fork 0
Core Concepts
This node opens a long-lived runtime trigger stream and emits workflow items when the daemon receives events.
Available trigger modes:
Trunk EventExtension EventQueue EventAI Tool Call
This node performs actions against the daemon runtime.
Available action groups:
CallDialMediaQueueGlobal recordingAIRespond
The package is intentionally built around a small set of IDs.
Represents a live call leg.
Used for:
- answering
- hanging up
- bridging
- unbridging
- media playback
- recording
- sending DTMF
- queue placement
Represents an outbound dial session.
Used for:
- waiting for dial progress
- breaking a dial
- coordinating sequential or parallel attempts
Represents a playback or recording job running in the daemon.
Used for:
- stopping media explicitly
- waiting for background media to finish
These IDs exist for request-response flows:
authRequestIdrecordRequestIdaiToolRequestId
They are produced by trigger branches and later consumed by response actions such as:
Respond to recordingRespond To AuthRespond To AI Tool
ref is the stable public name of a trigger group.
Examples:
trunk_mainextensions_salesqueue_support
Treat ref as part of your public workflow contract. Do not rename it casually after other nodes depend on it.
Most trigger items and many action results include a json.sipPbx object.
Typical fields:
legIddialIdmediaIdauthRequestIdrecordRequestIdaiToolRequestIdref
Use this metadata as a reliable handoff channel between nodes.
Many actions can work without hardcoding IDs because they resolve values from the current item.
Most call and media actions resolve legId in this order:
- Explicit value in the action
Options item.json.legIditem.json.sipPbx.legId
Dial actions resolve dialId in this order:
- Explicit value in the action
Options item.json.dialIditem.json.sipPbx.dialId
Media control actions resolve mediaId in this order:
- Explicit value in the action
Options item.json.mediaIditem.json.sipPbx.mediaId
Response actions first try the hidden response handle attached by the trigger branch. If that handle is not present, they fall back to:
- Explicit
Request IDinOptions item.json.<requestId>item.json.sipPbx.<requestId>
Practical implication:
- If you respond directly from the trigger branch, you usually do not need to map the request ID yourself.
- If you store or forward items through other nodes, keep the
json.sipPbxobject intact.
Not every operation returns a single Result output.
Examples:
-
call.waitcreates dynamic DTMF branches plus static branches such asTimeoutandEnded -
dial.waitalways includesAnswered,Interrupted,Timeout, andFailed, with optionalRinging,Progress, andRejected - blocking media actions use
InterruptedandCompleted - queue triggers emit
Placed,Dispatch, andOffline
Design workflows around branch semantics, not just the JSON payload.
Play Audio, Play Tone, and Record Audio support two execution styles.
The node waits until the media operation reaches a terminal event.
Use it for:
- prompt-then-route IVR steps
- short synchronous recordings
- deterministic branch logic
The node returns immediately with a mediaId, and the daemon keeps the media running.
Use it for:
- hold music
- long-running recordings
- queue prompts
- asynchronous orchestration with
Stop MediaorWait Media
Global recording captures both sides of the live leg:
- inbound remote audio
- outbound PBX audio
Outbound PBX audio includes:
- media playback generated by media operations
- bridge audio sent toward the leg
- the final mixed outbound signal after playback and bridge mixing
Trigger streams are runtime-owned and stay alive while the workflow trigger is active.
Practical consequences:
- Trigger behavior is not tied to a single webhook-like request.
- If a trigger stream closes, the runtime removes it.
- Your workflow must remain active for the trigger to keep receiving events.
Some behavior is intentionally workflow-scoped.
Extension dialing does not ask for a trigger ref.
Instead, it searches matching registered endpoints across all extensions trigger refs in the current workflow scope.
This means:
- it does not dial extensions from unrelated workflows
- it can fan out across multiple extensions refs inside the same workflow
Queue dispatch uses the queue trigger configuration and resolves matching operator extension numbers across same-flow extensions refs.
Advanced note:
- active extensions trigger streams with the same public ref are rejected globally
- trunk trigger streams can reuse the same public ref when internal flow-scoped refs differ
Best practice:
- keep public refs unique unless you intentionally understand the scope rules