Login | Register


About -> Available Versions -> 3.1.x Releases -> Release 3.1.0

This page has been visited 3326 times.

1.  Migration from 3.0.x to 3.1.0

2.  What is new in 3.1.0

2.1  OpenSIPS script

  • the break keyword now fully works with any (nested) switch, while and for-each statements (source)
  • the strange if $var(x) {... syntax is not allowed anymore (source)
  • the return statement has been extended. Now you can also say return 1; or return $var(foo); (source)
  • the +=, -=, *=, /=, %=, &=, |= and ^= operators are now fully working (source)
  • added new IP transformation {isprivate} to test if an IP address (as string) is a private or not
  • added new IP transformations {isip4} and {isip6} to test if an IP address (as string) is an IPv4 or IPv6 address
  • auto_aliases parameter's default value was changed to off/no/0.
  • the listen parameter was renamed as socket preserving the same definition and behavior
  • the tcp_listen_backlog parameter was renamed as tcp_socket_backlog preserving the same definition and behavior
  • new $socket_in/$socket_in() and $socket_out/$socket_out() scripting variables to provide detailed access to the inbound socket (used to received the message) and outbound socket (used to send out the message). These variables obsolete $fs, $Ri, $Rp, $af, $pr and $proto
  • new $msg.flag(name) and $branch.flag(name)[idx] read/write variables for accessing a single message/branch flag. Very useful for xlog'ing
  • new $msg.is_request and $msg.type variables to test/tell you if the current SIP message is a request or reply.

2.2  OpenSIPS core

  • core functions now benefit from the same function parameter interface introduced in OpenSIPS 3.0 for module functions. See the function calling conventions here.

2.3  OpenSIPS core MI functions

  • you can now raise an event using the raise_event core MI function.

2.4  [NEW] AUTH_JWT module

The module implements authentication over JSON Web Tokens. In some cases ( ie. WebRTC ) the user authenticates on another layer ( other than SIP ), so it makes no sense to double-authenticate it on the SIP layer. Thus, the SIP client will simply present the JWT auth token it received from the server, and pass it on to OpenSIPS which will use that for authentication purposes. For more, see the module documentation.

2.5  [NEW] Call Operations module

The new CallOps module provides a set of functions to control the behavior of an ongoing call. Using this module you can start a new call, trigger call blind and attended transfers, put a call on hold, etc. Check out more information in the module's documentation page.

2.6  [NEW] Media Exchange module

A new module that provides means to exchange SDP bodies between different calls has been added. Using this new module one can implement enhanced features such as playing back announcements or music on hold files during an ongoing call, or listening a conversation of two different participants. You can find more information about the new module in the module's documentation page.

2.7  [NEW] PRESENCE_DFKS module

The module enables the handling of the "as-feature-event" event package (as defined by Broadsoft's Device Feature Key Synchronization protocol) by the presence module. This can be used to synchronize the status of features such as Do Not Disturb and different forwarding types between a SIP phone and a SIP server. Technical specs and more details are available in the module's readme. Also, for more , see this blog post.

2.8  [NEW] RATE_CACHER module

The rate_cacher module provides a means of caching and real-time querying of the ratesheets assigned to your clients and / or vendors. It also allows for real-time cost-based routing and cost-based filtering. What the module is able to do, how to provision and use it, all are nicely described in this blog post.

2.9  [NEW] STIR_SHAKEN module

This module adds support for implementing STIR/SHAKEN (RFC 8224, RFC 8588) Authentication and Verification services in OpenSIPS. A more comprehensive description is available on the OpenSIPS blog, while the technical details are available in the module's readme.

2.10  [NEW] Quality-based Routing Module (qrouting)

A new module which keeps track of the signaling quality of each outbound gateway at runtime and dynamically alters the gateway ordering in order to ensure an optimal quality for your platform's PSTN termination signaling! (documentation) (blog)

2.11  [NEW] UUID module

This module provides a way to generate universally unique identifiers (UUID) as specified in RFC 4122 for use in the OpenSIPS script.

2.12  ACC module

  • any acc variables set within the global onreply_route are now carried over to the stateful reply routes (e.g. transaction-level on-reply route and branch-level on-reply route), as well as until the end of the dialog
  • new acc_load_ctx_from_dlg() and acc_unload_ctx_from_dlg() functions to load the accounting context of another dialog.
  • write all the possible acc fields for failed accounting also, when using a DB backend with no schema such as db_flatstore.

2.13  AUTH module

  • add support for including the "auth-int" type of the qop parameter in the challange.


  • new cluster_id module parameter that enables replication support for the back-to-back underlying layer. This provides clustering support for some higher level modules that use the B2B engine, namely b2b_logic and media_exchange. You can find more information in this blog post.

2.15  B2B_LOGIC

  • new $b2b_logic.key variable that returns the key of the current B2B session
  • new $b2b_logic.entity variable that returns information(entity key, Call-ID) about the entities involved in the current B2B session
  • new $b2b_logic.ctx variable that provides a custom Key-Value storage in the context of the ongoing B2B session.

2.16  CACHEDB_MONGODB module

  • added support for "Timestamp" and "Binary" data types

2.17  CALL_CENTER module

  • added improved wrapup time support. Now there is optional per-flow and per-agent wrapup time.
  • added per-flow call dissuading support; the dissuading means to redirect a call to another destination (SIP URI), if the queue/flow is overloaded:
    • if the number of calls already in the queue exceeds the diss_qsize_th threshold
    • if the estimated time to wait of the queue exceeds the diss_ewt_th threshold
    • if the call was waiting in the queue for longer than diss_onhold_th threshold
  • the cc_agents & cc_flows tables customization via module parameter (names of the tables and names of the columns)
  • an optional separate db_url is available for runtime tables (cc_calls)
  • new module parameter reject_on_no_agents to avoid rejection of new incoming calls if there is no agent logged in the flow; Such calls will be queued.
  • new optional script_param parameter to the cc_handle_call() to be passed as parameter to the "callcenter" and "agent" B2B scenarios. It is intended for custom integration of the call center module and it is 100% up to the script writer about the value and purpose of this parameter, OpenSIPS will not touch or interpret it.
  • new audio message can be played back to the agent to announce him about the flow he's getting the call for, using the message_flow_id column in the database.

2.18  CFGUTILS module

2.19  DIALOG module

2.20  DISPATCHER module

  • new dispatching algorithm 10, for using a a script route (defined via the algo_route module parameter) for calculating the weights of the destinations.
  • new mechanism for operating with script attributes:
  • improve clustering with data sync mechanism (at startup and after DB reload)

2.21  DROUTING module

  • support for non-digit characters in routing prefixes was added. The new modparam extra_prefix_chars allows the definition of a list of such extra non-digit chars.
  • new dr_match() function for testing the matching of a number against the DR rules (with no routing, just matching).
  • improve clustering with data sync mechanism (at startup and after DB reload)

2.22  EVENT_DATAGRAM module

  • The event payload is now formated as a JSON-RPC notification instead of the custom OpenSIPS line oriented formatting.

2.23  Event RabbitMQ module

  • provide a new parameter, suppress_event_name that can be used to suppress the name of the event sent in raised notifications
  • the event payload is now formated as a JSON-RPC notification instead of the custom OpenSIPS line oriented formatting.

2.24  FRAUD_DETECTION module

  • the threshold names reported in the events have been normalized to: "calls-per-minute", "total-calls", "concurrent-calls", "sequential-calls" and "call-duration".


  • improve clustering with data sync mechanism (at startup and after DB reload)
  • add opaque, DB provisioned attribute strings to destinations. There are visible in the output of lb_list and lb_status MI commands, and can also be returned in the script through a new attrs optional parameter for the following script functions: lb_start, lb_next,lb_start_or_next, load_balance, lb_is_destination.

2.26  MATHOPS module

  • math_rpn() now additionally supports negative operands

2.27  MI_FIFO module

  • fifo_name is no longer mandatory (default: "/tmp/opensips_fifo")

2.28  MID_REGISTRAR module

2.29  PUA_DIALOGINFO module

There is major rework of the module not make it call forking enabled - the 'pua_dialoginfo' module is able now to get access to the transaction information (not only to the dialog information as before); this made the module aware of the multiple branches created, not only dialog aware, so data related to call branches can now be also published. The new BLF implementation has two major advantages:

  • it is able to expose events related to call forking (prior to call answering). This will provide a more accurate insight of the call genesis.
  • it correctly reports the callee party, both in serial forking (when the callee changes) and in parallel forking (when you have multiple callee parties in the same time); see the new dialoginfo_set_branch_callee() and dialoginfo_mute_branch() functions.

See more details in this comprehensive blog post.

2.30  PRESENCE module

  • add the full-sharing option for the cluster_federation_mode module parameter. In this new mode of operation, the published state is kept on all presence nodes even when there aren't any local subscribers.

2.31  PROTO_SMPP module

  • added support for UCS2 encoding in SMS messages (in & out)

2.32  REGISTRAR module

2.33  REST_CLIENT module

2.34  RTPEngine module

  • Add new functions to manipulate RTP streams from rtpproxy, such as rtpengine_play_media, rtpengine_stop_media, rtpengine_block_media, rtpengine_unblock_media, rtpengine_block_dtmf, rtpengine_unblock_dtmf, rtpengine_start_forwarding, rtpengine_stop_forwarding, rtpengine_play_dtmf. You can find all the available functions here.
  • Add new statistics for variables provided by RTPEngine: jitter-average, roundtrip-average, packetloss-average, jitter-min, roundtrip-min, packetloss-min, jitter-max, roundtrip-max, packetloss-max, jitter-min-at, roundtrip-min-at, packetloss-min-at, jitter-max-at, roundtrip-max-at, packetloss-min-at.
  • Intercept RFC 22833/4733 DTMF events and trigger them in OpenSIPS using the new E_RTPENGINE_NOTIFICATION event.

2.35  RTPProxy module

  • Add support for intercepting RFC 22833/4733 DTMF events and trigger them in OpenSIPS using the new E_RTPPROXY_DTMF_EVENT. This feature is currently available in the RTPProxy rtpp_2_1_dtmf branch.
  • Provide means to specify a custom notification socket for RTPProxy by adding it as a parameter to the n flag. Find more information in the rtpproxy_engage documentation.

2.36 SIGNALING module

  • new script variable $sip_local_totag to return the local To-tag that will be used by OpenSIPS for locally sending replies to the current SIP request.

2.37  SIPREC module

  • Provide extra headers to the request going to the SIPREC server when calling the siprec_start_recording function.

2.38  SMPP module

  • The send_smpp_message function can now accept variable source and destination numbers, as well as body and encoding.
  • The function also does auto-conversion between UTF-8 and GSM7.

2.39  TOPOLOGY_HIDING module

  • NEW th_contact_encode_scheme modparam that allows changing the encoding scheme for the Contact URI parameter between base64 and base32.

2.40  TLS_MGM module

  • The tls_method parameter can now accept a range of TLS versions to accept.
  • Add support for TLSv3

2.41  UAC_AUTH module

  • add support for the "auth-int" type of the qop parameter presented in the challange.

2.42  USRLOC module

  • The 'domain' attribute has been added to all events

Page last modified on June 02, 2020, at 03:39 PM