Skip to content
Snippets Groups Projects
CHANGES 372 KiB
Newer Older
   Also Call-Id header may contain the source address of registered endpoint.
   Added new fields ViaAddress,CallID to AMI event ContactStatus

 * Endpoint IP Access Controls
   Added new configuration Endpoint options:
    "acl" - list of IP ACL section names in acl.conf
    "deny" - List of IP addresses to deny access from
    "permit" - List of IP addresses to permit access from
    "contact_acl" - List of Contact ACL section names in acl.conf
    "contact_deny" - List of Contact header addresses to deny
    "contact_permit" - List of Contact header addresses to permit

 * Added "reg_server" to contacts.
   If the Asterisk system name is set in asterisk.conf, it will be stored
   into the "reg_server" field in the ps_contacts table to facilitate
   multi-server setups.
 * When starting Asterisk, received traffic will now be ignored until Asterisk
   has loaded all modules and is fully booted.

res_hep
------------------
 * Added a new option, 'uuid_type', that sets the preferred source of the Homer
   correlation UUID. The valid options are:
   - call-id: Use the PJSIP SIP Call-ID header value
   - channel: Use the Asterisk channel name
   The default value is 'call-id'. In the event that a HEP module cannot find a
   valid value using the specified 'uuid_type', the module may fallback to a
   more readily available source for the correlation UUID.

res_odbc
------------------
 * A new option has been added, 'max_connections', which sets the maximum number
   of concurrent connections to the database. This option defaults to 1 which
   returns the behavior to that of Asterisk 13.7 and prior.

app_confbridge
------------------
 * Added a bridge profile option called regcontext that allows you to
   dynamically register the conference bridge name as an extension into
   the specified context.  This allows tracking down conferences on multi-
   server installations via alternate means (DUNDI for example). By default
   this feature is not used.

Codecs
------------------
 * Added the associated format name to 'core show codecs'.

res_ari_channels
------------------
 * Added 'formats' to channel create/originate to allow setting the allowed
   formats for a channel when no originator channel is available.  Especially
   useful for Local channel creation where no other format information is
   available.  'core show codecs' can now be used to look up suitable format
   names.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.8.0 to Asterisk 13.9.0 ------------
------------------------------------------------------------------------------

res_parking:
 - The dynamic parking lot creation channel variables PARKINGDYNAMIC,
   PARKINGDYNCONTEXT, PARKINGDYNEXTEN, and PARKINGDYNPOS are now looked
   for in the parker's channel instead of the parked channel.  This is only
   of significance if the parker uses blind transfer or the DTMF one-step
   parking feature.  You need to use the double underscore '__' inheritance
   for these variables.  The indefinite inheritance is also recommended
   for the PARKINGEXTEN variable.

res_pjsip
------------------
 * Added new global option (disable_multi_domain) to pjsip.
   Disabling Multi Domain can improve realtime performace by reducing
   number of database requsts.

chan_pjsip
------------------
 * Added 'pjsip show channelstats' CLI command.
res_pjsip_outbound_publish
------------------
 * Added support for setting the transport used on outbound publish
   using the transport configuration option.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.7.0 to Asterisk 13.8.0 ------------
------------------------------------------------------------------------------

res_pjsip_caller_id
------------------
 * Per RFC3325, the 'From' header is now anonymized on outgoing calls when
   caller id presentation is prohibited.

res_pjsip_config_wizard
------------------
 * A new command (pjsip export config_wizard primitives) has been added that
   will export all the pjsip objects it created to the console or a file
   suitable for reuse in a pjsip.conf file.

Build System
------------------
 * To help insure that Asterisk is compiled and run with the same known
   version of pjproject, a new option (--with-pjproject-bundled) has been
   added to ./configure.  When specified, the version of pjproject specified
   in third-party/versions.mak will be downloaded and configured.  When you
   make Asterisk, the build process will also automatically build pjproject
   and Asterisk will be statically linked to it.  Once a particular version
   of pjproject is configured and built, it won't be configured or built
   again unless you run a 'make distclean'.

   To facilitate testing, when 'make install' is run, the pjsua and pjsystest
   utilities and the pjproject python bindings will be installed in
   ASTDATADIR/third-party/pjproject.

   The default behavior remains building with the shared pjproject
   installation, if any.

app_confbridge
------------------
 * Added CONFBRIDGE_INFO(muted,) for querying the muted conference state.

 * Added Muted header to AMI ConfbridgeListRooms action response list events
   to indicate the muted conference state.

 * Added Muted column to CLI "confbridge list" output to indicate the muted
   conference state and made the locked column a yes/no value instead of a
   locked/unlocked value.

