Skip to content
Snippets Groups Projects
CHANGES 310 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 16.0.0 to Asterisk 16.1.0 ------------
------------------------------------------------------------------------------

res_rtp_asterisk
------------------
 * The existing strictrtp option in rtp.conf has a new choice availabe, called
   'seqno', which behaves the same way as setting strictrtp to 'yes', but will
   ignore the time interval during learning so that bursts of packets can still
   trigger learning our source.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15 to Asterisk 16 --------------------
------------------------------------------------------------------------------

app_fax
------------------
 * The app_fax module is now deprecated, users should migrate to the
   replacement module res_fax.

app_originate
------------------
 * An 'a' option has been added to the Originate dialplan application which
   will execute the originate in an asynchronous fashion. If set then the
   application will return immediately without waiting for the originated
   channel to answer.

Build System
------------------
 * MALLOC_DEBUG no longer has an effect on Asterisk's ABI.  Asterisk built
   with MALLOC_DEBUG can now successfully load binary modules built without
   MALLOC_DEBUG and vice versa.  Third-party pre-compiled modules no longer
   need to have a special build with it enabled.

 * Asterisk now depends on libjansson >= 2.11.  If this version is not
   available on your distro you can use `./configure --with-jansson-bundled`.

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.

app_setcallerid
------------------
 * The app_setcallerid module has been removed. The CALLERID dialplan function
   should be used instead.

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.

chan_dahdi
------------------
 * Timeouts for reading digits from analog phones are now configurable in
   chan_dahdi.conf: firstdigit_timeout, interdigit_timeout, matchdigit_timeout.

AMI
------------------
 * The ContactStatus and Status fields for the manager events ContactStatus
   and ContactStatusDetail are now set to "NonQualified" when a contact exists
   but has not been qualified.

 * The "Newexten" event is now part of the "dialplan" class. The documentation
   for Asterisk 15 already specified this, but the implementation was actually
   using the "call" class instead.

ARI
------------------
 * The ContactInfo event's contact_status field is now set to "NonQualified"
   when a contact exists but has not been qualified.

app_queue
------------------
 * Added the ability to set the wrapuptime in the configuration of member.
   When set the wrapuptime on the member is used instead of the wrapuptime
   defined for the queue itself.

 * Added predial handler support for caller and callee channels with the
   B and b options respectively.  This is similar to the predial support
   in app_dial.

res_config_sqlite
------------------
 * The res_config_sqlite module is now deprecated, users should migrate to the
   replacement module res_config_sqlite3.

res_monitor
------------------
 * The res_monitor module is now deprecated, users should migrate to the
   replacement module app_mixmonitor.

res_pjsip
------------------
 * A new AMI action, PJSIPShowAors, has been added which displays information
   about all configured PJSIP AORs.

 * A new AMI action, PJSIPShowAuths, has been added which displays information
   about all configured PJSIP Auths.

 * A new AMI action, PJSIPShowContacts, has been added which displays information
   about all configured PJSIP Contacts.

res_pjsip_registrar_expire
------------------
 * The res_pjsip_registrar_expire module has been removed.  The functionality has
   been moved into res_pjsip_registrar.

func_audiohookinherit
------------------
 * The func_audiohookinherit module has been removed. Due to architectural changes
   in Asterisk 12, audiohook inheritance is performed automatically and this
   function now lacks function.

cdr_syslog
------------------
 * The cdr_syslog module is now deprecated and by default it is no longer
   built.

cdr_sqlite
------------------
 * The cdr_sqlite module has been removed. Users should move to using the
   cdr_sqlite3_custom module instead.

format_jpeg
------------------
 * The format_jpeg module has been removed.

pbx_dundi
------------------
 * DUNDi now supports IPv6

------------------
 * libedit is no longer available as an embedded library and must be provided
   by the system.
 * The STATIC_BUILD functionality has been removed as it has not been maintained
   and has not worked in quite some time.
 * The module loader now enforces inter-module dependencies.  This ensures that
   a module is not started before another it depends on, even if preload is used.
   If a dependency is not available or fails to startup this will block any
   dependants from startup.
 * Parts of the Asterisk core which can load configuration from realtime are now
   built-in modules.  It is no longer necessary to preload realtime drivers as
   they are always initialized before the built-in modules.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.5.0 to Asterisk 15.6.0 ------------
------------------------------------------------------------------------------

res_pjsip
------------------
 * A new option 'suppress_q850_reason_headers' has been added to the endpoint
   object. Some devices can't accept multiple Reason headers and get confused
   when both 'SIP' and 'Q.850' Reason headers are received.  This option allows
   the 'Q.850' Reason header to be suppressed.  The default value is 'no'.

res_pjsip_endpoint_identifier_ip
------------------
 * Added regex support to the identify section match_header option.  You
   specify a regex instead of an explicit string by surrounding the header
   value with slashes:
   match_header = SIPHeader: /regex/

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.4.0 to Asterisk 15.5.0 ------------
------------------------------------------------------------------------------

