Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

This is a curated list of new functionality in Asterisk 17 and features which have been developed for Asterisk 17 but were also backported and made available in earlier versions. For a complete list of changes you can consult the CHANGES file in Asterisk 17.


Application event filtering is now supported. An application can now specify an "allowed" and/or "disallowed" list(s) of event types. Only those types indicated in the "allowed" list are sent to the application. Conversely, any types defined in the "disallowed" list are not sent to the application. Note that if a type is specified in both lists "disallowed" takes precedence.

A new REST API call has been added: 'move'. It follows the format 'channels/{channelId}/move' and can be used to move channels from one application to another without needing to exit back into the dialplan. An application must be specified, but the passing a list of arguments to the new application is optional. An example call would look like this:

Code Block
client.channels.move(, app='ari-example', appArgs='a,b,c')

If the channel was inside of a bridge when switching applications, it will remain there. If the application specified cannot be moved to, then the channel will remain in the current application and an event will be triggered named "ApplicationMoveFailed", which will provide the destination application's name and the channel information.

Whenever an ARI application is started, a context will be created for it automatically as long as one does not already exist, following the format 'stasis-<app_name>'. Two extensions are also added to this context: a match-all extension, and the 'h' extension. Any phone that registers under this context will place all calls to the corresponding Stasis application.


A new application, this will queue up attended transfer to the given extension.


A new application, this will redirect all channels currently bridged to the caller channel to the specified destination.


Add "average_all", "highest_all", and "lowest_all" values for the remb_behavior option. These values operate on a bridge level instead of a per-source level. This means that a single REMB value is calculated and sent to every sender, instead of a REMB value that is unique for the specific sender.


Add RINGTIME and RINGTIME_MS variables containing respectively seconds and milliseconds between creation of the dialing channel and receiving the first RINGING signal

Add PROGRESSTIME and PROGRESSTIME_MS variables analogous to the above with respect to the PROGRESS signal. Shorter of these two times should be equivalent to the PDD (Post Dial Delay) value

Add DIALEDTIME_MS and ANSWEREDTIME_MS variables to get millisecond resolution versions of DIALEDTIME and ANSWEREDTIME


You can now indicate that you'd like an ice_host_candidate's local address to be published as well as the mapped address.  See the sample rtp.conf for more information.

DTLS packets will now be fragmented according to the MTU as set in rtp.conf. This allows larger certificates to be used for the DTLS negotiation. By default this value is 1200.


Add 'p' option to stop reading extension if user presses '#' key.


The DUNDi PBX module now supports IPv4/IPv6 dual binding.


A new module "res_mwi_devstate" has been added that allows subscriptions to voicemail boxes using "presence" events.  This allows common BLF keys to act as voicemail waiting indicators.