REDIRECTING(reason)
------------------
 * The REDIRECTING(reason) value is now treated consistently between
   chan_sip and chan_pjsip.

   Both channel drivers match incoming reason values with values documented
   by REDIRECTING(reason) and values documented by RFC5806 regardless of
   whether they are quoted or not.  RFC5806 values are mapped to the
   equivalent REDIRECTING(reason) documented value and is set in
   REDIRECTING(reason).  e.g., an incoming RFC5806 'unconditional' value or a
   quoted string version ('"unconditional"') is converted to
   REDIRECTING(reason)'s 'cfu' value.  The user's dialplan only needs to deal
   with 'cfu' instead of any of the aliases.

   The incoming 480 response reason text supported by chan_sip checks for
   known reason values and if not matched then puts quotes around the reason
   string and assigns that to REDIRECTING(reason).

   Both channel drivers send outgoing known REDIRECTING(reason) values as the
   unquoted RFC5806 equivalent.  User custom values are either sent as is or
   with added quotes if SIP doesn't allow a character within the value as
   part of a RFC3261 Section 25.1 token.  Note that there are still
   limitations on what characters can be put in a custom user value.  e.g.,
   embedding quotes in the middle of the reason string is just going to cause
   you grief.

 * Setting a REDIRECTING(reason) value now recognizes RFC5806 aliases.
   e.g., Setting REDIRECTING(reason) to 'unconditional' is converted to the
   'cfu' value.

res_pjproject
------------------
 * This module is the successor of res_pjsip_log_forwarder.  As well as
   handling the log forwarding (which now displays as 'pjproject:0' instead
   of 'pjsip:0'), it also adds a 'pjproject show buildopts' command to the CLI.
   This displays the compiled-in options of the pjproject installation
   Asterisk is currently running against.

 * Another feature of this module is the ability to map pjproject log levels
   to Asterisk log levels, or to suppress the pjproject log messages
   altogether.  Many of the messages emitted by pjproject itself are the result
   of errors which Asterisk will ultimately handle so the messages can be
   misleading or just noise.  A new config file (pjproject.conf) has been added
   to configure the mapping and a new CLI command (pjproject show log mappings)
   has been added to display the mappings currently in use.

res_pjsip
------------------
 * Transports are now reloadable.  In testing, no in-progress calls were
   disrupted if the ip address or port weren't changed, but the possibility
   still exists.  To make sure there are no unintentional drops, a new option
   'allow_reload', which defaults to 'no' has been added to transport.  If
   left at the default, changes to the particular transport will be ignored.
   If set to 'yes', changes (if any) will be applied.

 * Added new global option (regcontext) to pjsip. When set, Asterisk will
   dynamically create and destroy a NoOp priority 1 extension
   for a given endpoint who registers or unregisters with us.

 * Endpoints and aors can now be identified by the username and realm in an
   incoming Authorization header.  To use this feature, add "auth_username"
   to your endpoint's "identify_by" list.  You can combine "auth_username"
   and the original "username" to test both the From/To and Authorization
   headers.  For endpoints, the order is controlled by the global
   "endpoint_identifier_order" setting.  For matching aors to an endpoint
   for inbound registration, the order is controlled by this option.

 * In conjunction with the "auth_username" change, 3 new options have been
   added to the global configuration object that control how many unidentified
   requests over a certain period from the same IP address can be received
Josh Soref's avatar
Josh Soref committed
   before a security alert is generated.  A new CLI command
   "pjsip show unidentified_requests" will list the current candidates.

res_pjsip_history
------------------
 * A new module, res_pjsip_history, has been added that provides SIP history
   viewing/filtering from the CLI. The module is intended to be used on systems
   with busy SIP traffic, where existing forms of viewing SIP messages - such
   as the res_pjsip_logger - may be inadequate. The module provides two new
   CLI commands:
   - 'pjsip set history {on|off|clear}' - this enables/disables SIP history
     capturing, as well as clears an existing history capture. Note that SIP
     packets captured are stored in memory until cleared. As a result, the
     history capture should only be used for debugging/viewing purposes, and
     should *NOT* be left permanently enabled on a system.
   - 'pjsip show history' - displays the captured SIP history. When invoked
     with no options, the entire captured history is displayed. Two options
     are available:
     -- 'entry <num>' - display a detailed view of a single SIP message in
        the history
     -- 'where ...' - filter the history based on some expression. For more
        information on filtering, view the current CLI help for the
        'pjsip show history' command.

Voicemail
------------------
 * app_voicemail and res_mwi_external can now be built together.  The default
   remains to build app_voicemail and not res_mwi_external but if they are
   both built, the load order will cause res_mwi_external to load first and
   app_voicemail will be skipped.  Use 'preload=app_voicemail.so' in
   modules.conf to force app_voicemail to be the voicemail provider.

res_pjsip_sdp_rtp
------------------
 * A new option (bind_rtp_to_media_address) has been added to endpoint which
   will cause res_pjsip_sdp_rtp to actually bind the RTP instance to the
   media_address as well as using it in the SDP.  If set, RTP packets will now
   originate from the media address instead of the operating system's "primary"
   ip address.

