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-SRP" sip_host="192.168.1.5" sip_port="5060"/>
          </sip_peers>
          <trunks>
            <trunk leading="999" sip_peer_id="LOCAL-SRP"/>
          </trunks>

          <!-- Inbound -->
          <sip_accounts>
            <sip_account id="LP1" username="665566" password="ABC" from_user_prefix="+9111421451"/>
            <sip_account id="SRP" 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 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 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 = 70)
"throttle_average_secs" Integer (Range 1 - 60) 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 / allow / disabled / copy_aleg Attribute Do we offer to support RFC 3262 reliable provisional response (PRACK) for outbound INVITE requests.
(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_mode" trusted / untrusted Attribute Configure our support for RFC 3455 P-Charging-Vector header.
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_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:

Specifically, when handling inbound SIP INVITE, for headers whose name (case-insensitive) matches a header from the SIP INVITE Header configuration.

Specifically, when the service logic expressly adds one of these additional known SIP INVITE Headers to an outbound SIP A-Leg INVITE:

Specifically, when the service logic expressly adds one of these additional known SIP INVITE Headers to an outbound SIP B-Leg INVITE:

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:

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:

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:

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:

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.