Skip to content
Snippets Groups Projects
CHANGES 297 KiB
Newer Older
==============================================================================
===
=== This file documents the new and/or enhanced functionality added in
=== the Asterisk versions listed below. This file does NOT include
=== changes in behavior that would not be backwards compatible with
=== previous versions; for that information see the UPGRADE.txt file
=== and the other UPGRADE files for older releases.
===
==============================================================================
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15 to Asterisk 16 --------------------
------------------------------------------------------------------------------

Corey Farrell's avatar
Corey Farrell committed
app_macro
------------------
 * The app_macro module is now deprecated and by default it is no longer
   built.  Users should migrate to app_stack (Gosub).  A warning is logged
   the first time any Macro is used.

chan_sip
------------------
 * New function SIP_HEADERS() enumerates all headers in the incoming INVITE.

 * The variable GET_TRANSFERRER_DATA set in the peer channel causes matching
   headers be retrieved from the REFER message and made accessible to the
   dialplan in the hash TRANSFER_DATA.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.1.0 to Asterisk 15.2.0 ------------
------------------------------------------------------------------------------

Core
------------------
 * Added the "cache_media_frames" option to asterisk.conf.  Disabling the option
   helps track down media frame mismanagement when using valgrind or
   MALLOC_DEBUG.  The cache gets in the way of determining if the frame is
   used after free and who freed it.  NOTE: This option has no effect when
   Asterisk is compiled with the LOW_MEMORY compile time option enabled because
   the cache code does not exist.

res_rtp_asterisk
------------------
 * The X.509 certificate used for DTLS negotation can now be automatically
   generated. This is supported by res_pjsip by specifying
   "dtls_auto_generate_cert = yes" on a PJSIP endpoint. For chan_sip, you
   would set "dtlsautogeneratecert = yes" either in the [general] section of
   sip.conf or on a specific peer.

res_pjsip
------------------
 * The "identify_by" on endpoints can now be set to "ip" to restrict an endpoint
   being matched based only on IP address. To ensure no behavior change the
   default has been changed to "username,ip".

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.0.0 to Asterisk 15.1.0 ------------
------------------------------------------------------------------------------

res_pjsip
------------------
 * The "remove_existing" option now allows a registration to succeed by
   displacing any existing contacts that now exceed the "max_contacts" count.
   Any removed contacts are the next to expire.  The behaviour change is
   beneficial when "rewrite_contact" is enabled and "max_contacts" is greater
   than one.  The removed contact is likely the old contact created by
   "rewrite_contact" that the device is refreshing.

AMI
------------------
 * Added a new CancelAtxfer action that cancels an attended transfer.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14 to Asterisk 15 --------------------
------------------------------------------------------------------------------

app_queue
------------------
 * PAUSEALL/UNPAUSEALL now sets the pause reason in the queue_log if it has
   been defined.

 * A new option, "announce-position-only-up," has been added that, when set to
   yes, causes position announcements to only be played when the caller's
   queue position has improved since the last time that we annouced their
   position. This default is no.

Build System
------------------
 * '--with-pjproject-bundled' is now the default when running ./configure
   It can be disabled with '--without-pjproject-bundled'.

 * A '--with-download-cache' option is now available which is equivalent to
   setting '--with-sounds-cache' and '--with-externals-cache' to the same
   value.  The download cache can also be set via the AST_DOWNLOAD_CACHE
   environment variable.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.6.0 to Asterisk 14.7.0 ------------
------------------------------------------------------------------------------

res_pjsip
------------------
 * The "external_media_address" on transports is now resolved using dnsmgr and
   when dnsmgr refreshes are enabled will be automatically updated with the new
   IP address of a given hostname.

 * A new endpoint parameter "incoming_mwi_mailbox" allows Asterisk to receive
   unsolicited MWI NOTIFY requests and make them available to other modules via
   the stasis message bus.

res_musiconhold
------------------
 * By default, when res_musiconhold reloads or unloads, it sends a HUP signal
   to custom applications (and all descendants), waits 100ms, then sends a
   TERM signal, waits 100ms, then finally sends a KILL signal.  An application
   which is interacting with an external device and/or spawns children of its
   own may not be able to exit cleanly in the default times, expecially if sent
   a KILL signal, or if it's children are getting signals directly from
   res_musiconhoild.  To allow extra time, the 'kill_escalation_delay'
   class option can be used to set the number of milliseconds res_musiconhold
   waits before escalating kill signals, with the default being the current
   100ms.  To control to whom the signals are sent, the "kill_method"
   class option can be set to "process_group" (the default, existing behavior),
   which sends signals to the application and its descendants directly, or
   "process" which sends signals only to the application itself.

 * New dialplan function PJSIP_DTMF_MODE added to get or change the DTMF mode
   of a channel on a per-call basis.