res_rtp_asterisk
------------------
 * A new configuration section - ice_host_candidates - has been added to
   rtp.conf, allowing automatically discovered ICE host candidates to be
   overriden. This allows an Asterisk server behind a 1:1 NAT to send its
   external IP as a host candidate rather than relying on STUN to discover it.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.6.0 to Asterisk 13.7.0 ------------
------------------------------------------------------------------------------

Codecs
------------------
 * Added format attribute negotiation for the VP8 video codec. Format attribute
   negotiation is provided by the res_format_attr_vp8 module.

ConfBridge
------------------
 * A new "timeout" user profile option has been added. This configures the number
   of seconds that a participant may stay in the ConfBridge after joining. When
   the time expires, the user is ejected from the conference and CONFBRIDGE_RESULT
   is set to "TIMEOUT" on the channel.

chan_sip
------------------
 * The websockets_enabled option has been added to the general section of
   sip.conf.  The option is enabled by default to match the previous behavior.
   The option should be disabled when using res_pjsip_transport_websockets to
   ensure chan_sip will not conflict with PJSIP websockets.

Dialplan Functions
------------------
 * The HOLD_INTERCEPT dialplan function now actually exists in the source tree.
   While support for the events was added in Asterisk 13.4.0, the function
   accidentally never made it in. That function is now present, and will cause
   the 'hold' raised by a channel to be intercepted and converted into an
   event instead.

res_pjsip_outbound_registration
-------------------------------
 * If res_statsd is loaded and a StatsD server is configured, basic statistics
   regarding the state of outbound registrations will now be emitted. This
   includes:
David M. Lee's avatar
David M. Lee committed
   - A GAUGE statistic for the overall number of outbound registrations, i.e.:
David M. Lee's avatar
David M. Lee committed
   - A GAUGE statistic for the overall number of outbound registrations in a
     particular state, e.g.:
       PJSIP.registrations.state.Registered
res_pjsip
------------------
 * The ability to use "like" has been added to the pjsip list and show
   CLI commands.  For instance: CLI> pjsip list endpoints like abc

 * If res_statsd is loaded and a StatsD server is configured, basic statistics
Niklas Larsson's avatar
Niklas Larsson committed
   regarding the state of PJSIP contacts will now be emitted. This includes:
David M. Lee's avatar
David M. Lee committed
   - A GAUGE statistic for the overall number of contacts in a particular
     state, e.g.:
       PJSIP.contacts.states.Reachable
   - A TIMER statistic for the RTT time for each qualified contact, e.g.:
       PJSIP.contacts.alice@@127.0.0.1:5061.rtt

res_sorcery_memory_cache
------------------------
 * A new caching strategy, full_backend_cache, has been added which caches
   all stored objects in the backend. When enabled all objects will be
   expired or go stale according to the configuration. As well when enabled
   all retrieval operations will be performed against the cache instead of
   the backend.

func_callerid
-------------------
 * CALLERID(pres) is now documented as a valid alternative to setting both
   CALLERID(name-pres) and CALLERID(num-pres) at once.  Some channel drivers,
   like chan_sip, don't make a distinction between the two: they take the
   least public value from name-pres and num-pres.  By using CALLERID(pres)
   for reading and writing, you touch the same combined value in the dialplan.
   The same applies to CONNECTEDLINE(pres), REDIRECTING(orig-pres),
   REDIRECTING(to-pres) and REDIRECTING(from-pres).

res_endpoint_stats
-------------------
 * A new module that emits StatsD statistics regarding Asterisk endpoints.
   This includes a total count of the number of endpoints, the count of the
David M. Lee's avatar
David M. Lee committed
   number of endpoints in the technology agnostic state of the endpoint -
   online or offline - as well as the number of channels associated with each
David M. Lee's avatar
David M. Lee committed
   endpoint. These are recorded as three different GAUGE statistics:
    - endpoints.count
    - endpoints.state.{unknown|offline|online}
    - endpoints.{tech}.{resource}.channels


------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.5.0 to Asterisk 13.6.0 ------------
------------------------------------------------------------------------------

Dialplan Functions
------------------
 * The CHANNEL function, when used on a PJSIP channel, now exposes a 'call-id'
   extraction option when using with the 'pjsip' signalling option. It will
   return the SIP Call-ID associated with the INVITE request that established
   the PJSIP channel.

ARI
------------------
 * Two new endpoint related events are now available: PeerStatusChange and
   ContactStatusChange. In particular, these events are useful when subscribing
   to all event sources, as they provide additional endpoint related
   information beyond the addition/removal of channels from an endpoint.

 * Added the ability to subscribe to all ARI events in Asterisk, regardless
   of whether the application 'controls' the resource. This is useful for
   scenarios where an ARI application merely wants to observe the system,
   as opposed to control it. There are two ways to accomplish this:
   (1) Via the WebSocket connection URI. A new query paramter, 'subscribeAll',
       has been added that, when present and True, will subscribe all
       specified applications to all ARI event sources in Asterisk.
   (2) Via the applications resource. An ARI client can, at any time, subscribe
       to all resources in an event source merely by not providing an explicit
       resource. For example, subscribing to an event source of 'channels:'
       as opposed to 'channels:12345' will subscribe the application to all
       channels.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.4.0 to Asterisk 13.5.0 ------------
