SIP Call

Places an outbound SIP call: sends the subscribed audio to the far end, and publishes the audio received from it

Component Configuration

Option Description Required Environment override

id

A unique identifier for the component instance

✓

displayName

The name shown in the Studio UI of this component

✓

callAddress

The SIP URI to call, e.g. sip:1234@pbx.example.com. Can be left empty for a line that only answers calls

✗

<COMPONENT_ID>_CALLADDRESS

account

The SIP account this line uses. A password or digest can be given as ${SIP_PASSWORD} to keep it out of the saved workflow

✓

<COMPONENT_ID>_ACCOUNT

autoDial

Place the call as soon as the workflow starts, otherwise wait to be told to dial (default: true)

✗

inbound

What to do when a call arrives on this line: turn it away, answer it when the line is free, or hold it ringing until an operator answers or rejects it. A fixed SIP port (under Network) or a registrar makes the line reachable (default: "reject")

✗

audio

Codecs, rate and what the caller stream carries between calls

✗

redial

Call again when the call ends or cannot be placed. A call that ended because of bad credentials, an unknown number or a decline is never redialled (default: {"enabled":true,"delaySeconds":5,"maxAttempts":0})

✗

timeouts

How long to wait for an answer, and when to give up on a silent far end (default: {"dialTimeoutSeconds":0,"farEndTimeoutSeconds":0})

✗

network

Addresses and ports. A containerised Norsk needs a fixed SIP port and RTP range mapped through, or host networking (default: {})

✗

security

TLS for the signalling and SRTP for the audio, which most hosted PBXs and SIP trunks require

✗

notes

Notes about this component

✗

Options with an environment override can be set when Studio starts, without editing the workflow. <COMPONENT_ID> is this component’s id in your workflow, uppercased, with spaces and dashes replaced by underscores and other punctuation removed — a component named SRT Input reads SRT_INPUT_PORT. Renaming a component changes its id, and so changes these variable names.

Account

Option Description Required

uri

The identity of this end of the call, e.g. sip:studio@pbx.example.com

✓

username

Username to authenticate with, if it is not the user part of the identity

✗

credential

How the account proves who it is: nothing (a direct call, or a trunk that authenticates by address), the password, or the HA1 digest a provider hands out in its place (MD5 of username:realm:password, which needs the realm filled in)

✓

realm

Authentication realm, * matches whichever the server asks for (default: "*")

✗

registrar

Register the account with this registrar, e.g. sip:pbx.example.com, so calls to it reach this line. Leave empty to never register

✗

proxy

Outbound proxy to route every request through, e.g. sip:edge.pbx.example.com. A registration-based provider usually wants calls routed via the same edge the registration used

✗

registrationExpiresSeconds

Registration lease to ask for, in seconds. 0 for the engine's default of 300; the engine refreshes it before it expires (default: 0)

✗

Audio

Option Description Required

codecs

Audio codecs to offer, most preferred first (opus, g722, pcmu, pcma, gsm) (default: ["opus","g722","pcmu","pcma"])

✗

sampleRate

The rate this line runs and publishes the caller at, whatever codec the call negotiates. 48 kHz matches the rest of a workflow (default: 48000)

✗

stereo

Offer stereo. Only Opus can carry it, every other codec stays mono (default: false)

✗

continuousOutput

Keep the caller stream published between calls, carrying silence, so a mixer or encoder downstream sees one steady source. Otherwise the stream is withdrawn while there is no call (default: true)

✗

silenceSuppression

Stop sending audio to the far end while it is silent (VAD) (default: false)

✗

jitterBufferMs

Jitter buffer applied to the audio sent to the far end, in milliseconds

✗

Redial

Option Description Required

enabled

Redial automatically (never after a deliberate hangup) (default: true)

✗

delaySeconds

How long to wait before calling again (default: 5)

✗

maxAttempts

Give up after this many failed attempts in a row, 0 to keep trying (default: 0)

✗

Timeouts

Option Description Required

dialTimeoutSeconds

Give up on a call that has not been answered within this many seconds, including one that keeps ringing. 0 leaves it to SIP: 32 seconds for no response, but ringing is unlimited (default: 0)

✗

farEndTimeoutSeconds

Treat a far end that has sent neither audio nor RTCP for this many seconds as lost: hang up, and redial if redial is on. 0 never does, and only raises an alert. A caller who has gone quiet keeps sending RTCP, so this catches a dead far end or a broken network, not silence (default: 0)

✗

sessionExpiresSeconds

SIP session timer (RFC 4028) in seconds, at least 90. Empty for the engine's default of 90

✗

statsIntervalSeconds

How often the call statistics are reported, in seconds. Empty for the engine's adaptive cadence (every half second until the call is up, then every 5)

✗

Network

Option Description Required

publicAddress

Public IP address to announce for this host when it is behind NAT

✗

sipPort

Fixed local SIP signalling port. Empty for an ephemeral port, which is fine for placing calls but not for receiving them

✗

rtpPortRange

Fixed local RTP port range. Each call takes a pair of ports and keeps them for up to half a minute after it ends, so allow at least 8

✗

Security

Option Description Required

tls

Secure the signalling with TLS. Calls, the registrar and the proxy then use TLS when their address is sips: or has ;transport=tls (default: {"enabled":false})

✗

srtp

Encrypt the audio with SRTP. Optional offers it but accepts plain RTP, mandatory fails a call that will not use it (default: "disabled")

✗

srtpRequireTls

Only exchange SRTP keys over TLS signalling, so they never travel in the clear. Needs TLS on and a sips: far end (default: false)

✗

Tags: sip voip telephone phone call duplex bidirectional talkback ifb