res_xmpp
-----------------
 * OAuth 2.0 authentication is now supported when contacting Google. Follow the
   instructions in xmpp.conf.sample to retrieve and configure the necessary
   tokens.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.5.0 to Asterisk 14.6.0 ------------
------------------------------------------------------------------------------

app_voicemail
------------------
 * A new global option "imap_poll_logout" was added to specify whether need to
   disconnect from the IMAP server after polling of mailboxes.
   Default: no

res_pjsip
------------------
 * A new endpoint option "refer_blind_progress" was added to turn off notifying
   the progress details on Blind Transfer. If this option is not set then
   the chan_pjsip will send NOTIFY "200 OK" immediately after "202 Accepted".
   On default is enabled.
   Some SIP phones like Mitel/Aastra or Snom keep the line busy until
   receive "200 OK".

 * A new endpoint option "notify_early_inuse_ringing" was added to control
   whether to notify dialog-info state 'early' or 'confirmed' on Ringing
   when already INUSE.

 * The endpoint option 'dtmf_mode' has a new option 'auto_dtmf' added. This
   mode works similar to 'auto' except uses DTMF INFO as fallback instead of
   INBAND.

res_agi
------------------
 * The EAGI() application will now look for a dialplan variable named
   EAGI_AUDIO_FORMAT and use that format with the 'enhanced' audio pipe that
   EAGI provides. If not specified, it will continue to use the default signed
   linear (slin).

chan_pjsip
------------------
 * When dialing an endpoint directly or using the PJSIP_DIAL_CONTACTS dialplan
   function any contact which is considered unreachable due to qualify being
   enabled will no longer be called.

 * The asymmetric_rtp_codec option now also controls whether chan_pjsip will
   send media as-is without transcoding if the codec has been negotiated in the
   SDP. If set to "no" then Asterisk will only ever send the preferred codec
   from the SDP, unless the remote side sends a different codec and we will
   switch to match.

Build System
------------------
 * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which can be used
   to pass arbitrary options to the bundled pjproject configure.

 * Automatically set the bundled pjproject configure --host and --build
   options to match those supplied for the asterisk configure.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.4.0 to Asterisk 14.5.0 ------------
------------------------------------------------------------------------------

res_rtp_asterisk
------------------
 * Added the stun_blacklist option to rtp.conf.  Some multihomed servers have
   IP interfaces that cannot reach the STUN server specified by stunaddr.
   Blacklist those interface subnets from trying to send a STUN packet to find
   the external IP address.  Attempting to send the STUN packet needlessly
   delays processing incoming and outgoing SIP INVITEs because we will wait
   for a response that can never come until we give up on the response.
   Multiple subnets may be listed.

Logging
-------------------
 * Added logger_queue_limit to the configuration options.
   All log messages go to a queue serviced by a single thread
   which does all the IO.  This setting controls how big that
   queue can get (and therefore how much memory is allocated)
   before new messages are discarded.
   The default is 1000.

res_pjsip_config_wizard
------------------
 * Two new parameters have been added to the pjsip config wizard.
   Setting 'sends_line_with_registrations' to true will cause the wizard
   to skip the creation of an identify object to match incoming requests
   to the endpoint and instead add the line and endpoint parameters to
   the outbound registration object.
   Setting 'outbound_proxy' is a shortcut for adding individual
   endpoint/outbound_proxy, aor/outbound_proxy and registration/outbound_proxy
   parameters.

res_hep_rtcp
------------------
 * If the 'call-id' value is specified for the uuid_type option and a
   chan_sip channel is used the resulting HEP traffic will now contain the
   SIP Call-ID instead of the Asterisk channel name.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------
------------------------------------------------------------------------------

Build System
------------------
 * LOW_MEMORY no longer has an effect on Asterisk ABI.  Symbols that were
   previously suppressed by LOW_MEMORY are now replaced by stub functions.
   Asterisk built with LOW_MEMORY can now successfully load binary modules
   built without LOW_MEMORY and vice versa.

 * RADIUS backends for CEL and CDR can now also be built using the radcli
   client library, in addition to the existing support for building them
   using either freeradius or radiusclient-ng.

Core
------------------
 * ASTERISK_REGISTER_FILE was no longer useful and has been removed.  Sources
   which use mtx_prof must now manually declare and initialize the variable.