------------------------------------------------------------------------------

AMI
------------------
 * A new ContactStatus event has been added that reflects res_pjsip contact
   lifecycle changes:  Created, Removed, Reachable, Unreachable, Unknown.
 * Added the Linkedid header to the common channel headers listed for each
   channel in AMI events.

ARI
------------------
 * A new feature has been added that enables the retrieval of modules and
   module information through an HTTP request. Information on a single module
   can be also be retrieved. Individual modules can be loaded to Asterisk, as
   well as unloaded and reloaded.
* A new resource has been added to the 'asterisk' resource, 'config/dynamic'.
   This resource allows for push configuration of sorcery derived objects
   within Asterisk. The resource supports creation, retrieval, updating, and
   deletion. Sorcery derived objects that are manipulated by this resource
   must have a sorcery wizard that supports the desired operations.

 * A new feature has been added that allows for the rotation of log channels
   through HTTP requests.

res_pjsip
------------------
* A new 'g726_non_standard' endpoint option has been added that, when set to
  'yes' and g.726 audio is negotiated, forces the codec to be treated as if it
  is AAL2 packed on the channel.

* A new 'rtp_keepalive' endpoint option has been added. This option specifies
  an interval, in seconds, at which we will send RTP comfort noise packets to
  the endpoint. This functions identically to chan_sip's "rtpkeepalive" option.

* New 'rtp_timeout' and 'rtp_timeout_hold' endpoint options have been added.
  These options specify the amount of time, in seconds, that Asterisk will wait
  before terminating the call due to lack of received RTP. These are identical
  to chan_sip's rtptimeout and rtpholdtimeout options.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.3.0 to Asterisk 13.4.0 ------------
------------------------------------------------------------------------------

chan_pjsip
------------------
 * New 'rpid_immediate' option to control if connected line update information
   goes to the caller immediately or waits for another reason to send the
   connected line information update.  See the online option documentation for
   more information.  Defaults to 'no' as setting it to 'yes' can result in
   many unnecessary messages being sent to the caller.

 * The configuration setting 'progressinband' now defaults to 'no', which
   matches the actual behavior of previous versions.

res_pjsip
------------------
 * A new CLI command has been added: "pjsip show settings", which shows
   both the global and system configuration settings.

 * A new aor option has been added: "qualify_timeout", which sets the timeout
   in seconds for a qualify.  The default is 3 seconds.  This overrides the
   hard coded 32 seconds in pjproject.

 * Endpoint status will now change to "Unreachable" when all contacts are
   unavailable.  When any contact becomes available, the endpoint will status
   will change back to "Reachable".

 * A new global option has been added: "max_initial_qualify_time", which
   sets the maximum amount of time from startup that qualifies should be
   attempted on all contacts.

res_ari_channels
------------------
 * Two new events, 'ChannelHold' and 'ChannelUnhold', have been added to the
   events data model. These events are raised when a channel indicates a hold
   or unhold, respectively.

func_holdintercept
------------------
 * A new dialplan function, HOLD_INTERCEPT, has been added. This function, when
   placed on a channel, intercepts hold/unhold indications signalled by the
   channel and prevents them from moving on to other channels in a bridge with
   the hold initiator. Instead, AMI or ARI events are raised indicating that
   the channel wanted to place someone on hold. This allows external
   applications to implement their own custom hold/unhold logic.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.2.0 to Asterisk 13.3.0 ------------
------------------------------------------------------------------------------

chan_pjsip/app_transfer
------------------
 * The Transfer application, when used with chan_pjsip, now supports using
   a PJSIP endpoint as the transfer destination. This is in addition to
   explicitly specifying a SIP URI to transfer to.

res_ari_channels
------------------
 * The ARI /channels resource now supports a new operation, 'redirect'. The
   redirect operation will perform a technology and state specific redirection
   on the channel to a specified endpoint or destination. In the case of SIP
   technologies, this is either a 302 Redirect response to an on-going INVITE
   dialog or a SIP REFER request.

res_pjsip
------------------
 * A new 'endpoint_identifier_order' option has been added that allows one to
   set the order by which endpoint identifiers are processed and checked. This
   option is specified under the 'global' type configuration section.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.1.0 to Asterisk 13.2.0 ------------
------------------------------------------------------------------------------

 * New 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions have been added which
   allow examining PJSIP AORs or contacts from the dialplan.

