Skip to content
Snippets Groups Projects
CHANGES 303 KiB
Newer Older
  • Learn to ignore specific revisions
  • ==============================================================================
    
    ===
    === 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 --------------------
    ------------------------------------------------------------------------------
    
    
    app_fax
    ------------------
     * The app_fax module is now deprecated, users should migrate to the
       replacement module res_fax.
    
    
    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.
    
    
    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.
    
    
    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.
    
    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.
    
    
    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.
    
    
    ------------------
    
     * libedit is no longer available as an embedded library and must be provided
       by the system.
    
    
    ------------------------------------------------------------------------------
    --- Functionality changes from Asterisk 15.3.0 to Asterisk 15.4.0 ------------
    ------------------------------------------------------------------------------
    
    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.
    
    
    ------------------------------------------------------------------------------
    --- 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
       '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.