chan_sip
------------------
 * If an offer is received with optional SRTP (a media stream with RTP/AVP but
   which contains a crypto line) chan_sip will now accept it and enable SRTP.
   If you would like to do optional SRTP on outbound you will need to create
   a dialplan that dials with it enabled initially and if it fails fall back to
   without.
res_pjsip
------------------
 * Added endpoint configuration parameter "preferred_codec_only".
   This allow asterisk response to a SIP invite with the single most
   preferred codec rather than advertising all joint codec capabilities.
   This limits the other side's codec choice to exactly what we prefer.

cdr_radius
------------------
 * To fix a memory leak the syslog channel is now empty if it has not been set
   and used by a syslog channel in the logger.

cel_radius
------------------
 * To fix a memory leak the syslog channel is now empty if it has not been set
   and used by a syslog channel in the logger.

RTP
------------------
 * New setting "rtp_pt_dynamic = 35" in asterisk.conf:
   Normally the Dynamic RTP Payload Type numbers are 96-127, which allow just 32
   formats. To avoid the message "No Dynamic RTP mapping available", the range
   was changed to 35-63,96-127. This is allowed by RFC 3551 section 3. However,
   when you use more than 32 formats and calls are not accepted by a remote
   implementation, please report this and go back to rtp_pt_dynamic = 96.

 * A new setting, "rtp_use_dynamic", has been added in asterisk.conf". When set
   to "yes" RTP dynamic payload types are assigned dynamically per RTP instance.
   When set to "no" RTP dynamic payload types are globally initialized to pre-
   designated numbers and function similar to static payload types.

app_originate
------------------
 * Added support to gosub predial routines on both original channel and on the
   created channel using options parameter (like app_dial) B() and b().  This
   allows for adding variables to newly created channel or, e.g. setting callerid.

CLI Commands
------------------
 * 'dialplan show' output will now show [config_file:line_number] instead of
   [registrar] when that information is available. Currently only extensions
   registered by pbx_config when loading/reloading will use this format.

app_queue
------------------
 * Add 'QueueUpdate' application which can be used to track outbound calls
   using app_queue.

pbx_spool
------------------
 * Asterisk will now set the AST_OUTGOING_ATTEMPT channel variable so that
   attempt-specific behavior is possible. This is a 1-based number that
   simply increases by 1 for each attempt.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------
------------------------------------------------------------------------------

AMI
------------------
 * The 'PJSIPShowEndpoint' command's respone event of 'IdentifyDetail' now
   contains a new optional parameter, 'MatchHeader', mapping to the new
   configuration option 'match_header' for the corresponding 'identify' object.
   It should be noted that since 'match_header' takes in a key: value pair, the
   event parameter will contain a ':' as well.

app_record
------------------
 * Added new 'u' option to Record() application which prevents Asterisk from
   truncating silence from the end of recorded files.

res_pjsip_outbound_registration
------------------
 * Outbound registrations are now refreshed when res_stun_monitor detects
   a network change event has happened.
   The 'pjsip send (un)register' CLI commands were updated to accept '*all'
   as an argument to operate on all registrations.
   The 'PJSIP(Un)Register' AMI commands were updated to also accept '*all'.

app_voicemail
------------------
 * The 'Comedian Mail' prompts can now be overriden using the 'vm-login' and
   'vm-newuser' configuration options in voicemail.conf.

 * Added 'fromstring' field to the voicemail boxes. If set, it will override
   the global 'fromstring' field on a per-mailbox basis.

func_channel
------------------
 * Added CHANNEL(callid) to retrieve the call log tag associated with the
   channel.  e.g., [C-00000000]  Dialplan now has access to the call log
   search key associated with the channel so it can be saved in case there
   is a problem with the call.

res_pjsip
------------------
 * A new transport parameter 'symmetric_transport' has been added.
   When a request from a dynamic contact comes in on a transport with this
   option set to 'yes', the transport name will be saved and used for
   subsequent outgoing requests like OPTIONS, NOTIFY and INVITE.  It's
   saved as a contact uri parameter named 'x-ast-txp' and will display with
   the contact uri in CLI, AMI, and ARI output.  On the outgoing request,
   if a transport wasn't explicitly set on the endpoint AND the request URI
   is not a hostname, the saved transport will be used and the 'x-ast-txp'
   parameter stripped from the outgoing packet.  To facilitate recreation of
   subscriptions on asterisk restart, a new column 'contact_uri' needed to be
   added to the ps_subcsription_persistence table.  Since new columns were
   added to both transport and subscription_persistence, an alembic upgrade
   should be run to bring the database tables up to date.

 * A new option, allow_overlap, has been added to endpoints which allows
   overlap dialing functionality to be enabled or disabled. The option defaults
   to enabled.