res_pjsip_outbound_registration
------------------
 * The 'pjsip send unregister' command now stops further registrations.

 * A new command 'pjsip send register' has been added which allows you to
   start or restart periodic registration.  It can be used after a
   'send unregister' or after a 401 permanent error.

res_pjsip_config_wizard
------------------
 * This is a new module that adds streamlined configuration capability for
   chan_pjsip.  It's targeted at users who have lots of basic configuration
   scenarios like 'phone' or 'agent' or 'trunk'.  Additional information
   can be found in the sample configuration file at
   config/samples/pjsip_wizard.conf.sample.

res_fax
-----------
 * The T.38 negotiation timeout was previously hard coded at 5000 milliseconds
   and is now configurable via the 't38timeout' configuration option in
   res_fax.conf and via the fax options dialplan function 'FAXOPT(t38timeout)'.
   The default remains at 5000 milliseconds.

PJSIP Transports
----------
 * The ca_list_path transport parameter has been added for TLS transports. This
   option behaves similarly to the old sip.conf option "tlscapath". In order to
   use this, you must be using PJProject version 2.4 or higher.
ARI
------------------
 * The Originate operation now takes in an originator channel. The linked ID of
   this originator channel is applied to the newly originated outgoing channel.
   If using CEL this allows an association to be established between the two so
   it can be recognized that the originator is dialing the originated channel.

 * "language" (the default spoken language for the channel) is now included in
   the standard channel state output for suitable events.

 * The POST channels/{id} operation and the POST channels/{id}/continue operation
   now have a new "label" parameter. This allows for origination or continuation
   to a labeled priority in the dialplan instead of requiring a specific priority
   number. The ARI version has been bumped to 1.7.0 as a result.

AMI
------------------
 * "Language" (the default spoken language for the channel) is now included in
   the standard channel state output for suitable events.

 * AMI actions that return a list of events have been made to return consistent
   headers for the action response event starting the list and the list complete
   event.  The AMI version has been bumped to 2.7.0 as a result.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 13.0.0 to Asterisk 13.1.0 ------------
------------------------------------------------------------------------------

AMI
------------------
 * Event NewConnectedLine is emitted when the connected line information on
   a channel changes.

ARI
------------------
 * Event ChannelConnectedLine is emitted when the connected line information
   on a channel changes.

Core Transfers
-----------------

The features.conf general section has three new configurable options:
    * transferdialattempts
    * transferretrysound
    * transferinvalidsound
For more information on what these options do, see the Asterisk wiki:
 https://wiki.asterisk.org/wiki/x/W4fAAQ
Channel Drivers
------------------

chan_pjsip
------------------
 * New 'media_encryption_optimistic' endpoint setting. This will use SRTP
   when possible but does not consider lack of it a failure.
res_pjsip_endpoint_identifer_ip
------------------
 * New CLI commands have been added: "pjsip show identif(y|ies)", which lists
   all configured PJSIP identify objects
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 12 to Asterisk 13 --------------------
------------------------------------------------------------------------------

Matthew Jordan's avatar
Matthew Jordan committed
Overview
Matthew Jordan's avatar
Matthew Jordan committed
Asterisk 13 is the next Long Term Support (LTS) release of Asterisk. As such,
the focus of development for this release of Asterisk was on improving the
usability and features developed in the previous Standard release, Asterisk 12.
Beyond a general refinement of end user features, development focussed heavily
on the Asterisk APIs - the Asterisk Manager Interface (AMI) and the Asterisk
REST Interface (ARI) - and the PJSIP stack in Asterisk. Some highlights of the
new features include:

* Asterisk security events are now provided via AMI, allowing end users to
  monitor their Asterisk system in real time for security related issues.
* External control of Message Waiting Indicators (MWI) through both AMI and ARI.
* Reception/transmission of out of call text messages using any supported
  channel driver/protocol stack through ARI.
* Resource List Server support in the PJSIP stack, providing subscriptions to
  lists of resources and batched delivery of NOTIFY requests.
* Inter-Asterisk distributed device state and mailbox state using the PJSIP
  stack.

It is important to note that Asterisk 13 is built on the architecture developed
during the previous Standard release, Asterisk 12. Users upgrading to
Asterisk 13 should read about the new features in Asterisk 12 later in this file
(see Functionality changes from Asterisk 11 to Asterisk 12), as well as the
UPGRADE-12.txt delivered with this release. In particular, users upgrading to
Asterisk 13 from a release prior to Asterisk 12 should read the specifications
on AMI, CDRs, and CEL on the Asterisk wiki:
 * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ
 * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ
 * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ
Matthew Jordan's avatar
Matthew Jordan committed
Many new featuers in Asterisk 13 were introduced in point releases of
Asterisk 12. Following this section - which documents the changes from all
versions of Asterisk 12 to Asterisk 13 - users should examine the new features
that were introduced in the point releases of Asterisk 12, as they are also
included in Asterisk 13.

Finally, all users upgrading to Asterisk 13 should read the UPGRADE.txt file
delivered with this release.


