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 |
✗ |
|
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 |
✓ |
|
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. |
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