res_pjsip_transport_websocket
------------------
 * Removed non-secure websocket support.  Firefox and Chrome have not allowed
   non-secure websockets for quite some time so this shouldn't be an issue
   for people.  Attempting to use a non-secure websocket may or may not work
   when Asterisk attempts to send SIP requests to do something like initiate
   call hangup.

res_pjsip_endpoint_identifier_ip
------------------
 * A new option has been added to the 'identify' configuration object,
   'match_header'. The 'match_header' attribute should contain a SIP
   header: value pair that, When set, will cause inbound requests that contain
   the matching SIP header/value pair to be associated with the corresponding
   endpoint. This option is cumulative with the 'match' option, so that if
   either option matches the request, the request is associated with the
   endpoint.

   In a future release, this module will be renamed to something more
   appropriate, as it now matches inbound requests on more than just IP
   address.

Mark Michelson's avatar
Mark Michelson committed
res_rtp_asterisk
-----------------
 * The RTP layer of Asterisk now has support for RFC 5761: "Multiplexing RTP
   Data and Control Packets on a Single Port." So far, the only channel driver
   that supports this feature is chan_pjsip. You can set "rtcp_mux = yes" on
   a PJSIP endpoint in pjsip.conf to enable the feature.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.2.0 to Asterisk 14.3.0 ------------
------------------------------------------------------------------------------

res_pjproject
------------------
 * Added new CLI command "pjproject set log level".  The new command allows
   the maximum PJPROJECT log levels to be adjusted dynamically and
   independently from the set debug logging level like many other similar
   module debug logging commands.

 * Added new companion CLI command "pjproject show log level" to allow the
   user to see the current maximum pjproject logging level.

 * Added new pjproject.conf startup section "log_level' option to set the
   initial maximum PJPROJECT logging level.

res_pjsip_outbound_registration
------------------
 * Statsd no longer logs redundant status PJSIP.registrations.state changes
   for internal state transitions that don't change the reported public status
   state.

res_pjsip_registrar
------------------
 * The PJSIPShowRegistrationInboundContactStatuses AMI command has been added
   to return ContactStatusDetail events as opposed to
   PJSIPShowRegistrationsInbound which just a dumps every defined AOR.

res_pjsip
------------------
 * Six existing contact fields have been added to the end of the
   ContactStatusDetail AMI event:
   ID, AuthenticateQualify, OutboundProxy, Path, QualifyFrequency and
   QualifyTimeout.  Existing fields have not been disturbed.

res_pjsip_endpoint_identifier_ip
------------------
 * SRV lookups can now be done on provided hostnames to determine additional
   source IP addresses for requests. This is configurable using the
   "srv_lookups" option on the identify and defaults to "yes".

ARI
------------------
 * The 'ari set debug' command has been enhanced to accept 'all' as an
   application name.  This allows dumping of all apps even if an app
   hasn't registered yet.

 * 'ari set debug' now displays requests and responses as well as events.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.1.0 to Asterisk 14.2.0 ------------
------------------------------------------------------------------------------

AMI
------------------
 * Events that reference a bridge may now contain two new optional fields:
   - 'BridgeVideoSourceMode': the video source mode for the bridge.
     Can be one of 'none', 'talker', or 'single'.
   - 'BridgeVideoSource': the unique ID of the channel that is the video
     source in this bridge, if one exists.

 * A new event, BridgeVideoSourceUpdate, has been added with a class
   authorization of CALL. The event is raised when the video source changes
   in a multi-party mixing bridge.

ARI
------------------
 * The bridges resource now exposes two new operations:
   - POST /bridges/{bridgeId}/videoSource/{channelId}: Set a video source in a
     multi-party mixing bridge
   - DELETE /bridges/{bridgeId}/videoSource: Remove the set video source,
     reverting to talk detection for the video source

 * The bridge model in any returned response or event now contains the following
   optional fields:
   - video_mode: the video source mode for the bridge. Can be one of 'none',
     'talker', or 'single'.
   - video_source_id: the unique ID of the channel that is the video source
     in this bridge, if one exists.

 * A new event, BridgeVideoSourceChanged, has been added for bridges.
   Applications subscribed to a bridge will receive this event when the source
   of video changes in a mixing bridge.

 * The ARI major version has been bumped. There are not any known breaking changes
   in ARI. The major version has been bumped because otherwise we can end up with
   overlapping version numbers between different Asterisk versions. Now each major
   version of Asterisk will bring with it a change in the major version of ARI.
   The ARI version in Asterisk 14 is now 2.0.0.