Build System
------------------
 * Sample config files have been moved from configs/ to a sub-folder of that
   directory, samples.

 * The menuselect utility has been pulled into the Asterisk repository. As a
   result, the libxml2 development library is now a required dependency for
   Asterisk.

 * A new Compiler Flag, REF_DEBUG, has been added. When enabled, reference
   counted objects will emit additional debug information to the refs log file
   located in the standard Asterisk log file directory. This log file is useful
   in tracking down object leaks and other reference counting issues. Prior to
   this version, this option was only available by modifying the source code
   directly. This change also includes a new script, refcounter.py, in the
   contrib folder that will process the refs log file. Note that this replaces
   the refcounter utility that could be built from the utils directory.


Applications
------------------

DahdiBarge
------------------
 * This module was deprecated and has been removed. Users of app_dahdibarge
   should use ChanSpy instead.

Matthew Jordan's avatar
Matthew Jordan committed
MixMonitor
------------------
 * New options to play a beep when starting a recording and stopping a recording
   have been added.  The option "p" will play a beep to the channel that starts
   the recording.  The option "P" will play a beep to the channel that stops the
   recording.

Queue
------------------
 * Queue rules can now be stored in a database table, queue_rules. Unlike other
   RealTime tables, the queue_rules table is only examined on module load or
   module reload. A new general setting has been added to queuerules.conf,
   'realtime_rules', which, when set to 'yes', will cause app_queue to look in
   RealTime for additional queue rules to parse. Note that both the file and
   the database can be used as a provide of queue rules when 'realtime_rules'
   is set to 'yes'.

   When app_queue is reloaded, all rules are re-parsed and loaded into memory.
   There is no caching of RealTime queue rules.

Matthew Jordan's avatar
Matthew Jordan committed
ReadFile
------------------
 * This module was deprecated and has been removed. Users of app_readfile
   should use func_env's FILE function instead.

Matthew Jordan's avatar
Matthew Jordan committed
Say
------------------
 * The 'say' family of dialplan applications now support the Japanese
   language. The 'language' parameter in say.conf now recognizes a setting of
   'ja', which will enable Japanese language specific mechanisms for playing
   back numbers, dates, and other items.
 * Counting, enumeration and dates now supports Icelandic grammar with the
   'language' parameter set to 'is'.
Matthew Jordan's avatar
Matthew Jordan committed

SayCountPL
------------------
 * This module was deprecated and has been removed. Users of app_saycountpl
   should use the Say family of applications.

Matthew Jordan's avatar
Matthew Jordan committed
SetMusicOnHold
Matthew Jordan's avatar
Matthew Jordan committed
 * The SetMusicOnHold dialplan application was deprecated and has been removed.
   Users of the application should use the CHANNEL function's musicclass
   setting instead.
Matthew Jordan's avatar
Matthew Jordan committed
WaitMusicOnHold
------------------
 * The WaitMusicOnHold dialplan application was deprecated and has been
   removed. Users of the application should use MusicOnHold with a duration
   parameter instead.
Matthew Jordan's avatar
Matthew Jordan committed
VoiceMail
------------------
 * VoiceMail and VoiceMailMain now support the Japanese language. The
   'language' parameter in voicemail.conf now recognizes a setting of 'ja',
   which will enable prompts to be played back using a Japanese grammatical
   structure. Additional prompts are necessary for this functionality,
   including:
   - jb-arimasu: there is
   - jb-arimasen: there is not
   - jb-oshitekudasai: please press
   - jb-ni: article ni
   - jb-ga: article ga
   - jb-wa: article wa
   - jb-wo: article wo
Matthew Jordan's avatar
Matthew Jordan committed
 * Add the ability to specify multiple email addresses in configuration,
   separated by a |.
Matthew Jordan's avatar
Matthew Jordan committed
CDR Backends
------------------
cdr_sqlite
-----------------
 * This module was deprecated and has been removed. Users of cdr_sqlite
   should use cdr_sqlite3_custom.

cdr_pgsql
------------------
 * Added the ability to support PostgreSQL application_name on connections.
   This allows PostgreSQL to display the configured name in the
   pg_stat_activity view and CSV log entries. This setting is configurable
   for cdr_pgsql via the appname configuration setting in cdr_pgsql.conf.

Matthew Jordan's avatar
Matthew Jordan committed

CEL Backends
------------------

cel_pgsql
------------------
 * Added the ability to support PostgreSQL application_name on connections.
   This allows PostgreSQL to display the configured name in the
   pg_stat_activity view and CSV log entries. This setting is configurable
   for cel_pgsql via the appname configuration setting in cel_pgsql.conf.

Matthew Jordan's avatar
Matthew Jordan committed

Channel Drivers
------------------

