Common Configuration (SIP)
Overview
Some Application instances contain SIP functionality based on the SipApp
base class. In addition to the
common Application configuration parameters and their
application-specific attributes, these SIP Applications typically require SIP configuration as indicated below.
<?xml version="1.0" encoding="utf-8"?>
<n2svcd>
...
<applications>
...
<application name="(name)" module="(module)">
<include><lib>/path/to/library</lib></include>
<parameters>
<!-- application-specific parameters -->
...
<!-- SIP application parameters -->
<parameter name="sip_bind_host" value="0.0.0.0"/>
<parameter name="sip_bind_port" value="5060"/>
...
<!-- SDP and RTP integration -->
<parameter name="early_media_policy" value="never"/>
<!-- SIP extended configuration -->
<config>
<!-- INVITE headers -->
<invite_headers>
<invite_header name="Diversion" request_edr="DVT" response_edr="DVT2" relay_request="yes"/>
<invite_header name="Remote-Party-ID" relay_request="yes"/>
<invite_header name="Ring-Timer" relay_response="yes"/>
</invite_headers>
<!-- Outbound -->
<sip_peers>
<sip_peer id="LOCAL-IVR" sip_host="192.168.1.5" sip_port="5060"/>
</sip_peers>
<trunks>
<trunk leading="999" sip_peer_id="LOCAL-IVR"/>
</trunks>
<!-- Inbound -->
<sip_accounts>
<sip_account id="LP1" username="665566" password="ABC" from_user_prefix="+9111421451"/>
<sip_account id="IVR" username="+911142145100@192.168.1.5" password="Aclmob#1" from_user="665566"/>
</sip_accounts>
</config>
</parameters>
</application>
...
</application>
...
</n2svcd>
These SIP parameters include both server-relevant (inbound) and client-relevant (outbound) configuration parameters.
Not all parameters are relevant to all SIP applications.
Configuration Details
The application
element attributes for all SIP Application instances are as below.
Parameter Name | Type | XML Type | Description |
---|---|---|---|
parameters
|
Array | Element |
[Required] As per Common Configuration Application
parameters .
|
"throttle_max_instances"
|
Positive Integer | Attribute |
A hard limit on the number of instances which may be in progress at any time. An instance is created by an inbound or outbound SIP Request for OPTIONS , REGISTER .
An instance is also created by an inbound or outbound INVITE associated with an A-Leg.An outbound INVITE for a B-Leg associated with an existing A-Leg does not create a new instance.If this limit reaches the percentage configured by high_load_pc then an alarm will be activated.If this limit is exceeded, then new inbound A-Leg INVITE requests will be throttled and an alarm will be activated.(Default = 50,000 )
|
"throttle_max_tps"
|
Positive Integer | Attribute |
A hard limit on the number of transactions which are permitted when computed as an average over throttle_average_secs seconds.A transaction in this context means the creation of a new instance as described for throttle_max_instances .If this limit reaches the percentage configured by high_load_pc then an alarm will be activated.If this limit is exceeded, then new inbound A-Leg INVITE requests will be throttled and an alarm will be activated.(Default = 200 )
|
"throttle_average_secs"
|
Integer (Range 1 - 60 )
|
Attribute |
The number of seconds over which the average TPS will be measured for the purpose of throttling. The value is measured over this many whole seconds, plus the additional in-progress partial second. (Default = 5 )
|
"sip_public_host"
|
Hostname or IPv4 Address |
Attribute |
Default public host name fallback for various other configuration parameters. (Default = Automatically determined from system configuration). |
"sip_public_port"
|
Integer | Attribute |
Default public port number fallback for various other configuration parameters. (Default = the relevant UDP or TCP bind port). |
"sip_public_domain"
|
Hostname or IPv4 Address |
Attribute |
Our advertised public domain name. The "Realm" Inbound REGISTER requests must match this domain. This is the domain for the "From" header address URI for INVITE and REGISTER SIP Requests generated by us.(Default = the configured value for "sip_public_host"). |
"sip_bind_host"
|
Hostname or IPv4 Address |
Attribute |
Convenience parameter which sets "sip_bind_udp_host", "sip_bind_tcp_host", "sip_public_udp_host", "sip_public_tcp_host" and "sip_contact_host". (Default = 0.0.0.0 ).
|
"sip_bind_port"
|
Integer | Attribute |
Convenience parameter which sets "sip_bind_udp_port" and "sip_bind_tcp_port". (Default = 5060 ).
|
"sip_listen_udp"
|
Boolean | Attribute |
Do we bind to a UDP port to accept and send SIP? (Default = Yes ).
|
"sip_bind_udp_host"
|
Hostname or IPv4 Address |
Attribute |
Bind address for local SIP UDP listener (also used for sending UDP). (Default = the configured value for "sip_bind_host"). |
"sip_bind_udp_port"
|
Integer | Attribute |
Bind port for local SIP UDP listener (also used for sending UDP). (Default = the configured value for "sip_bind_port"). |
"sip_public_udp_host"
|
Hostname or IPv4 Address |
Attribute |
Our public UDP host, placed in the "Contact" URI for INVITE, REGISTER, BYE, and re-INVITE sent by us over UDP transport. (Default = the configured value for "sip_bind_host"). |
"sip_public_udp_port"
|
Integer | Attribute |
Our public UDP port, placed in the "Contact" URI for INVITE, REGISTER, BYE, and re-INVITE sent by us over UDP transport. This value is only placed in the "Contact" URI if it is a value other than 5060 (the well-known default).(Default = the value for "sip_public_port" if explicitly configured, otherwise "sip_bound_udp_port"). |
"sip_bind_tcp_host"
|
IPv4 Address | Attribute |
Bind address for local SIP TCP listener for accepting inbound TCP connections. (Default = the configured value for "sip_bind_host"). |
"sip_bind_tcp_port"
|
Integer | Attribute |
Bind port for local SIP UDP listener for accepting inbound TCP connections. (Default = the configured value for "sip_bind_port"). |
"sip_public_tcp_host"
|
Hostname or IPv4 Address |
Attribute |
Our public TCP host, placed in the "Contact" URI for INVITE, REGISTER, BYE, and re-INVITE sent by us over TCP transport. (Default = the configured value for "sip_bind_host"). |
"sip_public_tcp_port"
|
Integer | Attribute |
Our public TCP port, placed in the "Contact" URI for INVITE, REGISTER, BYE, and re-INVITE sent by us over TCP transport. This value is only placed in the "Contact" URI if it is a value other than 5060 (the well-known default).(Default = the value for "sip_public_port" if explicitly configured, otherwise "sip_bound_tcp_port"). |
"sip_peer_tcp_connect"
|
yes / no / 1 / 0
|
Attribute |
The default setting for if a SIP Peer should automatically attempt to out-bind a TCP connection. This value may be overridden on a per-Peer basis. Changing this value dynamically via the management interface will only affect new SIP Peers that are created via the management interface. (Default = Yes ).
|
"sip_tcp_nodelay"
|
yes / no / 1 / 0
|
Attribute |
Setting this flag to yes or 1 will cause the TCP-specific flag TCP_NODELAY to be explicitly
set to 1 for both (a) all outbound SIP TCP client connections created by this application and (b) all inbound
SIP TCP server connections accepted by this application.This is a global setting, it cannot be specified on a per-Peer basis. Setting this flag to no or 0 will mean that the flag is not explicitly set, and
the operating system default values will apply. It is not possibly to expressly disable TCP_NODELAY on
SIP TCP connections.Note that some operating systems may not accept this value, or may accept it but not apply it. (Default = No ).
|
"sip_tcp_quickack"
|
yes / no / 1 / 0
|
Attribute |
Setting this flag to yes or 1 will cause the TCP-specific flag TCP_QUICKACK to be explicitly
set to 1 for both (a) all outbound SIP TCP client connections created by this application and (b) all inbound
SIP TCP server connections accepted by this application.This is a global setting, it cannot be specified on a per-Peer basis. Setting this flag to no or 0 will mean that the flag is not explicitly set, and
the operating system default values will apply. It is not possibly to expressly disable TCP_QUICKACK on
SIP TCP connections.Note that some operating systems may not accept this value, or may accept it but not apply it. (Default = No ).
|
"sip_tcp_rcvbuf"
|
Integer | Attribute |
Setting this attribute will cause the socket SO_RCVBUF receive buffer size to be explicitly set to the indicated
value for both (a) all outbound SIP TCP client connections created by this application and (b) all inbound
SIP TCP server connections accepted by this application. This is a global setting, it cannot be specified on a per-Peer basis. Note that the actual value applied by the operating system is typically double the requested/configured value. Note that the operating system will typically apply minimum/maximum buffer sizes which must be respected. (Default = System default sizing will apply). |
"sip_tcp_sndbuf"
|
Integer | Attribute |
Setting this attribute will cause the socket SO_SNDBUF send buffer size to be explicitly set to the indicated
value for both (a) all outbound SIP TCP client connections created by this application and (b) all inbound
SIP TCP server connections accepted by this application. This is a global setting, it cannot be specified on a per-Peer basis. Note that the actual value applied by the operating system is typically double the requested/configured value. Note that the operating system will typically apply minimum/maximum buffer sizes which must be respected. (Default = System default sizing will apply). |
"sip_contact_transport"
|
tcp / udp
|
Attribute |
The value for the ;transport=... parameter that will be included in the Contact address URI created by us
for sending in SIP INVITE Request and Response messages as our address for the purpose of subsequent in-dialog
transactions, e.g. BYE , re-INVITE , or INFO .If this value is configured, then it will be included as the Contact transport parameter. If this value is not configured, then the Contact sent by us will not include any transport parameter. (Default = "udp" if only UDP is bound, "tcp" if only TCP is bound, otherwise not present). |
"sip_contact_user"
|
String | Attribute |
The user that will be included in the Contact address URI created by us
for sending in SIP INVITE Request and Response messages as our address for the purpose of subsequent in-dialog
transactions, e.g. BYE , re-INVITE , or INFO .This value is only used in the unusual case when we do not have a more appropriate calling or called party PSTN. (Default = n2sip ).
|
"sip_contact_host"
|
Hostname or IPv4 Address |
Attribute |
The host name that will be included in the Contact address URI created by us
for sending in SIP INVITE Request and Response messages as our address for the purpose of subsequent in-dialog
transactions, e.g. BYE , re-INVITE , or INFO .(Default = the configured value for "sip_public_host"). |
"sip_contact_port"
|
Integer | Attribute |
The port number that will be included in the Contact address URI created by us
for sending in SIP INVITE Request and Response messages as our address for the purpose of subsequent in-dialog
transactions, e.g. BYE , re-INVITE , or INFO .If this value is configured, then it will be included as the Contact port number (eve if it is the default). If this value is not configured, then the Contact sent by us will not include the port number. (Default = the UDP bind port (if not = 5060 ), or the TCP bind port (if not = 5060 ).
|
"sip_user_agent"
|
String | Attribute |
User Agent Identifier for outbound SIP Request/Response header. (Default = N-Squared SIP ).
|
"allowed_method_list"
|
String | Attribute |
The list of allowed methods that we return in our Allow header.(Default = INVITE,ACK,BYE,CANCEL,OPTIONS,REGISTER,INFO,PRACK ).
|
"sip_inbound_invite_tcp_reuse_policy"
|
always / except_ack / except_terminated_ack / never
|
Attribute |
Affects the routing of in-dialog client transactions (re-INVITE, BYE, and ACK for 2XX)
which occur within any dialog initiated by an INVITE sent to us over a TCP connection which
is still open at the time of creating a subsequent in-dialog transaction. When set to `always`, we will always consider the still-open original INVITE (inbound) TCP connection as a valid and preferred route for the client transaction even when that connection is not one of our configured SIP peers matching the current dialog target for the `Contact` URI. When set to `never`, we will not give the still-open original INVITE TCP connection any special treatment for routing purposes. When set to `except_ack` the special treatment applies for `re-INVITE` and `BYE` but not for `ACK` (for 2XX) in-dialog transactions. When set to `except_ack` the special treatment applies for `re-INVITE` and `BYE` and also for `ACK` (for 2XX) except where the `ACK` (for 2XX) transaction is initiated after the Dialog has sent or received `BYE`. (Default = never ).
|
"suppress_to_user"
|
Boolean | Attribute |
Should we suppress the user part in the To URI and Request-URI for OPTIONS Requests initiated by us.YES - Never include the user address part in the To URI and Request-URI for OPTIONS Requests initiated by us.NO - Use the peer ID as the user address part in the To URI and Request-URI for OPTIONS Requests initiated by us.Note that the default value of 5060 is never included.(Default = YES ).
|
"suppress_to_port"
|
Boolean | Attribute |
Should we suppress peer port numbers in the To URI and Request-URI for INVITE and REGISTER Requests initiated by us.YES - Never include the port number in the To URI and Request-URI for INVITE and REGISTER Requests initiated by us.NO - When the port number in the To URI and Request-URI for INVITE and REGISTER Requests initiated by us, is a value
other than 5060 (the well-known default) then it should be included explicitly.Note that the default value of 5060 is never included.(Default = NO ).
|
"sip_inbound_prack_policy"
|
if_required / if_supported / disabled
|
Attribute |
Do we accept requests to support for RFC 3262 reliable provisional response (PRACK) for inbound INVITE requests. (Default = if_supported ).
|
"sip_outbound_prack_policy"
|
require / supported / disabled
|
Attribute |
Do we offer to support RFC 3262 reliable provisional response (PRACK) for outbound SIP INVITE requests that we create. (Default = disabled ).
|
"allow_1xx_policy"
|
never / reliable / except_100 / always
|
Attribute |
When using INVITE Responses 101 -199 , should we explicitly set the optional Allow header.(Default = always ).
|
"early_dialog_100"
|
YES / NO / 1 / 0
|
Attribute |
Should we construct our SIP Dialog early (at the time of sending the 100 Trying response.This is not valid according to RFC 3261, however some user agents expect/require it. (Default = 0 ).
|
"sip_max_forwards"
|
Integer | Attribute |
Max Forwards count for outbound SIP Request header. (Default = 70 ).
|
"sip_edr_merge"
|
YES / NO / 1 / 0
|
Attribute |
Do we merge SIP Request/Response EDRs into a single EDR logged at response time? (Default = YES ).
|
"sip_edr_ack"
|
YES / NO / 1 / 0
|
Attribute |
Do we generate EDRs for received inbound and sent outbound ACK Requests?(Default = NO ).
|
"sip_edr_prack"
|
YES / NO / 1 / 0
|
Attribute |
Do we generate EDRs for received inbound and sent outbound PRACK Requests?(Default = NO ).
|
"sip_edr_reinvite"
|
YES / NO / 1 / 0
|
Attribute |
Do we generate EDRs for received inbound and sent outbound re-INVITE Transactions?(Default = NO ).
|
"sip_notrace_options"
|
YES / NO / 1 / 0
|
Attribute |
Force disabling of tracing for outbound SIP OPTIONS Requests instances? (Default = YES ).
|
"sip_notrace_register"
|
YES / NO / 1 / 0
|
Attribute |
Force disabling of tracing for outbound SIP REGISTER Requests instances? (Default = YES ).
|
"sip_bleg_invite_header_attempt_num"
|
YES / NO / 1 / 0
|
Attribute |
Add a header Attempt-Number to all outbound B-Leg SIP INVITE Requests for new SIP Dialogs.This header contains an integer counter which begins with 1 for the first B-Leg attempt on this call and increments for each subsequent B-Leg attempt.(Default = NO ).
|
"sip_bleg_invite_header_aleg_callid"
|
YES / NO / 1 / 0
|
Attribute |
Add a header A-Leg-Call-ID to all outbound B-Leg SIP INVITE Requests for new SIP Dialogs.This header copies the inbound A-Leg Call-ID field across to the B-Leg outbound INVITE. (Default = NO ).
|
"sip_invite_request_header_instance_gid"
|
YES / NO / 1 / 0
|
Attribute |
Add a header Instance-GID to all outbound SIP INVITE Requests for new SIP Dialogs (not re-INVITE).This header contains the Instance GID (global unique ID) for the n2svcd SipInstance controlling this INVITE. (Default = NO ).
|
"sip_invite_response_header_instance_gid"
|
YES / NO / 1 / 0
|
Attribute |
Add a header Instance-GID to all outbound SIP INVITE Response for new INVITE requests (not re-INVITE).This header is added to any non-Trying provisional (1XX), OK (2XX), or Decline (300-699) Response we send for the INVITE. This header contains the Instance GID (global unique ID) for the n2svcd SipInstance controlling this INVITE. (Default = NO ).
|
"sip_rfc3325_mode"
|
trusted / untrusted
|
Attribute |
Configure our support for RFC 3325 P-Asserted-Identity header.When this attribute is trusted then the received A-Leg INVITE P-Asserted-Identity
and P-Preferred-Identity headers will always be copied into any sent B-Leg INVITE.When this attribute is untrusted then the received A-Leg INVITE P-Asserted-Identity
and P-Preferred-Identity headers will always be copied into any sent B-Leg INVITE unless
the received A-Leg INVITE Privacy header contained the id flag.(Default = trusted ).
|
"sip_charging_vector_relay_mode"
|
trusted / untrusted
|
Attribute |
Configure our support for RFC 3455 P-Charging-Vector header relay from A-Leg to B-Leg.When this attribute is trusted then the received A-Leg INVITE P-Charging-Vector
(if present) is sent for all subsequent call-related messages for both A-Leg and B-Leg.When this attribute is untrusted then the received A-Leg INVITE P-Charging-Vector
(if present) is sent only for subsequent call-related messages on the A-Leg, but is not transferred to any B-Leg.(Default = trusted ).
|
"sip_charging_vector_outcall_mode"
|
icid / none
|
Attribute |
Configure our support for RFC 3455 P-Charging-Vector header when we create a new A-Leg Outcall.When this attribute is icid then we will construct a unique P-Charging-Vector which
specifies icid and icid-generated-at parts, and include it in the SIP INVITE Request.(Default = icid ).
|
"sip_response_error_mode"
|
warning / text_plain / error_info / none
|
Attribute |
Configure how extended error descriptions are sent back in SIP Responses for 500 Server Internal Error and other similar cases.When this attribute is warning the error text is sent in the Warning header with warn-code = 399 .When this attribute is text_plain the error text is sent in the response body with Content-Type header set text/plain .When this attribute is error_info the error text is sent in the Error-Info header.When this attribute is none the error text is not included in error responses.Note that such use of free-form values in the Error-Info header is not valid according to RFC 3261 and may be rejected by some systems.(Default = warning ).
|
"out_registration_expires"
|
Integer | Attribute |
Requested number of seconds for Expiry of outbound REGISTER for our endpoints.(Default = 3600 ).
|
"out_registration_retry"
|
Integer | Attribute |
Number of seconds between retry of failed outbound REGISTER for our endpoints. (Default = 600 ).
|
"out_registration_buffer"
|
Integer | Attribute |
Number of seconds prior to expiry before renewing our endpoint REGISTER. (Default = 30 ).
|
"sip_link_reconnect_secs"
|
Integer | Attribute |
How often (in seconds) do we attempt to re-connect a SIP TCP Link which has disconnected or failed to connect. (Default = 30 seconds).
|
"sip_link_check_secs"
|
Integer | Attribute |
How often (in seconds) do we perform a status check on a connected TCP Link. (Default = 30 seconds).
|
"sip_link_check_type"
|
dada / options
|
Attribute |
How do we perform a status check on a connected TCP Link (including the initial login check).dada - Send a 4-byte packet containing CR LF CR LF, or `0x0d0a0d0a`.options - Perform a SIP OPTIONS transaction.(Default = dada ).
|
"sip_auth_schema"
|
open / digest
|
Attribute |
How do we authenticate inbound SIP Requests from our SIP Accounts. Note that open means that all requests are accepted, and the configuration
in sip_accounts is not relevant.(Default = open , do not validate inbound SIP Requests).
|
"sip_open_ack"
|
Boolean | Attribute |
Allow inbound SIP ACK Requests to bypass the sip_auth_schema authentication?(Default = Inbound SIP ACK authentication is controlled by sip_auth_schema ).
|
"sip_open_bye"
|
Boolean | Attribute |
Allow inbound SIP BYE Requests to bypass the sip_auth_schema authentication?(Default = Inbound SIP BYE authentication is controlled by sip_auth_schema ).
|
"sip_open_options"
|
Boolean | Attribute |
Allow inbound SIP OPTIONS Requests to bypass the sip_auth_schema authentication?(Default = Inbound SIP OPTIONS authentication is controlled by sip_auth_schema ).
|
"sip_registry_cache"
|
String | Attribute |
Filename for read/write of SIP registration records at shutdown/startup. (Default = none, SIP registrations are lost on restart). |
"isup_default_bci_ci"
|
0 - 3
|
Attribute |
Applies only when responding to an A-Leg inbound SIP INVITE Request containing SIP-I ISUP IAM Message. Applies only when sending A-Leg SIP INVITE Response containing ISUP Connect (CON) or Address Complete Message (ACM). This value specifies the default value of the Backward Call Indicators (Charging Indicator) two-bit subfield. (Default = 2 ).
|
"rtp_app_name"
|
String | Attribute |
The name of the RtpApp which will perform our RTP streaming for us.This is typically an automatically-created virtual application name which maps to multiple RtpApp applications which have been created using an application
repeat value greater than 1 .(Default = RTP Streaming is not available). |
"early_media_policy"
|
prefer / allow / never
|
Attribute |
When do we use 183 Early Media instead of 200 OK for "internal" announcement played by our on-board media server (i.e. RtpApp ).When configuring the LhoSipApp this affects our "internal" or "on-switch" announcements.When configuring the SrpSipApp this configuration must be set to never .prefer : Use 183 Early Media unless the service logic prohibits it, or unless it is incompatible with our digit collection.allow : Use 183 Early Media if the service logic specifically requests it (unless it is incompatible with our digit collection).never : Never use 183 Early Media. If the service logic required it, then report an announcement error.(Default = allow ).
|
"rtp_response_timer_ms"
|
Integer | Attribute |
A guard timer which ensures that the RtpApp responds promptly to
control commands. If the RtpApp does not perform the RTP accept
processing within this time, then the RTP setup is considered to have failed.(Default = 1000 ).
|
"rtp_max_play_secs"
|
Integer | Attribute |
The default maximum duration of any single "play" (including prompt and collect) interaction
performed by the RtpApp . This should be set to be as long as the maximum single
interaction expected to be performed on the platform. If a single interaction does not
complete within this time, then the controlling application will abort the RTP
session and send RTP-HANGUP to the RtpApp .The user-defined service logic may override this timer on a per-interaction basis. (Default = 300 ).
|
"sdp_owner_username"
|
String | Attribute |
The SDP session owner username to be specified in the o= "owner" line of
the SDP content for all SDP generated by this application. This must be a valid username
according to RFC 2327. It may not contain spaces.(Default = - ).
|
"sdp_owner_host"
|
String | Attribute |
The IP4 address name or dot-notation IP address to represent the hostname for session ownership
in the o= "owner" line for SDP content for all SDP generated by this application.(Default = the value used for "sip_public_host"). |
"sdp_suspend_policy"
|
no_media / inactive
|
Attribute |
How should the m=audio block be constructed when suspending the RTP stream
after it has been established – e.g. following a pre-call announcement, while setting-up
a follow-on call, or post-call announcement.The no_media means do not include the m=audio part in the SDP.The inactive means include the m=audio part in the SDP with a=inactive .(Default = inactive ).
|
"sdp_suspend_host"
|
String | Attribute |
The IP4 address name or dot-notation IP address to specify the connection end-point in
the c= line for the SDP when suspending the RTP stream after it has been
established.(Default = the value used for "sip_public_host"). |
"sdp_suspend_inactive_port"
|
0 - 65535
|
Attribute |
Specify the port number to use in the m=audio [port] ... line
in the SDP block when using a=inactive to suspend the RTP stream.Note that a port number of 0 is permitted in this case, which means
"remove this media stream" as defined in section "8.2 Removing a Media Stream"
of RFC 3264 "An Offer/Answer Model with the Session Description Protocol (SDP)".In practice, not all SIP end-points will accept a port number of zero. (Default = 65535 ).
|
config
|
Object | Element | Container for extended configuration for this Application instance. |
.invite_headers
|
Array | Element |
Array of invite_header elements defining INVITE headers given special treatment.
|
.invite_header
|
Object | Element | Provisions a SIP INVITE header which is given special treatment. |
.sip_peers
|
Array | Element |
Array of sip_peer elements defining static SIP nodes to which we can send (or proxy) an INVITE.
|
.sip_peer
|
Object | Element | Provisions a SIP peer endpoint to which we may send (or proxy) a SIP INVITE. |
.trunks
|
Array | Element |
Array of static trunk elements for routing number blocks to SIP peers
when sending the initial INVITE for a Dialog for a call leg.
|
.trunk
|
Object | Element | Provisions an outbound trunk for routing a number block to a SIP peer when sending the initial INVITE for a Dialog for a call leg. |
.endpoints
|
Array | Element |
Array of endpoint elements for which we perform outbound registration.
|
.endpoint
|
Object | Element | Provisions an outbound registration for one of our endpoints to a SIP peer. |
.sip_accounts
|
Array | Element |
Array of sip_account elements defining an identity for inbound REGISTER.
|
.sip_account
|
Object | Element | Provisions a SIP account for the purpose of authenticating credentials. |
.trace_traps
|
Array |
Array of trace_trap elements definining the pre-defined traces.
|
|
.trace trap
|
Object | A single trace trap. |
SIP INVITE Headers
Each SIP INVITE Header definition in this section defines an additional “known” SIP INVITE Header which will be given additional handling for inbound/outbound SIP INVITE requests and responses.
The base SIP App provides base support for the mandatory, base headers such as From
, To
, Via
,
Requires
, CSeq
etc. as documented in this technical guide and the Protocol Conformance Statement
documentation. Those base headers already have special treatment built into the system, and hence
do not need to be (and must not be) configured in this section. The complete list of special headers
which may not be configured here is:
Via
From
To
Call-ID
CSeq
Contact
Authorization
WWW-Authenticate
Content-Type
Content-Length
Allow
User-Agent
Require
Supported
RSeq
Privacy
P-Asserted-Identity
P-Preferred-Identity
P-Charging-Vector
Route
Record-Route
Specifically, when handling inbound SIP INVITE, for headers whose name (case-insensitive) matches a header from the SIP INVITE Header configuration.
- The Header will (if configured) be logged to the
IN-ALEG-INVITE
EDR. - The Header will (if configured) be automatically confirmed back in any 2XX Response.
- The Header will (if configured) be automatically confirmed back in any 300-699 Response.
- The Header will (if configured) be automatically relayed in any outbound B-Leg INVITE for this call and will (if configured) be logged to the
OUT-BLEG-INVITE
EDR. - The Header will (if configured) be automatically relayed in any outbound A-Leg/B-Leg re-INVITE for this call and will (if configured) be logged to the
OUT-ALEG-INVITE
/OUT-BLEG-INVITE
EDR.
Specifically, when the service logic expressly adds one of these additional known SIP INVITE Headers to an outbound SIP A-Leg INVITE:
- The Header will (if configured) be logged to the
OUT-ALEG-INVITE
EDR. - The Header will (if configured) be automatically relayed in any outbound B-Leg INVITE for this call and will (if configured) be logged to the
OUT-BLEG-INVITE
EDR. - The Header will (if configured) be automatically relayed in any outbound A-Leg/B-Leg re-INVITE for this call and will (if configured) be logged to the
OUT-ALEG-INVITE
/OUT-BLEG-INVITE
EDR.
Specifically, when the service logic expressly adds one of these additional known SIP INVITE Headers to an outbound SIP B-Leg INVITE:
- The Header will (if configured) be logged to the
OUT-BLEG-INVITE
EDR.
Each invite_header
Object in the config
.invite_headers
Array is configured as follows.
Parameter Name | Type | XML Type | Description |
---|---|---|---|
name
|
String | Attribute |
[Required] The SIP header name . When matching inbound headers, this name will be matched case-insensitive. When adding outbound headers, this name will be used exactly "as-is". This means that when relaying headers, the outbound name may not exactly case-match the received name. |
short_name
|
String | Attribute |
The SIP header short name . Alternative short name form for this header. When matching inbound headers, this name will be matched case-insensitive. When adding outbound headers (in short mode), this name will be used exactly "as-is". This means that when relaying headers, the outbound name may not exactly case-match the received name. (Default = Do not read or write any short name for this header). |
request_edr
|
`/^[a-zA-Z][a-zA-Z0-9_\-]*$/` | Attribute |
The EDR field name to use when this field occurs in a SIP Request message. Please ensure that this field name does not conflict with any of the documented base SIP EDR field names. (Default = Do not log this Request header value to any EDRs). |
response_edr
|
`/^[a-zA-Z][a-zA-Z0-9_\-]*$/` | Attribute |
The EDR field name to use when this field occurs in a SIP Response message. Please ensure that this field name does not conflict with any of the documented base SIP EDR field names. (Default = Do not log this Response header value to any EDRs). |
relay_request
|
yes / no / 1 / 0
|
Attribute |
If enabled, when this header is received in an A-Leg INVITE Request, relay the value to any associated B-Leg INVITE. If enabled, when this header is received in any re-INVITE Request which is passed-through include this header in the other-leg re-INVITE. (Default = Do not relay this header from INVITE/re-INVITE Request to INVITE/re-INVITE Request). |
relay_response
|
yes / no / 1 / 0
|
Attribute |
If enabled, when this header is received in a B-Leg INVITE Response, relay the value to any associated A-Leg INVITE Responses. (Default = Do not relay this header from B-Leg INVITE Response to A-Leg INVITE Response). |
relay_transfer
|
yes / no / 1 / 0
|
Attribute |
If enabled, when this header is received in a B-Leg INVITE Response, relay the value to any associated A-Leg re-INVITE Request. (Default = Do not transfer this header from B-Leg INVITE Response to B-Leg re-INVITE Request). |
sort_order
|
top / bottom / middle
|
Attribute |
When adding this header to an outbound INVITE, where should it be placed in the header list. (Default = middle ).
|
Note: Any inbound INVITE header listed here will be silently ignored when received on the initial A-Leg INVITE. It will not be passed to the service logic and will not be logged to any EDR
Note: The service logic (when generating an outbound SIP INVITE for the A-Leg or B-Leg) may add headers over and above the headers expressly defined here. However, those additional headers will not be logged to the base SIP EDRs, and will not automatically be relayed as headers in any other A-Leg or B-Leg set-up such as re-INVITE.
Note: All automatic relay/confirmation/provision of the headers configured here will treat the header value as opaque, and will never attempt to parse or modify it.
SIP Peers
Each SIP Peer definition defines an endpoint which is “known” for the purposes of initiating a new outbound (client) SIP Transaction. Specifically:
- A peer may contain one or more
endpoints
. We sendREGISTER
andINVITE
. - A peer may terminate one or more
trunks
. We sendINVITE
without registration. - A peer has credentials which we may use if our Request receives a
401 Unauthorized
Response.
Each sip_peer
Object in the config
.sip_peers
Array is configured as follows.
Parameter Name | Type | XML Type | Description |
---|---|---|---|
id
|
[A-Z0-0_-.]
|
Attribute |
[Required] An internal key associated with this SIP Peer. This may contain letters, digits, _ , - , or . . Spaces are not permitted.
|
udp_send
|
yes / no / 1 / 0
|
Attribute |
When creating a new SIP transaction for this SIP Peer, can we send the SIP Request via UDP? This can only be specified when "sip_listen_udp" is enabled.(Default = Yes if "sip_listen_udp" is enabled).
|
tcp_connect
|
yes / no / 1 / 0
|
Attribute |
Should we attempt to open and maintain a TCP connection towards this SIP Peer. (Default = No ).
|
sip_host
|
IPv4 Address | Attribute | [Required] Far-end IPv4 Address to which we will send Requests for this SIP Peer. |
sip_port
|
Integer | Attribute | [Required] Far-end Port number to which we will send Requests for this SIP Peer. |
local_host
|
IPv4 Address | Attribute |
Specify the local bind host for this outbound TCP connection. (Default = the configured host as per sip_bind_tcp_host ).
|
local_port
|
Integer | Attribute |
Specify the local bind host for this outbound TCP connection. (Default = an ephemeral port). |
sip_domain
|
String | Attribute |
This specifies the domain which will be used for URIs in relation to this SIP Peer. This will be used for the REGISTER Request URI, and as the domain for the From and To URIs.(Default = The configured sip_host for the connection).
|
username
|
String | Attribute |
This is the username part of the From URI in SIP OPTIONS Requests.This is the username which will be used for Digest authentication against this SIP Peer. (Default = The OPTIONS From address has no username, and Digest authentication is not performed).
|
password
|
String | Attribute |
This is the password which will be used for Digest authentication against this SIP Peer. (Default = Digest authentication cannot be performed). |
SIP Trunks
Each Trunk specifies a number block which is statically configured for sending the outbound INVITE transaction which attempts to create a new dialog for a call leg.
These addresses do not use REGISTER. They are assumed to be always available for INVITE.
Each trunk
Object in the config
.trunks
Array is configured as follows.
Parameter Name | Type | XML Type | Description |
---|---|---|---|
leading
|
(+)Hex Digits | Attribute |
[Required] Prefix matched called-party digits routable on using this trunk. This must be a digit string with an optional leading "+". A trunk with an empty string configured for leading digits will match all destinations. |
sip_peer_id
|
[A-Z0-0_-.]
|
Attribute |
[Required] The id of a configured SIP Peer to which this prefix can route.
|
Note that in-Dialog client transactions (for re-INVITE, BYE, or 2XX ACK) do not use
this SIP Trunks configuration. They will instead search directly for an available
entry in the SIP Peers configuration where the SIP Peer host, port, and protocol
match the dialog target as defined by the Contact
headers supplied to us within
the dialog.
SIP Endpoints
Each Endpoint specifies a called party number which this application “dynamically manages”, meaning that we will send REGISTER events to the nominated SIP Peer informing it that we are available to receive inbound requests related to that endpoint.
Each endpoint
Object in the config
.endpoints
Array is configured as follows.
Parameter Name | Type | XML Type | Description |
---|---|---|---|
leading
|
(+)Hex Digits | Attribute |
[Required] The exact or number block prefix for which this endpoint applies. This must be a digit string with an optional leading "+". We may use this to check that inbound received INVITEs are valid from this SIP Peer. |
sip_peer_id
|
[A-Z0-0_-.]
|
Attribute |
[Required] The id of a configured SIP Peer.
|
contact_user
|
(+)Hex Digits | Attribute |
The digits which will be used to construct the Contact URI header value.This is typically a digit string with an optional leading "+". (Default = Contact URI must be specified explicitly using contact_uri ).
|
contact_uri
|
String | Attribute |
Specify an alternate explicit complete value to use for the Contact URI. (Default = Contact URI is determined by contact_user , the global sip_host and sip_port ).
|
SIP Accounts
Each SIP Account definition defines an account identity which we recognise for inbound request processing. Account membership is determined by simple exact or prefix match of the offered “From” address URI.
Specifically when authorization is enabled:
- An account has credentials which we verify by sending
401 Unauthorized
Response. - If no account is matched, the response will be
404 Not Found
Response.
Note that if sip_auth_schema
is configured to be open
then SIP Account checking
is completely bypassed for all inbound requests, and the sip_accounts
configuration
is irrelevant.
Otherwise this access challenge is applied to all inbound SIP Requests, excepting that:
- SIP
CANCEL
is never challenged. - SIP
BYE
is challenged by default, but this may be disabled withsip_open_bye
. - SIP
OPTIONS
is challenged by default, but this may be disabled withsip_open_options
. - Challenges may be bypassed for message on TCP connection associated with a known SIP Peer.
Each sip_account
Object in the config
.sip_accounts
Array is configured as follows.
Parameter Name | Type | XML Type | Description |
---|---|---|---|
id
|
[A-Z0-0_-.]
|
Attribute |
[Required] An internal key associated with this SIP Account. This may contain letters, digits, _ , - , or . . Spaces are not permitted.
|
username
|
String | Attribute |
This is the username which will be used for Digest authentication against this SIP Peer. (Default = ).
|
password
|
String | Attribute |
This is the password which will be used for Digest authentication against this SIP Peer. (Default = Digest authentication cannot be performed). |
from_user
|
String | Attribute | Exact match for the "user" part of the offered "From" header URI. |
from_user_prefix
|
String | Attribute |
Exact or prefix match for the "user" part of the offered "From" header URI. |
Note:
- At most one of
from_user
orfrom_user_prefix
must be specified. - If neither
from_user
norfrom_user_prefix
is specified, thenusername
must be present (and is used asfrom_user
).
Trace Trap Entry
Each Trace Trap defines a rule for potentially enabling tracing for an inbound or outbound call.
Each trace_trap
Object is configured as follows:
Attribute | Type | Description |
---|---|---|
calling_party
|
Hex String
|
The normalised calling party, as it would appear in the SIP INVITE To header, up to but not including
the @ symbol, but including the leading + (if present).
|
called_party
|
Hex String
|
The normalised called party, as it would appear in the SIP INVITE From header, up to but not including
the @ symbol, but including the leading + (if present).At least one of calling_party or called_party must be defined.If both are defined, then both must match before the trace trap is considered matched. |
trace_level
|
0 - 3
|
[Required] The trace level.0 = none, 1 = debug, 2 = dump, 3 = spam.Levels higher than debug should be used with caution in a production environment. |