res_pjsip
------------------
 * Automatic dual stack support is now implemented. Depending on DNS resolution
   and the transport used for sending a message the SIP signaling and SDP will
   be updated with the correct IP address and protocol version. This means that
   the rtp_ipv6 and t38_udptl_ipv6 options no longer have any effect. The
   res_pjsip_multihomed module has also been moved into core res_pjsip to ensure
   that messages are updated with the correct address information in all cases.

chan_pjsip
------------------
 * The default behavior for RTP codecs has been changed. The sending codec will
   now match the receiving codec. This can be turned off and behavior reverted
   to asymmetric using the "asymmetric_rtp_codec" endpoint option. If this
   option is set then the sending and received codec are allowed to differ.

CLI Commands
------------------
 * Three new CLI commands have been added for ARI:
   - ari show apps:
      Displays a listing of all registered ARI applications.
   - ari show app <name>:
      Display detailed information about a registered ARI application.
   - ari set debug <name> <on|off>:
      Enable/disable debugging of an ARI application. When debugged, verbose
      information will be sent to the Asterisk CLI.


Queue
------------------
 * A new dialplan variable, ABANDONED, is set when the call is not answered
   by an agent.

res_ari
------------------
 * The configuration file ari.conf now supports a channelvars option, which
   specifies a list of channel variables to include in each channel-oriented
   ARI event.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 14.0.0 to Asterisk 14.1.0 ------------
------------------------------------------------------------------------------

Build System
------------------
 * The res_digium_phone, codec_g729a, codec_silk, codec_siren7 and
   codec_siren14 binary modules hosted at downloads.digium.com can now be
   automatically downloaded and installed during the Asterisk install
   process.  If selected in menuselect, when 'make install' is run, the
   script will check the downloads site for a new version and download
   and install it if needed.  The '--with-externals-cache' option to
   ./configure can be used to specify a location to cache the latest
   tarballs so they don't have to be re-downloaded for every install.

app_voicemail
------------------
 * Added "tps_queue_high" and "tps_queue_low" options.
   The options can modify the taskprocessor alert levels for this module.
   Additional information can be found in the sample configuration file at
   config/samples/voicemail.conf.sample.

res_pjsip_mwi
------------------
 * Added "mwi_tps_queue_high" and "mwi_tps_queue_low" global configuration
   options to tune taskprocessor alert levels.

 * Added "mwi_disable_initial_unsolicited" global configuration option
   to disable sending unsolicited MWI to all endpoints on startup.
   Additional information can be found in the sample configuration file at
   config/samples/pjsip.conf.sample.

chan_pjsip
------------------
 * A new dialplan function, PJSIP_SEND_SESSION_REFRESH, has been added. When
   invoked, a re-INVITE or UPDATE request will be sent immediately to the
   endpoint underlying the channel. When used in combination with the existing
   dialplan function PJSIP_MEDIA_OFFER, this allows the formats on a PJSIP
   channel to be re-negotiated and updated after session set up.

res_pjsip
------------------
 * A new endpoint configuration parameter 'contact_user' has been added which
   when set will override the default user set on Contact headers in outgoing
   requests.
 * If you are using a sorcery realtime backend to store global res_pjsip
   options (ps_globals table) then you now have to do a res_pjsip reload for
   changes to these options to take effect.  If you are using pjsip.conf to
   configure these options then you already had to do a reload after making
   changes.

 * Added "ignore_uri_user_options" global configuration option for
   compatibility with an ITSP that sends URI user field options.  When enabled
   the user field is truncated at the first semicolon.
   Example:
   URI: "sip:1235557890;phone-context=national@x.x.x.x;user=phone"
   The user field is "1235557890;phone-context=national"
   Which is truncated to this: "1235557890"

   Note: The caller-id and redirecting number strings obtained from incoming
   SIP URI user fields are now always truncated at the first semicolon.

res_rtp_asterisk
------------------
  * An option, ice_blacklist, has been added which allows certain subnets to be
    excluded from local ICE candidates.

app_confbridge
------------------
  * Some sounds played into the bridge are played asynchronously. This, for
    instance, allows a channel to immediately exit the ConfBridge without having
    to wait for a leave announcement to play.

app_dial
------------------
 * Added the "Q" option which sets the Q.850/Q.931 cause on unanswered channels
   when another channel answers the call.  The default of ANSWERED_ELSEWHERE
   is unchanged.

res_ari
------------------
 * ARI events will all now include a new field in the root of the JSON message,
   'asterisk_id'.  This will be the unique ID for the Asterisk system
   transmitting the event.  The value can be overridden using the 'entityid'
   setting in asterisk.conf.