chan_dahdi
------------------
 * SS7 support now requires libss7 v2.0 or later.

 * Added SS7 support for connected line and redirecting.

 * Most SS7 CLI commands are reworked as well as new SS7 commands added.
   See online CLI help.

 * Added several SS7 config option parameters described in
   chan_dahdi.conf.sample.

chan_gtalk
------------------
 * This module was deprecated and has been removed. Users of chan_gtalk
   should use chan_motif.

chan_h323
------------------
 * This module was deprecated and has been removed. Users of chan_h323
   should use chan_ooh323.

chan_jingle
------------------
 * This module was deprecated and has been removed. Users of chan_jingle
   should use chan_motif.

chan_pjsip
------------------
 * Added the CLI command 'pjsip list ciphers' so a user can know what
   OpenSSL names are available on their system for the pjsip.conf cipher
   option.

chan_sip
------------------
 * The SIPPEER dialplan function no longer supports using a colon as a
   delimiter for parameters. The parameters for the function should be
   delimited using a comma.

 * The SIPCHANINFO dialplan function was deprecated and has been removed. Users
   of the function should use the CHANNEL function instead.

Matthew Jordan's avatar
Matthew Jordan committed
------------------

Account Codes
------------------
 * Added functional peeraccount support.  Except for Queue, the
   accountcode propagation is now consistently propagated to outgoing
   channels before dialing.  The channel accountcode can change from its
   original non-empty value on channel creation for the following specific
   reasons.  One, dialplan sets it using CHANNEL(accountcode).  Two, an
   originate method that can specify an accountcode value.  Three, the
   calling channel propagates its peeraccount or accountcode to the
   outgoing channel's accountcode before dialing.  The change has two
   visible effects.  One, local channels now cross accountcode and
   peeraccount across the special bridge between the ;1 and ;2 channels
   just like channels between normal bridges.  Two, the
   CHANNEL(peeraccount) value can now be set before Dial and FollowMe to
   set the accountcode on the outgoing channel(s).

   For Queue, an outgoing channel's non-empty accountcode will not change
   unless explicitly set by CHANNEL(accountcode).  The change has three
   visible effects.  One, local channels now cross accountcode and
   peeraccount across the special bridge between the ;1 and ;2 channels
   just like channels between normal bridges.  Two, the queue member will
   get an accountcode if it doesn't have one and one is available from the
   calling channel's peeraccount.  Three, accountcode propagation includes
   local channel members where the accountcodes are propagated early
   enough to be available on the ;2 channel.

AMI
------------------
 * New DeviceStateChanged and PresenceStateChanged AMI events have been added.
   These events are emitted whenever a device state or presence state change
   occurs. The events are controlled by res_manager_device_state.so and
   res_manager_presence_state.so. If the high frequency of these events is
   problematic for you, do not load these modules.

 * Added DialplanExtensionAdd and DialplanExtensionRemove AMI commands. They
   work in basically the same way as the 'dialplan add extension' and
   'dialplan remove extension' CLI commands respectively.

 * New AMI action LoggerRotate reloads and rotates logger in the same manner
   as CLI command 'logger rotate'

 * New AMI Actions FAXSessions, FAXSession, and FAXStats replicate the
   functionality of CLI commands 'fax show sessions', 'fax show session',
   and fax show stats' respectively.

 * New AMI actions PRIDebugSet, PRIDebugFileSet, and PRIDebugFileUnset
   enable manager control over PRI debugging levels and file output.

 * AMI action PJSIPNotify may now send to a URI instead of only to a PJSIP
   endpoint as long as a default outbound endpoint is set. This also applies
   to the equivalent CLI command (pjsip send notify)
Matthew Jordan's avatar
Matthew Jordan committed
 * The AMI action PJSIPShowEndpoint now includes ContactStatusDetail sections
   that give information on Asterisk's attempts to qualify the endpoint.

 * The DialEnd event will now contain a Forward header if the dial is ending
   due to the call being forwarded. The contents of the Forward header is the
   extension in the number to which the call is being forwarded.

Matthew Jordan's avatar
Matthew Jordan committed
CEL
------------------
 * The "bridge_technology" extra field key has been added to BRIDGE_ENTER
   and BRIDGE_EXIT events.

Features
------------------
 * Channel variables are now substituted in arguments passed to applications
   run by using dynamic features.

TLS
------------------
 * The TLS core in Asterisk now supports Perfect Forward Secrecy (PFS).
   Enabling PFS is attempted by default, and is dependent on the configuration
   of the module using TLS.
   - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not
     specify a ECDHE cipher suite in sip.conf, for example:
       tlscipher=AES128-SHA:DES-CBC3-SHA
   - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters
     into the private key file, e.g., sip.conf tlsprivatekey. For example, the
     default dh2048.pem - see
     http://www.opensource.apple.com/source/OpenSSL098/OpenSSL098-35.1/src/apps/dh2048.pem?txt
   - Because clients expect the server to prefer PFS, and because OpenSSL sorts
     its cipher suites by bit strength, see "openssl ciphers -v DEFAULT".
     Consider re-ordering your cipher suites in the respective configuration
     file. For example:
       tlscipher=AES128+kEECDH:AES128+kEDH:3DES+kEDH:AES128-SHA:DES-CBC3-SHA:-ADH:-AECDH
     will use PFS when offered by the client. Clients which do not offer PFS
     fall-back to AES-128 (or even 3DES, as recommended by RFC 3261).