Core
------------------
 * Core bridging and, more specifically, bridge_softmix have been enhanced to
   relay received frames of type TEXT or TEXT_DATA to all participants in a
   softmix bridge.  res_pjsip_messaging and chan_pjsip have been enhanced to
   take advantage of this so when res_pjsip_messaging receives an in-dialog
   MESSAGE message from a user in a conference call, it's relayed to all
   other participants in the call.

 * Support Enhanced Messaging.  SendText now accepts new channel variables
   that can be used to override the To and From display names and set the
   Content-Type of a message.  Since you can now set Content-Type, other
   text/* content types are now valid.
 * ConfbridgeList now shows talking status. This utilizes the same voice
   detection as the ConfbridgeTalking event, so bridges must be configured
   with "talk_detection_events=yes" for this flag to have meaning.

 * ConfBridge can now send events to participants via in-dialog MESSAGEs.
   All current Confbridge events are supported, such as ConfbridgeJoin,
   ConfbridgeLeave, etc.  In addition to those events, a new event
   ConfbridgeWelcome has been added that will send a list of all
   current participants to a new participant.
res_pjsip
------------------
  * Two new options have been added to the system and endpoint objects to
    control whether, on outbound calls, Asterisk will accept updated SDP answers
    during the initial INVITE transaction when 100rel is not in effect.
    This usually happens when the INVITE is forked to multiple UASs and more
    than one sends an SDP answer or when a single UAS needs to change a media
    port to switch from custom ringback to the actual media destination.

    The 'follow_early_media_forked' option sets whether Asterisk will accept
    the updated SDP when the To tag on the subsequent response is different than
    that on the the previous response.  This usually occurs in the forked INVITE
    scenario. The default value is "yes" which is the current behavior.

    The 'accept_multiple_sdp_answers' flag sets whether Asterisk will accept the
    updated SDP when the To tag on the subsequent response is the same as that
    on the previous response. This can occur when a UAS needs to switch media
    ports from custom ringback to the final media path.  The default value is
    "no" which is the current behavior.

    These options have to be enabled system-wide in the system config section
    of pjsip.conf as well as on individual endpoints that require the
    functionality.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.3.0 to Asterisk 15.4.0 ------------
------------------------------------------------------------------------------

Core
------------------
 * A new configuration option "genericplc_on_equal_codecs" was added to the
   "plc" section of codecs.conf to allow generic packet loss concealment even
   if no transcoding was originally needed.  Transcoding via SLIN is forced
   in this case.

res_pjproject
------------------
 * Added the "cache_pools" option to pjproject.conf.  Disabling the option
   helps track down pool content mismanagement when using valgrind or
   MALLOC_DEBUG.  The cache gets in the way of determining if the pool contents
   are used after free and who freed it.

res_pjsip_notify
------------------
 * Extend the PJSIPNotify AMI command to send an in-dialog notify on a
   channel.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 15.2.0 to Asterisk 15.3.0 ------------
------------------------------------------------------------------------------

Core
------------------
 * During dialplan reload log messages are produced for each context,
   extension and include.  These messages are no longer printed by the
   verbose loggers, they are now only logged as debug messages.

app_confbridge
------------------
 * Added the Muted header to the ConfbridgeJoin AMI event to indicate the
   participant's starting mute status.

 * Made the AMI ConfbridgeList action's ConfbridgeList events output all
   the standard channel snapshot headers instead of a few hand-coded channel
   snapshot headers.  The benefit is that the CallerIDName gets disruptive
   characters like CR, LF, Tab, and a few others escaped.  However, an empty
   CallerIDName is now output as "<unknown>" instead of "<no name>".

app_followme
------------------
 * Added a new prompt, connecting-prompt, which will be played
   (if configured) to the "winner" callee before connecting the call.

res_pjsip
------------------
 * Users who are matching endpoints by SIP header need to reevaluate their
   global "endpoint_identifier_order" option in light of the "ip" endpoint
   identifier method split into the "ip" and "header" endpoint identifier
   methods.

 * The pjsip_transport_event feature introduced in 15.1.0 has been refactored.
   Any external modules that may have used that feature (highly unlikey) will
   need to be changed as the API has been altered slightly.

res_pjsip_endpoint_identifier_ip
------------------
 * The endpoint identifier "ip" method previously recognized endpoints either
   by IP address or a matching SIP header.  The "ip" endpoint identifier method
   is now split into the "ip" and "header" endpoint identifier methods.  The
   "ip" endpoint identifier method only matches by IP address and the "header"
   endpoint identifier method only matches by SIP header.  The split allows the
   user to control the relative priority of the IP address and the SIP header
   identification methods in the global "endpoint_identifier_order" option.
   e.g., If you have two type=identify sections where one matches by IP address
   for endpoint alice and the other matches by SIP header for endpoint bob then
   you can now predict which endpoint is matched when a request comes in that
   matches both.

res_pjsip_pubsub
------------------
 * In an earlier release, inbound registrations on a reliable transport
   were pruned on Asterisk restart since the TCP connection would have
   been torn down and become unusable when Asterisk stopped.  This same
   process is now also applied to inbound subscriptions.  Since this
   required the addition of a new column to the ps_subscription_persistence
   realtime table, users who store their subscriptions in a database will
   need to run the "alembic upgrade head" process to add the column to
   the schema.

res_pjsip_transport_management
------------------
 * Since res_pjsip_transport_management provides several attack
   mitigation features, its functionality moved to res_pjsip and
   this module has been removed.  This way the features will always
   be available if res_pjsip is loaded.

------------------------------------------------------------------------------
--- 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.

chan_sip
------------------
 * Calls to invalid extensions are now reported as an ACL failure security event
   "no_extension_match".

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