Matthew Jordan's avatar
Matthew Jordan committed
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13 to Asterisk 14 --------------------
------------------------------------------------------------------------------

AMI
-----------------
 * A new event, "DialState" has been added. This is similar to "DialBegin" and
 "DialEnd" in that it tracks the state of a dialed call. The difference is that
 this indicates some intermediate state change in the dial attempt, such as
 "RINGING", "PROGRESS", or "PROCEEDING".

ARI
-----------------
 * A new ARI method has been added to the channels resource. "create" allows for
   you to create a new channel and place that channel into a Stasis application.
   This is similar to origination except that the specified channel is not
   dialed. This allows for an application writer to create a channel, perform
   manipulations on it, and then delay dialing the channel until later.
 * To complement the "create" method, a "dial" method has been added to the
   channels resource in order to place a call to a created channel.
 * All operations that initiate playback of media on a resource now support
   a list of media URIs. The list of URIs are played in the order they are
   presented to the resource. A new event, "PlaybackContinuing", is raised when
   a media URI finishes but before the next media URI starts. When a list is
   played, the "Playback" model will contain the optional attribute
   "next_media_uri", which specifies the next media URI in the list to be played
   back to the resource. The "PlaybackFinished" event is raised when all media
   URIs are done.

 * Stored recordings now allow for the media associated with a stored recording
   to be retrieved. The new route, GET /recordings/stored/{name}/file, will
   transmit the raw media file to the requester as binary.

 * "Dial" events have been modified to not only be sent when dialing begins and ends.
 They now are also sent for intermediate states, such as "RINGING", "PROGRESS", and
 "PROCEEDING".

BridgeAdd
------------------
 * A new application in Asterisk, this will join the calling channel
   to an existing bridge containing the named channel prefix.

ChanSpy
------------------
 * Added the 'l' option, which forces ChanSpy's audiohook to use a long queue
   to store the audio frames. This option is useful if audio loss is
   experienced when using ChanSpy, but may introduce some delay in the audio
   feed on the listening channel.

Alexander Traud's avatar
Alexander Traud committed
Codecs
------------------
 * Added format attribute negotiation for the iLBC audio codec. Format attribute
   negotiation is provided by the res_format_attr_ilbc module. iLBC 20 is the
   default now. Falls back to iLBC 30, when the remote party requests this.

ConfBridge
------------------
 * Added the ability to pass options to MixMonitor when recording is used with
   ConfBridge. This includes the addition of the following configuration
   parameters for the 'bridge' object:
   - record_file_timestamp: whether or not to append the start time to the
     recorded file name
   - record_options: the options to pass to the MixMonitor application
   - record_command: a command to execute when recording is finished
   Note that these options may also be with the CONFBRIDGE function.

ControlPlayback
------------------
 * Remote files can now be retrieved and played back. See the Playback
   dialplan application for more details.

FollowMe
------------------
 * It is now possible to disable the prompt from a callee by setting
   'enable_callee_prompt = no' in followme.conf.