Matthew Jordan's avatar
Matthew Jordan committed
Functions
------------------
JACK_HOOK
------------------
 * The JACK_HOOK function now supports audio with a sample rate higher than
   8kHz.

Matthew Jordan's avatar
Matthew Jordan committed
Resources
res_config_pgsql
------------------
 * Added the ability to support PostgreSQL application_name on connections.
   This allows PostgreSQL to display the configured name in the
   pg_stat_activity view and CSV log entries. This setting is configurable
   for res_config_pgsql via the dbappname configuration setting in
   res_pgsql.conf.

Matthew Jordan's avatar
Matthew Jordan committed
res_pjsip_outbound_publish
Matthew Jordan's avatar
Matthew Jordan committed
 * A new module, res_pjsip_outbound_publish provides the mechanisms for sending
   PUBLISH requests for specific event packages to another SIP User Agent.

res_pjsip_pubsub
------------------
 * The publish/subscribe core module has been updated to support RFC 4662
   Resource Lists, allowing Asterisk to act as a Resource List Server (RLS).
   Resource lists are configured in pjsip.conf under a new object type,
   resource_list. Resource lists can contain either message-summary or presence
   events, and can be composed of specific resources that provide the event or
   other resource lists.

 * Inbound publication support is provided by a new object, inbound-publication.
   This configures res_pjsip_pubsub to accept PUBLISH requests from a particular
   resource. Which events are accepted is constructed dynamically; see
   res_pjsip_publish_asterisk for more information.

res_pjsip_publish_asterisk
------------------
 * A new module, res_pjsip_publish_asterisk adds support for PUBLISH requests of
   Asterisk information to other Asterisk servers. This module is intended only
   for Asterisk to Asterisk exchanges of information. Currently, this includes
   both mailbox state and device state information.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 12.4.0 to Asterisk 12.5.0 ------------
------------------------------------------------------------------------------

ARI
------------------
 * Stored recordings now support a new operation, copy. This will take an
   existing stored recording and copy it to a new location in the recordings
   directory.

 * LiveRecording objects now have three additional fields that can be reported
   in a RecordingFinished ARI event:
   - total_duration: the duration of the recording
   - talking_duration: optional. The duration of talking detected in the
     recording. This is only available if max_silence_seconds was specified
     when the recording was started.
   - silence_duration: optional. The duration of silence detected in the
     recording. This is only available if max_silence_seconds was specified
     when the recording was started.
   Note that all duration values are reported in seconds.

 * Users of ARI can now send and receive out of call text messages. Messages
   can be sent directly to a particular endpoint, or can be sent to the
   endpoints resource directly and inferred from the URI scheme. Text
   messages are passed to ARI clients as TextMessageReceived events. ARI
   clients can choose to receive text messages by subscribing to the particular
   endpoint technology or endpoints that they are interested in.

 * The applications resource now supports subscriptions to all endpoints of
   a particular channel technology. For example, subscribing to an eventSource
   of 'endpoint:PJSIP' will subscribe to all PJSIP endpoints.

res_pjsip
------------------
 * The endpoint configuration object now supports 'accountcode'. Any channel
   created for an endpoint with this setting will have its accountcode set
   to the specified value.

res_hep_rtcp
------------------
 * A new module, res_hep_rtcp, has been added that will forward RTCP call
   statistics to a HEP capture server. See res_hep for more information.

Functions
------------------
 * Function AUDIOHOOK_INHERIT has been deprecated. Audiohooks are now
Josh Soref's avatar
Josh Soref committed
   unconditionally inherited through masquerades. As a side benefit, more
   than one audiohook of a given type may persist through a masquerade now.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 12.3.0 to Asterisk 12.4.0 ------------
------------------------------------------------------------------------------

AgentRequest
------------------
 * Returns new AGENT_STATUS value "NOT_CONNECTED" if the agent fails to
   connect with an incoming caller after being alerted to the presence
   of the incoming caller.  The most likely reason this would happen is
   the agent did not acknowledge the call in time.

AMI
------------------
 * New events have been added for the TALK_DETECT function. When the function
   is used on a channel, ChannelTalkingStart/ChannelTalkingStop events will be
   emitted to connected AMI clients indicating the start/stop of talking on
   the channel.

ARI
------------------
 * New event models have been aded for the TALK_DETECT function. When the
   function is used on a channel, ChannelTalkingStarted/ChannelTalkingFinished
   events will be emitted to connected WebSockets subscribed to the channel,