Playback
------------------
 * Remote files can now be retrieved and played back via the Playback and other
   media playback dialplan applications. This is done by directly providing
   the URL to play to the dialplan application:
     same => n,Playback(http://1.1.1.1/howler-monkeys-fl.wav)
   Note that unlike 'normal' media files, the entire URI to the file must be
   provided, including the file extension. Currently, on HTTP and HTTPS URI
   schemes are supported.

Queue
-------------------
 * Added field ReasonPause on QueueMemberStatus if set when paused, the reason
   the queue member was paused.

 * Added field LastPause on QueueMemberStatus for time when started the last
   pause for a queue member.

 * Show the time when started the last pause for queue member on CLI for command
   'queue show'.

SMS
------------------
 * Added the 'n' option, which prevents the SMS from being written to the log
   file. This is needed for those countries with privacy laws that require
   providers to not log SMS content.

Channel Drivers
------------------
chan_dahdi
------------------
 * The CALLERID(ani2) value for incoming calls is now populated in featdmf
   signaling mode.  The information was previously discarded.
 * Added the force_restart_unavailable_chans compatibility option.  When
   enabled it causes Asterisk to restart the ISDN B channel if an outgoing
   call receives cause 44 (Requested channel not available).
chan_iax2
------------------
 * The iax.conf forcejitterbuffer option has been removed.  It is now always
   forced if you set iax.conf jitterbuffer=yes.  If you put a jitter buffer
   on a channel it will be on the channel.
 * A new configuration parameters, 'calltokenexpiration', has been added that
   controls the duration before a call token expires. Default duration is 10
   seconds. Setting this to a higher value may help in lagged networks or those
   experiencing high packet loss.
 * Plaintext auth mode is deprecated and removed from possible default modes.

chan_rtp (was chan_multicast_rtp)
------------------
 * Added unicast RTP support and renamed chan_multicast_rtp to chan_rtp.

 * The format for dialing a unicast RTP channel is:
   UnicastRTP/<destination-addr>[/[<options>]]
   Where <destination-addr> is something like '127.0.0.1:5060'.
   Where <options> are in standard Asterisk flag options format:
   c(<codec>) - Specify which codec/format to use such as 'ulaw'.
   e(<engine>) - Specify which RTP engine to use such as 'asterisk'.

 * New options were added for a multicast RTP channel.  The format for
   dialing a multicast RTP channel is:
   MulticastRTP/<type>/<destination-addr>[/[<control-addr>][/[<options>]]]
   Where <type> can be either 'basic' or 'linksys'.
   Where <destination-addr> is something like '224.0.0.3:5060'.
   Where <control-addr> is something like '127.0.0.1:5060'.
   Where <options> are in standard Asterisk flag options format:
   c(<codec>) - Specify which codec/format to use such as 'ulaw'.
   i(<address>) - Specify the interface address from which multicast RTP
     is sent.
   l(<enable>) - Set whether packets are looped back to the sender.  The
     enable value can be 0 to set looping to off and non-zero to set
     looping on.
   t(<ttl>) - Set the time-to-live (TTL) value for multicast packets.

chan_sip
------------------
 * New 'rtpbindaddr' global setting. This allows a user to define which
   ipaddress to bind the rtpengine to. For example, chan_sip might bind
   to eth0 (10.0.0.2) but rtpengine to eth1 (192.168.1.10).
 * DTLS related configuration options can now be set at a general level.
   Enabling DTLS support, though, requires enabling it at the user
   or peer level.
 * Added the possibility to set the From: header through the the SIP dial
   string (populating the fromuser/fromdomain fields), complementing the
   [!dnid] option for the To: header that has existed since 1.6.0 (1d6b192).
   NOTE: This is again separated by an exclamation mark, so the To: header may
   not contain one of those.
 * Session-Timers (RFC 4028) work for TCP (and TLS) transports as well now.
   Previously Asterisk dropped calls only with UDP transports. However with
   longer international calls via TCP, the SIP channel might break, because
   all hops on the Internet route must stay online (have not a single power
   outage, for example). Therefore with Session-Timers enabled (which are
   enabled at default), you might see additional dropped calls. Consequently
   please, consider to go for session-timers=refuse in your sip.conf.

chan_pjsip
------------------
 * New 'user_eq_phone' endpoint setting. This adds a 'user=phone' parameter
   to the request URI and From URI if the user is determined to be a phone
   number.

 * New 'moh_passthrough' endpoint setting. This will pass hold and unhold
   requests through using SIP re-invites with sendonly and sendrecv accordingly.

 * Added the pjsip.conf system type disable_tcp_switch option.  The option
   allows the user to disable switching from UDP to TCP transports described
   by RFC 3261 section 18.1.1.

 * New 'line' and 'endpoint' options added on outbound registrations. This
   allows some identifying information to be added to the Contact of the
   outbound registration. If this information is present on messages received
   from the remote server the message will automatically be associated with the
   configured endpoint on the outbound registration.

Core
------------------
 * The core of Asterisk uses a message bus called "Stasis" to distribute
   information to internal components. For performance reasons, the message
   distribution was modified to make use of a thread pool instead of a
   dedicated thread per consumer in certain cases. The initial settings for
   the thread pool can now be configured in 'stasis.conf'.

 * A new core DNS API has been implemented which provides a common interface
   for DNS functionality. Modules that use this functionality will require that
   a DNS resolver module is loaded and available.

 * Modified processing of command-line options to first parse only what
   is necessary to read asterisk.conf. Once asterisk.conf is fully loaded,
   the remaining options are processed.  The -X option now applies to
   asterisk.conf only.  To enable #exec for other config files you must
   set execincludes=yes in asterisk.conf.  Any other option set on the
   command-line will now override the equivalent setting from asterisk.conf.
 * The TLS core in Asterisk now supports X.509 certificate subject alternative
   names. This way one X.509 certificate can be used for hosts that can be
   reached under multiple DNS names or for multiple hosts.

 * The Asterisk logging system now supports JSON structured logging. Log
   channels specified in logger.conf or added dynamically via CLI commands now
   support an optional specifier prior to their levels that determines their
   formatting. To set a log channel to format its entries as JSON, a formatter
   of '[json]' can be set, e.g.,
      full => [json]debug,verbose,notice,warning,error

 * The core now supports a 'media cache', which stores temporary media files
   retrieved from external sources. CLI commands have been added to manipulate
   and display the cached files, including:
   - 'media cache show <all>' - show all cached media files, or details about
     one particular cached media file
   - 'media cache refresh <item>' - force a refresh of a particular media file
     in the cache
   - 'media cache delete <item>' - remove an item from the cache
   - 'media cache create <uri>' - retrieve a URI and store it in the cache

 * The ability for device state hints to be automatically created as a result of
   device state changes now exists in the PBX. This functionality is referred to
   as "autohints" and is configurable in extensions.conf by placing "autohints=yes"
   in the context. If enabled a device state hint will be automatically created
   with the name of the device.
* If Asterisk is built with systemd support, and run under systemd, it will
  notify systemd of its state using sd_notify. Use 'Type=notify' in
  asterisk.service.

Functions
------------------
 * The func_odbc global option "single_db_connection" default value has been
   changed to 'no'.

Formats
------------------
 * New module format_ogg_speex added which supports Speex codec inside
   Ogg containers (filename extension .spx).


CHANNEL
------------------
 * Added CHANNEL(onhold) item that returns 1 (onhold) and 0 (not-onhold) for
   the hold status of a channel.

CURL
------------------
 * The CURL function now supports a write option, which will save the retrieved
   file to a location on disk. As an example:
     same => n,Set(CURL(https://1.1.1.1/foo.wav)=/tmp/foo.wav)
   will save 'foo.wav' to /tmp.

DTMF Features
------------------
 * The transferdialattempts default value has been changed from 1 to 3. The
   transferinvalidsound has been changed from "pbx-invalid" to
   "privacy-incorrect". These were changed to make DTMF transfers be more
   user-friendly by default.
res_http_media_cache
------------------
 * A backend for the core media cache, this module retrieves media files from
   a remote HTTP(S) server and stores them in the core media cache for later
   playback.

res_musiconhold
------------------
 * Added sort=randstart to the sort options. It sorts the files by name and
   then chooses the first file to play at random.
 * Added preferchannelclass=no option to prefer the application-passed class
   over the channel-set musicclass. This allows separate hold-music from
   application (e.g. Queue or Dial) specified music.
res_resolver_unbound
------------------
 * Added a res_resolver_unbound module which uses the libunbound resolver library
   to perform DNS resolution. This module requires the libunbound library to be
   installed in order to be used.

res_pjsip
------------------
 * A new SIP resolver using the core DNS API has been implemented. This relies on
   external SIP resolver support in PJSIP which is only available as of PJSIP
   2.4. If this support is unavailable the existing built-in PJSIP SIP resolver
   will be used instead. The new SIP resolver provides NAPTR support, improved
   SRV support, and AAAA record support.
res_pjsip_info_empty
--------------------
 * A new module that can respond to empty Content-Type INFO packets during call.
   Some SBCs will terminate a call if their empty INFO packets are not responded
   to within a predefined time.

res_pjsip_outbound_registration
-------------------------------
* A new 'fatal_retry_interval' option has been added to outbound registration.
  When set (default is zero), and upon receiving a failure response to an
  outbound registration, registration is retried at the given interval up to
  'max_retries'.

res_pjsip_outbound_publish
------------------
 * Added a new multi_user option that when set to 'yes' allows a given configuration
   to be used for multiple users.
CEL Backends
------------------

cel_pgsql
------------------
 * Added a new option, 'usegmtime', which causes timestamps in CEL events
   to be logged in GMT.
 * Added support to set schema where located the table cel. This settings is
   configurable for cel_pgsql via the 'schema' in configuration file
   cel_pgsql.conf.

CDR Backends
------------------

cdr_adaptive_odbc
------------------
 * Added the ability to set the character to quote identifiers. This
   allows adding the character at the start and end of table and column
   names. This setting is configurable for cdr_adaptive_odbc via the
   quoted_identifiers in configuration file cdr_adaptive_odbc.conf.

cdr_odbc
------------------
 * Added a new configuration option, "newcdrcolumns", which enables use of the
   post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'.
cdr_csv
------------------
 * Added a new configuration option, "newcdrcolumns", which enables use of the
   post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.10.0 to Asterisk 13.11.0 ----------
------------------------------------------------------------------------------

chan_dahdi
------------------
 * Added "faxdetect_timeout" option.
   The option determines how many seconds into a call before faxdetect
   is disabled for the call.  Setting the value to zero disables the timeout.

res_pjsip
------------------
 * Added "fax_detect_timeout" to endpoint.