]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Remove files that are no longer updated
authorMark Murawski <markm@intellasoft.net>
Mon, 30 Oct 2023 15:38:22 +0000 (11:38 -0400)
committerAsterisk Development Team <asteriskteam@digium.com>
Fri, 12 Jan 2024 18:32:13 +0000 (18:32 +0000)
Fixes: #360
(cherry picked from commit 6ebd820e269ec139e4a3ad8b5670df04a22c72df)

CHANGES [deleted file]
UPGRADE.txt [deleted file]

diff --git a/CHANGES b/CHANGES
deleted file mode 100644 (file)
index c10b54e..0000000
--- a/CHANGES
+++ /dev/null
@@ -1,7957 +0,0 @@
-==============================================================================
-===
-=== THIS FILE IS AUTOMATICALLY GENERATED DURING THE RELEASE
-=== PROCESS. DO NOT MAKE CHANGES HERE. INSTEAD, REFER TO
-=== doc/CHANGES-staging/README.md FOR MORE DETAILS.
-===
-=== 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 19.0.0 to Asterisk 20.0.0 ------------
-------------------------------------------------------------------------------
-
-Applications
-------------------
- * added support for Danish syntax, playing the correct plural sound file
-   dependen on where you have 1 or multipe messages
-   based on the existing SE/NO code
-
- * added that we set DIALEDPEERNUMBER on the outgoing channels
-   so it is avalible in b(content^extension^line)
-   this add the same behaviour as Dial
-
-Channel-agnostic MF support
-------------------
- * A SendMF application and PlayMF manager
-   application are now included to send
-   arbitrary standard R1 MF tones on the
-   current channel or another specified channel.
-
-Core
-------------------
- * Bundled PJProject Build
-
-   The build process has been updated to make pjproject troubleshooting
-   and development easier. See third-party/pjproject/README-hacking.md or
-   https://wiki.asterisk.org/wiki/display/AST/Bundled+PJProject
-   for more info.
-
-Handle non-standard Meter metric type safely
-------------------
- * A meter_support flag has been introduced that defaults to true to maintain current behaviour.
-   If disabled, a counter metric type will be used instead wherever a meter metric type was used,
-   the counter will have a "_meter" suffix appended to the metric name.
-
-MessageSend
-------------------
- * The MessageSend AMI action has been updated to allow the Destination
-   and the To addresses to be provided separately. This brings the
-   MessageSend manager command in line with the capabilities of the
-   MessageSend dialplan application.
-
-ToneScan application
-------------------
- * A new application, ToneScan, allows for
-   synchronous detection of call progress
-   signals such as dial tone, busy tone,
-   Special Information Tones, and modems.
-
-ami
-------------------
- * An AMI event now exists for "Wink".
-
- * AMI events can now be globally disabled using
-   the disabledevents [general] setting.
-
-app_confbridge
-------------------
- * Added the hear_own_join_sound option to the confbridge user profile to
-   control who hears the sound_join audio file. When set to 'yes' the user
-   entering the conference and the participants already in the conference
-   will hear the sound_join audio file. When set to 'no' the user entering
-   the conference will not hear the sound_join audio file, but the
-   participants already in the conference will hear the sound_join audio file.
-
- * Adds the CONFBRIDGE_CHANNELS function which can
-   be used to retrieve a list of channels in a ConfBridge,
-   optionally filtered by a particular category. This
-   list can then be used with functions like SHIFT, POP,
-   UNSHIFT, etc.
-
-app_dtmfstore
-------------------
- * New application which collects digits
-   dialed and stores them into
-   a specified variable.
-
-app_mf
-------------------
- * Adds MF receiver and sender applications to support
-   the R1 MF signaling protocol, including integration
-   with the Dial application.
-
- * Adds an option to ReceiveMF to cap the
-   number of digits read at a user-specified
-   maximum.
-
-app_milliwatt
-------------------
- * The Milliwatt application's existing behavior is
-   incorrect in that it plays a constant tone, which
-   is not how digital milliwatt test lines actually
-   work.
-
-   An option is added so that a proper milliwatt test
-   tone can be provided, including a 1 second silent
-   interval every 10 seconds. However, for compatability
-   reasons, the default behavior remains unchanged.
-
-app_morsecode
-------------------
- * Extends the Morsecode application by adding support for
-   American Morse code and adds a configurable option
-   for the frequency used in off intervals.
-
-app_originate
-------------------
- * Codecs can now be specified for dialplan-originated
-   calls, as with call files and the manager action.
-   By default, only the slin codec is now used, instead
-   of all the slin* codecs.
-
-app_playback
-------------------
- * A new option 'mix' is added to the Playback application that 
-   will play by filename and say.conf. It will look on the format of the 
-   name, if it is like say format it will play with say.conf if not it 
-   will play the file name.
-
-app_queue
-------------------
- * Reload behavior in app_queue has been changed so
-   queue and agent stats are not reset during full
-   app_queue module reloads. The queue reset stats
-   CLI command may still be used to reset stats while
-   Asterisk is running.
-
- * Add field to save the time value when a member enter a queue.
-   Shows this time in seconds using 'queue show' command and the
-   field LoginTime for responses for AMI the events.
-
-   The output for the CLI command `queue show` is changed by added a
-   extra data field for the information of the time login time for each
-   member.
-
- * added that we set DIALEDPEERNUMBER on the outgoing channels
-   so it is avalible in b(content^extension^line)
-   this add the same behaviour as Dial
-
- * Load queues and members from Realtime for
-   AMI actions: QueuePause, QueueStatus and QueueSummary,
-   Applications: PauseQueueMember and UnpauseQueueMember.
-
- * Added a new AMI action: QueueWithdrawCaller
-   This AMI action makes it possible to withdraw a caller from a queue
-   back to the dialplan. The call will be signaled to leave the queue
-   whenever it can, hence, it not guaranteed that the call will leave
-   the queue.
-
-   Optional custom data can be passed in the request, in the WithdrawInfo
-   parameter. If the call successfully withdrawn the queue,
-   it can be retrieved using the QUEUE_WITHDRAW_INFO variable.
-
-   This can be useful for certain uses, such as dispatching the call
-   to a specific extension.
-
- * The m option now allows an override music on hold
-   class to be specified for the Queue application
-   within the dialplan.
-
-app_queue.c
-------------------
- * Allow multiple files to be streamed for agent announcement.
-
-app_queues
-------------------
- * adding support for playing the correct en/et for nordic languages
-
- * Don't play sound_thanks if there is no leading hold_time message
-   When the only announcement is hold time, and there is no hold time (0 min, 0 sec), asterisk will say "thank you for your patience"
-
-app_read
-------------------
- * A new option allows the digit '#' to be read literally,
-   rather than used exclusively as the input terminator
-   character.
-
-app_sendtext
-------------------
- * A ReceiveText application has been added that can be
-   used in conjunction with the SendText application.
-
-app_voicemail
-------------------
- * Add a new 'S' option to VoiceMail which prevents the instructions
-   (vm-intro) from being played if a busy/unavailable/temporary greeting
-   from the voicemail user is played. This is similar to the existing 's'
-   option except that instructions will still be played if no user
-   greeting is available.
-
- * added support for Danish syntax, playing the correct plural sound file
-   dependen on where you have 1 or multipe messages
-   based on the existing SE/NO code
-
- * The r option has been added, which prevents deletion
-   of messages from VoiceMailMain, which can be
-   useful for shared mailboxes.
-
-apps
-------------------
- * A new option 'mix' is added to the Playback application that 
-   will play by filename and say.conf. It will look on the format of the 
-   name, if it is like say format it will play with say.conf if not it 
-   will play the file name.
-
-ari
-------------------
- * Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP)
-   to ARI channel resources as 'protocol_id'.
-
-   ASTERISK-30027
-
-ast_coredumper
-------------------
- * New options:
-    --pid=<asterisk_pid>
-      Allows specification of an Asterisk instance when trying to
-      and the script can't determine it itself.
-    --libdir=<system library directory>
-      Allows specification of a non-standard installation directory
-      containing the Asterisk modules.
-    --(no-)rename
-      Renames the coredump and the output files with readable
-      timestamps. This is the default.
-   Removed unneeded or confusing options:
-    --append-coredumps
-    --conffile
-    --no-default-search
-    --tarball-uniqueid
-   Changed Variables:
-    COREDUMPS is now just "/tmp/core!(*.txt)"
-    DATEFORMAT is renamed to DATEOPTS and defaults to '-u +%FT%H-%M-%SZ'
-   Changed behavior:
-    If you use 'running' or 'RUNNING' you no longer need to specify
-    '--no-default-search' to ignore existing coredumps.
-
-cdr
-------------------
- * A new CDR option, channeldefaultenabled, allows controlling
-   whether CDR is enabled or disabled by default on
-   newly created channels. The default behavior remains
-   unchanged from previous versions of Asterisk (new
-   channels will have CDR enabled, as long as CDR is
-   enabled globally).
-
-chan_dahdi
-------------------
- * Previously, cadences were appended on dahdi restart,
-   rather than reloaded. This prevented cadences from
-   being updated and maxed out the available cadences
-   if reloaded multiple times. This behavior is fixed
-   so that reloading cadences is idempotent and cadences
-   can actually be reloaded.
-
- * A POLARITY function is now available that allows
-   getting or setting the polarity on a channel
-   from the dialplan.
-
-chan_iax2
-------------------
- * ANI2 (OLI) is now transmitted over IAX2 calls
-   as an information element.
-
- * Both a secret and an outkey may be specified at dial time,
-   since encryption is possible with RSA authentication.
-
-chan_pjsip
-------------------
- * Add function PJSIP_HEADERS() to get list of headers by pattern in the same way as SIP_HEADERS() do.
-
-   Add ability to read header by pattern using PJSIP_HEADER().
-
- * added global config option "allow_sending_180_after_183"
-
-   Allow Asterisk to send 180 Ringing to an endpoint
-   after 183 Session Progress has been send.
-   If disabled Asterisk will instead send only a
-   183 Session Progress to the endpoint.
-
- * Hook flash events can now be sent on a PJSIP channel
-   if requested to do so.
-
-chan_sip
-------------------
- * Session timers get removed on UPDATE
-   Fix if Asterisk receives a SIP REFER with Session-Timers UAC
-   that Asterisk maintains Session-Timers when sending UPDATE request
-
-chan_sip.c
-------------------
- * resolve issue with pickup on device that uses "183" and not "180"
-
-channel_internal_api
-------------------
- * CHANNEL(lastcontext) and CHANNEL(lastexten)
-   are now available for use in the dialplan.
-
-cli
-------------------
- * The "module refresh" command has been added,
-   which allows unloading and then loading a
-   module with a single command.
-
- * A new CLI command 'dialplan eval function' has been
-   added which allows users to test the behavior of
-   dialplan function calls directly from the CLI.
-
-func_channel
-------------------
- * Adds the CHANNEL_EXISTS function to check for the existence
-   of a channel by name or unique ID.
-
-func_db
-------------------
- * The function DB_KEYCOUNT has been added, which
-   returns the cardinality of the keys at a specified
-   prefix in AstDB, i.e. the number of keys at a
-   given prefix.
-
-func_env.c
-------------------
- * Two new functions, DIRNAME and BASENAME, are now
-   included which allow users to obtain the directory
-   or the base filename of any file.
-
-func_evalexten
-------------------
- * This adds the EVAL_EXTEN function which may be
-   used to evaluate data at dialplan extensions.
-
-func_framedrop
-------------------
- * New function to selectively drop specified frames
-   in either direction on a channel.
-
-func_json
-------------------
- * The JSON_DECODE dialplan function can now be used
-   to parse JSON strings, such as in conjunction with
-   CURL for using API responses.
-
-func_odbc
-------------------
- * A SQL_ESC_BACKSLASHES dialplan function has been added which
-   escapes backslashes. Usage of this is dependent on whether the
-   database in use can use backslashes to escape ticks or not. If
-   it can, then usage of this prevents a broken SQL query depending
-   on how the SQL query is constructed.
-
-func_scramble
-------------------
- * Adds an audio scrambler function that may be used to
-   distort voice audio on a channel as a privacy
-   enhancement.
-
-func_strings
-------------------
- * A new STRBETWEEN function is now included which
-   allows a substring to be inserted between characters
-   in a string. This is particularly useful for transforming
-   dial strings, such as adding pauses between digits
-   for a string of digits that are sent to another channel.
-
-func_vmcount
-------------------
- * Multiple mailboxes may now be specified instead of just one.
-
-logger
-------------------
- * Added the ability to define custom log levels in logger.conf
-   and use them in the Log dialplan application. Also adds a
-   logger show levels CLI command.
-
-res_agi
-------------------
- * Agi command 'exec' can now be enabled\r
-   to evaluate dialplan functions and variables\r
-   by setting the variable AGIEXECFULL to yes.
-
-res_cliexec
-------------------
- * A new CLI command, dialplan exec application, has
-   been added which allows dialplan applications to be
-   executed at the CLI, useful for some quick testing
-   without needing to write dialplan.
-
-res_fax_spandsp
-------------------
- * Adds support for spandsp 3.0.0.
-
-res_geolocation
-------------------
- * Added res_geolocation which creates the core capabilities
-   to manipulate Geolocation information on SIP INVITEs.
-
-res_parking
-------------------
- * An m option to Park and ParkAndAnnounce now allows
-   specifying a music on hold class override.
-
-res_pjproject
-------------------
- * In pjproject.conf you can now map pjproject log levels
-   to the Asterisk TRACE log level.  The default mappings
-   have therefore changed so that only pjproject levels
-   3 and 4 are mapped to DEBUG and 5 and 6 are now mapped
-   to TRACE.  Previously 3, 4, 5, and 6 were all mapped to
-   DEBUG.
-
-res_pjsip
-------------------
- * A new transport option 'allow_wildcard_certs' has been added that when it
-   and 'verify_server' are both set to 'yes', enables verification against
-   wildcards, i.e. '*.' in certs for common, and subject alt names of type DNS
-   for TLS transport types. Names must start with the wildcard. Partial wildcards,
-   e.g. 'f*.example.com' and 'foo.*.com' are not allowed. As well, names only
-   match against a single level meaning '*.example.com' matches 'foo.example.com',
-   but not 'foo.bar.example.com'.
-
-res_pjsip_geolocation
-------------------
- * Added res_pjsip_geolocation which gives chan_pjsip
-   the ability to use the core geolocation capabilities.
-
-res_pjsip_header_funcs
-------------------
- * Add function PJSIP_RESPONSE_HEADERS() to get list of header names from 200 response, in the same way as PJSIP_HEADERS() from the request.
-
-   Add function PJSIP_RESPONSE_HEADER() to read header from 200 response, in the same way as PJSIP_HEADER() from the request.
-
-res_pjsip_pubsub
-------------------
- * A new resource_list option, resource_display_name, indicates
-   whether display name of resource or the resource name being
-   provided for RLS entries.
-   If this option is enabled, the Display Name will be provided.
-   This option is disabled by default to remain the previous behavior.
-   If the 'event' set to 'presence' or 'dialog' the non-empty HINT name
-   will be set as the Display Name.
-   The 'message-summary' is not supported yet.
-
- * The Resource List Subscriptions (RLS) is dynamic now.
-   The asterisk now updates current subscriptions to reflect the changes
-   to the list on subscription refresh. If list items are added,
-   removed, updated or do not exist anymore, the asterisk regenerates
-   the resource list.
-
-res_pjsip_registrar
-------------------
- * Adds new PJSIP AOR option remove_unavailable to either
-   remove unavailable contacts when a REGISTER exceeds
-   max_contacts when remove_existing is disabled, or
-   prioritize unavailable contacts over other existing
-   contacts when remove_existing is enabled.
-
-res_pjsip_t38
-------------------
- * In res_pjsip_sdp_rtp, the bind_rtp_to_media_address option and the
-   fallback use of the transport's bind address solve problems sending
-   media on systems that cannot send ipv4 packets on ipv6 sockets, and
-   certain other situations. This change extends both of these behaviors
-   to UDPTL sessions as well in res_pjsip_t38, to fix fax-specific
-   problems on these systems, introducing a new option
-   endpoint/t38_bind_udptl_to_media_address.
-
-res_rtp_asterisk
-------------------
- * When the address of the STUN server (stunaddr) is a name resolved via DNS, the
-   stunaddr will be recurringly resolved when the DNS answer Time-To-Live (TTL)
-   expires. This allows the STUN server to change its IP address without having to
-   reload the res_rtp_asterisk module.
-
-res_tonedetect
-------------------
- * Arbitrary tone detection is now available through a
-   WaitForTone application (blocking) and a TONE_DETECT
-   function (non-blocking).
-
-say.c
-------------------
- * Adds SAYFILES function to retrieve the file names that would
-   be played by corresponding Say applications, such as
-   SayDigits, SayAlpha, etc.
-
-   Additionally adds SayMoney and SayOrdinal applications.
-
-stasis_channels
-------------------
- * Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP)
-   to ARI channel resources as 'protocol_id'.
-
-   ASTERISK-30027
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 18.0.0 to Asterisk 19.0.0 ------------
-------------------------------------------------------------------------------
-
-AMI Flash event
-------------------
- * Hook flash events are now exposed as AMI events.
-
-Add variable support to Originate
-------------------
- * The Originate application now allows
-   variables to be set on the new channel
-   through a new option.
-
-Core
-------------------
- * Added debug logging categories that allow a user to output debug information
-   based on a specified category. This lets the user limit, and filter debug
-   output to data relevant to a particular context, or topic. For instance the
-   following categories are now available for debug logging purposes:
-
-     dtls, dtls_packet, ice, rtcp, rtcp_packet, rtp, rtp_packet, stun, stun_packet
-
-   These debug categories can be enable/disable via an Asterisk CLI command:
-
-     core set debug category <category>[:<sublevel>] [category[:<sublevel] ...]
-     core set debug category off [<category> [<category>] ...]
-
-   If no sub-level is associated all debug statements for a given category are
-   output. If a sub-level is given then only those statements assigned a value
-   at or below the associated sub-level are output.
-
- * The location where the media cache stores its temporary files
-   is no longer hardcoded to /tmp but can now be configured separately
-   via the astcachedir config variable in asterisk.conf.
-
-   The default location for astcachedir is now /var/cache/asterisk
-   instead of /tmp, please make sure to manually cleanup and/or
-   migrate the temporary files in /tmp after upgrading.
-
-MessageSend
-------------------
- * The MessageSend dialplan application now takes an
-   optional third argument that can set the message's
-   "To" field on outgoing messages.  It's an alternative
-   to using the MESSAGE(to) dialplan function.
-
-   To prevent confusion with the first argument, currently
-   named "to", it's been renamed to "destination".
-   Its function, creating the request URI, hasn't changed.
-
-   The online documentation has also been enhanced to
-   explain the behavior.
-
-   Despite the changes in this commit, there should be
-   no impact to current users of MessageSend.
-
-New ConfKick application
-------------------
- * Adds a ConfKick() application, which allows
-   a specific channel, all users, or all non-admin
-   users to be kicked from a conference bridge.
-
-New Reload application
-------------------
- * Adds an application to reload modules
-
-PlaybackFinished has a new error state
-------------------
- * The PlaybackFinished event now has a new state "failed"
-   that is used when the sound file was not played due to an error.
-   Before the state on PlaybackFinished was always "done".
-
-   In case of multiple sound files to be played,
-   the PlaybackFinished is sent only once in the end of the list,
-   even in case of error.
-
-WaitForCondition application
-------------------
- * This application provides a way to halt
-   dialplan execution until a provided
-   condition evaluates to true.
-
-app_confbridge
-------------------
- * app_confbridge now has the ability to force the estimated bitrate on an SFU
-   bridge.  To use it, set a bridge profile's remb_behavior to "force" and
-   set remb_estimated_bitrate to a rate in bits per second.  The
-   remb_estimated_bitrate parameter is ignored if remb_behavior is something
-   other than "force".
-
-app_confbridge answer supervision control
-------------------
- * app_confbridge now provides a user option to prevent
-   answer supervision if the channel hasn't been
-   answered yet. To use it, set a user profile's
-   answer_channel option to no.
-
-app_dial announcement option
-------------------
- * The A option for Dial now supports
-   playing audio to the caller as well
-   as the called party.
-
-app_mixmonitor
-------------------
- * app_mixmonitor now sends manager events MixMonitorStart, MixMonitorStop and
-   MixMonitorMute when the channel monitoring is started, stopped and muted (or
-   unmuted) respectively.
-
-app_voicemail
-------------------
- * The VoiceMail application can now be configured to send greetings and
-   instructions via early media and only answering the channel when it is
-   time for the caller to record their message. This behavior can be
-   activated by passing the new 'e' option to VoiceMail.
-
- * You can now customize the "beep" tone or omit it entirely.
-
-chan_iax2
-------------------
- * You can now specify a default "auth" method in the
-   [general] section of iax.conf
-
-chan_pjsip
-------------------
- * The PJSIP_SEND_SESSION_REFRESH dialplan function now issues a warning, and
-   returns unsuccessful if it's used on a channel prior to answering.
-
-chan_pjsip, app_transfer
-------------------
- * Added TRANSFERSTATUSPROTOCOL variable.  When transfer is performed,
-   transfers can pass a protocol specific error code.
-   Example, in SIP 3xx-6xx represent any SIP specific error received when
-   performing a REFER.
-
-func_math: Three new dialplan functions
-------------------
- * Introduce three new functions, MIN, MAX, and ABS, which can be used to
-   obtain the minimum or maximum of up to two integers or absolute value.
-
-func_odbc
-------------------
- * Introduce an ARGC variable for func_odbc functions, along with a minargs
-   per-function configuration option.
-
-   minargs enables enforcing of minimum count of arguments to pass to
-   func_odbc, so if you're unconditionally using ARG1 through ARG4 then
-   this should be set to 4.  func_odbc will generate an error in this case,
-   so for example
-
-   [FOO]
-   minargs = 4
-
-   and ODBC_FOO(a,b,c) in dialplan will now error out instead of using a
-   potentially leaked ARG4 from Gosub().
-
-   ARGC is needed if you're using optional argument, to verify whether or
-   not an argument has been passed, else it's possible to use a leaked ARGn
-   from Gosub (app_stack).  So now you can safely do
-   ${IF($[${ARGC}>3]?${ARGV}:default value)} kind of thing.
-
-func_volume now can be read
-------------------
- * The VOLUME function can now also be used
-   to read existing values previously set.
-
-logger
-------------------
- * Added a new log formatter called "plain" that always prints
-   file, function and line number if available (even for verbose
-   messages) and never prints color control characters.  Most
-   suitable for file output but can be used for other channels
-   as well.
-
-   You use it in logger.conf like so:
-   debug => [plain]debug
-   console => [plain]error,warning,debug,notice,pjsip_history
-   messages => [plain]warning,error,verbose
-
- * The dateformat option in logger.conf will now control the remote
-   console (asterisk -r -T) timestamp format.  Previously, dateformat only
-   controlled the formatting of the timestamp going to log files and the
-   main console (asterisk -c) but only for non-verbose messages.
-
-   Internally, Asterisk does not send the logging timestamp with verbose
-   messages to console clients. It's up to the Asterisk remote consoles
-   to format verbose messages.  Asterisk remote consoles previously did
-   not load dateformat from logger.conf.
-
-   Previously there was a non-configurable and hard-coded "%b %e %T"
-   dateformat that would be used no matter what on all verbose console
-   messages printed on remote consoles.
-
-   Example:
-   logger.conf
-    dateformat=%F %T.%3q
-
-   # asterisk -rvvv -T
-   [2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so.
-   [Mar 19 09:55:43]     -- Goto (dialExten,s,1)
-
-   Given the following example configuration in logger.conf, Asterisk log
-   files and the console, will log verbose messages using the given
-   timestamp.  Now ensuring that all remote console messages are logged
-   with the same dateformat as other log streams.
-
-   ---
-   [general]
-   dateformat=%F %T.%3q
-
-   [logfiles]
-   console  => notice,warning,error,verbose
-   full     => notice,warning,error,debug,verbose
-   ---
-
-   Now we have a globally-defined dateformat that will be used
-   consistently across the Asterisk main console, remote consoles, and
-   log files.
-
-   Now we have consistent logging:
-
-   # asterisk -rvvv -T
-   [2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so.
-   [2021-03-19 09:55:43.920-0400]     -- Goto (dialExten,s,1)
-
-res_pjsip
-------------------
- * PJSIP transports can now be partially reloaded safely. This allows the
-   local_net and external_* options to be updated without restarting Asterisk.
-
- * PJSIP endpoints can now be configured to skip authentication when
-   handling OPTIONS requests by setting the allow_unauthenticated_options
-   configuration property to 'yes.'
-
- * PJSIP support of registrations of endpoints in multidomain
-   scenarios, where the endpoint contains the domain info
-   in pjsip.conf.
-
-res_pjsip_dialog_info_body_generator
-------------------
- * PJSIP now supports RFC 4235 Section 4.1.6 dialog-info+xml local and
-   remote elements by iterating through ringing channels and inserting
-   that info into NOTIFY packet sent to the endpoint.
-
-res_pjsip_messaging
-------------------
- * Implemented the new "to" parameter of the MessageSend()
-   dialplan application.  This allows a user to specify
-   a complete SIP "To" header separate from the Request URI.
-   We now also accept a destination in the same format
-   as Dial()...  PJSIP/number@endpoint
-
-res_rtp_asterisk
-------------------
- * By default Asterisk reports the PJSIP version in all
-   STUN packets it sends.
-
-   This behaviour may not be desired in a production
-   environment and can now be disabled by setting the
-   stun_software_attribute option to 'no' in rtp.conf.
-
-res_srtp
-------------------
- * SRTP replay protection has been added to res_srtp and
-   a new configuration option "srtpreplayprotection" has
-   been added to the rtp.conf config file.  For security
-   reasons, the default setting is "yes".  Buggy clients
-   may not handle this correctly which could result in
-   no, or one way, audio and Asterisk error messages like
-   "replay check failed".
-
-------------------------------------------------------------------------------
---- New functionality introduced in Asterisk 18.0.0 --------------------------
-------------------------------------------------------------------------------
-
-Core
-------------------
- * The Streams API becomes the home for the core ACN capabilities.
-   These include...
-
-    * Parsing and formatting of codec negotiation preferences.
-    * Resolving pending streams and topologies with those configured
-      using configured preferences.
-    * Utility functions for creating string representations of
-      streams, topologies, and negotiation preferences.
-
-   For codec negotiation preferences:
-    * Added ast_stream_codec_prefs_parse() which takes a string
-      representation of codec negotiation preferences, which
-      may come from a pjsip endpoint for example, and populates
-      a ast_stream_codec_negotiation_prefs structure.
-    * Added ast_stream_codec_prefs_to_str() which does the reverse.
-    * Added many functions to parse individual parameter name
-      and value strings to their respective enum values, and the
-      reverse.
-
-   For streams:
-    * Added ast_stream_create_resolved() which takes a "live" stream
-      and resolves it with a configured stream and the negotiation
-      preferences to create a new stream.
-    * Added ast_stream_to_str() which create a string representation
-      of a stream suitable for debug or display purposes.
-
-   For topology:
-    * Added ast_stream_topology_create_resolved() which takes a "live"
-      topology and resolves it, stream by stream, with a configured
-      topology stream and the negotiation preferences to create a new
-      topology.
-    * Added ast_stream_topology_to_str() which create a string
-      representation of a topology suitable for debug or display
-      purposes.
-    * Renamed ast_format_caps_from_topology() to
-      ast_stream_topology_get_formats() to be more consistent with
-      the existing ast_stream_get_formats().
-
-   Additional changes:
-    * A new function ast_format_cap_append_names() appends the results
-      to the ast_str buffer instead of replacing buffer contents.
-
-app_bridgeaddchan
-------------------
- * The BridgeAdd application now behaves more like the Bridge application.
-   The application now sets the BRIDGERESULT channel variable to indicate
-   what happened when the channel resumes in dialplan.  This is instead of
-   hanging up the channel on failure conditions.
-
-res_pjsip
-------------------
- * Two new options, incoming_call_offer_pref and outgoing_call_offer_pref
-   have been added to res_pjsip endpoints that specify the preferred order
-   of codecs to use between those received/sent in an SDP offer and those
-   set in the endpoint configuration.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 17.0.0 to Asterisk 18.0.0 ------------
-------------------------------------------------------------------------------
-
-AMI
-------------------
- * You can now specify an optional 'Content-Type' as an argument for the Asterisk
-   SendText manager action.
-
-ARI
-------------------
- * A new parameter 'inhibitConnectedLineUpdates' is now available in the
-   'bridges.addChannel' call. This prevents the identity of the newly connected
-   channel from being presented to other bridge members.
-
-ARI Channels
-------------------
- * The Channel resource has a new sub-resource "externalMedia".
-   This allows an application to create a channel for the sole purpose
-   of exchanging media with an external server.  Once created, this
-   channel could be placed into a bridge with existing channels to
-   allow the external server to inject audio into the bridge or
-   receive audio from the bridge.
-   See https://wiki.asterisk.org/wiki/display/AST/External+Media+and+ARI
-   for more information.
-
-Core
-------------------
- * H.265/HEVC is now a supported video codec and it can be used by
-   specifying "h265" in the allow line.
-   Please note however, that handling of the additional SDP parameters
-   described in RFC 7798 section 7.2 is not yet supported.
-
-Features
-------------------
- * Adds support for AudioSocket, a very simple bidirectional audio streaming
-   protocol. There are both channel and application interfaces.
-
-   A description of the protocol can be found on the referenced wiki page. A
-   short talk about the reasons and implementation can be found on YouTube at
-   the link provided.
-
-   ARI support has also been added via the existing "externalMedia" ARI
-   functionality. The UUID is specified using the arbitrary "data" field.
-
-   Wiki: https://wiki.asterisk.org/wiki/display/AST/AudioSocket
-   YouTube: https://www.youtube.com/watch?v=tjduXbZZEgI
-
-Messaging
-------------------
- * In order to reduce the amount of AMI and ARI events generated,
-   the global "Message/ast_msg_queue" channel can be set to suppress
-   it's normal channel housekeeping events such as "Newexten",
-   "VarSet", etc. This can greatly reduce load on the manager
-   and ARI applications when the Digium Phone Module for Asterisk
-   is in use.  To enable, set "hide_messaging_ami_events" in
-   asterisk.conf to "yes"  In Asterisk versions <18, the default
-   is "no" preserving existing behavior.  Beginning with
-   Asterisk 18, the option will default to "yes".
-
-STIR/SHAKEN
-------------------
- * STIR/SHAKEN support has been added to Asterisk. Configuration is done in
-   stir_shaken.conf. There is a sample configuration file to help you get
-   started (asterisk/configs/samples/stir_shaken.conf.sample). Once that's
-   set up, you can enable STIR/SHAKEN on any endpoint by setting stir_shaken
-   to yes on the endpoint configuration object. This will add an Identity
-   header on outgoing INVITEs, and check for an Identity header on incoming
-   INVITEs. This option has been added to Alembic as well.
-
-   The information received on an incoming INVITE can be checked using the
-   STIR_SHAKEN dialplan function. There are two variations:
-
-   STIR_SHAKEN(count)
-   STIR_SHAKEN(0, verify_result)
-
-   The first variation will tell you how many STIR/SHAKEN results are on the
-   channel. The second fetches information for a specific result. The first
-   parameter is the index, followed by what information you want to retrieve.
-   The available options are 'verify_result', 'identity', and 'attestation'.
-
-app_chanisavail
-------------------
- * The ChanIsAvail application now tolerates empty positions in the supplied
-   device list.  Dialplan can now be simplified by not having to check for
-   empty positions in the device list.
-
-app_confbridge
-------------------
- * A new bridge profile option, maximum_sample_rate, has been added which sets
-   a maximum sample rate that the bridge will be mixed at. This allows the bridge
-   to move below the maximum sample rate as needed but caps it at the maximum.
-
- * A new option, "text_messaging", has been added to the user profile
-   which allows control over whether text messaging is enabled or
-   disabled for a user. If enabled (the default) text messages
-   will be sent to the user. If disabled no text messages will be
-   sent to the user.
-
-app_dial
-------------------
- * The Dial application now tolerates empty positions in the supplied
-   destination list.  Dialplan can now be simplified by not having to check
-   for empty positions in the destination list.  If there are no endpoints to
-   dial then DIALSTATUS is set to CHANUNAVAIL.
-
-app_mixmonitor
-------------------
- * An option 'S' has been added to MixMonitor. If used in combination with
-   the r() and/or t() options, if a frame is available to write to one of
-   those files but not the other, a frame of silence if written to the file
-   that does not have an audio frame. This should prevent the two files
-   from "drifting" when mixed after the fact.
-
- * If the 'filename' argument to MixMonitor() ended with '.wav49,'
-   Asterisk would silently convert the extension to '.WAV' when opening
-   the file for writing. This caused the MIXMONITOR_FILENAME variable to
-   reference the wrong file. The MIXMONITOR_FILENAME variable will now
-   reflect the name of the file that Asterisk actually used instead of
-   the filename that was passed to the application.
-
-app_page
-------------------
- * The Page application now tolerates empty positions in the supplied
-   destination list.  Dialplan can now be simplified by not having to check
-   for empty positions in the destination list.
-
-app_voicemail
-------------------
- * A feature was added in Asterisk 13.27.0 and 16.4.0 that removed lock files from
-   the Asterisk voicemail directory on startup. Some users that store their
-   voicemails on network storage devices experienced slow startup times due to the
-   relative expense of traversing the voicemail directory structure looking for
-   orphaned lock files. This feature has now been removed.
-
-   Users who require the lock files to be removed at startup should modify their
-   startup scripts to do so before starting the asterisk process.
-
-chan_pjsip
-------------------
- * A new dialplan function, PJSIP_MOH_PASSTHROUGH, has been added to chan_pjsip. This
-   allows the behaviour of the moh_passthrough endpoint option to be read or changed
-   in the dialplan. This allows control on a per-call basis.
-
-chan_rtp
-------------------
- * The UnicastRTP channel driver provided by chan_rtp now accepts
-   "<hostname>:<port>" as an alternative to "<ip_address>:<port>" in the destination.
-   The first AAAA (preferred) or A record resolved will be used as the destination.
-   The lookup is synchronous so beware of possible dialplan delays if you specify a
-   hostname.
-
-func_curl
-------------------
- * A new parameter, httpheader, has been added to CURLOPT function. This parameter
-   allows to set custom http headers for subsequent calls off CURL function.
-   Any setting of headers will replace the default curl headers
-   (e.g. "Content-type: application/x-www-form-urlencoded")
-
- * A new option, followlocation, can now be enabled with the CURLOPT()
-   dialplan function. Setting this will instruct cURL to follow 3xx
-   redirects, which it does not by default.
-
-func_jitterbuffer
-------------------
- * The JITTERBUFFER dialplan function now has an option to enable video synchronization
-   support. When enabled and used with a compatible channel driver (chan_sip, chan_pjsip)
-   the video is buffered according to the size of the audio jitterbuffer and is
-   synchronized to the audio.
-
-func_volume
-------------------
- * Accept decimal number as argument.
-
-http
-------------------
- * You can now disable the /httpstatus page served by Asterisk's built-in
-   HTTP server by setting 'enable_status' to 'no' in http.conf.
-
-minmemfree
-------------------
- * The 'minmemfree' configuration option now counts memory allocated to
-   the filesystem cache as "free" because it is memory that is available
-   to the process.
-
-res_ari_channels
-------------------
- * When creating a channel in ARI using the create call
-   you can now specify dialplan variables to be set as part
-   of the same operation.
-
-res_musiconhold
-------------------
- * This fix allows a realtime moh class to be unregistered from the command
-   line. This is useful when the contents of a directory referenced by a
-   realtime moh class have changed.
-   The realtime moh class is then reloaded on the next request and uses the
-   new directory contents.
-
- * A new mode - playlist - has been added to res_musiconhold. This mode allows the
-   user to specify the files (or URLs) to play explicitly by putting them directly
-   in musiconhold.conf.
-
-res_pjsip
-------------------
- * Added a new PJSIP system setting called disable_rport.
-   Default is no to keep support working as before.
-
-   If it is false (default) it adds the 'rport' parameter in the outgoing request message.
-   If it is true it does not add the 'rport' parameter in the outgoing request message.
-
-   This is a system option, but working as a global option.
-
-res_pjsip_endpoint_identifier_ip
-------------------
- * In 'type = identify' sections, the addresses specified for the 'match'
-   clause can now include a port number. For IP addresses, the port is
-   provided by including a colon after the address, followed by the
-   desired port number. If supplied, the netmask should follow the port
-   number. To specify a port for IPv6 addresses, the address itself must
-   be enclosed in brackets to be parsed correctly.
-
-res_pjsip_logger
-------------------
- * The PJSIP packet logger now has the following CLI commands:
-
-   pjsip set logger pcap <filename>
-
-   When used this will create a pcap file containing the incoming
-   and outgoing SIP packets, in unencrypted form.
-
-   pjsip set logger console <on / off>
-
-   This allows you to toggle logging to console on and off.
-
-   pjsip set logger host <IP/subnet mask> add
-
-   This allows you to add an additional IP address or subnet
-   mask to logging, allowing you to log multiple instead of
-   just a single IP address or all traffic.
-
-   The normal "pjsip set logger host" CLI command has also been
-   expanded to allow subnet masks as well.
-
-res_pjsip_session
-------------------
- * When placing an outgoing call to a PJSIP endpoint the intent
-   of any requested formats will now be respected. If only an audio
-   format is requested (such as ulaw) but the underlying endpoint
-   does not support the format the resulting SDP will still only
-   contain an audio stream, and not any additional streams such as
-   video.
-
- * Two new options, incoming_call_offer_pref and outgoing_call_offer_pref
-   have been added to res_pjsip endpoints that specify the preferred order
-   of codecs to use between those received/sent in an SDP offer and those
-   set in the endpoint configuration.
-
-res_rtp_asterisk
-------------------
- * This change include a new cli command 'rtp show settings'
-
-   The command display by general settings of rtp configuration. For this
-   point is added the fields: rtpstart, rtpend, dtmftimeout, rtpchecksum,
-   strictrtp, learning_min_sequential and icesupport.
-
- * The blacklist mechanism in res_rtp_asterisk for ICE and STUN was converted to
-   an ACL mechanism.
-
-   As such six now options are now available:
-
-   ice_deny
-   ice_permit
-   ice_acl
-   stun_deny
-   stun_permit
-   stun_acl
-
-   These options have their obvious meanings as used elsewhere.
-
-   Backwards compatibility was maintained by adding {stun,ice}_blacklist as
-   aliases for {stun,ice}_deny.
-
-res_sorcery_memory_cache
-------------------
- * The SorceryMemoryCacheExpireObject AMI action and CLI
-   command allow expiring of a specific object within the
-   sorcery memory cache. This is done by removing the
-   object from the cache with the expectation that the
-   cache will then re-populate the object when it is next
-   needed.
-
-   For full backend caching this does not occur. The cache
-   won't repopulate until an entire refresh is done resulting
-   in the possibility that objects are missing until that
-   time.
-
-   The AMI action and CLI command will now not allow
-   expiring of an object if the cache is configured as a
-   full backend cache. Instead you must use either the
-   SorceryMemoryCacheExpire or SorceryMemoryCachePopulate
-   AMI actions or their associated CLI commands.
-
-taskprocessor.c
-------------------
- * Added two new CLI commands to reset stats for taskprocessors. You can
-   reset stats for a single, specific taskprocessor ('core reset
-   taskprocessor <taskprocessor>'), or you can reset all taskprocessors
-   ('core reset taskprocessors'). These commands will reset the counter for
-   the number of tasks processed as well as the max queue size.
-
- * Added "like" support for 'core show taskprocessors'. Now you
-   can specify a specific set of taskprocessors (or just one) by
-   adding the keyword "like" to the above command, followed by
-   your search criteria.
-
-------------------------------------------------------------------------------
---- New functionality introduced in Asterisk 17.0.0 --------------------------
-------------------------------------------------------------------------------
-
-Bridging
-------------------
- * The bridging core no longer uses the stasis cache for bridge
-   snapshots.  The latest bridge snapshot is now stored on the
-   ast_bridge structure itself.
-
-   The following APIs are no longer available since the stasis cache
-   is no longer used:
-     ast_bridge_topic_cached()
-     ast_bridge_topic_all_cached()
-
-   A topic pool is now used for individual bridge topics.
-
-   The ast_bridge_cache() function was removed since there's no
-   longer a separate container of snapshots.
-
-   A new function "ast_bridges()" was created to retrieve the
-   container of all bridges.  Users formerly calling
-   ast_bridge_cache() can use the new function to iterate over
-   bridges and retrieve the latest snapshot directly from the
-   bridge.
-
-   The ast_bridge_snapshot_get_latest() function was renamed to
-   ast_bridge_get_snapshot_by_uniqueid().
-
-   A new function "ast_bridge_get_snapshot()" was created to retrieve
-   the bridge snapshot directly from the bridge structure.
-
-   The ast_bridge_topic_all() function now returns a normal topic
-   not a cached one so you can't use stasis cache functions on it
-   either.
-
-   The ast_bridge_snapshot_type() stasis message now has the
-   ast_bridge_snapshot_update structure as it's data.  It contains
-   the last snapshot and the new one.
-
-Channels
-------------------
- * The core no longer uses the stasis cache for channels snapshots.
-   The following APIs are no longer available:
-       ast_channel_topic_cached()
-       ast_channel_topic_all_cached()
-   The ast_channel_cache_all() and ast_channel_cache_by_name() functions
-   now returns an ao2_container of ast_channel_snapshots rather than a
-   container of stasis_messages therefore you can't call stasis_cache
-   functions on it.
-   The ast_channel_topic_all() function now returns a normal topic,
-   not a cached one so you can't use stasis cache functions on it either.
-   The ast_channel_snapshot_type() stasis message now has the
-   ast_channel_snapshot_update structure as it's data.
-   ast_channel_snapshot_get_latest() still returns the latest snapshot.
-
-chan_sip
-------------------
- * The chan_sip module is now deprecated, users should migrate to the
-   replacement module chan_pjsip.  See guides at the Asterisk Wiki:
-     https://wiki.asterisk.org/wiki/x/tAHOAQ
-     https://wiki.asterisk.org/wiki/x/hYCLAQ
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 16.0.0 to Asterisk 17.0.0 ------------
-------------------------------------------------------------------------------
-
-AttendedTransfer
-------------------
- * A new application, this will queue up attended transfer to the given extension.
-
-BlindTransfer
-------------------
- * A new application, this will redirect all channels currently
-   bridged to the caller channel to the specified destination.
-
-ConfBridge
-------------------
- * Add "average_all", "highest_all", and "lowest_all" values for
-   the remb_behavior option. These values operate on a bridge
-   level instead of a per-source level. This means that a single
-   REMB value is calculated and sent to every sender, instead of
-   a REMB value that is unique for the specific sender..
-
-Dial
-------------------
- * Add RINGTIME and RINGTIME_MS variables containing respectively seconds and
-   milliseconds between creation of the dialing channel and receiving the first
-   RINGING signal
-
-   Add PROGRESSTIME and PROGRESSTIME_MS variables analogous to the above with respect to
-   the PROGRESS signal. Shorter of these two times should be equivalent to
-   the PDD (Post Dial Delay) value
-
-   Add DIALEDTIME_MS and ANSWEREDTIME_MS variables to get millisecond resolution
-   versions of DIALEDTIME and ANSWEREDTIME
-
-RTP/ICE
-------------------
- * You can now indicate that you'd like an ice_host_candidate's local address
-   to be published as well as the mapped address.  See the sample rtp.conf
-   for more information.
-
-ReadExten
-------------------
- * Add 'p' option to stop reading extension if user presses '#' key.
-
-pbx_dundi
-------------------
- * The DUNDi PBX module now supports IPv4/IPv6 dual binding.
-
-res_pjsip
-------------------
- * Added a new PJSIP global setting called norefersub.
-   Default is true to keep support working as before.
-
-   res_pjsip_refer configures PJSIP norefersub capability accordingly.
-
-   Checks the PJSIP global setting value.
-   If it is true (default) it adds the norefersub capability to PJSIP.
-   If it is false (disabled) it does not add the norefersub capability
-   to PJSIP.
-
-   This is useful for Cisco switches that do not follow RFC4488.
-
-res_rtp_asterisk
-------------------
- * DTLS packets will now be fragmented according to the MTU as set in rtp.conf. This
-   allows larger certificates to be used for the DTLS negotiation. By default this value
-   is 1200.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 16.2.0 to Asterisk 16.3.0 ----------
-------------------------------------------------------------------------------
-
-ARI
-------------------
- * Application event filtering is now supported. An application can now specify
-   an "allowed" and/or "disallowed" list(s) of event types. Only those types
-   indicated in the "allowed" list are sent to the application. Conversely, any
-   types defined in the "disallowed" list are not sent to the application. Note
-   that if a type is specified in both lists "disallowed" takes precedence.
-
- * A new REST API call has been added: 'move'. It follows the format
-   'channels/{channelId}/move' and can be used to move channels from one application
-   to another without needing to exit back into the dialplan. An application must be
-   specified, but the passing a list of arguments to the new application is optional.
-   An example call would look like this:
-
-   client.channels.move(channelId=chan.id, app='ari-example', appArgs='a,b,c')
-
-   If the channel was inside of a bridge when switching applications, it will
-   remain there. If the application specified cannot be moved to, then the channel
-   will remain in the current application and an event will be triggered named
-   "ApplicationMoveFailed", which will provide the destination application's name
-   and the channel information.
-
-res_pjsip
-------------------
- * A new configuration parameter "taskprocessor_overload_trigger" has been
-   added to the pjsip.conf "globals" section.  The distributor currently stops
-   accepting new requests when any taskprocessor overload is triggered.  The
-   new option allows you to completely disable overload detection (NOT
-   RECOMMENDED), keep the current behavior, or trigger only on pjsip
-   taskprocessor overloads.
-
-chan_pjsip
-------------------
- * A new configuration parameter 'ignore_183_without_sdp' has been added
-   to the pjsip.conf "endpoints" section.  If enabled, will make chan_pjsip
-   discard 183s that do not contain an SDP body, which can resolve no
-   ringback tone issues as well as making the behavior match chan_sip.
-
-MWI
-------------------
- * A new module "res_mwi_devstate" has been added that allows subscriptions
-   to voicemail boxes using "presence" events.  This allows common BLF keys
-   to act as voicemail waiting indicators.
-
-app_queue
-------------------
- * Added the ability to set the wrapuptime per-member using the AddQueueMember
-   application.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 16.1.0 to Asterisk 16.2.0 ------------
-------------------------------------------------------------------------------
-
-ARI
-------------------
- * Whenever an ARI application is started, a context will be created for it
-   automatically as long as one does not already exist, following the format
-   'stasis-<app_name>'. Two extensions are also added to this context: a match-all
-   extension, and the 'h' extension. Any phone that registers under this context
-   will place all calls to the corresponding Stasis application.
-
-res_pjsip
-------------------
- * Added "send_contact_status_on_update_registration" global configuration option
-   to enable sending AMI ContactStatus event when a device refreshes its registration.
-
-Core
-------------------
- * Reworked the media indexer so it doesn't cache the index.  Testing revealed
-   that the cache added no benefit but that it could consume excessive memory.
-   Two new index related functions were created: ast_sounds_get_index_for_file()
-   and ast_media_index_update_for_file() which restrict index updating to
-   specific sound files.  The original ast_sounds_get_index() and
-   ast_media_index_update() calls are still available but since they no longer
-   cache the results internally, developers should re-use an index they may
-   already have instead of calling ast_sounds_get_index() repeatedly.  If
-   information for only a single file is needed, ast_sounds_get_index_for_file()
-   should be called instead of ast_sounds_get_index().
-
-Features
-------------------
- * Before Asterisk 12, when using the automon or automixmon features defined
-   in features.conf, a channel variable (TOUCH_MIXMONITOR_OUTPUT) was set on
-   both channels, indicating the filename of the recording.
-
-   When bridging was overhauled in Asterisk 12, the behavior was changed such
-   that the variable was only set on the peer channel and not on the channel
-   that initiated the automon or automixmon.
-
-   The previous behavior has been restored so both channels receive the
-   channel variable when one of these features is invoked.
-
-app_voicemail
-------------------
- * You can now specify a special context with the "aliasescontext" parameter
-   in voicemail.conf which will allow you to create aliases for physical
-   mailboxes.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 16.0.0 to Asterisk 16.1.0 ------------
-------------------------------------------------------------------------------
-
-pbx_config
-------------------
- * pbx_config will now find and process multiple 'globals' sections from
-   extensions.conf.  Variables are processed in the order they are found
-   and duplicate variables overwrite the previous value.
-
-chan_pjsip
-------------------
- * New dialplan function PJSIP_PARSE_URI added to parse an URI and return
-   a specified part of the URI.
-
-Core
-------------------
- * ast_bt_get_symbols() now returns a vector of strings instead of an
-   array of strings.  This must be freed with ast_bt_free_symbols.
-
-res_pjsip
-------------------
- * New options 'trust_connected_line' and 'send_connected_line' have been
-   added to the endpoint. The option 'trust_connected_line' is to control
-   if connected line updates are accepted from this endpoint.
-   The option 'send_connected_line' is to control if connected line updates
-   can be sent to this endpoint.
-   The default value is 'yes' for both options.
-
-res_rtp_asterisk
-------------------
- * The existing strictrtp option in rtp.conf has a new choice availabe, called
-   'seqno', which behaves the same way as setting strictrtp to 'yes', but will
-   ignore the time interval during learning so that bursts of packets can still
-   trigger learning our source.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 15 to Asterisk 16 --------------------
-------------------------------------------------------------------------------
-
-app_fax
-------------------
- * The app_fax module is now deprecated, users should migrate to the
-   replacement module res_fax.
-
-app_originate
-------------------
- * An 'a' option has been added to the Originate dialplan application which
-   will execute the originate in an asynchronous fashion. If set then the
-   application will return immediately without waiting for the originated
-   channel to answer.
-
-Build System
-------------------
- * MALLOC_DEBUG no longer has an effect on Asterisk's ABI.  Asterisk built
-   with MALLOC_DEBUG can now successfully load binary modules built without
-   MALLOC_DEBUG and vice versa.  Third-party pre-compiled modules no longer
-   need to have a special build with it enabled.
-
- * Asterisk now depends on libjansson >= 2.11.  If this version is not
-   available on your distro you can use `./configure --with-jansson-bundled`.
-
-app_macro
-------------------
- * The app_macro module is now deprecated and by default it is no longer
-   built.  Users should migrate to app_stack (Gosub).  A warning is logged
-   the first time any Macro is used.
-
-app_setcallerid
-------------------
- * The app_setcallerid module has been removed. The CALLERID dialplan function
-   should be used instead.
-
-chan_sip
-------------------
- * New function SIP_HEADERS() enumerates all headers in the incoming INVITE.
-
- * The variable GET_TRANSFERRER_DATA set in the peer channel causes matching
-   headers be retrieved from the REFER message and made accessible to the
-   dialplan in the hash TRANSFER_DATA.
-
-chan_dahdi
-------------------
- * Timeouts for reading digits from analog phones are now configurable in
-   chan_dahdi.conf: firstdigit_timeout, interdigit_timeout, matchdigit_timeout.
-
-AMI
-------------------
- * The ContactStatus and Status fields for the manager events ContactStatus
-   and ContactStatusDetail are now set to "NonQualified" when a contact exists
-   but has not been qualified.
-
- * The "Newexten" event is now part of the "dialplan" class. The documentation
-   for Asterisk 15 already specified this, but the implementation was actually
-   using the "call" class instead.
-
-ARI
-------------------
- * The ContactInfo event's contact_status field is now set to "NonQualified"
-   when a contact exists but has not been qualified.
-
-app_queue
-------------------
- * Added the ability to set the wrapuptime in the configuration of member.
-   When set the wrapuptime on the member is used instead of the wrapuptime
-   defined for the queue itself.
-
- * Added predial handler support for caller and callee channels with the
-   B and b options respectively.  This is similar to the predial support
-   in app_dial.
-
-res_config_sqlite
-------------------
- * The res_config_sqlite module is now deprecated, users should migrate to the
-   replacement module res_config_sqlite3.
-
-res_monitor
-------------------
- * The res_monitor module is now deprecated, users should migrate to the
-   replacement module app_mixmonitor.
-
-res_pjsip
-------------------
- * A new AMI action, PJSIPShowAors, has been added which displays information
-   about all configured PJSIP AORs.
-
- * A new AMI action, PJSIPShowAuths, has been added which displays information
-   about all configured PJSIP Auths.
-
- * A new AMI action, PJSIPShowContacts, has been added which displays information
-   about all configured PJSIP Contacts.
-
-res_pjsip_registrar_expire
-------------------
- * The res_pjsip_registrar_expire module has been removed.  The functionality has
-   been moved into res_pjsip_registrar.
-
-func_audiohookinherit
-------------------
- * The func_audiohookinherit module has been removed. Due to architectural changes
-   in Asterisk 12, audiohook inheritance is performed automatically and this
-   function now lacks function.
-
-cdr_syslog
-------------------
- * The cdr_syslog module is now deprecated and by default it is no longer
-   built.
-
-cdr_sqlite
-------------------
- * The cdr_sqlite module has been removed. Users should move to using the
-   cdr_sqlite3_custom module instead.
-
-format_jpeg
-------------------
- * The format_jpeg module has been removed.
-
-pbx_dundi
-------------------
- * DUNDi now supports IPv6
-
-Core:
-------------------
- * libedit is no longer available as an embedded library and must be provided
-   by the system.
- * The STATIC_BUILD functionality has been removed as it has not been maintained
-   and has not worked in quite some time.
- * The module loader now enforces inter-module dependencies.  This ensures that
-   a module is not started before another it depends on, even if preload is used.
-   If a dependency is not available or fails to startup this will block any
-   dependants from startup.
- * Parts of the Asterisk core which can load configuration from realtime are now
-   built-in modules.  It is no longer necessary to preload realtime drivers as
-   they are always initialized before the built-in modules.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 15.5.0 to Asterisk 15.6.0 ------------
-------------------------------------------------------------------------------
-
-res_pjsip
-------------------
- * A new option 'suppress_q850_reason_headers' has been added to the endpoint
-   object. Some devices can't accept multiple Reason headers and get confused
-   when both 'SIP' and 'Q.850' Reason headers are received.  This option allows
-   the 'Q.850' Reason header to be suppressed.  The default value is 'no'.
-
-res_pjsip_endpoint_identifier_ip
-------------------
- * Added regex support to the identify section match_header option.  You
-   specify a regex instead of an explicit string by surrounding the header
-   value with slashes:
-   match_header = SIPHeader: /regex/
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 15.4.0 to Asterisk 15.5.0 ------------
-------------------------------------------------------------------------------
-
-Core
-------------------
- * Core bridging and, more specifically, bridge_softmix have been enhanced to
-   relay received frames of type TEXT or TEXT_DATA to all participants in a
-   softmix bridge.  res_pjsip_messaging and chan_pjsip have been enhanced to
-   take advantage of this so when res_pjsip_messaging receives an in-dialog
-   MESSAGE message from a user in a conference call, it's relayed to all
-   other participants in the call.
-
-app_sendtext
-------------------
- * Support Enhanced Messaging.  SendText now accepts new channel variables
-   that can be used to override the To and From display names and set the
-   Content-Type of a message.  Since you can now set Content-Type, other
-   text/* content types are now valid.
-
-app_confbridge
-------------------
- * ConfbridgeList now shows talking status. This utilizes the same voice
-   detection as the ConfbridgeTalking event, so bridges must be configured
-   with "talk_detection_events=yes" for this flag to have meaning.
-
- * ConfBridge can now send events to participants via in-dialog MESSAGEs.
-   All current Confbridge events are supported, such as ConfbridgeJoin,
-   ConfbridgeLeave, etc.  In addition to those events, a new event
-   ConfbridgeWelcome has been added that will send a list of all
-   current participants to a new participant.
-
-res_pjsip
-------------------
-  * Two new options have been added to the system and endpoint objects to
-    control whether, on outbound calls, Asterisk will accept updated SDP answers
-    during the initial INVITE transaction when 100rel is not in effect.
-    This usually happens when the INVITE is forked to multiple UASs and more
-    than one sends an SDP answer or when a single UAS needs to change a media
-    port to switch from custom ringback to the actual media destination.
-
-    The 'follow_early_media_forked' option sets whether Asterisk will accept
-    the updated SDP when the To tag on the subsequent response is different than
-    that on the the previous response.  This usually occurs in the forked INVITE
-    scenario. The default value is "yes" which is the current behavior.
-
-    The 'accept_multiple_sdp_answers' flag sets whether Asterisk will accept the
-    updated SDP when the To tag on the subsequent response is the same as that
-    on the previous response. This can occur when a UAS needs to switch media
-    ports from custom ringback to the final media path.  The default value is
-    "no" which is the current behavior.
-
-    These options have to be enabled system-wide in the system config section
-    of pjsip.conf as well as on individual endpoints that require the
-    functionality.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 15.3.0 to Asterisk 15.4.0 ------------
-------------------------------------------------------------------------------
-
-Core
-------------------
- * A new configuration option "genericplc_on_equal_codecs" was added to the
-   "plc" section of codecs.conf to allow generic packet loss concealment even
-   if no transcoding was originally needed.  Transcoding via SLIN is forced
-   in this case.
-
-res_pjproject
-------------------
- * Added the "cache_pools" option to pjproject.conf.  Disabling the option
-   helps track down pool content mismanagement when using valgrind or
-   MALLOC_DEBUG.  The cache gets in the way of determining if the pool contents
-   are used after free and who freed it.
-
-res_pjsip_notify
-------------------
- * Extend the PJSIPNotify AMI command to send an in-dialog notify on a
-   channel.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 15.2.0 to Asterisk 15.3.0 ------------
-------------------------------------------------------------------------------
-
-Core
-------------------
- * During dialplan reload log messages are produced for each context,
-   extension and include.  These messages are no longer printed by the
-   verbose loggers, they are now only logged as debug messages.
-
-app_confbridge
-------------------
- * Added the Muted header to the ConfbridgeJoin AMI event to indicate the
-   participant's starting mute status.
-
- * Made the AMI ConfbridgeList action's ConfbridgeList events output all
-   the standard channel snapshot headers instead of a few hand-coded channel
-   snapshot headers.  The benefit is that the CallerIDName gets disruptive
-   characters like CR, LF, Tab, and a few others escaped.  However, an empty
-   CallerIDName is now output as "<unknown>" instead of "<no name>".
-
-app_followme
-------------------
- * Added a new prompt, connecting-prompt, which will be played
-   (if configured) to the "winner" callee before connecting the call.
-
-res_pjsip
-------------------
- * Users who are matching endpoints by SIP header need to reevaluate their
-   global "endpoint_identifier_order" option in light of the "ip" endpoint
-   identifier method split into the "ip" and "header" endpoint identifier
-   methods.
-
- * The pjsip_transport_event feature introduced in 15.1.0 has been refactored.
-   Any external modules that may have used that feature (highly unlikely) 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 negotiation 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 announced 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.
-
-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.
-
-------------------------------------------------------------------------------
---- 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".
-
-Applications
-------------------
-
-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.
-
-Codecs
-------------------
- * Added format attribute negotiation for the iLBC audio codec. Format attribute
-   negotiation is provided by the res_format_attr_ilbc module. iLBC 20 is the
-   default now. Falls back to iLBC 30, when the remote party requests this.
-
-ConfBridge
-------------------
- * Added the ability to pass options to MixMonitor when recording is used with
-   ConfBridge. This includes the addition of the following configuration
-   parameters for the 'bridge' object:
-   - record_file_timestamp: whether or not to append the start time to the
-     recorded file name
-   - record_options: the options to pass to the MixMonitor application
-   - record_command: a command to execute when recording is finished
-   Note that these options may also be with the CONFBRIDGE function.
-
-ControlPlayback
-------------------
- * Remote files can now be retrieved and played back. See the Playback
-   dialplan application for more details.
-
-FollowMe
-------------------
- * It is now possible to disable the prompt from a callee by setting
-   'enable_callee_prompt = no' in followme.conf.
-
-Playback
-------------------
- * Remote files can now be retrieved and played back via the Playback and other
-   media playback dialplan applications. This is done by directly providing
-   the URL to play to the dialplan application:
-     same => n,Playback(http://1.1.1.1/howler-monkeys-fl.wav)
-   Note that unlike 'normal' media files, the entire URI to the file must be
-   provided, including the file extension. Currently, on HTTP and HTTPS URI
-   schemes are supported.
-
-Queue
--------------------
- * Added field ReasonPause on QueueMemberStatus if set when paused, the reason
-   the queue member was paused.
-
- * Added field LastPause on QueueMemberStatus for time when started the last
-   pause for a queue member.
-
- * Show the time when started the last pause for queue member on CLI for command
-   'queue show'.
-
-SMS
-------------------
- * Added the 'n' option, which prevents the SMS from being written to the log
-   file. This is needed for those countries with privacy laws that require
-   providers to not log SMS content.
-
-
-Channel Drivers
-------------------
-
-chan_dahdi
-------------------
- * The CALLERID(ani2) value for incoming calls is now populated in featdmf
-   signaling mode.  The information was previously discarded.
-
- * Added the force_restart_unavailable_chans compatibility option.  When
-   enabled it causes Asterisk to restart the ISDN B channel if an outgoing
-   call receives cause 44 (Requested channel not available).
-
-chan_iax2
-------------------
- * The iax.conf forcejitterbuffer option has been removed.  It is now always
-   forced if you set iax.conf jitterbuffer=yes.  If you put a jitter buffer
-   on a channel it will be on the channel.
-
- * A new configuration parameters, 'calltokenexpiration', has been added that
-   controls the duration before a call token expires. Default duration is 10
-   seconds. Setting this to a higher value may help in lagged networks or those
-   experiencing high packet loss.
-
- * Plaintext auth mode is deprecated and removed from possible default modes.
-
-chan_rtp (was chan_multicast_rtp)
-------------------
- * Added unicast RTP support and renamed chan_multicast_rtp to chan_rtp.
-
- * The format for dialing a unicast RTP channel is:
-   UnicastRTP/<destination-addr>[/[<options>]]
-   Where <destination-addr> is something like '127.0.0.1:5060'.
-   Where <options> are in standard Asterisk flag options format:
-   c(<codec>) - Specify which codec/format to use such as 'ulaw'.
-   e(<engine>) - Specify which RTP engine to use such as 'asterisk'.
-
- * New options were added for a multicast RTP channel.  The format for
-   dialing a multicast RTP channel is:
-   MulticastRTP/<type>/<destination-addr>[/[<control-addr>][/[<options>]]]
-   Where <type> can be either 'basic' or 'linksys'.
-   Where <destination-addr> is something like '224.0.0.3:5060'.
-   Where <control-addr> is something like '127.0.0.1:5060'.
-   Where <options> are in standard Asterisk flag options format:
-   c(<codec>) - Specify which codec/format to use such as 'ulaw'.
-   i(<address>) - Specify the interface address from which multicast RTP
-     is sent.
-   l(<enable>) - Set whether packets are looped back to the sender.  The
-     enable value can be 0 to set looping to off and non-zero to set
-     looping on.
-   t(<ttl>) - Set the time-to-live (TTL) value for multicast packets.
-
-chan_sip
-------------------
- * New 'rtpbindaddr' global setting. This allows a user to define which
-   ipaddress to bind the rtpengine to. For example, chan_sip might bind
-   to eth0 (10.0.0.2) but rtpengine to eth1 (192.168.1.10).
-
- * DTLS related configuration options can now be set at a general level.
-   Enabling DTLS support, though, requires enabling it at the user
-   or peer level.
-
- * Added the possibility to set the From: header through the the SIP dial
-   string (populating the fromuser/fromdomain fields), complementing the
-   [!dnid] option for the To: header that has existed since 1.6.0 (1d6b192).
-   NOTE: This is again separated by an exclamation mark, so the To: header may
-   not contain one of those.
-
- * Session-Timers (RFC 4028) work for TCP (and TLS) transports as well now.
-   Previously Asterisk dropped calls only with UDP transports. However with
-   longer international calls via TCP, the SIP channel might break, because
-   all hops on the Internet route must stay online (have not a single power
-   outage, for example). Therefore with Session-Timers enabled (which are
-   enabled at default), you might see additional dropped calls. Consequently
-   please, consider to go for session-timers=refuse in your sip.conf.
-
-chan_pjsip
-------------------
- * New 'user_eq_phone' endpoint setting. This adds a 'user=phone' parameter
-   to the request URI and From URI if the user is determined to be a phone
-   number.
-
- * New 'moh_passthrough' endpoint setting. This will pass hold and unhold
-   requests through using SIP re-invites with sendonly and sendrecv accordingly.
-
- * Added the pjsip.conf system type disable_tcp_switch option.  The option
-   allows the user to disable switching from UDP to TCP transports described
-   by RFC 3261 section 18.1.1.
-
- * New 'line' and 'endpoint' options added on outbound registrations. This
-   allows some identifying information to be added to the Contact of the
-   outbound registration. If this information is present on messages received
-   from the remote server the message will automatically be associated with the
-   configured endpoint on the outbound registration.
-
-
-Core
-------------------
- * The core of Asterisk uses a message bus called "Stasis" to distribute
-   information to internal components. For performance reasons, the message
-   distribution was modified to make use of a thread pool instead of a
-   dedicated thread per consumer in certain cases. The initial settings for
-   the thread pool can now be configured in 'stasis.conf'.
-
- * A new core DNS API has been implemented which provides a common interface
-   for DNS functionality. Modules that use this functionality will require that
-   a DNS resolver module is loaded and available.
-
- * Modified processing of command-line options to first parse only what
-   is necessary to read asterisk.conf. Once asterisk.conf is fully loaded,
-   the remaining options are processed.  The -X option now applies to
-   asterisk.conf only.  To enable #exec for other config files you must
-   set execincludes=yes in asterisk.conf.  Any other option set on the
-   command-line will now override the equivalent setting from asterisk.conf.
-
- * The TLS core in Asterisk now supports X.509 certificate subject alternative
-   names. This way one X.509 certificate can be used for hosts that can be
-   reached under multiple DNS names or for multiple hosts.
-
- * The Asterisk logging system now supports JSON structured logging. Log
-   channels specified in logger.conf or added dynamically via CLI commands now
-   support an optional specifier prior to their levels that determines their
-   formatting. To set a log channel to format its entries as JSON, a formatter
-   of '[json]' can be set, e.g.,
-      full => [json]debug,verbose,notice,warning,error
-
- * The core now supports a 'media cache', which stores temporary media files
-   retrieved from external sources. CLI commands have been added to manipulate
-   and display the cached files, including:
-   - 'media cache show <all>' - show all cached media files, or details about
-     one particular cached media file
-   - 'media cache refresh <item>' - force a refresh of a particular media file
-     in the cache
-   - 'media cache delete <item>' - remove an item from the cache
-   - 'media cache create <uri>' - retrieve a URI and store it in the cache
-
- * The ability for device state hints to be automatically created as a result of
-   device state changes now exists in the PBX. This functionality is referred to
-   as "autohints" and is configurable in extensions.conf by placing "autohints=yes"
-   in the context. If enabled a device state hint will be automatically created
-   with the name of the device.
-
-* If Asterisk is built with systemd support, and run under systemd, it will
-  notify systemd of its state using sd_notify. Use 'Type=notify' in
-  asterisk.service.
-
-Functions
-------------------
- * The func_odbc global option "single_db_connection" default value has been
-   changed to 'no'.
-
-
-Formats
-------------------
- * New module format_ogg_speex added which supports Speex codec inside
-   Ogg containers (filename extension .spx).
-
-
-CHANNEL
-------------------
- * Added CHANNEL(onhold) item that returns 1 (onhold) and 0 (not-onhold) for
-   the hold status of a channel.
-
-CURL
-------------------
- * The CURL function now supports a write option, which will save the retrieved
-   file to a location on disk. As an example:
-     same => n,Set(CURL(https://1.1.1.1/foo.wav)=/tmp/foo.wav)
-   will save 'foo.wav' to /tmp.
-
-DTMF Features
-------------------
- * The transferdialattempts default value has been changed from 1 to 3. The
-   transferinvalidsound has been changed from "pbx-invalid" to
-   "privacy-incorrect". These were changed to make DTMF transfers be more
-   user-friendly by default.
-
-
-Resources
-------------------
-
-res_http_media_cache
-------------------
- * A backend for the core media cache, this module retrieves media files from
-   a remote HTTP(S) server and stores them in the core media cache for later
-   playback.
-
-res_musiconhold
-------------------
- * Added sort=randstart to the sort options. It sorts the files by name and
-   then chooses the first file to play at random.
- * Added preferchannelclass=no option to prefer the application-passed class
-   over the channel-set musicclass. This allows separate hold-music from
-   application (e.g. Queue or Dial) specified music.
-
-res_resolver_unbound
-------------------
- * Added a res_resolver_unbound module which uses the libunbound resolver library
-   to perform DNS resolution. This module requires the libunbound library to be
-   installed in order to be used.
-
-res_pjsip
-------------------
- * A new SIP resolver using the core DNS API has been implemented. This relies on
-   external SIP resolver support in PJSIP which is only available as of PJSIP
-   2.4. If this support is unavailable the existing built-in PJSIP SIP resolver
-   will be used instead. The new SIP resolver provides NAPTR support, improved
-   SRV support, and AAAA record support.
-
-res_pjsip_info_empty
---------------------
- * A new module that can respond to empty Content-Type INFO packets during call.
-   Some SBCs will terminate a call if their empty INFO packets are not responded
-   to within a predefined time.
-
-res_pjsip_outbound_registration
--------------------------------
-* A new 'fatal_retry_interval' option has been added to outbound registration.
-  When set (default is zero), and upon receiving a failure response to an
-  outbound registration, registration is retried at the given interval up to
-  'max_retries'.
-
-res_pjsip_outbound_publish
-------------------
- * Added a new multi_user option that when set to 'yes' allows a given configuration
-   to be used for multiple users.
-
-
-CEL Backends
-------------------
-
-cel_pgsql
-------------------
- * Added a new option, 'usegmtime', which causes timestamps in CEL events
-   to be logged in GMT.
-
- * Added support to set schema where located the table cel. This settings is
-   configurable for cel_pgsql via the 'schema' in configuration file
-   cel_pgsql.conf.
-
-
-CDR Backends
-------------------
-
-cdr_adaptive_odbc
-------------------
- * Added the ability to set the character to quote identifiers. This
-   allows adding the character at the start and end of table and column
-   names. This setting is configurable for cdr_adaptive_odbc via the
-   quoted_identifiers in configuration file cdr_adaptive_odbc.conf.
-
-cdr_odbc
-------------------
- * Added a new configuration option, "newcdrcolumns", which enables use of the
-   post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'.
-
-cdr_csv
-------------------
- * Added a new configuration option, "newcdrcolumns", which enables use of the
-   post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 13.10.0 to Asterisk 13.11.0 ----------
-------------------------------------------------------------------------------
-
-chan_dahdi
-------------------
- * Added "faxdetect_timeout" option.
-   The option determines how many seconds into a call before faxdetect
-   is disabled for the call.  Setting the value to zero disables the timeout.
-
-res_pjsip
-------------------
- * Added "fax_detect_timeout" to endpoint.
-   The option determines how many seconds into a call before fax_detect
-   is disabled for the call.  Setting the value to zero disables the timeout.
-
- * Added "subscribe_context" to endpoint.
-   If specified, incoming SUBSCRIBE requests will be searched for the matching
-   extension in the indicated context. If no "subscribe_context" is specified,
-   then the "context" setting is used.
-
-res_rtp_asterisk
-------------------
- * The DTLS part 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:
-       dtlscipher=AES128-SHA
-   - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters
-     into the private key file, e.g., sip.conf dtlsprivatekey. For example:
-       openssl dhparam -out ./dh.pem 2048
-   - 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:
-       dtlscipher=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
-     which forces PFS and requires at least DTLS 1.2.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 13.9.0 to Asterisk 13.10.0 -----------
-------------------------------------------------------------------------------
-
-Core
-------------------
- * A channel variable FORWARDERNAME is now set which indicates which channel
-   was responsible for a forwarding requests received on dial attempt.
-
-func_odbc
-------------------
- * Added new global option "single_db_connection".
-   Enabling this option func_odbc will use a single database connection per DSN.
-   This option is enabled by default.
-
-res_fax
-------------------
- * Added FAXMODE variable to let dialplan know what fax transport was used.
-   FAXMODE variable is set to either "audio" or "T38".
-
-res_pjsip
-------------------
- * Added "via_addr", "via_port", "call_id" to contacts.
-   As res_pjsip_nat rewrites contact's address, only the last Via header
-   can contain the source address of registered endpoint.
-   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
-   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:
-   - A GAUGE statistic for the overall number of outbound registrations, i.e.:
-       PJSIP.registrations.count
-   - 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
-   regarding the state of PJSIP contacts will now be emitted. This includes:
-   - 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
-   number of endpoints in the technology agnostic state of the endpoint -
-   online or offline - as well as the number of channels associated with each
-   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 --------------------
-------------------------------------------------------------------------------
-
-Overview
-------------------
-
-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
-
-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.
-
-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.
-
-ReadFile
-------------------
- * This module was deprecated and has been removed. Users of app_readfile
-   should use func_env's FILE function instead.
-
-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'.
-
-SayCountPL
-------------------
- * This module was deprecated and has been removed. Users of app_saycountpl
-   should use the Say family of applications.
-
-SetMusicOnHold
-------------------
- * The SetMusicOnHold dialplan application was deprecated and has been removed.
-   Users of the application should use the CHANNEL function's musicclass
-   setting instead.
-
-WaitMusicOnHold
-------------------
- * The WaitMusicOnHold dialplan application was deprecated and has been
-   removed. Users of the application should use MusicOnHold with a duration
-   parameter instead.
-
-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
-
- * Add the ability to specify multiple email addresses in configuration,
-   separated by a |.
-
-
-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.
-
-
-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.
-
-
-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.
-
-
-Core
-------------------
-
-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)
-
- * 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.
-
-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).
-
-
-Functions
-------------------
-
-JACK_HOOK
-------------------
- * The JACK_HOOK function now supports audio with a sample rate higher than
-   8kHz.
-
-
-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.
-
-res_pjsip_outbound_publish
-------------------
- * 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
-   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,
-   indicating the start/stop of talking on the channel.
-
-Functions
-------------------
- * A new function, TALK_DETECT, has been added. When set on a channel, this
-   fucntion causes events indicating the starting/stoping of talking on said
-   channel to be emitted to both AMI and ARI clients.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 12.2.0 to Asterisk 12.3.0 ------------
-------------------------------------------------------------------------------
-
-ARI
-------------------
- * A new Playback URI 'tone' has been added. Tones are specified either as
-   an indication name (e.g. 'tone:busy') from indications.conf or as a tone
-   pattern (e.g. 'tone:240/250,0/250'). Tones differ from normal playback
-   URIs in that they must be stopped manually and will continue to occupy
-   a channel's ARI control queue until they are stopped. They also can not
-   be rewound or fastforwarded.
-
- * User events can now be generated from ARI.  Events can be signalled with
-   arbitrary json variables, and include one or more of channel, bridge, or
-   endpoint snapshots.  An application must be specified which will receive
-   the event message (other applications can subscribe to it).  The message
-   will also be delivered via AMI provided a channel is attached.  Dialplan
-   generated user event messages are still transmitted via the channel, and
-   will only be received by a stasis application they are attached to or if
-   the channel is subscribed to.
-
-chan_sip
------------
- * SIP peers can now specify 'trust_id_outbound' which affects RPID/PAI
-   fields for prohibited callingpres information. Values are legacy, no, and
-   yes. By default, legacy is used.
-   trust_id_outbound=legacy - behavior remains the same as 1.8.26.1. When
-     dealing with prohibited callingpres and sendrpid=pai/rpid, RPID/PAI
-     headers are appended to outbound SIP messages just as they are with
-     allowed callingpres values, but data about the remote party's identity is
-     anonymized.
-     When sendrpid=rpid, only the remote party's domain is anonymized.
-   trust_id_outbound=no - when dealing with prohibited callingpres, RPID/PAI
-     headers are not sent.
-   trust_id_outbound=yes - RPID/PAI headers are applied with the full remote
-     party information in tact even for prohibited callingpres information.
-     In the case of PAI, a Privacy: id header will be appended for prohibited
-     calling information to communicate that the private information should
-     not be relayed to untrusted parties.
-
-res_parking
-------------------
- * Manager action 'Park' now takes an additional argument 'AnnounceChannel'
-   which can be used to announce the parked call's location to an arbitrary
-   channel in a bridge. If 'Channel' and 'TimeoutChannel' are now the two
-   parties in a one to one bridge, 'TimeoutChannel' is treated as having
-   parked 'Channel' like with the Park Call DTMF feature and will receive
-   announcements prior to being hung up.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 12.1.0 to Asterisk 12.2.0 ------------
-------------------------------------------------------------------------------
-
-Record
-------------------
- * Record application now has an option 'o' which allows 0 to act as an exit
-   key setting the RECORD_STATUS variable to 'OPERATOR' instead of 'DTMF'
-
-ChanSpy
---------------------------
- * ChanSpy now accepts a channel uniqueid or a fully specified channel name
-   as the chanprefix parameter if the 'u' option is specified.
-
-ConfBridge
---------------------------
- * CONFBRIDGE dialplan function is now capable of creating/modifying dynamic
-   conference user menus.
-
- * CONFBRIDGE dialplan function is now capable of removing dynamic conference
-   menus, bridge settings, and user settings that have been applied by the
-   CONFBRIDGE dialplan function.
-
- * The ConfBridge dialplan application now sets a channel variable,
-   CONFBRIDGE_RESULT, upon exiting. This variable can be used to determine
-   how a channel exited the conference.
-
- * Added conference user option 'announce_join_leave_review'. This option
-   implies 'announce_join_leave' with the added effect that the user will
-   be asked if they want to confirm or re-record the recording of their
-   name when entering the conference
-
-Directory
---------------------------
- * At exit, the Directory application now sets a channel variable
-   DIRECTORY_RESULT to one of the following based on the reason for exiting:
-     OPERATOR    user requested operator by pressing '0' for operator
-     ASSISTANT   user requested assistant by pressing '*' for assistant
-     TIMEOUT     user pressed nothing and Directory stopped waiting
-     HANGUP      user's channel hung up
-     SELECTED    user selected a user from the directory and is routed
-     USEREXIT    user pressed '#' from the selection prompt to exit
-     FAILED      directory failed in a way that wasn't accounted for. Dang.
-
-Monitor
-------------------
- * Monitor() - A new option, B(), has been added that will turn on a periodic
-   beep while the call is being recorded.
-
-MusicOnHold
---------------------------
- * MusicOnHold streams (all modes other than "files") now support wide band
-   audio too.
-
-Page
---------------------------
- * Added options 'b' and 'B' to apply predial handlers for outgoing calls
-   and for the channel executing Page respectively.
-
-PickupChan
---------------------------
- * PickupChan now accepts channel uniqueids of channels to pickup.
-
-Say
---------------------------
- * If a channel variable SAY_DTMF_INTERRUPT is present on a channel and set
-   to 'true' (case insensitive), then any Say application (SayNumber,
-   SayDigits, SayAlpha, SayAlphaCase, SayUnixTime, and SayCounted) will
-   anticipate DTMF. If DTMF is received, these applications will behave like
-   the background application and jump to the received extension once a match
-   is established or after a short period of inactivity.
-
-MixMonitor
--------------------------
- * A new function, MIXMONITOR, has been added to allow access to individual
-   instances of MixMonitor on a channel.
-
- * A new option, B(), has been added that will turn on a periodic beep while the
-   call is being recorded.
-
-
-Channel Drivers
--------------------------
-
-chan_sip
--------------------------
- * TEL URI support for inbound INVITE requests has been added. chan_sip will
-   now handle TEL schemes in the Request and From URIs. The phone-context in
-   the Request URI will be stored in the SIPURIPHONECONTEXT channel variable on
-   the inbound channel.
-
-Core
-------------------
- * Exposed sorcery-based configuration files like pjsip.conf to dialplans via
-   the new AST_SORCERY diaplan function.
-
- * Core Show Locks output now includes Thread/LWP ID if the platform
-   supports this feature.
-
- * New "logger add channel" and "logger remove channel" CLI commands have
-   been added to allow creation and deletion of dynamic logger channels
-   without configuration changes. These dynamic logger channels will only
-   exist until the next restart of asterisk.
-
-ARI
-------------------
- * The live recording object on recording events now contains a target_uri
-   field which contains the URI of what is being recorded.
-
- * The bridge type used when creating a bridge is now a comma separated list of
-   bridge properties. Valid options are: mixing, holding, dtmf_events, and
-   proxy_media.
-
- * A channelId can now be provided when creating a channel, either in the
-   uri (POST channels/my-channel-id) or as query parameter.  A local channel
-   will suffix the second channel id with ';2' unless provided as query
-   parameter otherChannelId.
-
- * A bridgeId can now be provided when creating a bridge, either in the uri
-   (POST bridges/my-bridge-id) or as a query parameter.
-
- * A playbackId can be provided when starting a playback, either in the uri
-   (POST channels/my-channel-id/play/my-playback-id /
-    POST bridges/my-bridge-id/play/my-playback-id)  or as a query parameter.
-
- * A snoop channel can be started with a snoopId, in the uri or query.
-
-AMI
-------------------
- * Originate now takes optional parameters ChannelId and OtherChannelId,
-   used to set the UniqueId on creation.  The other id is assigned to the
-   second channel when dialing LOCAL, or defaults to appending ;2 if only
-   the single Id is given.
-
- * The Mixmonitor action now has a "Command" header that can be used to
-   indicate a post-process command to run once recording finishes.
-
-RealTime
-------------------
- * A new set of Alembic scripts has been added for CDR tables. This will create
-   a 'cdr' table with the default schema that Asterisk expects.
-
-
-Functions
-------------------
- * A new function was added: PERIODIC_HOOK.  This allows running a periodic
-   dialplan hook on a channel.  Any audio generated by this hook will be
-   injected into the call.
-
-
-Resources
-------------------
-
-res_hep
-------------------
- * A new module, res_hep, has been added, that acts as a generic packet
-   capture agent for the Homer Encapsulation Protocol (HEP) version 3.
-   It can be configured via hep.conf. Other modules can use res_hep to send
-   message traffic to a HEP capture server.
-
-res_hep_pjsip
-------------------
- * A new module, res_hep_pjsip, has been added that will forward PJSIP
-   message traffic to a HEP capture server. See res_hep for more
-   information.
-
-res_pjsip
-------------------
- * transport and endpoint ToS options (tos, tos_audio, and tos_video) may now
-   be set as the named set of ToS values (cs0-cs7, af11-af43, ef).
-
- * Added the following new CLI commands:
-   - "pjsip show contacts" - list all current PJSIP contacts.
-   - "pjsip show contact" - show specific information about a current PJSIP
-     contact.
-   - "pjsip show channel" - show detailed information about a PJSIP channel.
-
-res_pjsip_multihomed
-------------------
- * A new module, res_pjsip_multihomed handles situations where the system
-   Asterisk is running out has multiple interfaces. res_pjsip_multihomed
-   determines which interface should be used during message sending.
-
-res_pjsip_pidf_digium_body_supplement
-------------------
- * A new module, res_pjsip_pidf_digium_body_supplement provides NOTIFY
-   request body formatting for presence support in Digium phones.
-
-res_pjsip_send_to_voicemail
-------------------
- * A new module, res_pjsip_send_to_voicemail allows for REFER requests with
-   particular headers to transfer a PJSIP channel directly to a particular
-   extension that has VoiceMail. This is intended to be used with Digium
-   phones that support this feature.
-
-res_pjsip_outbound_registration
-------------------
- * A new CLI command has been added: "pjsip show registrations", which lists
-   all configured PJSIP registrations
-
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 12.0.0 to Asterisk 12.1.0 ------------
-------------------------------------------------------------------------------
-
-AMI
-------------------
- * Added a new module that provides AMI control over MWI within Asterisk,
-   res_mwi_external_ami. Note that this module depends on res_mwi_external;
-   for more information on enabling this module, see res_mwi_external.
-   This module provides the MWIGet/MWIUpdate/MWIDelete actions, as well as
-   the MWIGet/MWIGetComplete events.
-
- * The DialStatus field in the DialEnd event can now contain additional
-   statuses that convey how the dial operation terminated. This includes
-   ABORT, CONTINUE, and GOTO.
-
- * AMI will now emit security events. A new class authorization has been
-   added in manager.conf for the security events, 'security'. The new events
-   are:
-    - FailedACL - raised when a request violates an ACL check
-    - InvalidAccountID - raised when a request fails an authentication
-      check due to an invalid account ID
-    - SessionLimit - raised when a request fails due to exceeding the
-      number of allowed concurrent sessions for a service
-    - MemoryLimit - raised when a request fails due to an internal memory
-      allocation failure
-    - LoadAverageLimit - raised when a request fails because a configured
-      load average limit has been reached
-    - RequestNotAllowed - raised when a request is not allowed by
-      the service
-    - AuthMethodNotAllowed - raised when a request used an authentication
-      method not allowed by the service
-    - RequestBadFormat - raised when a request is received with bad formatting
-    - SuccessfulAuth - raised when a request successfully authenticates
-    - UnexpectedAddress - raised when a request has a different source address
-      then what is expected for a session already in progress with a service
-    - ChallengeResponseFailed - raised when a request's attempt to authenticate
-      has been challenged, and the request failed the authentication challenge
-    - InvalidPassword - raised when a request provides an invalid password
-      during an authentication attempt
-    - ChallengeSent - raised when an Asterisk service send an authentication
-      challenge to a request
-    - InvalidTransport - raised when a request attempts to use a transport not
-      allowed by the Asterisk service
-
- * Bridge related events now have two additional fields: BridgeName and
-   BridgeCreator. BridgeName is a descriptive name for the bridge;
-   BridgeCreator is the name of the entity that created the bridge. This
-   affects the following events: ConfbridgeStart, ConfbridgeEnd,
-   ConfbridgeJoin, ConfbridgeLeave, ConfbridgeRecord, ConfbridgeStopRecord,
-   ConfbridgeMute, ConfbridgeUnmute, ConfbridgeTalking, BlindTransfer,
-   AttendedTransfer, BridgeCreate, BridgeDestroy, BridgeEnter, BridgeLeave
-
-ARI
-------------------
- * The Bridge data model now contains the additional fields 'name' and
-   'creator'. The 'name' field conveys a descriptive name for the bridge;
-   the 'creator' field conveys the name of the entity that created the bridge.
-   This affects all responses to HTTP requests that return a Bridge data model
-   as well as all event derived data models that contain a Bridge data model.
-   The POST /bridges operation may now optionally specify a name to give to
-   the bridge being created.
-
- * Added a new ARI resource 'mailboxes' which allows the creation and
-   modification of mailboxes managed by external MWI. Modules res_mwi_external
-   and res_stasis_mailbox must be enabled to use this resource. For more
-   information on external MWI control, see res_mwi_external.
-
- * Added new events for externally initiated transfers. The event
-   BridgeBlindTransfer is now raised when a channel initiates a blind transfer
-   of a bridge in the ARI controlled application to the dialplan; the
-   BridgeAttendedTransfer event is raised when a channel initiates an
-   attended transfer of a bridge in the ARI controlled application to the
-   dialplan.
-
- * Channel variables may now be specified as a body parameter to the
-   POST /channels operation. The 'variables' key in the JSON is interpreted
-   as a sequence of key/value pairs that will be added to the created channel
-   as channel variables. Other parameters in the JSON body are treated as
-   query parameters of the same name.
-
-HTTP
-------------------
- * Asterisk's HTTP server now supports chunked Transfer-Encoding. This will be
-   automatically handled by the HTTP server if a request is received with a
-   Transfer-Encoding type of "chunked".
-
-res_pjsip
-------------------
- * Path support has been added with the 'support_path' option in registration
-   and aor sections.
-
- * A 'debug' option has been added to the globals section that will allow
-   sip messages to be logged.
-
- * A 'set_var' option has been added to endpoints that will automatically
-   set the desired variable(s) on a channel created for that endpoint.
-
- * Several new tables and columns have been added to the realtime schema for
-   the res_pjsip related modules. See the UPGRADE.txt notes for updating
-   the database schema.
-
-res_mwi_external
-------------------
- * A new module, res_mwi_external, has been added to Asterisk. This module
-   acts as a base framework that other modules can build on top of to allow
-   an external system to control MWI within Asterisk. For implementations
-   that make use of res_mwi_external, see res_mwi_external_ami and
-   res_ari_mailboxes. Note that res_mwi_external conflicts with other modules
-   that may produce MWI themselves, such as app_voicemail. res_mwi_external
-   and other modules that depend on it cannot be built or loaded with
-   app_voicemail present.
-
-res_pjsip
-------------------
- * DNS functionality will now automatically be enabled if the system configured
-   nameservers can be retrieved. If the system configured nameservers can not be
-   retrieved the functionality will resort to using system resolution. Functionality
-   such as SRV records and failover will not be available if system resolution
-   is in use.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 11 to Asterisk 12 --------------------
-------------------------------------------------------------------------------
-
-Overview
-------------------
-
-Asterisk 12 is a standard release of the Asterisk project. As such, the
-focus of development for this release was on core architectural changes and
-major new features. This includes:
- * A more flexible bridging core based on the Bridging API
- * A new internal message bus, Stasis
- * Major standardization and consistency improvements to AMI
- * Addition of the Asterisk RESTful Interface (ARI)
- * A new SIP channel driver, chan_pjsip
-In addition, as the vast majority of bridging in Asterisk was migrated to the
-Bridging API used by ConfBridge, major changes were made to most of the
-interfaces in Asterisk. This includes not only AMI, but also CDRs and CEL.
-
-Specifications have been written for the affected interfaces. These
-specifications are available 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
-
-It is *highly* recommended that anyone migrating to Asterisk 12 read the
-information regarding its release both in this file and in the accompanying
-UPGRADE.txt file. More detailed information on the major changes can be found
-on the Asterisk wiki at https://wiki.asterisk.org/wiki/x/0YCLAQ.
-
-
-Build System
-------------------
- * Added build option DISABLE_INLINE. This option can be used to work around a
-   bug in gcc. For more information, see
-   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47816
-
- * Removed the CHANNEL_TRACE development mode build option. Certain aspects of
-   the CHANNEL_TRACE build option were incompatible with the new bridging
-   architecture.
-
- * Asterisk now optionally uses libxslt to improve XML documentation generation
-   and maintainability. If libxslt is not available on the system, some XML
-   documentation will be incomplete.
-
- * Asterisk now depends on libjansson. If a package of libjansson is not
-   available on your distro, please see http://www.digip.org/jansson/.
-
- * Asterisk now depends on libuuid and, optionally, uriparser. It is
-   recommended that you install uriparser, even if it is optional.
-
- * The new SIP stack and channel driver uses a particular version of PJSIP.
-   Please see https://wiki.asterisk.org/wiki/x/J4GLAQ for more information on
-   configuring and installing PJSIP for usage with Asterisk.
-
- * Optional API was re-implemented to be more portable, and no longer requires
-   weak reference support from the compiler. The build option OPTIONAL_API may
-   be disabled to disable Optional API support.
-
-Applications
-------------------
-
-AgentLogin
-------------------
- * Along with AgentRequest, this application has been modified to be a
-   replacement for chan_agent. The act of a channel calling the AgentLogin
-   application places the channel into a pool of agents that can be
-   requested by the AgentRequest application. Note that this application, as
-   well as all other agent related functionality, is now provided by the
-   app_agent_pool module. See chan_agent and AgentRequest for more information.
-
- * This application no longer performs agent authentication. If authentication
-   is desired, the dialplan needs to perform this function using the
-   Authenticate or VMAuthenticate application or through an AGI script before
-   running AgentLogin.
-
- * If this application is called and the agent is already logged in, the
-   dialplan will continue execution with the AGENT_STATUS channel variable set
-   to ALREADY_LOGGED_IN.
-
- * The agents.conf schema has changed. Rather than specifying agents on a
-   single line in comma delineated fashion, each agent is defined in a separate
-   context. This allows agents to use the power of context templates in their
-   definition.
-
- * A number of parameters from agents.conf have been removed. This includes
-   maxloginretries, autologoffunavail, updatecdr, goodbye, group, recordformat,
-   urlprefix, and savecallsin. These options were obsoleted by the move from
-   a channel driver model to the bridging/application model provided by
-   app_agent_pool.
-
-AgentRequest
-------------------
- * A new application, this will request a logged in agent from the pool and
-   bridge the requested channel with the channel calling this application.
-   Logged in agents are those channels that called the AgentLogin application.
-   If an agent cannot be requested from the pool, the AGENT_STATUS dialplan
-   application will be set with an appropriate error value.
-
-AgentMonitorOutgoing
-------------------
- * This application has been removed. It was a holdover from when
-   AgentCallbackLogin was removed.
-
-AlarmReceiver
-------------------
- * Added support for additional Ademco DTMF signalling formats, including
-   Express 4+1, Express 4+2, High Speed and Super Fast.
-
- * Added channel variable ALARMRECEIVER_CALL_LIMIT. This sets the maximum
-   call time, in milliseconds, to run the application.
-
- * Added channel variable ALARMRECEIVER_RETRIES_LIMIT. This sets the
-   maximum number of times to retry the call.
-
- * Added a new configuration option answait. If set, the AlarmReceiver
-   application will wait the number of milliseconds specified by answait
-   after the channel has answered. Valid values range between 500
-   milliseconds and 10000 milliseconds.
-
- * Added configuration option no_group_meta. If enabled, grouping of metadata
-   information in the AlarmReceiver log file will be skipped.
-
-Answer
-------------------
- * It is now no longer possible to bypass updating the CDR on the channel
-   when answering. CDRs reflect the state of the channel and will always
-   reflect the time they were Answered.
-
-BridgeWait
-------------------
- * A new application in Asterisk, this will place the calling channel
-   into a holding bridge, optionally entertaining them with some form of
-   media. Channels participating in a holding bridge do not interact with
-   other channels in the same holding bridge. Optionally, however, a channel
-   may join as an announcer. Any media passed from an announcer channel is
-   played to all channels in the holding bridge. Channels leave a holding
-   bridge either when an optional timer expires, or via the ChannelRedirect
-   application or AMI Redirect action.
-
-ConfBridge
-------------------
- * All participants in a bridge can now be kicked out of a conference room
-   by specifying the channel parameter as 'all' in the ConfBridge kick CLI
-   command, i.e., 'confbridge kick <conference> all'
-
- * CLI output for the 'confbridge list' command has been improved. When
-   displaying information about a particular bridge, flags will now be shown
-   for the participating users indicating properties of that user.
-
- * The ConfbridgeList event now contains the following fields: WaitMarked,
-   EndMarked, and Waiting. This displays additional properties about the
-   user's profile, as well as whether or not the user is waiting for a
-   Marked user to enter the conference.
-
- * Added a new option for conference recording, record_file_append. If enabled,
-   when the recording is stopped and then re-started, the existing recording
-   will be used and appended to.
-
- * ConfBridge now has the ability to set the language of announcements to the
-   conference.  The language can be set on a bridge profile in confbridge.conf
-   or by the dialplan function CONFBRIDGE(bridge,language)=en.
-
-ControlPlayback
-------------------
- * The channel variable CPLAYBACKSTATUS may now return the value
-   'REMOTESTOPPED'. This occurs when playback is stopped by a remote interface,
-   such as AMI. See the AMI action ControlPlayback for more information.
-
-Directory
-------------------
- * Added the 'a' option, which allows the caller to enter in an additional
-   alias for the user in the directory. This option must be used in conjunction
-   with the 'f', 'l', or 'b' options. Note that the alias for a user can be
-   specified in voicemail.conf.
-
-DumpChan
-------------------
- * The output of DumpChan no longer includes the DirectBridge or IndirectBridge
-   fields. Instead, if a channel is in a bridge, it includes a BridgeID field
-   containing the unique ID of the bridge that the channel happens to be in.
-
-ForkCDR
-------------------
- * ForkCDR no longer automatically resets the forked CDR. See the 'r' option
-   for more information.
-
- * Variables are no longer purged from the original CDR. See the 'v' option for
-   more information.
-
- * The 'A' option has been removed. The Answer time on a CDR is never updated
-   once set.
-
- * The 'd' option has been removed. The disposition on a CDR is a function of
-   the state of the channel and cannot be altered.
-
- * The 'D' option has been removed. Who the Party B is on a CDR is a function
-   of the state of the respective channels involved in the CDR and cannot be
-   altered.
-
- * The 'r' option has been changed. Previously, ForkCDR always reset the CDR
-   such that the start time and, if applicable, the answer time was updated.
-   Now, by default, ForkCDR simply forks the CDR, maintaining any times. The
-   'r' option now triggers the Reset, setting the start time (and answer time
-   if applicable) to the current time. Note that the 'a' option still sets
-   the answer time to the current time if the channel was already answered.
-
- * The 's' option has been removed. A variable can be set on the original CDR
-   if desired using the CDR function, and removed from a forked CDR using the
-   same function.
-
- * The 'T' option has been removed. The concept of DONT_TOUCH and LOCKED no
-   longer applies in the CDR engine.
-
- * The 'v' option now prevents the copy of the variables from the original CDR
-   to the forked CDR. Previously the variables were always copied but were
-   removed from the original. This was changed as removing variables from a CDR
-   can have unintended side effects - this option allows the user to prevent
-   propagation of variables from the original to the forked without modifying
-   the original.
-
-MeetMe
--------------------
- * Added the 'n' option to MeetMe to prevent application of the DENOISE
-   function to a channel joining a conference. Some channel drivers that vary
-   the number of audio samples in a voice frame will experience significant
-   quality problems if a denoiser is attached to the channel; this option gives
-   them the ability to remove the denoiser without having to unload func_speex.
-
-MixMonitor
-------------------
- * The 'b' option now includes conferences as well as sounds played to the
-   participants.
-
- * The AUDIOHOOK_INHERIT function is no longer needed to keep a MixMonitor
-   running during a transfer. If a MixMonitor is started on a channel,
-   the MixMonitor will continue to record the audio passing through the
-   channel even in the presence of transfers.
-
-NoCDR
-------------------
- * The NoCDR application is deprecated. Please use the CDR_PROP function to
-   disable CDRs.
-
- * While the NoCDR application will prevent CDRs for a channel from being
-   propagated to registered CDR backends, it will not prevent that data from
-   being collected. Hence, a subsequent call to ResetCDR or the CDR_PROP
-   function that enables CDRs on a channel will restore those records that have
-   not yet been finalized.
-
-ParkAndAnnounce
--------------------
- * The app_parkandannounce module has been removed. The application
-   ParkAndAnnounce is now provided by the res_parking module. See the
-   res_parking changes for more information.
-
-Queue
--------------------
- * Added queue available hint. The hint can be added to the dialplan using the
-   following syntax: exten,hint,Queue:{queue_name}_avail
-   For example, if the name of the queue is 'markq':
-        exten => 8501,hint,Queue:markq_avail
-   This will report 'InUse' if there are no logged in agents or no free agents.
-   It will report 'Idle' when an agent is free.
-
- * Queues now support a hint for member paused state. The hint uses the form
-   'Queue:{queue_name}_pause_{member_name}', where {queue_name} and {member_name}
-   are the name of the queue and the name of the member to subscribe to,
-   respectively. For example: exten => 8501,hint,Queue:sales_pause_mark.
-   Members will show as In Use when paused.
-
- * The configuration options eventwhencalled and eventmemberstatus have been
-   removed.  As a result, the AMI events QueueMemberStatus, AgentCalled,
-   AgentConnect, AgentComplete, AgentDump, and AgentRingNoAnswer will always be
-   sent.  The "Variable" fields will also no longer exist on the Agent* events.
-   These events can be filtered out from a connected AMI client using the
-   eventfilter setting in manager.conf.
-
- * The queue log now differentiates between blind and attended transfers. A
-   blind transfer will result in a BLINDTRANSFER message with the destination
-   context and extension. An attended transfer will result in an
-   ATTENDEDTRANSFER message. This message will indicate the method by which
-   the attended transfer was completed: "BRIDGE" for a bridge merge, "APP"
-   for running an application on a bridge or channel, or "LINK" for linking
-   two bridges together with local channels. The queue log will also now detect
-   externally initiated blind and attended transfers and record the transfer
-   status accordingly.
-
- * When performing queue pause/unpause on an interface without specifying an
-   individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at
-   least one member of any queue exists for that interface.
-
- * Added the 'queue_log_realtime_use_gmt' option to have timestamps in GMT
-   for realtime queue log entries.
-
-ResetCDR
-------------------
- * The 'e' option has been deprecated. Use the CDR_PROP function to re-enable
-   CDRs when they were previously disabled on a channel.
-
- * The 'w' and 'a' options have been removed. Dispatching CDRs to registered
-   backends occurs on an as-needed basis in order to preserve linkedid
-   propagation and other needed behavior.
-
-SayAlphaCase
-------------------
- * A new application, this is similar to SayAlpha except that it supports
-   case sensitive playback of the specified characters. For example,
-   SayAlphaCase(u,aBc) will result in 'a uppercase b c'.
-
-SetAMAFlags
-------------------
- * This application is deprecated in favor of CHANNEL(amaflags).
-
-SendDTMF
-------------------
- * The SendDTMF application will now accept 'W' as valid input. This will cause
-   the application to delay one second while streaming DTMF.
-
-Stasis
-------------------
- * A new application in Asterisk 12, this hands control of the channel calling
-   the application over to an external system. Currently, external systems
-   manipulate channels in Stasis through the Asterisk RESTful Interface (ARI).
-
-UserEvent
-------------------
- * UserEvent will now handle duplicate keys by overwriting the previous value
-   assigned to the key.
-
- * In addition to AMI, UserEvent invocations will now be distributed to any
-   interested Stasis applications.
-
-VoiceMail
-------------------
- * Mailboxes defined by app_voicemail MUST be referenced by the rest of the
-   system as mailbox@context.  The rest of the system cannot add @default
-   to mailbox identifiers for app_voicemail that do not specify a context
-   any longer.  It is a mailbox identifier format that should only be
-   interpreted by app_voicemail.
-
- * The voicemail.conf configuration file now has an 'alias' configuration
-   parameter for use with the Directory application. The voicemail realtime
-   database table schema has also been updated with an 'alias' column.
-
-
-Codecs
-------------------
- * Pass through support has been added for both VP8 and Opus.
-
- * Added format attribute negotiation for the Opus codec. Format attribute
-   negotiation is provided by the res_format_attr_opus module.
-
-
-Core
-------------------
- * Masquerades as an operation inside Asterisk have been effectively hidden
-   by the migration to the Bridging API. As such, many 'quirks' of Asterisk
-   no longer occur. This includes renaming of channels, "<ZOMBIE>" channels,
-   dropping of frame/audio hooks, and other internal implementation details
-   that users had to deal with. This fundamental change has large implications
-   throughout the changes documented for this version. For more information
-   about the new core architecture of Asterisk, please see the Asterisk wiki.
-
- * Multiple parties in a bridge may now be transferred. If a participant in a
-   multi-party bridge initiates a blind transfer, a Local channel will be used
-   to execute the dialplan location that the transferer sent the parties to. If
-   a participant in a multi-party bridge initiates an attended transfer,
-   several options are possible. If the attended transfer results in a transfer
-   to an application, a Local channel is used. If the attended transfer results
-   in a transfer to another channel, the resulting channels will be merged into
-   a single bridge.
-
- * The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND is no longer channel
-   driver specific.  If the channel variable is set on the transferrer channel,
-   the sound will be played to the target of an attended transfer.
-
- * The channel variable BRIDGEPEER becomes a comma separated list of peers in
-   a multi-party bridge.  The BRIDGEPEER value can have a maximum of 10 peers
-   listed.  Any more peers in the bridge will not be included in the list.
-   BRIDGEPEER is not valid in holding bridges like parking since those channels
-   do not talk to each other even though they are in a bridge.
-
- * The channel variable BRIDGEPVTCALLID is only valid for two party bridges
-   and will contain a value if the BRIDGEPEER's channel driver supports it.
-
- * A channel variable ATTENDEDTRANSFER is now set which indicates which channel
-   was responsible for an attended transfer in a similar fashion to
-   BLINDTRANSFER.
-
- * Modules using the Configuration Framework or Sorcery must have XML
-   configuration documentation. This configuration documentation is included
-   with the rest of Asterisk's XML documentation, and is accessible via CLI
-   commands. See the CLI changes for more information.
-
-AMI (Asterisk Manager Interface)
-------------------
- * Major changes were made to both the syntax as well as the semantics of the
-   AMI protocol. In particular, AMI events have been substantially improved
-   in this version of Asterisk. For more information, please see the AMI
-   specification at https://wiki.asterisk.org/wiki/x/dAFRAQ
-
- * AMI events that reference a particular channel or bridge will now always
-   contain a standard set of fields. When multiple channels or bridges are
-   referenced in an event, fields for at least some subset of the channels
-   and bridges in the event will be prefixed with a descriptive name to avoid
-   name collisions. See the AMI event documentation on the Asterisk wiki for
-   more information.
-
- * The CLI command 'manager show commands' no longer truncates command names
-   longer than 15 characters and no longer shows authorization requirement
-   for commands. 'manager show command' now displays the privileges needed
-   for using a given manager command instead.
-
- * The SIPshowpeer action will now include a 'SubscribeContext' field for a
-   peer in its response if the peer has a subscribe context set.
-
- * The SIPqualifypeer action now acknowledges the request once it has
-   established that the request is against a known peer. It also issues a new
-   event, 'SIPQualifyPeerDone', once the qualify action has been completed.
-
- * The PlayDTMF action now supports an optional 'Duration' parameter.  This
-   specifies the duration of the digit to be played, in milliseconds.
-
- * Added VoicemailRefresh action to allow an external entity to trigger mailbox
-   updates when changes occur instead of requiring the use of pollmailboxes.
-
- * Added a new action 'ControlPlayback'. The ControlPlayback action allows an
-   AMI client to manipulate audio currently being played back on a channel. The
-   supported operations depend on the application being used to send audio to
-   the channel. When the audio playback was initiated using the ControlPlayback
-   application or CONTROL STREAM FILE AGI command, the audio can be paused,
-   stopped, restarted, reversed, or skipped forward. When initiated by other
-   mechanisms (such as the Playback application), the audio can be stopped,
-   reversed, or skipped forward.
-
- * Channel related events now contain a snapshot of channel state, adding new
-   fields to many of these events.
-
- * The AMI event 'Newexten' field 'Extension' is deprecated, and may be removed
-   in a future release. Please use the common 'Exten' field instead.
-
- * The AMI event 'UserEvent' from app_userevent now contains the channel state
-   fields. The channel state fields will come before the body fields.
-
- * The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and
-   'UnParkedCall' have changed significantly in the new res_parking module.
-
-   The 'Channel' and 'From' headers are gone. For the channel that was parked
-   or is coming out of parking, a 'Parkee' channel snapshot is issued and it
-   has a number of fields associated with it. The old 'Channel' header relayed
-   the same data as the new 'ParkeeChannel' header.
-
-   The 'From' field was ambiguous and changed meaning depending on the event.
-   for most of these, it was the name of the channel that parked the call
-   (the 'Parker'). There is no longer a header that provides this channel name,
-   however the 'ParkerDialString' will contain a dialstring to redial the
-   device that parked the call.
-
-   On UnParkedCall events, the 'From' header would instead represent the
-   channel responsible for retrieving the parkee. It receives a channel
-   snapshot labeled 'Retriever'. The 'from' field is is replaced with
-   'RetrieverChannel'.
-
-   Lastly, the 'Exten' field has been replaced with 'ParkingSpace'.
-
- * The AMI event 'Parkinglot' (response to 'Parkinglots' command) in a similar
-   fashion has changed the field names 'StartExten' and 'StopExten' to
-   'StartSpace' and 'StopSpace' respectively.
-
- * The deprecated use of | (pipe) as a separator in the channelvars setting in
-   manager.conf has been removed.
-
- * Channel Variables conveyed with a channel no longer contain the name of the
-   channel as part of the key field, i.e., ChanVariable(SIP/foo): bar=baz is now
-   ChanVariable: bar=baz. When multiple channels are present in a single AMI
-   event, the various ChanVariable fields will contain a suffix that specifies
-   which channel they correspond to.
-
- * The NewPeerAccount AMI event is no longer raised. The NewAccountCode AMI
-   event always conveys the AMI event for a particular channel.
-
- * All 'Reload' events have been consolidated into a single event type. This
-   event will always contain a Module field specifying the name of the module
-   and a Status field denoting the result of the reload. All modules now issue
-   this event when being reloaded.
-
- * The 'ModuleLoadReport' event has been removed. Most AMI connections would
-   fail to receive this event due to being connected after modules have loaded.
-   AMI connections that want to know when Asterisk is ready should listen for
-   the 'FullyBooted' event.
-
- * app_fax now sends the same send fax/receive fax events as res_fax. The
-   'FaxSent' event is now the 'SendFAX' event, and the 'FaxReceived' event is
-   now the 'ReceiveFAX' event.
-
- * The 'MusicOnHold' event is now two events: 'MusicOnHoldStart' and
-   'MusicOnHoldStop'. The sub type field has been removed.
-
- * The 'JabberEvent' event has been removed. It is not AMI's purpose to be a
-   carrier for another protocol.
-
- * The Bridge Manager action's 'Playtone' header now accepts more fine-grained
-   options. 'Channel1' and 'Channel2' may be specified in order to play a tone
-   to the specific channel. 'Both' may be specified to play a tone to both
-   channels. The old 'yes' option is still accepted as a way of playing the
-   tone to Channel2 only.
-
- * The AMI 'Status' response event to the AMI Status action replaces the
-   'BridgedChannel' and 'BridgedUniqueid' headers with the 'BridgeID' header to
-   indicate what bridge the channel is currently in.
-
- * The AMI 'Hold' event has been moved out of individual channel drivers, into
-   core, and is now two events: 'Hold' and 'Unhold'.  The status field has been
-   removed.
-
- * The AMI events in app_queue have been made more consistent with each other.
-   Events that reference channels (QueueCaller* and Agent*) will show
-   information about each channel.  The (infamous) 'Join' and 'Leave' AMI
-   events have been changed to 'QueueCallerJoin' and 'QueueCallerLeave'.
-
- * The 'MCID' AMI event now publishes a channel snapshot when available and
-   its non-channel-snapshot parameters now use either the "MCallerID" or
-   'MConnectedID' prefixes with Subaddr*, Name*, and Num* suffixes instead
-   of 'CallerID' and 'ConnectedID' to avoid confusion with similarly named
-   parameters in the channel snapshot.
-
- * The AMI events 'Agentlogin' and 'Agentlogoff' have been renamed
-   'AgentLogin' and 'AgentLogoff' respectively.
-
- * The 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been
-   renamed "DAHDIChannel" since it does not convey an Asterisk channel name.
-
- * 'ChannelUpdate' events have been removed.
-
- * All AMI events now contain a 'SystemName' field, if available.
-
- * Local channel optimization is now conveyed in two events:
-   'LocalOptimizationBegin' and 'LocalOptimizationEnd'. The Begin event is sent
-   when the Local channel driver begins attempting to optimize itself out of
-   the media path; the End event is sent after the channel halves have
-   successfully optimized themselves out of the media path.
-
- * Local channel information in events is now prefixed with 'LocalOne' and
-   'LocalTwo'. This replaces the suffix of '1' and '2' for the two halves of
-   the Local channel. This affects the 'LocalBridge', 'LocalOptimizationBegin',
-   and 'LocalOptimizationEnd' events.
-
- * The option 'allowmultiplelogin' can now be set or overriden in a particular
-   account. When set in the general context, it will act as the default
-   setting for defined accounts.
-
- * The 'BridgeAction' event was removed. It technically added no value, as the
-   Bridge Action already receives confirmation of the bridge through a
-   successful completion Event.
-
- * The 'BridgeExec' events were removed. These events duplicated the events that
-   occur in the Bridging API, and are conveyed now through BridgeCreate,
-   BridgeEnter, and BridgeLeave events.
-
- * The 'RTCPSent'/'RTCPReceived' events have been significantly modified from
-   previous versions. They now report all SR/RR packets sent/received, and
-   have been restructured to better reflect the data sent in a SR/RR. In
-   particular, the event structure now supports multiple report blocks.
-
- * Added 'BlindTransfer' and 'AttendedTransfer' events. These events are
-   raised when a blind transfer/attended transfer completes successfully.
-   They contain information about the transfer that just completed, including
-   the location of the transfered channel.
-
- * Added a 'security' class to AMI which outputs the required fields for
-   security messages similar to the log messages from res_security_log
-
- * The AMI event 'ExtensionStatus' now contains a 'StatusText' field
-   that describes the status value in a human readable string.
-
-CDR (Call Detail Records)
-------------------
- * Significant changes have been made to the behavior of CDRs. The CDR engine
-   was effectively rewritten and built on the Stasis message bus. For a full
-   definition of CDR behavior in Asterisk 12, please read the specification
-   on the Asterisk wiki (wiki.asterisk.org).
-
- * CDRs will now be created between all participants in a bridge. For each
-   pair of channels in a bridge, a CDR is created to represent the path of
-   communication between those two endpoints. This lets an end user choose who
-   to bill for what during bridge operations with multiple parties.
-
- * The duration, billsec, start, answer, and end times now reflect the times
-   associated with the current CDR for the channel, as opposed to a cumulative
-   measurement of all CDRs for that channel.
-
- * When a CDR is dispatched, user defined CDR variables from both parties are
-   included in the resulting CDR. If both parties have the same variable, only
-   the Party A value is provided.
-
- * Added a new option to cdr.conf, 'debug'. When enabled, significantly more
-   information regarding the CDR engine is logged as verbose messages. This
-   option should only be used if the behavior of the CDR engine needs to be
-   debugged.
-
- * Added CLI command 'cdr set debug {on|off}'. This toggles the 'debug' setting
-   normally configured in cdr.conf.
-
- * Added CLI command 'cdr show active {channel}'. When {channel} is not
-   specified, this command provides a summary of the channels with CDR
-   information and their statistics. When {channel} is specified, it shows
-   detailed information about all records associated with {channel}.
-
-CEL (Channel Event Logging)
-------------------
- * CEL has undergone significant rework in Asterisk 12, and is now built on the
-   Stasis message bus. Please see the specification for CEL on the Asterisk
-   wiki at https://wiki.asterisk.org/wiki/x/4ICLAQ for more detailed
-   information.
-
- * The 'extra' field of all CEL events that use it now consists of a JSON blob
-   with key/value pairs which are defined in the Asterisk 12 CEL documentation.
-
- * BLINDTRANSFER events now report the transferee bridge unique
-   identifier, extension, and context in a JSON blob as the extra string
-   instead of the transferee channel name as the peer.
-
- * ATTENDEDTRANSFER events now report the peer as NULL and additional
-   information in the 'extra' string as a JSON blob. For transfers that occur
-   between two bridged channels, the 'extra' JSON blob contains the primary
-   bridge unique identifier, the secondary channel name, and the secondary
-   bridge unique identifier. For transfers that occur between a bridged channel
-   and a channel running an app, the 'extra' JSON blob contains the primary
-   bridge unique identifier, the secondary channel name, and the app name.
-
- * LOCAL_OPTIMIZE events have been added to convey local channel
-   optimizations with the record occurring for the semi-one channel and
-   the semi-two channel name in the peer field.
-
- * BRIDGE_START, BRIDGE_END, BRIDGE_UPDATE, 3WAY_START, 3WAY_END, CONF_ENTER,
-   CONF_EXIT, CONF_START, and CONF_END events have all been removed. These
-   events have been replaced by BRIDGE_ENTER/BRIDGE_EXIT. The BRIDGE_ENTER
-   and BRIDGE_EXIT events are raised when a channel enters/exits any bridge,
-   regardless of whether or not that bridge happens to contain multiple
-   parties.
-
-CLI
--------------------
- * When compiled with '--enable-dev-mode', the astobj2 library will now add
-   several CLI commands that allow for inspection of ao2 containers that
-   register themselves with astobj2. The CLI commands are 'astobj2 container
-   dump', 'astobj2 container stats', and 'astobj2 container check'.
-
- * Added specific CLI commands for bridge inspection. This includes 'bridge
-   show all', which lists all bridges in the system, and 'bridge show {id}',
-   which provides specific information about a bridge.
-
- * Added CLI command 'bridge destroy'. This will destroy the specified bridge,
-   ejecting the channels currently in the bridge. If the channels cannot
-   continue in the dialplan or application that put them in the bridge, they
-   will be hung up.
-
- * Added command 'bridge kick'. This will eject a single channel from a bridge.
-
- * Added commands to inspect and manipulate the registered bridge technologies.
-   This include 'bridge technology show', which lists the registered bridge
-   technologies, as well as 'bridge technology {suspend|unsuspend} {tech}',
-   which controls whether or not a registered bridge technology can be used
-   during smart bridge operations. If a technology is suspended, it will not
-   be used when a bridge technology is picked for channels; when unsuspended,
-   it can be used again.
-
- * The command 'config show help {module} {type} {option}' will show
-   configuration documentation for modules with XML configuration
-   documentation. When {module}, {type}, and {option} are omitted, a listing
-   of all modules with registered documentation is displayed. When {module}
-   is specified, a listing of all configuration types for that module is
-   displayed, along with their synopsis. When {module} and {type} are
-   specified, a listing of all configuration options for that type are
-   displayed along with their synopsis. When {module}, {type}, and {option}
-   are specified, detailed information for that configuration option is
-   displayed.
-
- * Added 'core show sounds' and 'core show sound' CLI commands. These display
-   a listing of all installed media sounds available on the system and
-   detailed information about a sound, respectively.
-
- * 'xmldoc dump' has been added. This CLI command will dump the XML
-   documentation DOM as a string to the specified file. The Asterisk core
-   will populate certain XML elements pulled from the source files with
-   additional run-time information; this command lets a user produce the
-   XML documentation with all information.
-
-Features
--------------------
- * Parking has been pulled from core and placed into a separate module called
-   res_parking. See Parking changes below for more details. Configuration for
-   parking should now be performed in res_parking.conf. Configuration for
-   parking in features.conf is now unsupported.
-
- * Core attended transfers now have several new options. While performing an
-   attended transfer, the transferer now has the following options:
-   - *1 - cancel the attended transfer (configurable via atxferabort)
-   - *2 - complete the attended transfer, dropping out of the call
-          (configurable via atxfercomplete)
-   - *3 - complete the attended transfer, but stay in the call. This will turn
-          the call into a multi-party bridge (configurable via atxferthreeway)
-   - *4 - swap to the other party. Once an attended transfer has begun, this
-          options may be used multiple times (configurable via atxferswap)
-
- * For DTMF blind and attended transfers, the channel variable TRANSFER_CONTEXT
-   must be on the channel initiating the transfer to have any effect.
-
- * The BRIDGE_FEATURES channel variable would previously only set features for
-   the calling party and would set this feature regardless of whether the
-   feature was in caps or in lowercase. Use of a caps feature for a letter
-   will now apply the feature to the calling party while use of a lowercase
-   letter will apply that feature to the called party.
-
- * Add support for automixmon to the BRIDGE_FEATURES channel variable.
-
- * The channel variable DYNAMIC_PEERNAME is redundant with BRIDGEPEER and is
-   removed.  The more useful DYNAMIC_WHO_ACTIVATED gives the channel name that
-   activated the dynamic feature.
-
- * The channel variables DYNAMIC_FEATURENAME and DYNAMIC_WHO_ACTIVATED are set
-   only on the channel executing the dynamic feature.  Executing a dynamic
-   feature on the bridge peer in a multi-party bridge will execute it on all
-   peers of the activating channel.
-
- * You can now have the settings for a channel updated using the FEATURE()
-   and FEATUREMAP() functions inherited to child channels by setting
-   FEATURE(inherit)=yes.
-
- * automixmon now supports additional channel variables from automon including:
-   TOUCH_MIXMONITOR_PREFIX, TOUCH_MIXMONITOR_MESSAGE_START,
-   and TOUCH_MIXMONITOR_MESSAGE_STOP
-
- * A new general features.conf option 'recordingfailsound' has been added which
-   allowssetting a failure sound for a user tries to invoke a recording feature
-   such as automon or automixmon and it fails.
-
- * It is no longer necessary (or possible) to define the ATXFER_NULL_TECH in
-   features.c for atxferdropcall=no to work properly. This option now just
-   works.
-
-Logging
--------------------
- * Added log rotation strategy 'none'. If set, no log rotation strategy will
-   be used. Given that this can cause the Asterisk log files to grow quickly,
-   this option should only be used if an external mechanism for log management
-   is preferred.
-
-Realtime
-------------------
- * Dynamic realtime tables for SIP Users can now include a 'path' field. This
-   will store the path information for that peer when it registers. Realtime
-   tables can also use the 'supportpath' field to enable Path header support.
-
- * LDAP realtime configurations for SIP Users now have the AstAccountPathSupport
-   objectIdentifier. This maps to the supportpath option in sip.conf.
-
-Sorcery
-------------------
- * Sorcery is a new data abstraction and object persistence API in Asterisk. It
-   provides modules a useful abstraction on top of the many storage mechanisms
-   in Asterisk, including the Asterisk Database, static configuration files,
-   static Realtime, and dynamic Realtime. It also provides a caching service.
-   Users can configure a hierarchy of data storage layers for specific modules
-   in sorcery.conf.
-
- * All future modules which utilize Sorcery for object persistence must have a
-   column named "id" within their schema when using the Sorcery realtime module.
-   This column must be able to contain a string of up to 128 characters in length.
-
-Security Events Framework
-------------------
- * Security Event timestamps now use ISO 8601 formatted date/time instead of
-   the "seconds-microseconds" format that it was using previously.
-
-Stasis Message Bus
-------------------
- * The Stasis message bus is a publish/subscribe message bus internal to
-   Asterisk. Many services in Asterisk are built on the Stasis message bus,
-   including AMI, ARI, CDRs, and CEL. Parameters controlling the operation of
-   Stasis can be configured in stasis.conf. Note that these parameters operate
-   at a very low level in Asterisk, and generally will not require changes.
-
-Channel Drivers
-------------------
- * When a channel driver is configured to enable jiterbuffers, they are now
-   applied unconditionally when a channel joins a bridge. If a jitterbuffer
-   is already set for that channel when it enters, such as by the JITTERBUFFER
-   function, then the existing jitterbuffer will be used and the one set by
-   the channel driver will not be applied.
-
-chan_agent
-------------------
- * chan_agent has been removed and replaced with AgentLogin and AgentRequest
-   dialplan applications provided by the app_agent_pool module. Agents are
-   connected with callers using the new AgentRequest dialplan application.
-   The Agents:<agent-id> device state is available to monitor the status of an
-   agent. See agents.conf.sample for valid configuration options.
-
- * The updatecdr option has been removed. Altering the names of channels on a
-   CDR is not supported - the name of the channel is the name of the channel,
-   and pretending otherwise helps no one. The AGENTUPDATECDR channel variable
-   has also been removed, for the same reason.
-
- * The endcall and enddtmf configuration options are removed.  Use the
-   dialplan function CHANNEL(dtmf_features) to set DTMF features on the agent
-   channel before calling AgentLogin.
-
-chan_bridge
-------------------
- * chan_bridge has been removed. Its functionality has been incorporated
-   directly into the ConfBridge application itself.
-
-chan_dahdi
-------------------
- * Added the CLI command 'pri destroy span'. This will destroy the D-channel
-   of the specified span and its B-channels. Note that this command should
-   only be used if you understand the risks it entails.
-
- * The CLI command 'dahdi destroy channel' is now 'dahdi destroy channels'.
-   A range of channels can be specified to be destroyed. Note that this command
-   should only be used if you understand the risks it entails.
-
- * Added the CLI command 'dahdi create channels'. A range of channels can be
-   specified to be created, or the keyword 'new' can be used to add channels
-   not yet created.
-
- * The script specified by the chan_dahdi.conf mwimonitornotify option now gets
-   the exact configured mailbox name.  For app_voicemail mailboxes this is
-   mailbox@context.
-
- * Added mwi_vm_boxes that also must be configured for ISDN MWI to be enabled.
-
-chan_iax2
-------------------
- * IPv6 support has been added.  We are now able to bind to and
-   communicate using IPv6 addresses.
-
-chan_local
-------------------
- * The /b option has been removed.
-
- * chan_local moved into the system core and is no longer a loadable module.
-
-chan_mobile
-------------------
- * Added general support for busy detection.
-
- * Added ECAM command support for Sony Ericsson phones.
-
-chan_pjsip
-------------------
- * A new SIP channel driver for Asterisk, chan_pjsip is built on the PJSIP
-   SIP stack. A collection of resource modules provides the bulk of the SIP
-   functionality. For more information on the new SIP channel driver, see
-   https://wiki.asterisk.org/wiki/x/JYGLAQ
-
-chan_sip
-------------------
- * Added support for RFC 3327 "Path" headers. This can be enabled in sip.conf
-   using the 'supportpath' setting, either on a global basis or on a peer basis.
-   This setting enables Asterisk to route outgoing out-of-dialog requests via a
-   set of proxies by using a pre-loaded route-set defined by the Path headers in
-   the REGISTER request. See Realtime updates for more configuration information.
-
- * The SIP_CODEC family of variables may now specify more than one codec. Each
-   codec must be separated by a comma. The first codec specified is the
-   preferred codec for the offer. This allows a dialplan writer to specify both
-   audio and video codecs, e.g., Set(SIP_CODEC=ulaw,h264)
-
- * The 'callevents' parameter has been removed. Hold AMI events are now raised
-   in the core, and can be filtered out using the 'eventfilter' parameter
-   in manager.conf.
-
- * Added 'ignore_requested_pref'. When enabled, this will use the preferred
-   codecs configured for a peer instead of the requested codec.
-
- * The option "register_retry_403" has been added to chan_sip to work around
-   servers that are known to erroneously send 403 in response to valid
-   REGISTER requests and allows Asterisk to continue attepmting to connect.
-
-chan_skinny
-------------------
- * Added the 'immeddialkey' parameter. If set, when the user presses the
-   configured key the already entered number will be immediately dialed. This
-   is useful when the dialplan allows for variable length pattern matching.
-   Valid options are '*' and '#'.
-
- * Added the 'callfwdtimeout' parameter. This configures the amount of time (in
-   milliseconds) before a call forward is considered to not be answered.
-
- * The 'serviceurl' parameter allows Service URLs to be attached to line
-   buttons.
-
-
-Functions
-------------------
-
-AGENT
-------------------
- * The password option has been disabled, as the AgentLogin application no
-   longer provides authentication.
-
-AUDIOHOOK_INHERIT
-------------------
- * Due to changes in the Asterisk core, this function is no longer needed to
-   preserve a MixMonitor on a channel during transfer operations and dialplan
-   execution. It is effectively obsolete.
-
-CDR (function)
-------------------
- * The 'amaflags' and 'accountcode' attributes for the CDR function are
-   deprecated. Use the CHANNEL function instead to access these attributes.
-
- * The 'l' option has been removed. When reading a CDR attribute, the most
-   recent record is always used. When writing a CDR attribute, all non-finalized
-   CDRs are updated.
-
- * The 'r' option has been removed, for the same reason as the 'l' option.
-
- * The 's' option has been removed, as LOCKED semantics no longer exist in the
-   CDR engine.
-
-CDR_PROP
-------------------
- * A new function CDR_PROP has been added. This function lets you set properties
-   on a channel's active CDRs. This function is write-only. Properties accept
-   boolean values to set/clear them on the channel's CDRs. Valid properties
-   include:
-   - 'party_a' - make this channel the preferred Party A in any CDR between two
-     channels. If two channels have this property set, the creation time of the
-     channel is used to determine who is Party A. Note that dialed channels are
-     never Party A in a CDR.
-   - 'disable' - disable CDRs on this channel. This is analogous to the NoCDR
-     application when set to True, and analogous to the 'e' option in ResetCDR
-     when set to False.
-
-CHANNEL
-------------------
- * Added the argument 'dtmf_features'. This sets the DTMF features that will be
-   enabled on a channel when it enters a bridge. Allowed values are 'T', 'K',
-   'H', 'W', and 'X', and are analogous to the parameters passed to the Dial
-   application.
-
- * Added the argument 'after_bridge_goto'. This can be set to a parseable Goto
-   string, i.e., [[context],extension],priority. If set on a channel, if a
-   channel leaves a bridge but is not hung up it will resume dialplan execution
-   at that location.
-
-JITTERBUFFER
-------------------
- * JITTERBUFFER now accepts an argument of 'disabled' which can be used
-   to remove jitterbuffers previously set on a channel with JITTERBUFFER.
-   The value of this setting is ignored when disabled is used for the argument.
-
-PJSIP_DIAL_CONTACTS
-------------------
- * A new function provided by chan_pjsip, this function can be used in
-   conjunction with the Dial application to construct a dial string that will
-   dial all contacts on an Address of Record associated with a chan_pjsip
-   endpoint.
-
-PJSIP_MEDIA_OFFER
-------------------
- * Provided by chan_pjsip, this function sets the codecs to be offered on the
-   outbound channel prior to dialing.
-
-REDIRECTING
-------------------
- * Redirecting reasons can now be set to arbitrary strings. This means
-   that the REDIRECTING dialplan function can be used to set the redirecting
-   reason to any string. It also allows for custom strings to be read as the
-   redirecting reason from SIP Diversion headers.
-
-SPEECH_ENGINE
-------------------
- * The SPEECH_ENGINE function now supports read operations. When read from, it
-   will return the current value of the requested attribute.
-
-VMCOUNT:
-------------------
- * Mailboxes defined by app_voicemail MUST be referenced by the rest of the
-   system as mailbox@context.  The rest of the system cannot add @default
-   to mailbox identifiers for app_voicemail that do not specify a context
-   any longer.  It is a mailbox identifier format that should only be
-   interpreted by app_voicemail.
-
-
-Resources
-------------------
-
-res_agi (Asterisk Gateway Interface)
-------------------
- * The manager event AGIExec has been split into AGIExecStart and AGIExecEnd.
-
- * The manager event AsyncAGI has been split into AsyncAGIStart, AsyncAGIExec,
-   and AsyncAGIEnd.
-
- * The CONTROL STREAM FILE command now accepts an offsetms parameter. This
-   will start the playback of the audio at the position specified. It will
-   also return the final position of the file in 'endpos'.
-
- * The CONTROL STREAM FILE command will now populate the CPLAYBACKSTATUS
-   channel variable if the user stopped the file playback or if a remote
-   entity stopped the playback. If neither stopped the playback, it will
-   indicate the overall success/failure of the playback. If stopped early,
-   the final offset of the file will be set in the CPLAYBACKOFFSET channel
-   variable.
-
- * The SAY ALPHA command now accepts an additional parameter to control
-   whether it specifies the case of uppercase, lowercase, or all letters to
-   provide functionality similar to SayAlphaCase.
-
-res_ari (Asterisk RESTful Interface) (and others)
-------------------
- * The Asterisk RESTful Interface (ARI) provides a mechanism to expose and
-   control telephony primitives in Asterisk by remote client. This includes
-   channels, bridges, endpoints, media, and other fundamental concepts. Users
-   of ARI can develop their own communications applications, controlling
-   multiple channels using an HTTP RESTful interface and receiving JSON events
-   about the objects via a WebSocket connection. ARI can be configured in
-   Asterisk via ari.conf. For more information on ARI, see
-   https://wiki.asterisk.org/wiki/x/0YCLAQ
-
-res_parking
--------------------
- * Parking has been extracted from the Asterisk core as a loadable module,
-   res_parking. Configuration for parking is now provided by res_parking.conf.
-   Configuration through features.conf is no longer supported.
-
- * res_parking uses the configuration framework. If an invalid configuration is
-   supplied, res_parking will fail to load or fail to reload. Previously,
-   invalid configurations would generally be accepted, with certain errors
-   resulting in individually disabled parking lots.
-
- * Parked calls are now placed in bridges. While this is largely an
-   architectural change, it does have implications on how channels in a parking
-   lot are viewed. For example, commands that display channels in bridges will
-   now also display the channels in a parking lot.
-
- * The order of arguments for the new parking applications have been modified.
-   Timeout and return context/exten/priority are now implemented as options,
-   while the name of the parking lot is now the first parameter. See the
-   application documentation for Park, ParkedCall, and ParkAndAnnounce for more
-   in-depth information as well as syntax.
-
- * Extensions are by default no longer automatically created in the dialplan to
-   park calls or pickup parked calls. Generation of dialplan extensions can be
-   enabled using the 'parkext' configuration option.
-
- * ADSI functionality for parking is no longer supported. The 'adsipark'
-   configuration option has been removed as a result.
-
- * The PARKINGSLOT channel variable has been deprecated in favor of
-   PARKING_SPACE to match the naming scheme of the new system.
-
- * PARKING_SPACE and PARKEDLOT channel variables will now be set for a parked
-   channel even when the configuration option 'comebactoorigin' is enabled.
-
- * A new CLI command 'parking show' has been added. This allows a user to
-   inspect the parking lots that are currently in use.
-   'parking show <parkinglot>' will also show the parked calls in a specific
-   parking lot.
-
- * The CLI command 'parkedcalls' is now deprecated in favor of
-   'parking show <parkinglot>'.
-
- * The AMI command 'ParkedCalls' will now accept a 'ParkingLot' argument which
-   can be used to get a list of parked calls for a specific parking lot.
-
- * The AMI command 'Park' field 'Channel2' has been deprecated and replaced
-   with 'TimeoutChannel'. If both 'Channel2' and 'TimeoutChannel' are
-   specified, 'TimeoutChannel' will be used. The field 'TimeoutChannel' is no
-   longer a required argument.
-
- * The ParkAndAnnounce application is now provided through res_parking instead
-   of through the separate app_parkandannounce module.
-
- * ParkAndAnnounce will no longer go to the next position in dialplan on timeout
-   by default. Instead, it will follow the timeout rules of the parking lot. The
-   old behavior can be reproduced by using the 'c' option.
-
- * Dynamic parking lots will now fail to be created under the following
-   conditions:
-   - if the parking lot specified by PARKINGDYNAMIC does not exist
-   - if they require exclusive park and parkedcall extensions which overlap
-     with existing parking lots.
-
- * Dynamic parking lots will be cleared on reload for dynamic parking lots that
-   currently contain no calls. Dynamic parking lots containing parked calls
-   will persist through the reloads without alteration.
-
- * If 'parkext_exclusive' is set for a parking lot and that extension is
-   already in use when that parking lot tries to register it, this is now
-   considered a parking system configuration error. Configurations which do
-   this will be rejected.
-
- * Added channel variable PARKER_FLAT. This contains the name of the extension
-   that would be used if 'comebacktoorigin' is enabled. This can be useful when
-   comebacktoorigin is disabled, but the dialplan or an external control
-   mechanism wants to use the extension in the park-dial context that was
-   generated to re-dial the parker on timeout.
-
-res_pjsip (and many others)
-------------------
- * A large number of resource modules make up the SIP stack based on pjsip.
-   The chan_pjsip channel driver users these resource modules to provide
-   various SIP functionality in Asterisk. The majority of configuration for
-   these modules is performed in pjsip.conf. Other modules may use their
-   own configuration files.
-
- * Added 'set_var' option for an endpoint. For each variable specified that
-   variable gets set upon creation of a channel involving the endpoint.
-
-res_rtp_asterisk
-------------------
- * ICE/STUN/TURN support in res_rtp_asterisk has been made optional.  To enable
-   them, an Asterisk-specific version of PJSIP needs to be installed.
-   Tarballs are available from https://github.com/asterisk/pjproject/tags/.
-
-res_statsd/res_chan_stats
-------------------
- * A new resource module, res_statsd, has been added, which acts as a statsd
-   client. This module allows Asterisk to publish statistics to a statsd
-   server. In conjunction with res_chan_stats, it will publish statistics about
-   channels to the statsd server. It can be configured via res_statsd.conf.
-
-res_xmpp
-------------------
- * Device state for XMPP buddies is now available using the following format:
-   XMPP/<client name>/<buddy address>
-   If any resource is available the device state is considered to be not in use.
-   If no resources exist or all are unavailable the device state is considered
-   to be unavailable.
-
-
-Scripts
-------------------
-
-Realtime/Database Scripts
-------------------
- * Asterisk previously included example db schemas in the contrib/realtime/
-   directory of the source tree.  This has been replaced by a set of database
-   migrations using the Alembic framework.  This allows you to use alembic to
-   initialize the database for you.  It will also serve as a database migration
-   tool when upgrading Asterisk in the future.
-
-   See contrib/ast-db-manage/README.md for more details.
-
-sip_to_res_pjsip.py
--------------------
- * A new script has been added in the contrib/scripts/sip_to_res_pjsip folder.
-   This python script will convert an existing sip.conf file to a
-   pjsip.conf file, for use with the chan_pjsip channel driver. This script
-   is meant to be an aid in converting an existing chan_sip configuration to
-   a chan_pjsip configuration, but it is expected that configuration beyond
-   what the script provides will be needed.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 10 to Asterisk 11 --------------------
-------------------------------------------------------------------------------
-
-Build System
--------------------
- * The Asterisk build system will now build and install a shared library
-   (libasteriskssl.so) used to wrap various initialization and shutdown functions
-   from the libssl and libcrypto libraries provided by OpenSSL. This is done so
-   that Asterisk can ensure that these functions do *not* get called by any
-   modules that are loaded into Asterisk, since they should only be called once
-   in any single process. If desired, this feature can be disabled by supplying
-   the "--disable-asteriskssl" option to the configure script.
-
- * A new make target, 'full', has been added to the Makefile.  This performs
-   the same compilation actions as make all, but will also scan the entirety of
-   each source file for documentation.  This option is needed to generate AMI
-   event documentation.  Note that your system must have Python in order for
-   this make target to succeed.
-
- * The optimization portion of the build system has been reworked to avoid
-   broken builds on certain architectures.  All architecture-specific
-   optimization has been removed in favor of using -march=native to allow gcc
-   to detect the environment in which it is running when possible.  This can
-   be toggled as BUILD_NATIVE under "Compiler Flags" in menuselect.
-
- * BUILD_CFLAGS and BUILD_LDFLAGS can now be passed to menuselect, e.g.,
-   make BUILD_CFLAGS="whatever" BUILD_LDFLAGS="whatever"
-
- * Remove "asterisk/version.h" in favor of "asterisk/ast_version.h".  If you
-   previously parsed the header file to obtain the version of Asterisk, you
-   will now have to go through Asterisk to get the version information.
-
-
-Applications
--------------------
-
-Bridge
--------------------
- * Added 'F()' option. Similar to the dial option, this can be supplied with
-   arguments indicating where the callee should go after the caller is hung up,
-   or without options specified, the priority after the Queue will be used.
-
-
-ConfBridge
--------------------
- * Added menu action admin_toggle_mute_participants.  This will mute / unmute
-   all non-admin participants on a conference.  The confbridge configuration
-   file also allows for the default sounds played to all conference users when
-   this occurs to be overriden using sound_participants_unmuted and
-   sound_participants_muted.
-
- * Added menu action participant_count.  This will playback the number of
-   current participants in a conference.
-
- * Added announcement configuration option to user profile. If set the sound
-   file will be played to the user, and only the user, upon joining the
-   conference bridge.
-
- * Added record_file_append option that defaults to "yes", but if set to no
-   will create a new file between each start/stop recording.
-
-
-Dial
--------------------
- * Added 'b' and 'B' options to Dial that execute a Gosub on callee and caller
-   channels respectively before the callee channels are called.
-
-
-ExternalIVR
--------------------
- * Added support for IPv6.
-
- * Add interrupt ('I') command to ExternalIVR.  Sending this command from an
-   external process will cause the current playlist to be cleared, including
-   stopping any audio file that is currently playing.  This is useful when you
-   want to interrupt audio playback only when specific DTMF is entered by the
-   caller.
-
-
-FollowMe
--------------------
- * A new option, 'I' has been added to app_followme. By setting this option,
-   Asterisk will not update the caller with connected line changes when they
-   occur.  This is similar to app_dial and app_queue.
-
- * The 'N' option is now ignored if the call is already answered.
-
- * Added 'b' and 'B' options to FollowMe that execute a Gosub on callee
-   and caller channels respectively before the callee channels are called.
-
- * The winning FollowMe outgoing call is now put on hold if the caller put it on
-   hold.
-
-
-MixMonitor
-------------------
- * MixMonitor hooks now have IDs associated with them which can be used to
-   assign a target to StopMixMonitor. Use of MixMonitor's i(variable) option
-   will allow storage of the MixMonitor ID in a channel variable. StopMixmonitor
-   now accepts that ID as an argument.
-
- * Added 'm' option, which stores a copy of the recording as a voicemail in the
-   indicated mailboxes.
-
-
-MySQL
--------------------
- * The connect action in app_mysql now allows you to specify a port number to
-   connect to.  This is useful if you run a MySQL server on a non-standard
-   port number.
-
-
-OSP Applications
--------------------
- * Increased the default number of allowed destinations from 5 to 12.
-
-
-Page
--------------------
- * The app_page application now no longer depends on DAHDI or app_meetme.  It
-   has been re-architected to use app_confbridge internally.
-
-
-Queue
--------------------
- * Added queue options autopausebusy and autopauseunavail for automatically
-   pausing a queue member when their device reports busy or congestion.
-
- * The 'ignorebusy' option for queue members has been deprecated in favor of
-   the option 'ringinuse. Also a 'queue set ringinuse' CLI command has been
-   added as well as an AMI action 'QueueMemberRingInUse' to set this variable on a
-   per interface basis. Individual ringinuse values can now be set in
-   queues.conf via an argument to member definitions. Lastly, the queue
-   'ringinuse' setting now only determines defaults for the per member
-   'ringinuse' setting and does not override per member settings like it does
-   in earlier versions.
-
- * Added 'F()' option. Similar to the dial option, this can be supplied with
-   arguments indicating where the callee should go after the caller is hung up,
-   or without options specified, the priority after the Queue will be used.
-
- * Added new option log_member_name_as_agent, which will cause the membername to
-   be logged in the agent field for ADDMEMBER and REMOVEMEMBER queue events if a
-   state_interface has been set.
-
- * Add queue monitoring hints.  exten => 8501,hint,Queue:markq.
-
- * App_queue will now play periodic announcements for the caller that
-   holds the first position in the queue while waiting for answer.
-
-SayUnixTime
-------------------
- * Added 'j' option to SayUnixTime. SayUnixTime no longer auto jumps to extension
-   when receiving DTMF.  Use the 'j' option to enable extension jumping. Also
-   changed arguments to SayUnixTime so that every option is truly optional even
-   when using multiple options (so that j option could be used without having to
-   manually specify timezone and format) There are other benefits, e.g., format
-   can now be used without specifying time zone as well.
-
-
-Voicemail
-------------------
- * Addition of the VM_INFO function - see Function changes.
-
- * The imapserver, imapport, and imapflags configuration options can now be
-   overriden on a user by user basis.
-
- * When voicemail plays a message's envelope with saycid set to yes, when
-   reaching the caller id field it will play a recording of a file with the same
-   base name as the sender's callerid if there is a similarly named file in
-   <astspooldir>/recordings/callerids/
-
- * Voicemails now contains a unique message identifier "msg_id", which is stored
-   in the message envelope with the sound files.  IMAP backends will now store
-   the message identifiers with a header of "X-Asterisk-VM-Message-ID".  ODBC
-   backends will store the message identifier in a "msg_id" column.  See
-   UPGRADE.txt for more information.
-
- * Added VoiceMailPlayMsg application.  This application will play a single
-   voicemail message from a mailbox.  The result of the application, SUCCESS or
-   FAILED, is stored in the channel variable VOICEMAIL_PLAYBACKSTATUS.
-
-
-Functions
-------------------
- * Hangup handlers can be attached to channels using the CHANNEL() function.
-   Hangup handlers will run when the channel is hung up similar to the h
-   extension. The hangup_handler_push option will push a GoSub compatible
-   location in the dialplan onto the channel's hangup handler stack.  The
-   hangup_handler_pop option will remove the last added location, and optionally
-   replace it with a new GoSub compatible location.  The hangup_handler_wipe
-   option will remove all locations on the stack, and optionally add a new
-   location.
-
- * The expression parser now recognizes the ABS() absolute value function,
-   which will convert negative floating point values to positive values.
-
- * FAXOPT(faxdetect) will enable a generic fax detect framehook for dialplan
-   control of faxdetect.
-
- * Addition of the VM_INFO function that can be used to retrieve voicemail
-   user information, such as the email address and full name.
-   The MAILBOX_EXISTS dialplan function has been deprecated in favour of
-   VM_INFO.
-
- * The REDIRECTING function now supports the redirecting original party id
-   and reason.
-
- * Two new functions have been added: FEATURE() and FEATUREMAP().  FEATURE()
-   lets you set some of the configuration options from the [general] section
-   of features.conf on a per-channel basis.  FEATUREMAP() lets you customize
-   the key sequence used to activate built-in features, such as blindxfer,
-   and automon.  See the built-in documentation for details.
-
- * MESSAGE(from) for incoming SIP messages now returns "display-name" <uri>
-   instead of simply the uri.  This is the format that MessageSend() can use
-   in the from parameter for outgoing SIP messages.
-
- * Added the PRESENCE_STATE function.  This allows retrieving presence state
-   information from any presence state provider.  It also allows setting
-   presence state information from a CustomPresence presence state provider.
-   See AMI/CLI changes for related commands.
-
- * Added the AMI_CLIENT function to make manager account attributes available
-   to the dialplan. It currently supports returning the current number of
-   active sessions for a given account.
-
- * Added support for private party ID information to CALLERID, CONNECTEDLINE,
-   and the REDIRECTING functions.
-
-
-Channel Drivers
-------------------
-
-chan_local
-------------------
- * Added a manager event "LocalBridge" for local channel call bridges between
-   the two pseudo-channels created.
-
-
-chan_dahdi
-------------------
- * Added dialtone_detect option for analog ports to disconnect incoming
-   calls when dialtone is detected.
-
- * Added option colp_send to send ISDN connected line information.  Allowed
-   settings are block, to not send any connected line information; connect, to
-   send connected line information on initial connect; and update, to send
-   information on any update during a call.  Default is update.
-
- * Add options namedcallgroup and namedpickupgroup to support installations
-   where a higher number of groups (>64) is required.
-
- * Added support to use private party ID information with PRI calls.
-
-
-chan_motif
-------------------
- * A new channel driver named chan_motif has been added which provides support for
-   Google Talk and Jingle in a single channel driver. This new channel driver includes
-   support for both audio and video, RFC2833 DTMF, all codecs supported by Asterisk,
-   hold, unhold, and ringing notification. It is also compliant with the current Jingle
-   specification, current Google Jingle specification, and the original Google Talk
-   protocol.
-
-
-chan_ooh323
-------------------
- * Added NAT support for RTP.  Setting in config is 'nat', which can be set
-   globally and overriden on a peer by peer basis.
-
- * Direct media functionality has been added. Options in config are:
-   directmedia (directrtp) and directrtpsetup (earlydirect)
-
- * ChannelUpdate events now contain a CallRef header.
-
-
-chan_sip
-------------------
- * Asterisk will no longer substitute CID number for CID name in the display
-   name field if CID number exists without a CID name. This change improves
-   compatibility with certain device features such as Avaya IP500's directory
-   lookup service.
-
- * A new setting for autocreatepeer (autocreatepeer=persistent) allows peers
-   created using that setting to not be removed during SIP reload.
-
- * Added settings recordonfeature and recordofffeature.  When receiving an INFO
-   request with a "Record:" header, this will turn the requested feature on/off.
-   Allowed values are 'automon', 'automixmon', and blank to disable.  Note that
-   dynamic features must be enabled and configured properly on the requesting
-   channel for this to function properly.
-
- * Add support to realtime for the 'callbackextension' option.
-
- * When multiple peers exist with the same address, but differing
-   callbackextension options, incoming requests that are matched by address
-   will be matched to the peer with the matching callbackextension if it is
-   available.
-
- * Two new NAT options, auto_force_rport and auto_comedia, have been added
-   which set the force_rport and comedia options automatically if Asterisk
-   detects that an incoming SIP request crossed a NAT after being sent by
-   the remote endpoint.
-
- * The default global nat setting in sip.conf has been changed from force_rport
-   to auto_force_rport.
-
- * NAT settings are now a combinable list of options. The equivalent of the
-   deprecated nat=yes is nat=force_rport,comedia. nat=no behaves as before.
-
- * Adds an option send_diversion which can be disabled to prevent
-   diversion headers from automatically being added to INVITE requests.
-
- * Add support for lightweight NAT keepalive. If enabled a blank packet will
-   be sent to the remote host at a given interval to keep the NAT mapping open.
-   This can be enabled using the keepalive configuration option.
-
- * Add option 'tonezone' to specify country code for indications.  This option
-   can be set both globally and overridden for specific peers.
-
- * The SIP Security Events Framework now supports IPv6.
-
- * Add a new setting for directmedia, 'outgoing', to alleviate INVITE glares
-   between multiple user agents. When set, for directmedia reinvites,
-   Asterisk will not send an immediate reinvite on an incoming call leg. This
-   option is useful when peered with another SIP user agent that is known to
-   send immediate direct media reinvites upon call establishment.
-
- * Add support for WebSocket transport. This can be configured using 'ws' or 'wss'
-   as the transport.
-
- * Add options subminexpiry and submaxexpiry to set limits of subscription
-   timer independently from registration timer settings. The setting of the
-   registration timer limits still is done by options minexpiry, maxexpiry
-   and defaultexpiry. For backwards compatibility the setting of minexpiry
-   and maxexpiry also is used to configure the subscription timer limits if
-   subminexpiry and submaxexpiry are not set in sip.conf.
-
- * Set registration timer limits to default values when reloading sip
-   configuration and values are not set by configuration.
-
- * Add options namedcallgroup and namedpickupgroup to support installations
-   where a higher number of groups (>64) is required.
-
- * When a MESSAGE request is received, the address the request was received from
-   is now saved in the SIP_RECVADDR variable.
-
- * Add ANI2/OLI parsing for SIP.  The "From" header in INVITE requests is now
-   parsed for the presence of "isup-oli", "ss7-oli", or "oli" tags.  If present,
-   the ANI2/OLI information is set on the channel, which can be retrieved using
-   the CALLERID function.
-
- * Peers can now be configured to support negotiation of ICE candidates using
-   the setting icesupport.  See res_rtp_asterisk changes for more information.
-
- * Added support for format attribute negotiation.  See the Codecs changes for
-   more information.
-
- * Extra headers specified with SIPAddHeader are sent with the REFER message
-   when using Transfer application. See refer_addheaders in sip.conf.sample.
-
- * Added support to use private party ID information with calls.
-
- * Adds an option discard_remote_hold_retrieval that when set stops telling
-   the peer to start music on hold.
-
-
-chan_skinny
-------------------
- * Added skinny version 17 protocol support.
-
-
-chan_unistim
---------------------
- * Added option 'dtmf_duration' allowing playback time of DTMF tones to be set
-
- * Modified option 'date_format' to allow options to display date in 31Jan and Jan31
-   formats as options 0 and 1. The previous options 0 and 1 now map to options 2 and 3
-   as per the UNISTIM protocol.
-
- * Fixed issues with dialtone not matching indications.conf and mute stopping rx
-   as well as tx. Also fixed issue with call "Timer" displaying as French "Dur\E9e"
-
- * Added ability to use multiple lines for a single phone.  This allows multiple
-   calls to occur on a single phone, using callwaiting and switching between calls.
-
- * Added option 'sharpdial' allowing end dialing by pressing # key
-
- * Added option 'interdigit_timer' to control phone dial timeout
-
- * Added options 'cwstyle', 'cwvolume' controlling callwaiting appearance
-
- * Added global 'debug' option, that enables debug in channel driver
-
- * Added ability to translate on-screen menu in multiple languages. Tested on
-   Russian languages.  Supported encodings: ISO 8859-1, ISO 8859-2, ISO 8859-4,
-   ISO 8859-5, ISO 2022-JP. Language controlled by 'language' and on-screen
-   menu of phone
-
- * In addition to English added French and Russian languages for on-screen menus
-
- * Reworked dialing number input: added dialing by timeout, immediate dial on
-   on dialplan compare, phone number length now not limited by screen size
-
- * Added ability to pickup a call using features.conf defined value and
-   on-screen key
-
-
-chan_mISDN:
-------------------
- * Add options namedcallgroup and namedpickupgroup to support installations
-   where a higher number of groups (>64) is required.
-
- * Added support to use private party ID information with calls.
-
-
-Core
-------------------
- * The minimum DTMF duration can now be configured in asterisk.conf
-   as "mindtmfduration". The default value is (as before) set to 80 ms.
-   (previously it was only available in source code)
-
- * Named ACLs can now be specified in acl.conf and used in configurations that
-   use ACLs. As a general rule, if some derivative of 'permit' or 'deny' is
-   used to specify an ACL, a similar form of 'acl' will add a named ACL to the
-   working ACL. In addition, some CLI commands have been added to provide
-   show information and allow for module reloading - see CLI Changes.
-
- * Rules in ACLs (specified using 'permit' and 'deny') can now contain multiple
-   items (separated by commas), and items in the rule can be negated by prefixing
-   them with '!'. This simplifies Asterisk Realtime configurations, since it is no
-   longer necessray to control the order that the 'permit' and 'deny' columns are
-   returned from queries.
-
- * DUNDi now allows the built in variables ${NUMBER}, ${IPADDR} and ${SECRET} to
-   be used within the dynamic weight attribute when specifying a mapping.
-
- * CEL backends can now be configured to show "USER_DEFINED" in the EventName
-   header, instead of putting the user defined event name there.  When enabled
-   the UserDefType header is added for user defined events.  This feature is
-   enabled with the setting show_user_defined.
-
- * Macro has been deprecated in favor of GoSub.  For redirecting and connected
-   line purposes use the following variables instead of their macro equivalents:
-   REDIRECTING_SEND_SUB, REDIRECTING_SEND_SUB_ARGS, CONNECTED_LINE_SEND_SUB,
-   CONNECTED_LINE_SEND_SUB_ARGS.  For CCSS, use cc_callback_sub instead of
-   cc_callback_macro in channel configurations.
-
- * Asterisk can now use a system-provided NetBSD editline library (libedit) if it
-   is available.
-
- * Call files now support the "early_media" option to connect with an outgoing
-   extension when early media is received.
-
- * Added support to use private party ID information with calls.
-
-
-AGI
-------------------
- * A new channel variable, AGIEXITONHANGUP, has been added which allows
-   Asterisk to behave like it did in Asterisk 1.4 and earlier where the
-   AGI application would exit immediately after a channel hangup is detected.
-
- * IPv6 addresses are now supported when using FastAGI (agi://).  Hostnames
-   are resolved and each address is attempted in turn until one succeeds or
-   all fail.
-
-
-AMI (Asterisk Manager Interface)
-------------------
- * The originate action now has an option "EarlyMedia" that enables the
-   call to bridge when we get early media in the call. Previously,
-   early media was disregarded always when originating calls using AMI.
-
- * Added setvar= option to manager accounts (much like sip.conf)
-
- * Originate now generates an error response if the extension given is not found
-   in the dialplan
-
- * MixMonitor will now show IDs associated with the mixmonitor upon creating
-   them if the i(variable) option is used. StopMixMonitor will accept
-   MixMonitorID as an option to close specific MixMonitors.
-
- * The SIPshowpeer manager action response field "SIP-Forcerport" has been
-   updated to include information about peers configured with
-   nat=auto_force_rport by returning "A" if auto_force_rport is set and nat is
-   detected, and "a" if it is set and nat is not detected. "Y" and "N" are still
-   returned if auto_force_rport is not enabled.
-
- * Added SIPpeerstatus manager command which will generate PeerStatus events
-   similar to the existing PeerStatus events found in chan_sip on demand.
-
- * Hangup now can take a regular expression as the Channel option.  If you want
-   to hangup multiple channels, use /regex/ as the Channel option.  Existing
-   behavior to hanging up a single channel is unchanged, but if you pass a regex,
-   the manager will send you a list of channels back that were hung up.
-
- * Support for IPv6 addresses has been added.
-
- * AMI Events can now be documented in the Asterisk source. Note that AMI event
-   documentation is only generated when Asterisk is compiled using 'make full'.
-   See the CLI section for commands to display AMI event information.
-
- * The AMI Hangup event now includes the AccountCode header so you can easily
-   correlate with AMI Newchannel events.
-
- * The QueueMemberStatus, QueueMemberAdded, and QueueMember events now include
-   the StateInterface of the queue member.
-
- * Added AMI event SessionTimeout in the Call category that is issued when a
-   call is terminated due to either RTP stream inactivity or SIP session timer
-   expiration.
-
- * CEL events can now contain a user defined header UserDefType.  See core
-   changes for more information.
-
- * OOH323 ChannelUpdate events now contain a CallRef header.
-
- * Added PresenceState command.  This command will report the presence state for
-   the given presence provider.
-
- * Added Parkinglots command.  This will list all parking lots as a series of
-   AMI Parkinglot events.
-
- * Added MessageSend command.  This behaves in the same manner as the
-   MessageSend application, and is a technolgoy agnostic mechanism to send out
-   of call text messages.
-
- * Added "message" class authorization.  This grants an account permission to
-   send out of call messages.  Write-only.
-
-
-CLI
--------------------
- * The "dialplan add include" command has been modified to create context a context
-   if one does not already exist. For instance, "dialplan add include foo into bar"
-   will create context "bar" if it does not already exist.
-
- * A  "dialplan remove context" command has been added to remove a context from
-   the dialplan
-
- * The "mixmonitor list <channel>" command will now show MixMonitor ID, and the
-   filenames of all running mixmonitors on a channel.
-
- * The debug level of "pri set debug" is now a bitmask ranging from 0 to 15 if
-   numeric instead of 0, 1, or 2.
-
- * "stun show status" will show a table describing how the STUN client is
-   behaving.
-
- * "acl show [named acl]" will show information regarding a Named ACL.  The
-   acl module can be reloaded with "reload acl".
-
- * Added CLI command to display AMI event information - "manager show events",
-   which shows a list of all known and documented AMI events, and "manager show
-   event [event name]", which shows detail information about a specific AMI
-   event.
-
- * The result of the CLI command "queue show" now includes the state interface
-   information of the queue member.
-
- * The command "core set verbose" will now set a separate level of logging for
-   each remote console without affecting any other console.
-
- * Added command "cdr show pgsql status" to check connection status
-
- * "sip show channel" will now display the complete route set.
-
- * Added "presencestate list" command.  This command will list all custom
-   presence states that have been set by using the PRESENCE_STATE dialplan
-   function.
-
- * Added "presencestate change <entity> <state>[,<subtype>[,message[,options]]]"
-   command.  This changes a custom presence to a new state.
-
-
-Codecs
--------------------
- * Codec lists may now be modified by the '!' character, to allow succinct
-   specification of a list of codecs allowed and disallowed, without the
-   requirement to use two different keywords.  For example, to specify all
-   codecs except g729 and g723, one need only specify allow=all,!g729,!g723.
-
- * Add support for parsing SDP attributes, generating SDP attributes, and
-   passing it through. This support includes codecs such as H.263, H.264, SILK,
-   and CELT. You are able to set up a call and have attribute information pass.
-   This should help considerably with video calls.
-
- * The iLBC codec can now use a system-provided iLBC library if one is installed,
-   just like the GSM codec.
-
-DUNDi changes
--------------
- * Added CLI commands dundi show hints and dundi show cache which will list DUNDi
-   'DONTASK' hints in the cache and list all DUNDi cache entires respectively.
-
-Logging
--------------------
- * Asterisk version and build information is now logged at the beginning of a
-   log file.
-
- * Threads belonging to a particular call are now linked with callids which get
-   added to any log messages produced by those threads. Log messages can now be
-   easily identified as involved with a certain call by looking at their call id.
-   Call ids may also be attached to log messages for just about any case where
-   it can be determined to be related to a particular call.
-
- * Each logging destination and console now have an independent notion of the
-   current verbosity level.  Logger.conf now allows an optional argument to
-   the 'verbose' specifier, indicating the level of verbosity sent to that
-   particular logging destination.  Additionally, remote consoles now each
-   have their own verbosity level.  The command 'core set verbose' will now set
-   a separate level for each remote console without affecting any other
-   console.
-
-
-Music On Hold
--------------------
- * Added 'announcement' option which will play at the start of MOH and between
-   songs in modes of MOH that can detect transitions between songs (eg.
-   files, mp3, etc).
-
-
-Parking
--------------------
- * New per parking lot options: comebackcontext and comebackdialtime. See
-   configs/features.conf.sample for more details.
-
- * Channel variable PARKER is now set when comebacktoorigin is disabled in
-   a parking lot.
-
- * Channel variable PARKEDCALL is now set with the name of the parking lot
-   when a timeout occurs.
-
-
-CDRs
--------------------
-
-CDR Postgresql Driver
--------------------
- * Added command "cdr show pgsql status" to check connection status
-
-
-CDR Adaptive ODBC Driver
--------------------
- * Added schema option for databases that support specifying a schema.
-
-
-Resource Modules
--------------------
-
-Calendars
--------------------
- * A CALENDAR_SUCCESS=1/0 channel variable is now set to show whether or not
-   CALENDAR_WRITE has completed successfully.
-
-
-res_rtp_asterisk
--------------------
- * A new option, 'probation' has been added to rtp.conf
-   RTP in strictrtp mode can now require more than 1 packet to exit learning
-   mode with a new source (and by default requires 4). The probation option
-   allows the user to change the required number of packets in sequence to any
-   desired value. Use a value of 1 to essentially restore the old behavior.
-   Also, with strictrtp on, Asterisk will now drop all packets until learning
-   mode has successfully exited. These changes are based on how pjmedia handles
-   media sources and source changes.
-
- * Add support for ICE/STUN/TURN in res_rtp_asterisk.  This option can be
-   enabled or disabled using the icesupport setting.  A variety of other
-   settings have been introduced to configure STUN/TURN connections.
-
-
-res_corosync
--------------------
- * A new module, res_corosync, has been introduced.  This module uses the
-   Corosync cluster engineer (http://www.corosync.org) to allow a local cluster
-   of Asterisk servers to both Message Waiting Indication (MWI) and/or
-   Device State (presence) information.  This module is very similar to, and
-   is a replacement for the res_ais module that was in previous releases of
-   Asterisk.
-
-
-res_xmpp
--------------------
- * This module adds a cleaned up, drop-in replacement for res_jabber called
-   res_xmpp. This provides the same externally facing functionality but is
-   implemented differently internally.  res_jabber has been deprecated in favor
-   of res_xmpp; please see the UPGRADE.txt file for more information.
-
-
-Scripts
--------------------
- * The safe_asterisk script has been updated to allow several of its parameters
-   to be set from environment variables.  This also enables a custom run
-   directory of Asterisk to be specified, instead of defaulting to /tmp.
-
- * The live_ast script will now look for the LIVE_AST_BASE_DIR variable and use
-   its value to determine the directory to assume is the top-level directory of
-   the source tree.  If the variable is not set, it defaults to the current
-   behavior and uses the current working directory.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 1.8 to Asterisk 10 -------------------
-------------------------------------------------------------------------------
-
-Text Messaging
---------------
- * Asterisk now has protocol independent support for processing text messages
-   outside of a call.  Messages are routed through the Asterisk dialplan.
-   SIP MESSAGE and XMPP are currently supported.  There are options in
-   jabber.conf and sip.conf to allow enabling these features.
-     -> jabber.conf: see the "sendtodialplan" and "context" options.
-     -> sip.conf: see the "accept_outofcall_message", "auth_message_requests"
-        and "outofcall_message_context" options.
-   The MESSAGE() dialplan function and MessageSend() application have been
-   added to go along with this functionality.  More detailed usage information
-   can be found on the Asterisk wiki (http://wiki.asterisk.org/).
- * If real-time text support (T.140) is negotiated, it will be preferred for
-   sending text via the SendText application. For example, via SIP, messages
-   that were once sent via the SIP MESSAGE request would be sent via RTP if
-   T.140 text is negotiated for a call.
-
-Parking
--------
- * parkedmusicclass can now be set for non-default parking lots.
-
-Asterisk Manager Interface
---------------------------
- * PeerStatus now includes Address and Port.
- * Added Hold events for when the remote party puts the call on and off hold
-   for chan_dahdi ISDN channels.
- * Added new action MeetmeListRooms to list active conferences (shows same
-   data as "meetme list" at the CLI).
- * DAHDIShowChannels, SIPshowpeer, SIPpeers, and IAXpeers now contains a
-   Description field that is set by 'description' in the channel configuration
-   file.
- * Added Uniqueid header to UserEvent.
- * Added new action FilterAdd to control event filters for the current session.
-   This requires the system permission and uses the same filter syntax as
-   filters that can be defined in manager.conf
- * The Unlink event is now a Bridge event with Bridgestatus: Unlink. Previous
-   versions had some instances of the event converted, but others were left
-   as-is. All Unlink events should now be converted to Bridge events. The AMI
-   protocol version number was incremented to 1.2 as a result of this change.
-
-Asterisk HTTP Server
---------------------------
- * The HTTP Server can bind to IPv6 addresses.
-
-chan_dahdi
---------------------------
- * Busy tone patterns featuring 2 silence and 2 tone lengths can now be used
-   with busydetect.  usage example: busypattern=200,200,200,600
-
-CLI Changes
---------------------------
- * New 'gtalk show settings' command showing the current settings loaded from
-   gtalk.conf.
- * The 'logger reload' command now supports an optional argument, specifying an
-   alternate configuration file to use.
- * 'dialplan add extension' command will now automatically create a context if
-   the specified context does not exist with a message indicated it did so.
- * 'sip show peers', 'iax show peers', and 'dahdi show peers' now contains a
-   Description field which can be populated with 'description' in the channel
-   configuration files (sip.conf, iax2.conf, and chan_dahdi.conf).
-
-CDR
---------------------------
- * The filter option in cdr_adaptive_odbc now supports negating the argument,
-   thus allowing records which do NOT match the specified filter.
- * Added ability to log CONGESTION calls to CDR
-
-CODECS
---------------------------
- * Ability to define custom SILK formats in codecs.conf.
- * Addition of speex32 audio format with translation.
- * CELT codec pass-through support and ability to define
-   custom CELT formats in codecs.conf.
- * Ability to read raw signed linear files with sample rates
-   ranging from 8khz - 192khz.  The new file extensions introduced
-   are .sln12, .sln24, .sln32, .sln44, .sln48, .sln96, .sln192.
- * Due to protocol limitations, channel drivers other than SIP (eg. IAX2, MGCP,
-   Skinny, H.323, etc) can still only support the following codecs:
-   Audio: ulaw, alaw, slin, slin16, g719, g722, g723, g726, g726aal2, g729, gsm,
-          siren7, siren14, speex, speex16, ilbc, lpc10, adpcm
-   Video: h261, h263, h263p, h264, mpeg4
-   Image: jpeg, png
-   Text:  red, t140
-
-ConfBridge
---------------------------
- * New highly optimized and customizable ConfBridge application capable of
-   mixing audio at sample rates ranging from 8khz-96khz.
- * CONFBRIDGE dialplan function capable of creating dynamic ConfBridge user
-   and bridge profiles on a channel.
- * CONFBRIDGE_INFO dialplan function capable of retrieving information
-   about a conference such as locked status and number of parties, admins,
-   and marked users.
- * Addition of video_mode option in confbridge.conf for adding video support
-   into a bridge profile.
- * Addition of the follow_talker video_mode in confbridge.conf.  This video
-   mode dynamically switches the video feed to always display the loudest talker
-   supplying video in the conference.
-
-Dialplan Variables
-------------------
- * Added ASTETCDIR, ASTMODDIR, ASTVARLIBDIR, ASTDBDIR, ASTKEYDIR, ASTDATADIR,
-   ASTAGIDIR, ASTSPOOLDIR, ASTRUNDIR, ASTLOGDIR which hold the equivalent
-   variables from asterisk.conf.
-
-Dialplan Functions
-------------------
- * Addition of the JITTERBUFFER dialplan function. This function allows
-   for jitterbuffering to occur on the read side of a channel.  By using
-   this function conference applications such as ConfBridge and MeetMe can
-   have the rx streams jitterbuffered before conference mixing occurs.
- * Added DB_KEYS, which lists the next set of keys in the Asterisk database
-   hierarchy.
- * Added STRREPLACE function.  This function let's the user search a variable
-   for a given string to replace with another string as many times as the
-   user specifies or just throughout the whole string.
- * Added option to CHANNEL(pickupgroup) allow reading and setting the pickupgroup of channel.
- * Mark VALID_EXTEN() deprecated in favor of DIALPLAN_EXISTS()
- * Added extensions to chan_ooh323 in function CHANNEL()
-
-libpri channel driver (chan_dahdi) DAHDI changes
---------------------------
- * Added moh_signaling option to specify what to do when the channel's bridged
-   peer puts the ISDN channel on hold.
- * Added display_send and display_receive options to control how the display ie
-   is handled.  To send display text from the dialplan use the SendText()
-   application when the option is enabled.
- * Added mcid_send option to allow sending a MCID request on a span.
-
-Calendaring
---------------------------
- * Added setvar option to calendar.conf to allow setting channel variables on
-   notification channels.
- * Added "calendar show types" CLI command to list registered calendar
-   connectors.
-
-MixMonitor
---------------------------
- * Added two new options, r and t with file name arguments to record
-   single direction (unmixed) audio recording separate from the bidirectional
-   (mixed) recording.  The mixed file name argument is optional now as long
-   as at least one recording option is used.
-
-FollowMe
---------------------------
- * Added a new option, l, which will disable local call optimization for
-   channels involved with the FollowMe thread.  Use this option to improve
-   compatability for a FollowMe call with certain dialplan apps, options, and
-   functions.
-
-Meetme
---------------------------
- * Added option "k" that will automatically close the conference when there's
-   only one person left when a user exits the conference.
-
-CEL
---------------------------
- * cel_pgsql now supports the 'extra' column for data added using the
-   CELGenUserEvent() application.
-
-pbx_lua
---------------------------
- * Support for defining hints has been added to pbx_lua.  See the 'hints' table
-   in the sample extensions.lua file for syntax details.
- * Applications that perform jumps in the dialplan such as Goto will now
-   execute properly.  When pbx_lua detects that the context, extension, or
-   priority we are executing on has changed it will immediately return control
-   to the asterisk PBX engine.  Currently the engine cannot detect a Goto to
-   the priority after the currently executing priority.
- * An autoservice is now started by default for pbx_lua channels.  It can be
-   stopped and restarted using the autoservice_stop() and autoservice_start()
-   functions.
-
-res_fax
---------------------------
- * The ReceiveFAXStatus and SendFAXStatus manager events have been consolidated
-   into a FAXStatus event with an 'Operation' header that will be either
-   'send', 'receive', and 'gateway'.
- * T.38 gateway functionality has been added to res_fax (and res_fax_spandsp).
-   Set FAXOPT(gateway)=yes to enable this functionality on a channel. This
-   feature will handle converting a fax call between an audio T.30 fax terminal
-   and an IFP T.38 fax terminal.
-
-SIP Changes
------------
- * Add T38 support for REJECTED state where T.38 Negotiation is explicitly rejected.
- * Add option encryption_taglen to set auth taglen only 32 and 80 are supported currently.
- * SIP now generates security events using the Security Events Framework for REGISTER and INVITE.
-
-Queue changes
--------------
- * Added general option negative_penalty_invalid default off. when set
-   members are seen as invalid/logged out when there penalty is negative.
-   for realtime members when set remove from queue will set penalty to -1.
- * Added queue option autopausedelay when autopause is enabled it will be
-   delayed for this number of seconds since last successful call if there
-   was no prior call the agent will be autopaused immediately.
- * Added member option ignorebusy this when set and ringinuse is not
-   will allow per member control of multiple calls as ringinuse does for
-   the Queue.
-
-Applications
-------------
- * Added 'v' option to MeetMe to play voicemail greetings when a user joins/leaves
-   a MeetMe conference
- * Added 'k' option to MeetMe to automatically kill the conference when there's only
-   one participant left (much like a normal call bridge)
- * Added extra argument to Originate to set timeout.
-
-Asterisk Database
------------------
- * The internal Asterisk database has been switched from Berkeley DB 1.86 to
-   SQLite 3. An existing Berkeley astdb file can be converted with the astdb2sqlite3
-   utility in the UTILS section of menuselect. If an existing astdb is found and no
-   astdb.sqlite3 exists, astdb2sqlite3 will be compiled automatically. Asterisk will
-   convert an existing astdb to the SQLite3 version automatically at runtime.
-
-Asterisk Modules
-----------------
- * Modules marked as deprecated are no longer marked as building by default. Enabling
-   these modules is still available via menuselect.
-
-IAX2 Changes
-------------
- * authdebug is now disabled by default. To enable this functionality again
-   set authdebug = yes in iax.conf.
-
-RTP Changes
------------
- * The rtp.conf setting "strictrtp" is now enabled by default. In previous
-   releases it was disabled.
-
-PBX Core
---------
- * The PBX core previously made a call with a non-existing extension test for
-   extension s@default and jump there if the extension existed.
-   This was a bad default behaviour and violated the principle of least surprise.
-   It has therefore been changed in this release. It may affect some
-   applications and configurations that rely on this behaviour. Most channel
-   drivers have avoided this for many releases by testing whether the extension
-   called exists before starting the PBX and generating a local error.
-   This behaviour still exists and works as before.
-
-   Extension "s" is used when no extension is given in a channel driver,
-   like immediate answer in DAHDI or calling to a domain with no user part
-   in a SIP uri.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 1.6.2 to Asterisk 1.8 ----------------
-------------------------------------------------------------------------------
-
-SIP Changes
------------
- * Due to potential username discovery vulnerabilities, the 'nat' setting in sip.conf
-   now defaults to force_rport. It is very important that phones requiring nat=no be
-   specifically set as such instead of relying on the default setting. If at all
-   possible, all devices should have nat settings configured in the general section as
-   opposed to configuring nat per-device.
- * Added preferred_codec_only option in sip.conf. This feature limits the joint
-   codecs sent in response to an INVITE to the single most preferred codec.
- * Added SIP_CODEC_OUTBOUND dialplan variable which can be used to set the codec
-   to be used for the outgoing call. It must be one of the codecs configured
-   for the device.
- * Added tlsprivatekey option to sip.conf.  This allows a separate .pem file
-   to be used for holding a private key.  If tlsprivatekey is not specified,
-   tlscertfile is searched for both public and private key.
- * Added tlsclientmethod option to sip.conf.  This allows the protocol for
-   outbound client connections to be specified.
- * The sendrpid parameter has been expanded to include the options
-   'rpid' and 'pai'. Setting sendrpid to 'rpid' will cause Remote-Party-ID
-   header to be sent (equivalent to setting sendrpid=yes) and setting
-   sendrpid to 'pai' will cause P-Asserted-Identity header to be sent.
- * The 'ignoresdpversion' behavior has been made automatic when the SDP received
-   is in response to a T.38 re-INVITE that Asterisk initiated. In this situation,
-   since the call will fail if Asterisk does not process the incoming SDP, Asterisk
-   will accept the SDP even if the SDP version number is not properly incremented,
-   but will generate a warning in the log indicating that the SIP peer that sent
-   the SDP should have the 'ignoresdpversion' option set.
- * The 'nat' option has now been been changed to have yes, no, force_rport, and
-   comedia as valid values. Setting it to yes forces RFC 3581 behavior and enables
-   symmetric RTP support. Setting it to no only enables RFC 3581 behavior if the
-   remote side requests it and disables symmetric RTP support. Setting it to
-   force_rport forces RFC 3581 behavior and disables symmetric RTP support.
-   Setting it to comedia enables RFC 3581 behavior if the remote side requests it
-   and enables symmetric RTP support.
- * Slave SIP channels now set HASH(SIP_CAUSE,<slave-channel-name>) on each
-   response.  This permits the master channel to know how each channel dialled
-   in a multi-channel setup resolved in an individual way. This carries a
-   performance penalty and can be disabled in sip.conf using the
-   'storesipcause' option.
- * Added 'externtcpport' and 'externtlsport' options to allow custom port
-   configuration for the externip and externhost options when tcp or tls is used.
- * Added support for message body (stored in content variable) to SIP NOTIFY message
-   accessible via AMI and CLI.
- * Added 'media_address' configuration option which can be used to explicitly specify
-   the IP address to use in the SDP for media (audio, video, and text) streams.
- * Added 'unsolicited_mailbox' configuration option which specifies the virtual mailbox
-   that the new/old count should be stored on if an unsolicited MWI NOTIFY message is
-   received.
- * Added 'use_q850_reason' configuration option for generating and parsing
-   if available  Reason: Q.850;cause=<cause code> header. It is implemented
-   in some gateways for better passing PRI/SS7 cause codes via SIP.
- * When dialing SIP peers, a new component may be added to the end of the dialstring
-   to indicate that a specific remote IP address or host should be used when dialing
-   the particular peer. The dialstring format is SIP/peer/exten/host_or_IP.
- * SRTP SDES support for encrypting calls to/from Asterisk over SIP. The
-   ability to selectively force bridged channels to also be encrypted is also
-   implemented. Branching in the dialplan can be done based on whether or not
-   a channel has secure media and/or signaling.
- * Added directmediapermit/directmediadeny to limit which peers can send direct media
-   to each other
- * Added the 'snom_aoc_enabled' option to turn on support for sending Advice of
-   Charge messages to snom phones.
- * Added support for G.719 media streams.
- * Added support for 16khz signed linear media streams.
- * SIP is now able to bind to and communicate with IPv6 addresses. In addition,
-   RTP has been outfitted with the same abilities.
- * Added support for setting the Max-Forwards: header in SIP requests. Setting is
-   available in device configurations as well as in the dial plan.
- * Addition of the 'subscribe_network_change' option for turning on and off
-   res_stun_monitor module support in chan_sip.
- * Addition of the 'auth_options_requests' option for turning on and off
-   authentication for OPTIONS requests in chan_sip.
-
-Configuration files
--------------------
- * Add #tryinclude statement for config files.  This provides the same
-   functionality as the #include statement however an asterisk module will
-   still load if the filename does not exist.  Using the #include statement
-   Asterisk will not allow the module to load.
-
-IAX2 Changes
------------
- * Added rtsavesysname option into iax.conf to allow the systname to be saved
-   on realtime updates.
- * Added the ability for chan_iax2 to inform the dialplan whether or not
-   encryption is being used. This interoperates with the SIP SRTP implementation
-   so that a secure SIP call can be bridged to a secure IAX call when the
-   dialplan requires bridged channels to be "secure".
- * Addition of the 'subscribe_network_change' option for turning on and off
-   res_stun_monitor module support in chan_iax.
-
-
-MGCP Changes
-------------
- * Added ability to preset channel variables on indicated lines with the setvar
-   configuration option.  Also, clearvars=all resets the list of variables back
-   to none.
- * PacketCable NCS 1.0 support has been added for Docsis/Eurodocsis Networks.
-   See configs/res_pktccops.conf for more information.
-
-XMPP Google Talk/Jingle changes
--------------------------------
-  * Added the externip option to gtalk.conf.
-  * Added the stunaddr option to gtalk.conf which allows for the automatic
-    retrieval of the external ip from a stun server.
-
-Applications
-------------
- * Added 'p' option to PickupChan() to allow for picking up channel by the first
-   match to a partial channel name.
- * Added .m3u support for Mp3Player application.
- * Added progress option to the app_dial D() option.  When progress DTMF is
-   present, those values are sent immediately upon receiving a PROGRESS message
-   regardless if the call has been answered or not.
- * Added functionality to the app_dial F() option to continue with execution
-   at the current location when no parameters are provided.
- * Added the 'a' option to app_dial to answer the calling channel before any
-   announcements or macros are executed.
- * Modified app_dial to set answertime when the called channel answers even if
-   the called channel hangs up during playback of an announcement.
- * Modified app_dial 'r' option to support an additional parameter to play an
-   indication tone from indications.conf
- * Added c() option to app_chanspy. This option allows custom DTMF to be set
-   to cycle through the next available channel.  By default this is still '*'.
- * Added x() option to app_chanspy.  This option allows DTMF to be set to
-   exit the application.
- * The Voicemail application has been improved to automatically ignore messages
-   that only contain silence.
- * If you set maxmsg to 0 in voicemail.conf, Voicemail will consider the
-   associated mailbox(es) to be greetings-only.
- * The ChanSpy application now has the 'S' option, which makes the application
-   automatically exit once it hits a point where no more channels are available
-   to spy on.
- * The ChanSpy application also now has the 'E' option, which spies on a single
-   channel and exits when that channel hangs up.
- * The MeetMe application now turns on the DENOISE() function by default, for
-   each participant.  In our tests, this has significantly decreased background
-   noise (especially noisy data centers).
- * Voicemail now permits storage of secrets in a separate file, located in the
-   spool directory of each individual user.  The control for this is located in
-   the "passwordlocation" option in voicemail.conf.  Please see the sample
-   configuration for more information.
- * The ChanIsAvail application now exposes the returned cause code using a separate
-   variable, AVAILCAUSECODE, instead of overwriting the device state in AVAILSTATUS.
- * Added 'd' option to app_followme.  This option disables the "Please hold"
-   announcement.
- * Added 'y' option to app_record. This option enables a mode where any DTMF digit
-   received will terminate recording.
- * Voicemail now supports per mailbox settings for folders when using IMAP storage.
-   Previously the folder could only be set per context, but has now been extended
-   using the imapfolder option.
- * Voicemail now supports per mailbox settings for nextaftercmd and minsecs.
- * Voicemail now allows the pager date format to be specified separately from the
-   email date format.
- * New applications JabberJoin, JabberLeave, and JabberSendGroup have been added
-   to allow joining, leaving, and sending text to group chats.
- * MeetMe has a new option 'G' to play an announcement before joining a conference.
- * Page has a new option 'A(x)' which will playback an announcement simultaneously
-   to all paged phones (and optionally excluding the caller's one using the new
-   option 'n') before the call is bridged.
- * The 'f' option to Dial has been augmented to take an optional argument. If no
-   argument is provided, the 'f' option works as it always has. If an argument is
-   provided, then the connected party information of all outgoing channels created
-   during the Dial will be set to the argument passed to the 'f' option.
- * Dial now inherits the GOSUB_RETVAL from the peer, when the U() option runs a
-   Gosub on the peer.
- * The OSP lookup application adds in/outbound network ID, optional security,
-   number portability, QoS reporting, destination IP port, custom info and service
-   type features.
- * Added new application VMSayName that will play the recorded name of the voicemail
-   user if it exists, otherwise will play the mailbox number.
- * Added custom device states to ConfBridge bridges.  Use 'confbridge:<name>' to
-   retrieve state for a particular bridge, where <name> is the conference name
- * app_directory now allows exiting at any time using the operator or pound key.
- * Voicemail now supports setting a locale per-mailbox.
- * Two new applications are provided for declining counting phrases in multiple
-   languages.  See the application notes for SayCountedNoun and SayCountedAdj for
-   more information.
- * Voicemail now runs the externnotify script when pollmailboxes is activated and
-   notices a change.
- * Voicemail now includes rdnis within msgXXXX.txt file.
- * ExternalIVR now supports IPv6 addresses.
- * Added 'D' command to ExternalIVR. Details are available on the Asterisk wiki
-   at https://wiki.asterisk.org/wiki/x/oQBB
- * ParkedCall and Park can now specify the parking lot to use.
-
-Dialplan Functions
-------------------
- * SRVQUERY and SRVRESULT functions added. This can be used to query and iterate
-   over SRV records associated with a specific service. From the CLI, type
-   'core show function SRVQUERY' and 'core show function SRVRESULT' for more
-   details on how these may be used.
- * PITCH_SHIFT dialplan function added. This function can be used to modify the
-   pitch of a channel's tx and rx audio streams.
- * Added new dialplan functions CONNECTEDLINE and REDIRECTING which permits
-   setting various connected line and redirecting party information.
- * CALLERID and CONNECTEDLINE dialplan functions have been extended to
-   support ISDN subaddressing.
- * The CHANNEL() function now supports the "name" and "checkhangup" options.
- * For DAHDI channels, the CHANNEL() dialplan function now allows
-   the dialplan to request changes in the configuration of the active
-   echo canceller on the channel (if any), for the current call only.
-   The syntax is:
-
-   exten => s,n,Set(CHANNEL(echocan_mode)=off)
-
-   The possible values are:
-
-     on - normal mode (the echo canceller is actually reinitialized)
-     off - disabled
-     fax - FAX/data mode (NLP disabled if possible, otherwise completely
-           disabled)
-     voice - voice mode (returns from FAX mode, reverting the changes that
-             were made when FAX mode was requested)
- * Added new dialplan function MASTER_CHANNEL(), which permits retrieving
-   and setting variables on the channel which created the current channel.
-   Administrators should take care to avoid naming conflicts, when multiple
-   channels are dialled at once, especially when used with the Local channel
-   construct (which all could set variables on the master channel).  Usage
-   of the HASH() dialplan function, with the key set to the name of the slave
-   channel, is one approach that will avoid conflicts.
- * Added new dialplan function MUTEAUDIO() for muting inbound and/or outbound
-   audio in a channel.
- * func_odbc now allows multiple row results to be retrieved without using
-   mode=multirow.  If rowlimit is set, then additional rows may be retrieved
-   from the same query by using the name of the function which retrieved the
-   first row as an argument to ODBC_FETCH().
- * Added JABBER_RECEIVE, which permits receiving XMPP messages from the
-   dialplan. This function returns the content of the received message.
- * Added REPLACE, which searches a given variable name for a set of characters,
-   then either replaces them with a single character or deletes them.
- * Added PASSTHRU, which literally passes the same argument back as its return
-   value.  The intent is to be able to use a literal string argument to
-   functions that currently require a variable name as an argument.
- * HASH-associated variables now can be inherited across channel creation, by
-   prefixing the name of the hash at assignment with the appropriate number of
-   underscores, just like variables.
- * GROUP_MATCH_COUNT has been improved to allow regex matching on category
- * CHANNEL(secure_bridge_signaling) and CHANNEL(secure_bridge_media) to set/get
-   whether or not channels that are bridged to the current channel will be
-   required to have secure signaling and/or media.
- * CHANNEL(secure_signaling) and CHANNEL(secure_media) to get whether or not
-   the current channel has secure signaling and/or media.
- * For DAHDI/ISDN channels, the CHANNEL() dialplan function now supports the
-   "no_media_path" option.
-   Returns "0" if there is a B channel associated with the call.
-   Returns "1" if no B channel is associated with the call.  The call is either
-   on hold or is a call waiting call.
- * Added option to dialplan function CDR(), the 'f' option
-   allows for high resolution times for billsec and duration fields.
- * FILE() now supports line-mode and writing.
- * Added FIELDNUM(), which returns the 1-based offset of a field in a list.
- * FRAME_TRACE(), for tracking internal ast_frames on a channel.
-
-Dialplan Variables
-------------------
- * Added DYNAMIC_FEATURENAME which holds the last triggered dynamic feature.
- * Added DYNAMIC_PEERNAME which holds the unique channel name on the other side
-   and is set when a dynamic feature is triggered.
- * Added PARKINGLOT which can be used with parkeddynamic feature.conf option
-   to dynamically create a new parking lot matching the value this varible is
-   set to.
- * Added PARKINGDYNAMIC which represents the template parkinglot defined in
-   features.conf that should be the base for dynamic parkinglots.
- * Added PARKINGDYNCONTEXT which tells what context a newly created dynamic
-   parkinglot should have.
- * Added PARKINGDYNEXTEN which tells what parking exten a newly created dynamic
-   parkinglot should have.
- * Added PARKINGDYNPOS which holds what parking positions a dynamic parkinglot
-   should have.
-
-Queue changes
--------------
- * Added "ready" option to QUEUE_MEMBER counting to count free agents whose wrap-up
-   timeout has expired.
- * Added 'R' option to app_queue.  This option stops moh and indicates ringing
-   to the caller when an Agent's phone is ringing.  This can be used to indicate
-   to the caller that their call is about to be picked up, which is nice when
-   one has been on hold for an extened period of time.
- * A new config option, penaltymemberslimit, has been added to queues.conf.
-   When set this option will disregard penalty settings when a queue has too
-   few members.
- * A new option, 'I' has been added to both app_queue and app_dial.
-   By setting this option, Asterisk will not update the caller with
-   connected line changes or redirecting party changes when they occur.
- * A 'relative-periodic-announce' option has been added to queues.conf.  When
-   enabled, this option will cause periodic announce times to be calculated
-   from the end of announcements rather than from the beginning.
- * The autopause option in queues.conf can be passed a new value, "all." The
-   result is that if a member becomes auto-paused, he will be paused in all
-   queues for which he is a member, not just the queue that failed to reach
-   the member.
- * Added dialplan function QUEUE_EXISTS to check if a queue exists
- * The queue logger now allows events to optionally propagate to a file,
-   even when realtime logging is turned on.  Additionally, realtime logging
-   supports sending the event arguments to 5 individual fields, although it
-   will fallback to the previous data definition, if the new table layout is
-   not found.
-
-mISDN channel driver (chan_misdn) changes
-----------------------------------------
- * Added display_connected parameter to misdn.conf to put a display string
-   in the CONNECT message containing the connected name and/or number if
-   the presentation setting permits it.
- * Added display_setup parameter to misdn.conf to put a display string
-   in the SETUP message containing the caller name and/or number if the
-   presentation setting permits it.
- * Made misdn.conf parameters localdialplan and cpndialplan take a -1 to
-   indicate the dialplan settings are to be obtained from the asterisk
-   channel.
- * Made misdn.conf parameter callerid accept the "name" <number> format
-   used by the rest of the system.
- * Made use the nationalprefix and internationalprefix misdn.conf
-   parameters to prefix any received number from the ISDN link if that
-   number has the corresponding Type-Of-Number.  NOTE:  This includes
-   comparing the incoming call's dialed number against the MSN list.
- * Added the following new parameters: unknownprefix, netspecificprefix,
-   subscriberprefix, and abbreviatedprefix in misdn.conf to prefix any
-   received number from the ISDN link if that number has the corresponding
-   Type-Of-Number.
- * Added new dialplan application misdn_command which permits controlling
-   the CCBS/CCNR functionality.
- * Added new dialplan function mISDN_CC which permits retrieval of various
-   values from an active call completion record.
- * For PTP, you should manually send the COLR of the redirected-to party
-   for an incomming redirected call if the incoming call could experience
-   further redirects.  Just set the REDIRECTING(to-num,i) = ${EXTEN} and
-   set the REDIRECTING(to-pres) to the COLR.  A call has been redirected
-   if the REDIRECTING(from-num) is not empty.
- * For outgoing PTP redirected calls, you now need to use the inhibit(i)
-   option on all of the REDIRECTING statements before dialing the
-   redirected-to party.  You still have to set the REDIRECTING(to-xxx,i)
-   and the REDIRECTING(from-xxx,i) values.  The PTP call will update the
-   redirecting-to presentation (COLR) when it becomes available.
- * Added outgoing_colp parameter to misdn.conf to filter outgoing COLP
-   information.
-
-thirdparty mISDN enhancements
------------------------------
-mISDN has been modified by Digium, Inc. to greatly expand facility message
-support to allow:
-  * Enhanced COLP support for call diversion and transfer.
-  * CCBS/CCNR support.
-
-The latest modified mISDN v1.1.x based version is available at:
-http://svn.digium.com/svn/thirdparty/mISDN/trunk
-http://svn.digium.com/svn/thirdparty/mISDNuser/trunk
-
-Tagged versions of the modified mISDN code are available under:
-http://svn.digium.com/svn/thirdparty/mISDN/tags
-http://svn.digium.com/svn/thirdparty/mISDNuser/tags
-
-libpri channel driver (chan_dahdi) DAHDI changes
--------------------------------------------
- * The channel variable PRIREDIRECTREASON is now just a status variable
-   and it is also deprecated.  Use the REDIRECTING(reason) dialplan function
-   to read and alter the reason.
- * For Q.SIG and ETSI PRI/BRI-PTP, you should manually send the COLR of the
-   redirected-to party for an incomming redirected call if the incoming call
-   could experience further redirects.  Just set the
-   REDIRECTING(to-num,i) = CALLERID(dnid) and set the REDIRECTING(to-pres)
-   to the COLR.  A call has been redirected if the REDIRECTING(count) is not
-   zero.
- * For outgoing Q.SIG and ETSI PRI/BRI-PTP redirected calls, you need to
-   use the inhibit(i) option on all of the REDIRECTING statements before
-   dialing the redirected-to party.  You still have to set the
-   REDIRECTING(to-xxx,i) and the REDIRECTING(from-xxx,i) values.  The call
-   will update the redirecting-to presentation (COLR) when it becomes available.
- * Added the ability to ignore calls that are not in a Multiple Subscriber
-   Number (MSN) list for PTMP CPE interfaces.
- * Added dynamic range compression support for dahdi channels.  It is
-   configured via the rxdrc and txdrc parameters in chan_dahdi.conf.
- * Added support for ISDN calling and called subaddress with partial support
-   for connected line subaddress.
- * Added support for BRI PTMP NT mode. (Requires latest LibPRI.)
- * Added handling of received HOLD/RETRIEVE messages and the optional ability
-   to transfer a held call on disconnect similar to an analog phone.
- * Added CallRerouting/CallDeflection support for Q.SIG, ETSI PTP, ETSI PTMP.
-   Will reroute/deflect an outgoing call when receive the message.
-   Can use the DAHDISendCallreroutingFacility to send the message for the
-   supported switches.
- * Added standard location to add options to chan_dahdi dialing:
-   Dial(DAHDI/g1[/extension[/options]])
-   Current options:
-   K(<keypad_digits>)
-   R Reverse charging indication
- * Added Reverse Charging Indication (Collect calls) send/receive option.
-   Send reverse charging in SETUP message with the chan_dahdi R dialing option.
-   Dial(DAHDI/g1/extension/R)
-   Access received reverse charge in SETUP message by: ${CHANNEL(reversecharge)}
-   (requires latest LibPRI)
- * Added ability to send/receive keypad digits in the SETUP message.
-   Send keypad digits in SETUP message with the chan_dahdi K(<keypad_digits>)
-   dialing option.  Dial(DAHDI/g1/[extension]/K(<keypad_digits>))
-   Access any received keypad digits in SETUP message by: ${CHANNEL(keypad_digits)}
-   (requires latest LibPRI)
- * Added ability to send and receive ETSI Explicit Call Transfer (ECT) messages
-   to eliminate tromboned calls.  A tromboned call goes out an interface and comes
-   back into the same interface.  Tromboned calls happen because of call routing,
-   call deflection, call forwarding, and call transfer.
- * Added the ability to send and receive ETSI Advice-Of-Charge messages.
- * Added the ability to support call waiting calls.  (The SETUP has no B channel
-   assigned.)
- * Added Malicious Call ID (MCID) event to the AMI call event class.
- * Added Message Waiting Indication (MWI) support for ISDN PTMP endpoints (phones).
-
-Asterisk Manager Interface
---------------------------
- * The Hangup action now accepts a Cause header which may be used to
-   set the channel's hangup cause.
- * sslprivatekey option added to manager.conf and http.conf.  Adds the ability
-   to specify a separate .pem file to hold a private key.  By default sslcert
-   is used to hold both the public and private key.
- * Options in manager.conf and http.conf with the 'ssl' prefix have been replaced
-   for options containing the 'tls' prefix.  For example, 'sslenable' is now
-   'tlsenable'.  This has been done in effort to keep ssl and tls options consistent
-   across all .conf files. All affected sample.conf files have been modified to
-   reflect this change.  Previous options such as 'sslenable' still work,
-   but options with the 'tls' prefix are preferred.
- * Added a MuteAudio AMI action for muting inbound and/or outbound audio
-   in a channel. (res_mutestream.so)
- * The configuration file manager.conf now supports a channelvars option, which
-   specifies a list of channel variables to include in each channel-oriented
-   event.
- * The redirect command now has new parameters ExtraContext, ExtraExtension,
-   and ExtraPriority to allow redirecting the second channel to a different
-   location than the first.
- * Added new event "JabberStatus" in the Jabber module to monitor buddies
-   status.
- * Added a "MixMonitorMute" AMI action for muting inbound and/or outbound audio
-   in a MixMonitor recording.
- * The 'iax2 show peers' output is now similar to the expected output of
-   'sip show peers'.
- * Added Advice-Of-Charge events (AOC-S, AOC-D, and AOC-E) in the new
-   aoc event class.
- * Added Advice-Of-Charge manager action, AOCMessage, for generating AOC-D and
-   AOC-E messages on a channel.
- * A DBGetComplete event now follows a DBGetResponse, to make the DBGet action
-   conform more closely to similar events.
- * Added a new eventfilter option per user to allow whitelisting and blacklisting
-   of events.
- * Added optional parkinglot variable for park command.
- * Added ConnectedLineNum and ConnectedLineName headers to AMI events/responses
-   if CallerIDNum and CallerIDName headers are also present.
-
-Channel Event Logging
----------------------
- * A new interface, CEL, is introduced here. CEL logs single events, much like
-   the AMI, but it differs from the AMI in that it logs to db backends much
-   like CDR does; is based on the event subsystem introduced by Russell, and
-   can share in all its benefits; allows multiple backends to operate like CDR;
-   is specialized to event data that would be of concern to billing systems,
-   like CDR. Backends for logging and accounting calls have been produced,
-   but a new CDR backend is still in development.
-
-CDR
----
- * 'linkedid' and 'peeraccount' are new CDR fields available to CDR aficionados.
-   linkedid is based on uniqueID, but spreads to other channels as transfers, dials,
-   etc are performed. Thus the pieces of CDR can be grouped into multilegged sets.
- * Multiple files and formats can now be specified in cdr_custom.conf.
- * cdr_syslog has been added which allows CDRs to be written directly to syslog.
-   See configs/cdr_syslog.conf.sample for more information.
- * A 'sequence' field has been added to CDRs which can be combined with
-   linkedid or uniqueid to uniquely identify a CDR.
- * Handling of billsec and duration field has changed. If your table definition
-   specifies those fields as float,double or similar they will now be logged with
-   microsecond accuracy instead of a whole integer.
-
-Calendaring for Asterisk
-------------------------
- * A new set of modules were added supporting calendar integration with Asterisk.
-   Dialplan functions for reading from and writing to calendars are included,
-   as well as the ability to execute dialplan logic upon calendar event notifications.
-   iCalendar, CalDAV, and Exchange Server calendars (via res_calendar_exchange for
-   Exchange Server 2003 with no write or attendee support, and res_calendar_ews for
-   Exchange Server 2007+ with full write and attendee support) are supported (Exchange
-   2003 support does not support forms-based authentication).
-
-Call Completion Supplementary Services for Asterisk
----------------------------------------------------
- * Call completion support has been added for SIP, DAHDI/ISDN, and DAHDI/analog.
-   DAHDI/ISDN supports call completion for the following switch types:
-   EuroIsdn(ETSI) for PTP and PTMP modes, and Qsig.
-   See https://wiki.asterisk.org/wiki/x/2ABQ for details.
-
-Multicast RTP Support
----------------------
- * A new RTP engine and channel driver have been added which supports Multicast RTP.
-   The channel driver can be used with the Page application to perform multicast RTP
-   paging. The dial string format is: MulticastRTP/<type>/<destination>/<control address>
-   Type can be either basic or linksys.
-   Destination is the IP address and port for the RTP packets.
-   Control address is specific to the linksys type and is used for sending the control
-   packets unique to them.
-
-Security Events Framework
--------------------------
- * Asterisk has a new C API for reporting security events.  The module res_security_log
-   sends these events to the "security" logger level.  Currently, AMI is the only
-   Asterisk component that reports security events.  However, SIP support will be
-   coming soon.  For more information on the security events framework, see the
-   "Asterisk Security Framework" section of the Asterisk wiki at
-   https://wiki.asterisk.org/wiki/x/wgBQ
- * SIP support was added in Asterisk 10
- * This API now supports IPv6 addresses
-
-Fax
----
- * A technology independent fax frontend (res_fax) has been added to Asterisk.
- * A spandsp based fax backend (res_fax_spandsp) has been added.
- * The app_fax module has been deprecated in favor of the res_fax module and
-   the new res_fax_spandsp backend.
- * The SendFAX and ReceiveFAX applications now send their log messages to a
-   'fax' logger level, instead of to the generic logger levels. To see these
-   messages, the system's logger.conf file will need to direct the 'fax' logger
-   level to one or more destinations; the logger.conf.sample file includes an
-   example of how to do this. Note that if the 'fax' logger level is *not*
-   directed to at least one destination, log messages generated by these
-   applications will be lost, and that if the 'fax' logger level is directed to
-   the console, the 'core set verbose' and 'core set debug' CLI commands will
-   have no effect on whether the messages appear on the console or not.
-
-Miscellaneous
--------------
- * The transmit_silence_during_record option in asterisk.conf.sample has been removed.
-   Now, in order to enable transmitting silence during record the transmit_silence
-   option should be used.  transmit_silence_during_record remains a valid option, but
-   defaults to the behavior of the transmit_silence option.
- * Addition of the Unit Test Framework API for managing registration and execution
-   of unit tests with the purpose of verifying the operation of C functions.
- * SendText is now implemented in chan_gtalk and chan_jingle. It will simply send
-   XMPP text messages to the remote JID.
- * Modules.conf has a new option - "require" - that marks a module as critical for
-   the execution of Asterisk.
-   If one of the required modules fail to load, Asterisk will exit with a return
-   code set to 2.
- * An 'X' option has been added to the asterisk application which enables #exec support.
-   This allows #exec to be used in asterisk.conf.
- * jabber.conf supports a new option auth_policy that toggles auto user registration.
- * A new lockconfdir option has been added to asterisk.conf to protect the
-   configuration directory (/etc/asterisk by default) during reloads.
- * The parkeddynamic option has been added to features.conf to enable the creation
-   of dynamic parkinglots.
- * chan_dahdi now supports reporting alarms over AMI either by channel or span via
-   the reportalarms config option.
- * chan_dahdi supports dialing configuring and dialing by device file name.
-   DAHDI/span-name!local!1 will use /dev/dahdi/span-name/local/1 . Likewise
-   it may appear in chan_dahdi.conf as 'channel => span-name!local!1'.
- * A new options for chan_dahdi.conf: 'ignore_failed_channels'. Boolean.
-   False by default. If set, chan_dahdi will ignore failed 'channel' entries.
-   Handy for the above name-based syntax as it does not depend on
-   initialization order.
- * The Realtime dialplan switch now caches entries for 1 second.  This provides a
-   significant increase in performance (about 3X) for installations using this switchtype.
- * Distributed devicestate now supports the use of the XMPP protocol, in addition to
-   AIS.  For more information, please see the Distributed Device State section of the
-   Asterisk wiki at https://wiki.asterisk.org/wiki/x/jw4iAQ
- * The addition of G.719 pass-through support.
- * Added support for 16khz Speex audio.  This can be enabled by using 'allow=speex16'
-   during device configuration.
- * The UNISTIM channel driver (chan_unistim) has been updated to support devices that
-   have less than 3 lines on the LCD.
- * Realtime now supports database failover.  See the sample extconfig.conf for details.
- * The addition of improved translation path building for wideband codecs.  Sample
-   rate changes during translation are now avoided unless absolutely necessary.
- * The addition of the res_stun_monitor module for monitoring and reacting to network
-   changes while behind a NAT.
- * DTMF: Normal and Reverse Twist acceptance values can be set in dsp.conf.
-   DTMF Valid/Invalid number of hits/misses can be set in dsp.conf.
-   These allow support for any Administration. Default is AT&T values.
-
-CLI Changes
------------
- * The 'core set debug' and 'core set verbose' commands, in previous versions, could
-   optionally accept a filename, to apply the setting only to the code generated from
-   that source file when Asterisk was built. However, there are some modules in Asterisk
-   that are composed of multiple source files, so this did not result in the behavior
-   that users expected. In this version, 'core set debug' and 'core set verbose'
-   can optionally accept *module* names instead (with or without the .so extension),
-   which applies the setting to the entire module specified, regardless of which source
-   files it was built from.
- * New 'manager show settings' command showing the current settings loaded from
-   manager.conf.
- * Added 'all' keyword to the CLI command "channel request hangup" so that you can send
-   the channel hangup request to all channels.
- * Added a "core reload" CLI command that executes a global reload of Asterisk.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 1.6.1 to Asterisk 1.6.2  -------------
-------------------------------------------------------------------------------
-
-SIP Changes
------------
- * Added support for SUBSCRIBE/NOTIFY with dialog-info based call pickups.
-   Snom phones use this for call pickup of extensions that the phone is
-   subscribed to.
- * Added support for setting the domain in the URI for caller of an
-   outbound call by using the SIPFROMDOMAIN channel variable.
- * Added a new configuration option "remotesecret" for authentication to
-   remote services. For backwards compatibility, "secret" still has the
-   same function as before, but now you can configure both a remote secret and a
-   local secret for mutual authentication.
- * If the channel variable  ATTENDED_TRANSFER_COMPLETE_SOUND is set,
-   the sound will be played to the target of an attended transfer
- * Added two new configuration options, "qualifygap" and "qualifypeers", which allow
-   finer control over how many peers Asterisk will qualify and the gap between them
-   when all peers need to be qualified at the same time.
- * Added a new 'ignoresdpversion' option to sip.conf.  When this is enabled
-   (either globally or for a specific peer), chan_sip will treat any SDP data
-   it receives as new data and update the media stream accordingly.  By
-   default, Asterisk will only modify the media stream if the SDP session
-   version received is different from the current SDP session version.  This
-   option is required to interoperate with devices that have non-standard SDP
-   session version implementations (observed with Microsoft OCS).  This option
-   is disabled by default.
- * The parsing of register => lines in sip.conf has been modified to allow a port
-   to be present in the "user" portion. Please see the sip.conf.sample file for more
-   information
- * Added support for subscribing to MWI on a remote server and making the status available
-   as a mailbox. Please see the sip.conf.sample file for more information.
- * Added a function to remove SIP headers added in the dialplan before the
-   first INVITE is generated - SIPRemoveHeader()
- * Channel variables set with setvar= in a device configuration is now
-   set both for inbound and outbound calls.
- * Added support for ITU G.722.1 and G.722.1C (Siren7 and Siren14) media streams.
-
-IAX2 changes
-------------
-  * Added immediate option to iax.conf
-  * Added forceencryption option to iax.conf
-  * Added Encryption and Trunk status to manager command "iaxpeers"
-
-Skinny Changes
---------------
- * The configuration file now holds separate sections for devices and lines.
-   Please have a look at configs/skinny.conf.sample and change your skinny.conf
-   accordingly.
-
-DAHDI Changes
--------------
- * chan_dahdi now supports MFC/R2 signaling when Asterisk is compiled with
-   support for LibOpenR2.  http://www.libopenr2.org/
- * The UK option waitfordialtone has been added for use with BT analog
-   lines.
- * Added a 'faxbuffers' configuration option to chan_dahdi.conf.  This option
-   is used in conjunction with the 'faxdetect' configuration option.  When
-   'faxbuffers' is used and fax tones are detected, the channel will dynamically
-   switch to the configured faxbuffers policy.  For example, to use 6 buffers
-   and a 'full' buffer policy for a fax transmission, add:
-     faxbuffers=>6,full
-   The faxbuffers configuration will be in affect until the call is torn down.
- * Added service message support for 4ESS/5ESS switches.
-
-Dialplan Functions
-------------------
- * For DAHDI channels, the CHANNEL() dialplan function now
-   supports changing the channel's buffer policy (for the current
-   call only), using this syntax:
-
-   exten => s,n,Set(CHANNEL(buffers)=6,full)
-
-   This would change the channel to the 'full' buffer policy and
-   6 (six) buffers. Possible options for this setting are the same
-   as those in chan_dahdi.conf.
- * Added a new dialplan function, CURLOPT, which permits setting various
-   options that may be useful with the CURL dialplan function, such as
-   cookies, proxies, connection timeouts, passwords, etc.
- * Permit the syntax and synopsis fields of the corresponding dialplan
-   functions to be individually set from func_odbc.conf.
- * Added debugging CLI functions to func_odbc, 'odbc read' and 'odbc write'.
- * func_odbc now may specify an insert query to execute, when the write query
-   affects 0 rows (usually indicating that no such row exists).
- * Added a new dialplan function, LISTFILTER, which permits removing elements
-   from a set list, by name.  Uses the same general syntax as the existing CUT
-   and FIELDQTY dialplan functions, which also manage lists.
- * Added REALTIME_FIELD and REALTIME_HASH, which should aid users in better
-   obtaining realtime data from the dialplan.
- * Added LOCAL_PEEK, which allows access to variables in any stack frame within
-   a subroutine when using the GoSub() and Return() applications.
- * Added AUDIOHOOK_INHERIT. For information on its use, please see the output
-   of "core show function AUDIOHOOK_INHERIT" from the CLI
- * Added AES_ENCRYPT. For information on its use, please see the output
-   of "core show function AES_ENCRYPT" from the CLI
- * Added AES_DECRYPT. For information on its use, please see the output
-   of "core show function AES_DECRYPT" from the CLI
- * func_odbc now supports database transactions across multiple queries.
-
-Applications
-------------
- * Scheduled meetme conferences may now have their end times extended by
-   using MeetMeAdmin.
- * app_authenticate now gives the ability to select a prompt other than
-   the default.
- * app_directory now pays attention to the searchcontexts setting in
-   voicemail.conf and will look through all contexts, if no context is
-   specified in the initial argument.
- * A new application, Originate, has been introduced, that allows asynchronous
-   call origination from the dialplan.
- * Voicemail now permits setting the emailsubject and emailbody per mailbox,
-   in addition to the setting in the "general" context.
- * Added ConfBridge dialplan application which does conference bridges without
-   DAHDI. For information on its use, please see the output of
-   "core show application ConfBridge" from the CLI.
-
-Miscellaneous
--------------
- * The Asterisk CLI has a new command, "channel redirect", which is similar in
-   operation to the AMI Redirect action.
- * extensions.conf now allows you to use keyword "same" to define an extension
-   without actually specifying an extension.  It uses exactly the same pattern
-   as previously used on the last "exten" line.  For example:
-     exten => 123,1,NoOp(something)
-     same  =>     n,SomethingElse()
- * musiconhold.conf classes of type 'files' can now use relative directory paths,
-   which are interpreted as relative to the astvarlibdir setting in asterisk.conf.
- * All deprecated CLI commands are removed from the sourcecode. They are now handled
-   by the new clialiases module. See cli_aliases.conf.sample file.
- * Times within timespecs are now accurate down to the minute.  This is a change
-   from historical Asterisk, which only provided timespecs rounded to the nearest
-   even (read: evenly divisible by 2) minute mark.
- * The realtime switch now supports an option flag, 'p', which disables searches for
-   pattern matches.
- * In addition to a time range and date range, timespecs now accept a 5th optional
-   argument, timezone.  This allows you to perform time checks on alternate
-   timezones, especially if those daylight savings time ranges vary from your
-   machine's native timezone.  See GotoIfTime, ExecIfTime, IFTIME(), and timed
-   includes.
- * The contrib/scripts/ directory now has a script called sip_nat_settings that will
-   give you the correct output for an asterisk box behind nat. It will give you the
-   externhost and localnet settings.
- * The Asterisk core now supports ITU G.722.1 and G.722.1C media streams, and
-   can connect calls in passthrough mode, as well as record and play back files.
- * Successful and unsuccessful call pickup can now be alerted through sounds, by
-   using pickupsound and pickupfailsound in features.conf.
- * ASTVARRUNDIR is now set to $(localstatedir)/run/asterisk by default.
-   This means the asterisk pid file will now be in /var/run/asterisk/asterisk.pid on LINUX
-   instead of the /var/run/asterisk.pid where it used to be. This will make
-   installs as non-root easier to manage.
-
-CDR
----
-
-* The cdr.conf file must exist and be correctly programmed in order for CDR records to
-  be written; they will no longer be explicitly written.
-
-Asterisk Manager Interface
---------------------------
- * When using the AMI over HTTP, you can now include a 'SuppressEvents' header (with
-   a non-empty value) in your request. If you do this, any pending AMI events will
-   *not* be included in the response to your request as they would normally, but
-   will be left in the event queue for the next request you make to retrieve. For
-   some applications, this will allow you to guarantee that you will only see
-   events in responses to 'WaitEvent' actions, and can better know when to expect them.
-   To know whether the Asterisk server supports this header or not, your client can
-   inspect the first response back from the server to see if it includes this header:
-
-   Pragma: SuppressEvents
-
-   If this is included, the server supports event suppression.
-
- * Added 4 new Actions to list skinny device(s) and line(s)
-   SKINNYdevices
-   SKINNYshowdevice
-   SKINNYlines
-   SKINNYshowline
-
-LDAP Schema File Additions
---------------------------
- * Added AsteriskDialplan, AsteriskAccount and AsteriskMailbox  objectClasses
-   to allow standalone dialplan, account and mailbox entries (STRUCTURAL)
- * Added new Fields:
-   - AstAccountLanguage, AstAccountTransport, AstAccountPromiscRedir,
-   - AstAccountAccountCode, AstAccountSetVar, AstAccountAllowOverlap,
-   - AstAccountVideoSupport, AstAccountIgnoreSDPVersion
- * Removed redundant IPaddr (there's already IPAddress)
-   - Gives more configuration Flags for SIP-Users available (tested)
-   - Allows to create Asterisk Attributes in defined Asterisk ObjectClasses
-     without extensibleObject (which really should be the last resort); gives
-     also additional possibilities for LDAP-filter
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 1.6.0 to Asterisk 1.6.1  -------------
-------------------------------------------------------------------------------
-
-Device State Handling
----------------------
- * The event infrastructure in Asterisk got another big update to help support
-   distributed events.  It currently supports distributed device state and
-   distributed Voicemail MWI (Message Waiting Indication).  A new module has
-   been merged, res_ais, which facilitates communicating events between servers.
-   It uses the SAForum AIS (Service Availability Forum Application Interface
-   Specification) CLM (Cluster Management) and EVT (Event) services to maintain
-   a cluster of Asterisk servers, and to share events between them.  For more
-   information on setting this up, refer to the Distributed Device State section
-   of the Asterisk wiki at https://wiki.asterisk.org/wiki/x/jw4iAQ
-
-Dialplan Functions
-------------------
- * Added a new dialplan function, AST_CONFIG(), which allows you to access
-   variables from an Asterisk configuration file.
- * The JACK_HOOK function now has a c() option to supply a custom client name.
- * Added two new dialplan functions from libspeex for audio gain control and
-   denoise, AGC() and DENOISE(). Both functions can be applied to the tx and
-   rx directions of a channel from the dialplan.
- * The SMDI_MSG_RETRIEVE function now has the ability to search for SMDI messages
-   based on other parameters.  The default is still to search based on the
-   forwarding station ID.  However, there are new options that allow you to search
-   based on the message desk terminal ID, or the message desk number.
- * TIMEOUT() has been modified to be accurate down to the millisecond.
- * ENUM*() functions now include the following new options:
-     - 'u' returns the full URI and does not strip off the URI-scheme.
-     - 's' triggers ISN specific rewriting
-     - 'i' looks for branches into an Infrastructure ENUM tree
-     - 'd' for a direct DNS lookup without any flipping of digits.
- * TXCIDNAME() has a new zone-suffix parameter (which defaults to 'e164.arpa')
- * CHANNEL() now has options for the maximum, minimum, and standard or normal
-   deviation of jitter, rtt, and loss for a call using chan_sip.
-
-DAHDI channel driver (chan_dahdi) Changes
-----------------------------------------
- * Channels can now be configured using named sections in chan_dahdi.conf, just
-   like other channel drivers, including the use of templates.
- * The default for pridialplan has changed from 'national' to 'unknown'.
-
-PBX Changes
------------
- * It is now possible to specify a pattern match as a hint. Once a phone subscribes
-   to something that matches the pattern a hint will be created using the contents
-   and variables evaluated.
- * Dialplan matching has been extended to allow an extension to return to the
-   PBX core to wait for more digits.  This is done by using the new dialplan
-   application called "Incomplete".  This will permit a whole new level of
-   extension control, by giving the administrator more control over early
-   matches employing one of the short-circuit pattern match operators.  Note
-   that custom applications can trigger this same behavior by returning the
-   special value AST_PBX_INCOMPLETE.
-
-Application Changes
--------------------
- * Directory now permits both first and last names to be matched at the same
-   time.  In addition, the number of digits to enter of the name can be set in
-   the arguments to Directory; previously, you could enter only 3, regardless
-   of how many names are in your company.  For large companies, this should be
-   quite helpful.
- * Voicemail now permits a mailbox setting to wrap around from first to last
-   messages, if the "messagewrap" option is set to a true value.
- * Voicemail now permits an external script to be run, for password validation.
-   The script should output "VALID" or "INVALID" on stdout, depending upon the
-   wish to validate or invalidate the password given.  Arguments are:
-   "mailbox" "context" "oldpass" "newpass".  See the sample voicemail.conf for
-   more details
- * Dial has a new option: F(context^extension^pri), which permits a callee to
-   continue in the dialplan, at the specified label, if the caller hangs up.
- * ChanSpy and ExtenSpy have a new option, 's' which suppresses speaking the
-   technology name (e.g. SIP, IAX, etc) of the channel being spied on.
- * The Jack application now has a c() option to supply a custom client name.
- * Chanspy has a new option, 'B', which can be used to "barge" on a call. This is
-   like the pre-existing whisper mode, except that the spy can also talk to the
-   participant on the bridged channel as well.
- * Chanspy has a new option, 'n', which will allow for the spied-on party's name
-   to be spoken instead of the channel name or number. For more information on the
-   use of this option, issue the command "core show application ChanSpy" from the
-   Asterisk CLI.
- * Chanspy has a new option, 'd', which allows the spy to use DTMF to swap between
-   spy modes. Use of this feature overrides the typical use of numeric DTMF. In other
-   words, if using the 'd' option, it is not possible to enter a number to append to
-   the first argument to Chanspy(). Pressing 4 will change to spy mode, pressing 5 will
-   change to whisper mode, and pressing 6 will change to barge mode.
- * ExternalIVR now takes several options that affect the way it performs, as
-   well as having several new commands.  Please see the External IVR page on the Asterisk
-   wiki for complete documentation: https://wiki.asterisk.org/wiki/x/oQBB
- * Added ability to communicate over a TCP socket instead of forking a child process for the
-   ExternalIVR application.
- * ChanIsAvail has a new option, 'a', which will return all available channels instead
-   of just the first one if you give the function more then one channel to check.
- * PrivacyManager now takes an option where you can specify a context where the
-   given number will be matched. This way you have more control over who is allowed
-   and it stops the people who blindly enter 10 digits.
- * ForkCDR has new options: 'a' updates the answer time on the new CDR; 'A' locks
-   answer times, disposition, on orig CDR against updates; 'D' Copies the disposition
-   from the orig CDR to the new CDR after reset; 'e' sets the 'end' time on the
-   original CDR; 'R' prevents the new CDR from being reset; 's(var=val)' adds/changes
-   the 'var' variable on the original CDR; 'T' forces ast_cdr_end(), ast_cdr_answer(),
-   obey the LOCKED flag on cdr's in the chain, and also the ast_cdr_setvar() func.
- * The Dial() application no longer copies the language used by the caller to the callee's
-   channel. If you desire for the caller's channel's language to be used for file playback
-   to the callee, then the file specified may be prepended with "${CHANNEL(language)}/" .
- * SendImage() no longer hangs up the channel on error; instead, it sets the
-   status variable SENDIMAGESTATUS to one of 'SUCCESS', 'FAILURE', or
-   'UNSUPPORTED'.  This change makes SendImage() more consistent with other
-   applications.
- * Park has a new option, 's', which silences the announcement of the parking space number.
- * A non-numeric, zero, or negative timeout specified to Dial() will now be interpreted as
-   invalid input and will be assumed to mean that no timeout is desired.
-
-SIP Changes
------------
- * Added DNS manager support to registrations for peers referencing peer entries.
-   DNS manager runs in the background which allows DNS lookups to be run asynchronously
-   as well as periodically updating the IP address. These properties allow for
-   better performance as well as recovery in the event of an IP change.
- * Performance improvements via using hash tables (astobj2) and doubly-linked lists to improve
-   load/reload of large numbers of peers/users by ~40x (for large lists of peers).
-   These changes also provide performance improvements for call setup and tear down.
- * Added ability to specify registration expiry time on a per registration basis in
-   the register line.
- * Added support for T140 RED - redundancy in T.140 to prevent text loss due to
-   lost packets.
- * Added t38pt_usertpsource option. See sip.conf.sample for details.
- * Added SIPnotify AMI command, for sending arbitrary SIP notify commands.
- * 'sip show peers' and 'sip show users' display their entries sorted in
-    alphabetical order, as opposed to the order they were in, in the config
-    file or database.
- * Videosupport now supports an additional option, "always", which always sets
-    up video RTP ports, even on clients that don't support it.  This helps with
-    callfiles and certain transfers to ensure that if two video phones are
-    connected, they will always share video feeds.
-
-IAX Changes
------------
- * Existing DNS manager lookups extended to check for SRV records.
- * IAX2 encryption support has been improved to support periodic key rotation
-   within a call for enhanced security.  The option "keyrotate" has been
-   provided to disable this functionality to preserve backwards compatibility
-   with older versions of IAX2 that do not support key rotation.
-
-CLI Changes
------------
-  * New CLI command, "data get <path> [<search> [<filter>]]" which retrieves the
-     data tree based on the given <path>.
-  * New CLI command "data show providers" that will display all the registered
-     callbacks.
-  * New CLI command, "config reload <file.conf>" which reloads any module that
-     references that particular configuration file.  Also added "config list"
-     which shows which configuration files are in use.
-  * New CLI commands, "pri show version" and "ss7 show version" that will
-     display which version of libpri and libss7 are being used, respectively.
-     A new API call was added so trunk will now have to be compiled against
-     a versions of libpri and libss7 that have them or it will not know that
-     these libraries exist.
-  * The commands "core show globals", "core set global" and "core set chanvar" has
-     been deprecated in favor of the more semantically correct "dialplan show globals",
-     "dialplan set chanvar" and "dialplan set global".
-  * New CLI command "dialplan show chanvar" to list all variables associated
-    with a given channel.
-
-DNS manager changes
--------------------
-  * Addresses managed by DNS manager now can check to see if there is a DNS
-    SRV record for a given domain and will use that hostname/port if present.
-
-AMI - The manager (TCP/TLS/HTTP)
---------------------------------
-  * The Status command now takes an optional list of variables to display
-    along with channel status.
-  * The QueueEntry event now also includes the channel's uniqueid
-
-ODBC Changes
-------------
-  * res_odbc no longer has a limit of 1023 total possible unshared connections,
-    as some people were running into this limit.  This limit has been increased
-    to 4.2 billion.
-
-Queue changes
--------------
-  * The TRANSFER queue log entry now includes the the caller's original
-    position in the transferred-from queue.
-  * A new configuration option, "timeoutpriority" has been added. Please see the section labeled
-    "QUEUE TIMING OPTIONS" in configs/queues.conf.sample for a detailed explanation of the option
-    as well as an explanation about timeout options in general
-  * Added a new option - C - for forcing the "answered elsewhere" flag on
-    cancellation of calls in to members of the queue. This is to avoid the
-    call to a member of a queue having the call listed as a "missed call".
-
-Realtime changes
-----------------
-  * Several (ODBC, Postgres, MySQL, SQLite) realtime drivers have been given
-    adaptive capabilities.  What this means in practical terms is that if your
-    realtime table lacks critical fields, Asterisk will now emit warnings to
-    that effect.  Also, some of the realtime drivers have the ability (if
-    configured) to automatically add those columns to the table with the
-    correct type and length.
-
-Miscellaneous
--------------
-  * The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND can now be set using
-    the 'setvar' option to cause a given audio file to be played upon completion
-    of an attended transfer.  Currently it works for DAHDI, IAX2, SIP, and
-    Skinny channels only.
-  * You can now compile Asterisk against the Hoard Memory Allocator, see the
-    Hoard page on the Asterisk wiki for more information:
-    https://wiki.asterisk.org/wiki/x/pQBB
-  * Config file variables may now be appended to, by using the '+=' append
-    operator.  This is most helpful when working with long SQL queries in
-    func_odbc.conf, as the queries no longer need to be specified on a single
-    line.
-  * CDR config file, cdr.conf, has an added option, "initiatedseconds",
-    which will add a second to the billsec when the ending
-    time is set, if the number in the microseconds field of the end time is
-    greater than the number of microseconds in the answer time. This allows
-    users to count the 'initiated' seconds in their billing records.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 1.4.X to Asterisk 1.6.0  -------------
-------------------------------------------------------------------------------
-
-AMI - The manager (TCP/TLS/HTTP)
---------------------------------
-  * Manager has undergone a lot of changes, all of them documented
-    on the Asterisk wiki at https://wiki.asterisk.org/wiki/x/tQBB
-  * Manager version has changed to 1.1
-  * Added a new action 'CoreShowChannels' to list currently defined channels
-     and some information about them.
-  * Added a new action 'SIPshowregistry' to list SIP registrations.
-  * Added TLS support for the manager interface and HTTP server
-  * Added the URI redirect option for the built-in HTTP server
-  * The output of CallerID in Manager events is now more consistent.
-     CallerIDNum is used for number and CallerIDName for name.
-  * Enable https support for builtin web server.
-     See configs/http.conf.sample for details.
-  * Added a new action, GetConfigJSON, which can return the contents of an
-     Asterisk configuration file in JSON format.  This is intended to help
-     improve the performance of AJAX applications using the manager interface
-     over HTTP.
-  * SIP and IAX manager events now use "ChannelType" in all cases where we
-     indicate channel driver. Previously, we used a mixture of "Channel"
-     and "ChannelDriver" headers.
-  * Added a "Bridge" action which allows you to bridge any two channels that
-     are currently active on the system.
-  * Added a "ListAllVoicemailUsers" action that allows you to get a list of all
-     the voicemail users setup.
-  * Added 'DBDel' and 'DBDelTree' manager commands.
-  * cdr_manager now reports events via the "cdr" level, separating it from
-     the very verbose "call" level.
-  * Manager users are now stored in memory. If you change the manager account
-    list (delete or add accounts) you need to reload manager.
-  * Added Masquerade manager event for when a masquerade happens between
-     two channels.
-  * Added "manager reload" command for the CLI
-  * Lots of commands that only provided information are now allowed under the
-     Reporting privilege, instead of only under Call or System.
-  * The IAX* commands now require either System or Reporting privilege, to
-     mirror the privileges of the SIP* commands.
-  * Added ability to retrieve list of categories in a config file.
-  * Added ability to retrieve the content of a particular category.
-  * Added ability to empty a context.
-  * Created new action to create a new file.
-  * Updated delete action to allow deletion by line number with respect to category.
-  * Added new action insert to add new variable to category at specified line.
-  * Updated action newcat to allow new category to be inserted in file above another
-    existing category.
-  * Added new event "JitterBufStats" in the IAX2 channel
-  * Originate now requires the Originate privilege and, if you want to call out
-    to a subshell, it requires the System privilege, as well.  This was done to
-    enhance manager security.
-  * Originate now accepts codec settings with "Codecs: alaw, ulaw, h264"
-  * New command: Atxfer. See https://wiki.asterisk.org/wiki/x/uABB for more details
-    or manager show command Atxfer from the CLI
-  * New command: IAXregistry. See https://wiki.asterisk.org/wiki/x/uABB for more
-    details or manager show command IAXregistry from the CLI
-
-Dialplan functions
-------------------
-  * Added the DEVICE_STATE() dialplan function which allows retrieving any device
-     state in the dialplan, as well as creating custom device states that are
-     controllable from the dialplan.
-  * Extend CALLERID() function with "pres" and "ton" parameters to
-     fetch string representation of calling number presentation indicator
-     and numeric representation of type of calling number value.
-  * MailboxExists converted to dialplan function
-  * A new option to Dial() for telling IP phones not to count the call
-     as "missed" when dial times out and cancels.
-  * Added LOCK(), TRYLOCK(), and UNLOCK(), which provide a single level dialplan
-     mutex.  No deadlocks are possible, as LOCK() only allows a single lock to be
-     held for any given channel.  Also, locks are automatically freed when a
-     channel is hung up.
-  * Added HINT() dialplan function that allows retrieving hint information.
-     Hints are mappings between extensions and devices for the sake of
-     determining the state of an extension.  This function can retrieve the list
-     of devices or the name associated with a hint.
-  * Added EXTENSION_STATE() dialplan function which allows retrieving the state
-    of any extension.
-  * Added SYSINFO() dialplan function which allows retrieval of system information
-  * Added a new dialplan function, DIALPLAN_EXISTS(), which allows you to check for
-     the existence of a dialplan target.
-  * Added two new dialplan functions, TOUPPER and TOLOWER, which convert a string to
-     upper and lower case, respectively.
-  * When bridging, Asterisk sets the BRIDGEPVTCALLID to the channel drivers unique
-     ID for the call (not the Asterisk call ID or unique ID), provided that the
-     channel driver supports this. For SIP, you get the SIP call-ID for the
-     bridged channel which you can store in the CDR with a custom field.
-
-CLI Changes
------------
-  * Added CLI permissions, config file: cli_permissions.conf
-     default is to allow all commands for every local user/group.
-     Also this new feature added three new CLI commands:
-      - cli check permissions {<username>|@<groupname>|<username>@<groupname>} [<command>]
-      - cli reload permissions
-      - cli show permissions
-  * New CLI command "core show hint" (usage: core show hint <exten>)
-  * New CLI command "core show settings"
-  * Added 'core show channels count' CLI command.
-  * Added the ability to set the core debug and verbose values on a per-file basis.
-  * Added 'queue pause member' and 'queue unpause member' CLI commands
-  * Ability to set process limits ("ulimit") without restarting Asterisk
-  * Enhanced "agi debug" to print the channel name as a prefix to the debug
-     output to make debugging on busy systems much easier.
-  * New CLI commands "dialplan set extenpatternmatching true/false"
-  * New CLI command: "core set chanvar" to set a channel variable from the CLI.
-  * Added an easy way to execute Asterisk CLI commands at startup.  Any commands
-    listed in the startup_commands section of cli.conf will get executed.
-  * Added a CLI command, "devstate change", which allows you to set custom device
-     states from the func_devstate module that provides the DEVICE_STATE() function
-     and handling of the "Custom:" devices.
-  * New CLI command: "sip show sched" which shows all ast_sched entries for sip,
-    sorted into the different possible callbacks, with the number of entries
-    currently scheduled for each. Gives you a feel for how busy the sip channel
-    driver is.
-  * Added 'skinny show lines verbose' CLI command. This will show the subs for every channel.
-  * Cleanup another bunch of CLI commands. Now all modules follow the same schema.
-    (Done by lmadsen, junky and mvanbaak during the devcon 2008)
-
-SIP changes
------------
- * Added a new 'faxdetect=yes|no' configuration option to sip.conf.  When this
-    option is enabled, Asterisk will watch for a CNG tone in the incoming audio
-    for a received call.  If it is detected, the channel will jump to the
-    'fax' extension in the dialplan.
-  * The default SIP useragent= identifier now includes the Asterisk version
-  * A new option, match_auth_username in sip.conf changes the matching of incoming requests.
-     If set, and the incoming request carries authentication info,
-     the username to match in the users list is taken from the Digest header
-     rather than from the From: field. This feature is considered experimental.
-  * The "musiconhold" and "musicclass" settings in sip.conf are now removed,
-     since they where replaced by "mohsuggest" and "mohinterpret" in version 1.4
-  * The "localmask" setting was removed in version 1.2 and the reminder about it
-     being removed is now also removed.
-  * A new option "busylevel" for setting a level of calls where asterisk reports
-     a device as busy, to separate it from call-limit. This value is also added
-     to the SIP_PEER dialplan function.
-  * A new realtime family called "sipregs" is now supported to store SIP registration
-     data. If this family is defined, "sippeers" will be used for configuration and
-     "sipregs" for registrations. If it's not defined, "sippeers" will be used for
-     registration data, as before.
-  * The SIPPEER function have new options for port address, call and pickup groups
-  * Added support for T.140 realtime text in SIP/RTP
-  * The "checkmwi" option has been removed from sip.conf, as it is no longer
-     required due to the restructuring of how MWI is handled.  See the descriptions
-     in this file of the "pollmailboxes" and "pollfreq" options to voicemail.conf
-     for more information.
-  * Added rtpdest option to CHANNEL() dialplan function.
-  * Added SIPREFERRINGCONTEXT and SIPREFERREDBYHDR variables which are set when a transfer takes place.
-  * SIP now adds a header to the CANCEL if the call was answered by another phone
-     in the same dial command, or if the new c option in dial() is used.
-  * The new default is that 100 Trying is not sent on REGISTER attempts as the RFC specifically
-     states it is not needed. For phones, however, that do require it the "registertrying" option
-     has been added so it can be enabled.
-  * A new option called "callcounter" (global/peer/user level) enables call counters needed
-     for better status reports needed for queues and SIP subscriptions. (Call-Limit was previously
-     used to enable this functionality).
-  * New settings for timer T1 and timer B on a global level or per device. This makes it
-     possible to force timeout faster on non-responsive SIP servers. These settings are
-     considered advanced, so don't use them unless you have a problem.
-  * Added a dial string option to be able to set the To: header in an INVITE to any
-     SIP uri.
-  * Added a new global and per-peer option, qualifyfreq, which allows you to configure
-     the qualify frequency.
-  * Added SIP Session Timers support (RFC 4028).  This prevents stuck SIP sessions that
-     were not properly torn down due to network or endpoint failures during an established
-     SIP session.
-  * Added experimental TCP and TLS support for SIP.  See https://wiki.asterisk.org/wiki/x/ygBB
-     and configs/sip.conf.sample for more information on how it is used.
-  * Added a new configuration option "authfailureevents" that enables manager events when
-    a peer can't authenticate properly.
-  * Added DNS manager support to registrations for peers not referencing a peer entry.
-
-IAX2 changes
-------------
-  * Added the trunkmaxsize configuration option to chan_iax2.
-  * Added the srvlookup option to iax.conf
-  * Added support for OSP.  The token is set and retrieved through the CHANNEL()
-     dialplan function.
-
-XMPP Google Talk/Jingle changes
--------------------------------
-  * Added the bindaddr option to gtalk.conf.
-
-Skinny changes
--------------
-  * Added skinny show device, skinny show line, and skinny show settings CLI commands.
-  * Proper codec support in chan_skinny.
-  * Added settings for IP and Ethernet QoS requests
-
-MGCP changes
-------------
-  * Added separate settings for media QoS in mgcp.conf
-
-Console Channel Driver changes
-------------------------------
-  * Added experimental support for video send & receive to chan_oss.
-    This requires SDL and ffmpeg/avcodec, plus Video4Linux or X11 to act as
-    a video source.
-
-Phone channel changes (chan_phone)
-----------------------------------
-  * Added G729 passthrough support to chan_phone for Sigma Designs boards.
-
-H.323 channel Changes
----------------------
-  * H323 remote hold notification support added (by NOTIFY message
-     and/or H.450 supplementary service)
-
-Local channel changes
----------------------
-  * The device state functionality in the Local channel driver has been updated
-     to indicate INUSE or NOT_INUSE when a Local channel is being used as opposed
-     to just UNKNOWN if the extension exists.
-  * Added jitterbuffer support for chan_local.  This allows you to use the
-     generic jitterbuffer on incoming calls going to Asterisk applications.
-     For example, this would allow you to use a jitterbuffer for an incoming
-     SIP call to Voicemail by putting a Local channel in the middle.  This
-     feature is enabled by using the 'j' option in the Dial string to the Local
-     channel in conjunction with the existing 'n' option for local channels.
-  * A 'b' option has been added which causes chan_local to return the actual channel
-     that is behind it when queried. This is useful for transfer scenarios as the
-     actual channel will be transferred, not the Local channel.
-
-Agent channel changes
-----------------------
-  * The ackcall and endcall options are now supplemented with options acceptdtmf
-    and enddtmf. These allow for the DTMF keypress to be configurable. The options
-    default to their old hard-coded values ('#' and '*' respectively) so this should
-    not break any existing agent installations.
-
-DAHDI channel driver (chan_dahdi) Changes
-----------------------------------------
-  * SS7 support (via libss7 library)
-  * In India, some carriers transmit CID via dtmf. Some code has been added
-     that will handle some situations. The cidstart=polarity_IN choice has been added for
-     those carriers that transmit CID via dtmf after a polarity change.
-  * CID matching information is now shown when doing 'dialplan show'.
-  * Added dahdi show version CLI command.
-  * Added setvar support to chan_dahdi.conf channel entries.
-  * Added two new options: mwimonitor and mwimonitornotify.  These options allow
-     you to enable MWI monitoring on FXO lines.  When the MWI state changes,
-     the script specified in the mwimonitornotify option is executed.  An internal
-     event indicating the new state of the mailbox is also generated, so that
-     the normal MWI facilities in Asterisk work as usual.
-  * Added signalling type 'auto', which attempts to use the same signalling type
-     for a channel as configured in DAHDI. This is primarily designed for analog
-     ports, but will also work for digital ports that are configured for FXS or FXO
-     signalling types. This mode is also the default now, so if your chan_dahdi.conf
-     does not specify signalling for a channel (which is unlikely as the sample
-     configuration file has always recommended specifying it for every channel) then
-     the 'auto' mode will be used for that channel if possible.
-  * Added a 'dahdi set dnd' command to allow CLI control of the Do-Not-Disturb
-     state for a channel; also ensured that the DNDState Manager event is
-     emitted no matter how the DND state is set or cleared.
-
-New Channel Drivers
--------------------
-  * Added a new channel driver, chan_unistim.  See the Asterisk wiki at
-     https://wiki.asterisk.org/wiki/x/vgsiAQ and configs/unistim.conf.sample
-     for details.  This new channel driver allows you to use Nortel i2002,
-     i2004, and i2050 phones with Asterisk.
-  * Added a new channel driver, chan_console, which uses portaudio as a cross
-     platform audio interface.  It was written as a channel driver that would
-     work with Mac CoreAudio, but portaudio supports a number of other audio
-     interfaces, as well. Note that this channel driver requires v19 or higher
-     of portaudio; older versions have a different API.
-
-DUNDi changes
--------------
-  * Added the ability to specify arguments to the Dial application when using
-     the DUNDi switch in the dialplan.
-  * Added the ability to set weights for responses dynamically.  This can be
-     done using a global variable or a dialplan function.  Using the SHELL()
-     function would allow you to have an external script set the weight for
-     each response.
-  * Added two new dialplan functions, DUNDIQUERY and DUNDIRESULT.  These
-     functions will allow you to initiate a DUNDi query from the dialplan,
-     find out how many results there are, and access each one.
-  * Added the ability to specify a port for a dundi peer.
-
-ENUM changes
-------------
-  * Added two new dialplan functions, ENUMQUERY and ENUMRESULT.  These
-     functions will allow you to initiate an ENUM lookup from the dialplan,
-     and Asterisk will cache the results.  ENUMRESULT can be used to access
-     the results without doing multiple DNS queries.
-
-Voicemail Changes
------------------
-  * Added the ability to customize which sound files are used for some of the
-     prompts within the Voicemail application by changing them in voicemail.conf
-  * Added the ability for the "voicemail show users" CLI command to show users
-     configured by the dynamic realtime configuration method.
-  * MWI (Message Waiting Indication) handling has been significantly
-     restructured internally to Asterisk.  It is now totally event based
-     instead of polling based.  The voicemail application will notify other
-     modules that have subscribed to MWI events when something in the mailbox
-     changes.
-    This also means that if any other entity outside of Asterisk is changing
-     the contents of mailboxes, then the voicemail application still needs to
-     poll for changes.  Examples of situations that would require this option
-     are web interfaces to voicemail or an email client in the case of using
-     IMAP storage.  So, two new options have been added to voicemail.conf
-     to account for this: "pollmailboxes" and "pollfreq".  See the sample
-     configuration file for details.
-  * Added "tw" language support
-  * Added support for storage of greetings using an IMAP server
-  * Added ability to customize forward, reverse, stop, and pause keys for message playback
-  * SMDI is now enabled in voicemail using the smdienable option.
-  * A "lockmode" option has been added to asterisk.conf to configure the file
-     locking method used for voicemail, and potentially other things in the
-     future.  The default is the old behavior, lockfile.  However, there is a
-     new method, "flock", that uses a different method for situations where the
-     lockfile will not work, such as on SMB/CIFS mounts.
-  * Added the ability to backup deleted messages, to ease recovery in the case
-     that a user accidentally deletes a message, and discovers that they need it.
-  * Reworked the SMDI interface in Asterisk.  The new way to access SMDI information
-     is through the new functions, SMDI_MSG_RETRIEVE() and SMDI_MSG().  The file
-     smdi.conf can now be configured with options to map SMDI station IDs to Asterisk
-     voicemail boxes.  The SMDI interface can also poll for MWI changes when some
-     outside entity is modifying the state of the mailbox (such as IMAP storage or
-     a web interface of some kind).
-  * Added the support for marking messages as "urgent." There are two methods to accomplish
-     this. One is to pass the 'U' option to VoiceMail(). Another way to mark a message as urgent
-     is to specify "review=yes" in voicemail.conf. Doing this will cause allow the user to mark
-     the message as urgent after he has recorded a voicemail by following the voice instructions.
-    When listening to voicemails using VoiceMailMain urgent messages will be presented before other
-     messages
-  * Added "is" language support
-
-Queue changes
--------------
-  * Added the general option 'shared_lastcall' so that member's wrapuptime may be
-     used across multiple queues.
-  * Added QUEUE_VARIABLES function to set queue variables added setqueuevar and
-     setqueueentryvar options for each queue, see queues.conf.sample for details.
-  * Added keepstats option to queues.conf which will keep queue
-     statistics during a reload.
-  * setinterfacevar option in queues.conf also now sets a variable
-     called MEMBERNAME which contains the member's name.
-  * Added 'Strategy' field to manager event QueueParams which represents
-     the queue strategy in use.
-  * Added option to run macro when a queue member is connected to a caller,
-     see queues.conf.sample for details.
-  * app_queue now has a 'loose' option which is almost exactly like 'strict' except it
-     does not count paused queue members as unavailable.
-  * Added min-announce-frequency option to queues.conf which allows you to control the
-     minimum amount of time between queue announcements for use when the caller's queue
-     position changes frequently.
-  * Added additional information to EXITWITHTIMEOUT and EXITWITHKEY events in the
-     queue log.
-  * Added ability for non-realtime queues to have realtime members
-  * Added the "linear" strategy to queues.
-  * Added the "wrandom" strategy to queues.
-  * Added new channel variable QUEUE_MIN_PENALTY
-  * QUEUE_MAX_PENALTY and QUEUE_MIN_PENALTY may be adjusted in mid-call by defining
-     rules in queuerules.conf. See configs/queuerules.conf.sample for details
-  * Added a new parameter for member definition, called state_interface. This may be
-    used so that a member may be called via one interface but have a different interface's
-    device state reported.
-  * Added new CLI and Manager commands relating to reloading queues. From the CLI, see
-    "queue reload", "queue reset stats". Also see "manager show command QueueReload" and
-    "manager show command QueueReset."
-  * New configuration option: randomperiodicannounce. If a list of periodic announcements is
-    specified by the periodic-announce option, then one will be chosen randomly when it is time
-    to play a periodic announcment
-  * New configuration options: announce-position now takes two more values in addition to "yes" and
-    "no." Two new options, "limit" and "more," are allowed. These are tied to another option,
-    announce-position-limit. By setting announce-position to "limit" callers will only have their
-    position announced if their position is less than what is specified by announce-position-limit.
-    If announce-position is set to "more" then callers beyond the position specified by announce-position-limit
-    will be told that their are more than announce-position-limit callers waiting.
-  * Two new queue log events have been added. An ADDMEMBER event will be logged
-    when a realtime queue member is added and a REMOVEMEMBER event will be logged
-    when a realtime queue member is removed. Since there is no calling channel associated
-    with these events, the string "REALTIME" is placed where the channel's unique id
-    is typically placed.
-  * The configuration method for the "joinempty" and "leavewhenempty" options has
-    changed to a comma-separated list of methods of determining member availability
-    instead of vague terms such as "yes," "loose," "no," and "strict." These old four
-    values are still accepted for backwards-compatibility, though.
-  * The average talktime is now calculated on queues. This information is reported via the
-    CLI commands "queue show" and "queues show"; through the AMI events AgentComplete, QueueSummary,
-    and QueueParams; and through the channelvariable QUEUETALKTIME if setinterfacevar=yes is set for
-    the queue.
-
-MeetMe Changes
---------------
-  * The 'o' option to provide an optimization has been removed and its functionality
-     has been enabled by default.
-  * When a conference is created, the UNIQUEID of the channel that caused it to be
-     created is stored.  Then, every channel that joins the conference will have the
-     MEETMEUNIQUEID channel variable set with this ID.  This can be used to relate
-     callers that come and go from long standing conferences.
-  * Added a new application, MeetMeChannelAdmin, which is similar to MeetMeAdmin,
-     except it does operations on a channel by name, instead of number in a conference.
-     This is a very useful feature in combination with the 'X' option to ChanSpy.
-  * Added 'C' option to Meetme which causes a caller to continue in the dialplan
-     when kicked out.
-  * Added new RealTime functionality to provide support for scheduled conferencing.
-     This includes optional messages to the caller if they attempt to join before
-     the schedule start time, or to allow the caller to join the conference early.
-     Also included is optional support for limiting the number of callers per
-     RealTime conference.
-  * Added the S() and L() options to the MeetMe application.  These are pretty
-     much identical to the S() and L() options to Dial().  They let you set
-     timeouts for the conference, as well as have warning sounds played to
-     let the caller know how much time is left, and when it is running out.
-  * Added the ability to do "meetme concise" with the "meetme" CLI command.
-     This extends the concise capabilities of this CLI command to include
-     listing all conferences, instead of an addition to the other sub commands
-     for the "meetme" command.
-  * Added the ability to specify the music on hold class used to play into the
-     conference when there is only one member and the M option is used.
-  * Added MEETME_INFO dialplan function which provides a way to query
-     various properties of a Meetme conference.
-  * Added new admin features: *81: Roll call, *82: eject all, *83: mute all,
-     and *84: record in-conf
-
-Other Dialplan Application Changes
-----------------------------------
-  * Argument support for Gosub application
-  * From the to-do lists: straighten out the app timeout args:
-     Wait() app now really does 0.3 seconds- was truncating arg to an int.
-     WaitExten() same as Wait().
-     Congestion() - Now takes floating pt. argument.
-     Busy() - now takes floating pt. argument.
-     Read() - timeout now can be floating pt.
-     WaitForRing() now takes floating pt timeout arg.
-     SpeechBackground() -- clarified in the docstrings that the timeout is an integer seconds.
-  * Added 's' option to Page application.
-  * Added an optional timeout argument to the Page application.
-  * Added 'E', 'V', and 'P' commands to ExternalIVR.
-  * Added 'o' and 'X' options to Chanspy.
-  * Added a new dialplan application, Bridge, which allows you to bridge the
-     calling channel to any other active channel on the system.
-  * Added the ability to specify a music on hold class to play instead of ringing
-     for the SLATrunk application.
-  * The Read application no longer exits the dialplan on error.  Instead, it sets
-     READSTATUS to ERROR, which you can catch and handle separately.
-  * Added 'm' option to Directory, which lists out names, 8 at a time, instead
-     of asking for verification of each name, one at a time.
-  * Privacy() no longer uses privacy.conf, as all options are specifiable as
-     direct options to the app.
-  * AMD() has a new "maximum word length" option. "show application AMD" from the CLI
-     for more details
-  * GotoIfTime() now may branch based on a "false" condition, like other Goto-related applications
-  * The ChannelRedirect application no longer exits the dialplan if the given channel
-     does not exist. It will now set the CHANNELREDIRECT_STATUS variable to SUCCESS upon success
-     or NOCHANNEL if the given channel was not found.
-  * The silencethreshold setting that was previously configurable in multiple
-     applications is now settable globally via dsp.conf.
-
-Music On Hold Changes
----------------------
-  * A new option, "digit", has been added for music on hold classes in
-     musiconhold.conf.  If this is set for a music on hold class, a caller
-     listening to music on hold can press this digit to switch to listening
-     to this music on hold class.
-  * Support for realtime music on hold has been added.
-  * In conjunction with the realtime music on hold, a general section has
-     been added to musiconhold.conf, its sole variable is cachertclasses. If this
-     is set, then music on hold classes found in realtime will be cached in memory.
-
-AEL Changes
------------
-  * AEL upgraded to use the Gosub with Arguments instead
-     of Macro application, to hopefully reduce the problems
-     seen with the artificially low stack ceiling that
-     Macro bumps into. Macros can only call other Macros
-     to a depth of 7. Tests run using gosub, show depths
-     limited only by virtual memory. A small test demonstrated
-     recursive call depths of 100,000 without problems.
-     -- in addition to this, all apps that allowed a macro
-     to be called, as in Dial, queues, etc, are now allowing
-     a gosub call in similar fashion.
-  * AEL now generates LOCAL(argname) declarations when it
-     Set()'s the each arg name to the value of ${ARG1}, ${ARG2),
-     etc. That makes the arguments local in scope. The user
-     can define their own local variables in macros, now,
-     by saying "local myvar=someval;"  or using Set() in this
-     fashion:  Set(LOCAL(myvar)=someval);  ("local" is now
-     an AEL keyword).
-  * utils/conf2ael introduced. Will convert an extensions.conf
-     file into extensions.ael. Very crude and unfinished, but
-     will be improved as time goes by. Should be useful for a
-     first pass at conversion.
-  * aelparse will now read extensions.conf to see if a referenced
-     macro or context is there before issuing a warning.
-  * AEL parser sets a local channel variable ~~EXTEN~~, to
-    preserve the value of ${EXTEN} thru switch statements.
-  * New operator in $[...] expressions: the ~~ operator serves
-    as a concatenation operator. AT THE MOMENT, it is really only
-    necessary and useful in AEL, especially in if() expressions.
-    Operation: ${a} ~~ ${b|  with force both a and b to strings, strip
-    any enclosing double-quotes, and evaluate to the value of a
-    concatenated with the value of b.  For example if a is set to
-    "xyz"  and b has the value "abc", then ${a} ~~ ${b| would
-    evaluate to xyzabc .
-
-
-Call Features (res_features) Changes
-------------------------------------
-  * Added the parkedcalltransfers option to features.conf
-  * Added parkedcallparking option to control one touch parking w/ parking
-    pickup
-  * Added parkedcallhangup option to control disconnect feature w/ parking
-    pickup
-  * Added parkedcallrecording option to control one-touch record w/ parking
-    pickup
-  * Added parkedcallparking, parkedcallhangup, parkedcallrecording, and
-    parkedcalltransfers option support for multiple parking lots.
-  * Added BRIDGE_FEATURES variable to set available features for a channel
-  * The built-in method for doing attended transfers has been updated to
-     include some new options that allow you to have the transferee sent
-     back to the person that did the transfer if the transfer is not successful.
-     See the options "atxferdropcall", "atxferloopdelay", and "atxfercallbackretries"
-     in features.conf.sample.
-  * Added support for configuring named groups of custom call features in
-     features.conf.  This means that features can be written a single time, and
-     then mapped into groups of features for different key mappings or easier
-     access control.
-  * Updated the ParkedCall application to allow you to not specify a parking
-     extension.  If you don't specify a parking space to pick up, it will grab
-     the first one available.
-  * Added cli command 'features reload' to reload call features from features.conf
-  * Moved into core asterisk binary.
-  * Changed the default setting for featuredigittimeout to 2000 ms from 500 ms.
-  * Added the ability for custom parking lots to be configured with their own
-    parking extension with the parkext option.
-
-Language Support Changes
-------------------------
-  * Brazilian Portuguese (pt-BR) in VM, and say.c was added
-  * Added support for the Hungarian language for saying numbers, dates, and times.
-
-AGI Changes
------------
-  * Added SPEECH commands for speech recognition. A complete listing can be found
-    using agi show.
-  * If app_stack is loaded, GOSUB is a native AGI command that may be used to
-    invoke subroutines in the dialplan.  Note that calling EXEC with Gosub
-    does not behave as expected; the native command needs to be used, instead.
-  * Added the ability to perform SRV lookups on fast AGI calls. To use this
-    feature, simply use hagi: instead of agi: as the protocol portion
-    of the URI parameter to the AGI function call in your dial plan. Also note
-    that specifying a port number in the AGI URI will disable SRV lookups,
-    even if you use the hagi: protocol.
-  * No longer support MSG_OOB flag on HANGUP.
-
-Logger changes
---------------
-  * Added rotatestrategy option to logger.conf, along with two new options:
-     "timestamp" which will use the time to name the logger files instead of
-     sequence number; and "rotate", which rotates the names of the log files,
-     similar to the way syslog rotates files.
-  * Added exec_after_rotate option to logger.conf, which allows a system
-     command to be run after rotation.  This is primarily useful with
-     rotatestrategy=rotate, to allow a limit on the number of log files kept
-     and to ensure that the oldest log file gets deleted.
-  * Added realtime support for the queue log
-
-Call Detail Records
--------------------
-  * The cdr_manager module has a [mappings] feature, like cdr_custom,
-    to add fields to the manager event from the CDR variables.
-  * Added cdr_adaptive_odbc, a new module that adapts to the structure of your
-     backend database CDR table.  Specifically, additional, non-standard
-     columns are supported, merely by setting the corresponding CDR variable in
-     your dialplan.  In addition, you may alias any column to another name (for
-     example, if you want the 'src' CDR variable to be column 'ANI' in the DB,
-     simply "alias src => ANI" in the configuration file).  Records may be
-     posted to more than one backend, simply by specifying multiple categories
-     in the configuration file.  And finally, you may filter which CDRs get
-     posted to each backend, by specifying a filter (which the record must
-     match) for the particular category.  Filters are additive (meaning all
-     rules must match to post that CDR).
-  * The Postgres CDR module now supports some features of the cdr_adaptive_odbc
-     module.  Specifically, you may add additional columns into the table and
-     they will be set, if you set the corresponding CDR variable name.  Also,
-     if you omit columns in your database table, they will be silently skipped
-     (but a record will still be inserted, based on what columns remain).  Note
-     that the other two features from cdr_adaptive_odbc (alias and filter) are
-     not currently supported.
-  * The ResetCDR application now has an 'e' option that re-enables a CDR if it
-     has been disabled using the NoCDR application.
-
-Miscellaneous New Modules
--------------------------
-  * Added a new CDR module, cdr_sqlite3_custom.
-  * Added a new realtime configuration module, res_config_sqlite
-  * Added a new codec translation module, codec_resample, which re-samples
-     signed linear audio between 8 kHz and 16 kHz to help support wideband
-     codecs.
-  * Added a new module, res_phoneprov, which allows auto-provisioning of phones
-     based on configuration templates that use Asterisk dialplan function and
-     variable substitution.  It should be possible to create phone profiles and
-     templates that work for the majority of phones provisioned over http. It
-     is currently only intended to provision a single user account per phone.
-     An example profile and set of templates for Polycom phones is provided.
-     NOTE: Polycom firmware is not included, but should be placed in
-     AST_DATA_DIR/phoneprov/configs to match up with the included templates.
-  * Added a new module, app_jack, which provides interfaces to JACK, the Jack
-     Audio Connection Kit (http://www.jackaudio.org/).  Two interfaces are
-     provided; there is a JACK() application, and a JACK_HOOK() function.  Both
-     interfaces create an input and output JACK port.  The application makes
-     these ports the endpoint of the call.  The audio coming from the channel
-     goes out the output port and whatever comes back in on the input port is
-     what gets sent to the channel.  The JACK_HOOK() function turns on a JACK
-     audiohook on the channel.  This lets you run the audio coming from a
-     channel through JACK, and whatever comes back in is what gets forwarded
-     on as the channel's audio.  This is very useful for building custom
-     vocoders or doing recording or analysis of the channel's audio in another
-     application.
-  * Added a new module, res_config_curl, which permits using a HTTP POST url
-     to retrieve, create, update, and delete realtime information from a remote
-     web server.  Note that this module requires func_curl.so to be loaded for
-     backend functionality.
-  * Added a new module, res_config_ldap, which permits the use of an LDAP
-     server for realtime data access.
-  * Added support for writing and running your dialplan in lua using the pbx_lua
-     module.  See configs/extensions.lua.sample for examples of how to do this.
-
-Miscellaneous
--------------
-  * Ability to use libcap to set high ToS bits when non-root
-     on Linux. If configure is unable to find libcap then you
-     can use --with-cap to specify the path.
-  * Added maxfiles option to options section of asterisk.conf which allows you to specify
-     what Asterisk should set as the maximum number of open files when it loads.
-  * Added the jittertargetextra configuration option.
-  * Added support for setting the CoS for VLAN traffic (802.1p).  See the sample
-     configuration files for the IP channel drivers.  The new option is "cos".
-     This information is also documented on the Asterisk wiki at
-     https://wiki.asterisk.org/wiki/x/EYBG
-  * When originating a call using AMI or pbx_spool that fails the reason for failure
-     will now be available in the failed extension using the REASON dialplan variable.
-  * Added support for reading the TOUCH_MONITOR_PREFIX channel variable.
-     It allows you to configure a prefix for auto-monitor recordings.
-  * A new extension pattern matching algorithm, based on a trie, is introduced
-     here, that could noticeably speed up mid-sized to large dialplans.
-     It is NOT used by default, as duplicating the behaviour of the old pattern
-     matcher is still under development. A config file option, in extensions.conf,
-     in the [general] section, called "extenpatternmatchingnew", is by default
-     set to false; setting that to true will force the use of the new algorithm.
-     Also, the cli commands "dialplan set extenpatternmatchingnew true/false" can
-     be used to switch the algorithms at run time.
-  * A new option when starting a remote asterisk (rasterisk, asterisk -r) for
-     specifying which socket to use to connect to the running Asterisk daemon
-     (-s)
-  * Performance enhancements to the sched facility, which is used in
-    the channel drivers, etc. Added hashtabs and doubly-linked lists
-    to speed up deletion; start at the beginning or end of list to
-    speed up insertion.
-  * Added Doubly-linked lists after the fashion of linkedlists.h. They are in
-    dlinkedlists.h. Doubly-linked lists feature fast deletion times.
-    Added regression tests to the tests/ dir, also.
-  * Added a refcount trace feature to astobj2 for those trying to balance
-    object creation, deletion; work, play; space and time. See the
-    notes in astobj2.h. Also, see utils/refcounter as well, as a
-    quick way to find unbalanced refcounts in what could be a sea
-    of objects that were balanced.
-  * Added logging to 'make update' command.  See update.log
-  * Added strictrtp option to rtp.conf. If enabled this will drop RTP packets that
-     do not come from the remote party.
-  * Added the 'n' option to the SpeechBackground application to tell it to not
-     answer the channel if it has not already been answered.
-  * Added a compiler flag, CHANNEL_TRACE, which permits channel tracing to be
-     turned on, via the CHANNEL(trace) dialplan function.  Could be useful for
-     dialplan debugging.
-  * iLBC source code no longer included (see UPGRADE.txt for details)
-  * If compiled with DETECT_DEADLOCKS enabled and if you have glibc, then if
-     deadlock is detected, a backtrace of the stack which led to the lock calls
-     will be output to the CLI.
-  * If compiled with DEBUG_THREADS enabled and if you have glibc, then issuing
-     the "core show locks" CLI command will give lock information output as well
-     as a backtrace of the stack which led to the lock calls.
-  * users.conf now sports an optional alternateexts property, which permits
-    allocation of additional extensions which will reach the specified user.
-  * A new option for the configure script, --enable-internal-poll, has been added
-    for use with systems which may have a buggy implementation of the poll system
-    call. If you notice odd behavior such as the CLI being unresponsive on remote
-    consoles, you may want to try using this option. This option is enabled by default
-    on Darwin systems since it is known that the Darwin poll() implementation has
-    odd issues.
-
-Timer Changes
---------------------
-* In addition to timing from DAHDI, there is a new timing module called
-  res_timing_timerfd. In order to use this, you must be running Linux with
-  a kernel version 2.6.25 or newer as well as glibc 2.8 or newer. The configure
-  script will be able to tell if you have the requirements. From menuselect, select
-  res_timing_timerfd from the Resource Modules menu.
diff --git a/UPGRADE.txt b/UPGRADE.txt
deleted file mode 100644 (file)
index 9a5d1ca..0000000
+++ /dev/null
@@ -1,2986 +0,0 @@
-===========================================================
-===
-=== THIS FILE IS AUTOMATICALLY GENERATED DURING THE RELEASE
-=== PROCESS. DO NOT MAKE CHANGES HERE. INSTEAD, REFER TO
-=== doc/UPGRADE-staging/README.md FOR MORE DETAILS.
-===
-=== Information for upgrading between Asterisk versions
-===
-=== This file documents all the changes that MUST be taken
-=== into account when upgrading between certain Asterisk
-=== versions. These changes may require that you modify
-=== your configuration files, dialplan or (in some cases)
-=== source code if you have your own Asterisk modules or
-=== patches. This file also includes advance notice of any
-=== functionality that has been marked as 'deprecated' and
-=== may be removed in a future release, along with the
-=== suggested replacement functionality.
-===
-===========================================================
-
-------------------------------------------------------------------------------
---- New functionality introduced in Asterisk 20.0.0 --------------------------
-------------------------------------------------------------------------------
-
-res_monitor
-------------------
- * This module is no longer built by default in
-   accordance with the Module Deprecation Policy.
-   If you require this functionality you will need
-   to enable it for building in menuselect. Note
-   that in the future res_monitor will be removed.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 19.0.0 to Asterisk 20.0.0 ------------
-------------------------------------------------------------------------------
-
-AMI
-------------------
- * The XML Manager Event Interface (amxml) now generates attribute names
-   that are compliant with the XML 1.1 specification. Previously, an
-   attribute name that started with a digit would be rendered as-is, even
-   though attribute names must not begin with a digit. We now prefix
-   attribute names that start with a digit with an underscore ('_') to
-   prevent XML validation failures.
-
-STIR/SHAKEN
-------------------
- * The STIR/SHAKEN configuration option has been split into
-   4 different choices: off, attest, verify, and on. Off and
-   on behave the same way as before. Attest will only perform
-   attestation on the endpoint, and verify will only perform
-   verification on the endpoint.
-
-chan_iax2
-------------------
- * Encryption is now supported for RSA authentication.
-
-   Currently, these auth configurations will cause a crash:
-   auth = md5,rsa
-   auth = plaintext,md5,rsa
-
-   With a patched peer, the following will cause a crash:
-   auth = rsa
-   auth = md5,rsa
-   auth = plaintext,md5,rsa
-
-   If both the peer and user are patches, no crash occurs.
-   Existing good configurations should continue to work.
-
-res_http_media_cache
-------------------
- * When fetching a file for playback from a URL, Asterisk will now first
-   use the value of the Content-Type header in the HTTP response to
-   determine the format of the audio data, and only if it is unable to do
-   that will it attempt to parse the URL and extract the extension from
-   the path portion. Previously Asterisk would first look at the end of
-   the URL, which may have included query string parameters or a URL
-   fragment, which was error prone.
-
-res_pjsip
-------------------
- * The 'async_operations' setting on transports is no longer
-   obeyed and instead is always set to 1. This is due to the
-   functionality not being applicable to Asterisk and causing
-   excess unnecessary memory usage. This setting will now be
-   ignored but can also be removed from the configuration file.
-
-------------------------------------------------------------------------------
---- New functionality introduced in Asterisk 19.0.0 --------------------------
-------------------------------------------------------------------------------
-
-Log Rotate
-------------------
- * The sample logger files have been changed to have .log as their file
-   extension. This was done so that when attached to issues on the issue
-   tracker, they are able to be opened in the browser for convenience.
-   Because of this, the asterisk.logrotate script has been updated to look
-   for .log extensions instead of no extension for files such as full
-   and messages.
-
-chan_sip
-------------------
- * chan_sip is no longer built by default. To build it, make sure to
-   enable it when running 'make menuselect'
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 18.0.0 to Asterisk 19.0.0 ------------
-------------------------------------------------------------------------------
-
-STIR/SHAKEN
-------------------
- * The configuration option public_key_url in stir_shaken.conf
-   has been renamed to public_cert_url to better fit what it
-   contains. Only the name has changed - functionality is the
-   same.
-
- * STIR/SHAKEN originally needed an origid to be specified in
-   stir_shaken.conf under the certificate config object in
-   order to work. Now, one is automatically created by
-   generating a UUID, as recommended by RFC8588. Any origid
-   you have in your stir_shaken.conf will need to be removed
-   for the module to read in certificates.
-
-menuselect
-------------------
- * menuselect --enable, --disable, --enable-category and --disable-category will
-   now fail with a non-zero exit code instead of silently failing if an invalid
-   option or category is specified.
-
-res_srtp
-------------------
- * SRTP replay protection has been added to res_srtp and
-   a new configuration option "srtpreplayprotection" has
-   been added to the rtp.conf config file.  For security
-   reasons, the default setting is "yes".  Buggy clients
-   may not handle this correctly which could result in
-   no, or one way, audio and Asterisk error messages like
-   "replay check failed".
-
-------------------------------------------------------------------------------
---- New functionality introduced in Asterisk 18.0.0 --------------------------
-------------------------------------------------------------------------------
-
-Core
-------------------
- * The ast_format_cap_from_stream_topology() function has been renamed
-   to ast_stream_topology_get_formats().
-
-app_bridgeaddchan
-------------------
- * The BridgeAdd application now behaves more like the Bridge application.
-   The application now sets the BRIDGERESULT channel variable to indicate
-   what happened when the channel resumes in dialplan.  This is instead of
-   hanging up the channel on failure conditions.
-
-app_mixmonitor
-------------------
- * In Asterisk 13.29, a new option flag was added to MixMonitor (the 'S'
-   option) that when combined with the r() or t() options would inject
-   silence into these files if audio was going to be written to one and
-   not that other. This allowed the files specified by r() and t() to
-   subsequently be mixed outside of Asterisk and be appropriately
-   synchronized. This behavior is now the default, and a new option has
-   been added to disable this behavior if desired (the 'n' option).
-
-app_queue
-------------------
- * The 'Reason' header in the QueueMemberPause AMI Event has been
-   removed. The 'PausedReason' header should be used instead.
-
- * If they are not specified in [general], "shared_lastcall" and "autofill"
-   now always default to OFF.  Before this version, they would be off ('no') if
-   queues.conf did not have a [general] section, but on ('yes') if it did.
-
-app_voicemail
-------------------
- * The MessageExists dialplan application and the MESSAGE_EXISTS dialplan
-   function were removed. The were deprecated in Asterisk 1.6.0 and
-   Asterisk 11.0.0 respectively. The VM_INFO() dialplan function is the
-   supported mechanism to query the status of a given mailbox.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 17.0.0 to Asterisk 18.0.0 ------------
-------------------------------------------------------------------------------
-
-AMI
-------------------
- * The AMI Originate action, which optionally takes a dialplan application as
-   an argument, no longer accepts "Originate" as the application due to
-   security concerns.
-
-ARI
-------------------
- * The "TextMessageReceived" event used to include a list of "TextMessageVariable"
-   objects as part of its output. Due to a couple of bugs in Asterisk a list of
-   received variables was never included even if ones were available. However,
-   variables set to send would be (which they should have not been), but would
-   fail validation due to the bad formatting.
-
-   So basically there was no way to get a "TextMessageReceived" event with
-   variables. Due to this the API has changed. The "TextMessageVariable" object
-   no longer exists. "TextMessageReceived" now returns a JSON object of key/value
-   pairs. So for instance instead of a list of "TextMessageVariable" objects:
-
-   [ TextMessageVariable, TextMessageVariable, TextMessageVariable]
-
-   where a TextMessageVariable was supposed to be:
-
-   { "key": "<var name>", "value":, "<var value>" }
-
-   The output is now just:
-
-   { "<var name>": "<var value>" }
-
-   This aligns more with how variables are specified when sending a message, as
-   well as other variable lists in ARI.
-
-Core
-------------------
- * The streams API function ast_stream_get_formats is
-   now defined as returning the format capabilities const.
-   This has always been the case but was never enforced
-   through the API itself. Any consumer of this API that
-   is not treating the formats as immutable should update
-   their code to create a new format capabilities and set
-   it on the stream instead.
-
-res_stasis
-------------------
- * The "TextMessageReceived" event used to include a list of "TextMessageVariable"
-   objects as part of its output. Due to a couple of bugs in Asterisk a list of
-   received variables was never included even if ones were available. However,
-   variables set to send would be (which they should have not been), but would
-   fail validation due to the bad formatting.
-
-   So basically there was no way to get a "TextMessageReceived" event with
-   variables. Due to this the API has changed. The "TextMessageVariable" object
-   no longer exists. "TextMessageReceived" now returns a JSON object of key/value
-   pairs. So for instance instead of a list of "TextMessageVariable" objects:
-
-   [ TextMessageVariable, TextMessageVariable, TextMessageVariable]
-
-   where a TextMessageVariable was supposed to be:
-
-   { "key": "<var name>", "value":, "<var value>" }
-
-   The output is now just:
-
-   { "<var name>": "<var value>" }
-
-   This aligns more with how variables are specified when sending a message, as
-   well as other variable lists in ARI.
-
-res_stir_shaken
-------------------
- * A new directory has been added under the default (e.g., /var/lib/asterisk) -
-   inside the 'keys' directory - named 'stir_shaken'. This directory will
-   hold public keys that have been downloaded for STIR/SHAKEN verification.
-
-------------------------------------------------------------------------------
---- New functionality introduced in Asterisk 17.0.0 --------------------------
-------------------------------------------------------------------------------
-
-Applications
-------------------
- * The JabberStatus application, deprecated in Asterisk 12, has been removed.
-
-Bridging
-------------------
- * The bridging core no longer uses the stasis cache for bridge
-   snapshots.  The latest bridge snapshot is now stored on the
-   ast_bridge structure itself.
-
-   The following APIs are no longer available since the stasis cache
-   is no longer used:
-     ast_bridge_topic_cached()
-     ast_bridge_topic_all_cached()
-
-   A topic pool is now used for individual bridge topics.
-
-   The ast_bridge_cache() function was removed since there's no
-   longer a separate container of snapshots.
-
-   A new function "ast_bridges()" was created to retrieve the
-   container of all bridges.  Users formerly calling
-   ast_bridge_cache() can use the new function to iterate over
-   bridges and retrieve the latest snapshot directly from the
-   bridge.
-
-   The ast_bridge_snapshot_get_latest() function was renamed to
-   ast_bridge_get_snapshot_by_uniqueid().
-
-   A new function "ast_bridge_get_snapshot()" was created to retrieve
-   the bridge snapshot directly from the bridge structure.
-
-   The ast_bridge_topic_all() function now returns a normal topic
-   not a cached one so you can't use stasis cache functions on it
-   either.
-
-   The ast_bridge_snapshot_type() stasis message now has the
-   ast_bridge_snapshot_update structure as it's data.  It contains
-   the last snapshot and the new one.
-
-Build
-------------------
- * Asterisk headers are no longer installed and uninstalled automatically when
-   performing a "make install" or a "make uninstall".  To install/uninstall the
-   headers, use "make install-headers" and "make uninstall-headers".  The headers
-   also continue to be uninstalled when performing a "make uninstall-all".
-
-Channels
-------------------
- * The core no longer uses the stasis cache for channels snapshots.
-   The following APIs are no longer available:
-       ast_channel_topic_cached()
-       ast_channel_topic_all_cached()
-   The ast_channel_cache_all() and ast_channel_cache_by_name() functions
-   now returns an ao2_container of ast_channel_snapshots rather than a
-   container of stasis_messages therefore you can't call stasis_cache
-   functions on it.
-   The ast_channel_topic_all() function now returns a normal topic,
-   not a cached one so you can't use stasis cache functions on it either.
-   The ast_channel_snapshot_type() stasis message now has the
-   ast_channel_snapshot_update structure as it's data.
-   ast_channel_snapshot_get_latest() still returns the latest snapshot.
-
-chan_sip
-------------------
- * The chan_sip module is now deprecated, users should migrate to the
-   replacement module chan_pjsip.  See guides at the Asterisk Wiki:
-     https://wiki.asterisk.org/wiki/x/tAHOAQ
-     https://wiki.asterisk.org/wiki/x/hYCLAQ
-
-func_callerid
-------------------
- * The CALLERPRES() dialplan function, deprecated in Asterisk 1.8, has been
-   removed.
-
-res_parking
-------------------
- * The PARKINGSLOT channel variable, deprecated in Asterisk 12 in favor of the
-   PARKING_SPACE channel variable, will no longer be set.
-
-res_xmpp
-------------------
- * The JabberStatus application, deprecated in Asterisk 12, has been removed.
-
-------------------------------------------------------------------------------
---- Functionality changes from Asterisk 16.0.0 to Asterisk 17.0.0 ------------
-------------------------------------------------------------------------------
-
-Core
-------------------
- * res_pjsip_pubsub is now required so call transfer progress can be monitored
-   and reported in the channel variable TRANSFERSTATUS.
-
-app_voicemail.c
-------------------
- * The "Voicemail Build Options" section of menuselect has been removed along with
-   the FILE_STORAGE, ODBC_STORAGE and IMAP_STORAGE menuselect options.  All 3 variants
-   of the voicemail app can now be built at the same by enabling app_voicemail,
-   app_voicemail_imap, and app_voicemail_odbc under the "Applications" section.
-   By default, only app_voicemail is enabled.  Also, the modules.conf sample has
-   been updated to "noload" app_voicemail_imap and app_voicemail_odbc should they
-   all be built.  Packagers must update their build scripts appropriately.
-
-chan_pjsip
-------------------
- * res_pjsip_pubsub is now required so call transfer progress can be monitored
-   and reported in the channel variable TRANSFERSTATUS.
-
-New in 16.0.0:
-
-app_fax:
- - The app_fax module is now deprecated, users should migrate to the
-   replacement module res_fax.
-
-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.
-
-AMI:
- - The ContactStatus and Status fields for the manager events ContactStatus
-   and ContactStatusDetail are now set to "NonQualified" when a contact exists
-   but has not been qualified.
- - The ContactStatus event will no longer be sent by PJSIP when a device
-   refreshes its registration.
- - The "Newexten" event is now part of the "dialplan" class. The documentation
-   for Asterisk 15 already specified this, but the implementation was actually
-   using the "call" class instead.
-
-ARI:
- - The ContactInfo event's contact_status field is now set to "NonQualified"
-   when a contact exists but has not been qualified.
-
-Build System:
- - MALLOC_DEBUG no longer has an effect on Asterisk's ABI.  Asterisk built
-   with MALLOC_DEBUG can now successfully load binary modules built without
-   MALLOC_DEBUG and vice versa.  Third-party pre-compiled modules no longer
-   need to have a special build with it enabled.
-
- - Asterisk now depends on libjansson >= 2.11.  If this version is not
-   available on your distro you can use `./configure --with-jansson-bundled`.
-
-chan_dahdi:
- - Timeouts for reading digits from analog phones are now configurable in
-   chan_dahdi.conf: firstdigit_timeout, interdigit_timeout, matchdigit_timeout.
-
-cdr_syslog:
- - The cdr_syslog module is now deprecated and by default it is no longer
-   built.
-
-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.
-
-Core:
- - libedit is no longer available as an embedded library and must be provided
-   by the system.
- - The module loader now enforces inter-module dependencies.  This ensures that
-   a module is not started before another it depends on, even if preload is used.
-   If a dependency is not available or fails to startup this will block any
-   dependants from startup.
- - Parts of the Asterisk core which can load configuration from realtime are now
-   built-in modules.  It is no longer necessary to preload realtime drivers as
-   they are always initialized before the built-in modules.
-
-From 15.2.0 to 15.3.0:
-
-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.
-
-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.
-
-New in 15.0.0:
-
-Build System:
- - '--with-pjproject-bundled' is now the default when running ./configure
-   It can be disabled with '--without-pjproject-bundled'.
-
-Core:
- - Multi-stream support has been added so a channel can have multiple
-   streams of the same type such as audio and video.
-
- - The 'Data Retrieval API' has been removed. This API was not actively
-   maintained, was not added to new modules (such as res_pjsip), and there
-   exist better alternatives to acquire the same information, such as the
-   ARI. As a result, the 'DataGet' AMI action as well as the 'data get'
-   CLI command have been removed.
-
-From 14.6.0 to 14.7.0:
-
-Core:
- - ast_app_parse_timelen now returns an error if it encounters extra characters
-   at the end of the string to be parsed.
-
-From 14.4.0 to 14.5.0:
-
-Core:
- - Support for embedded modules has been removed.  This has not worked in
-   many years.  LOADABLE_MODULES menuselect option is also removed as
-   loadable module support is now always enabled.
-
-From 14.3.0 to 14.4.0:
-
-res_rtp_asterisk:
- - The RTP layer of Asterisk now has support for RFC 5761: "Multiplexing RTP
-   Data and Control Packets on a Single Port." For the PJSIP channel driver,
-   chan_pjsip, you can set "rtcp_mux = yes" on a PJSIP endpoint in pjsip.conf
-   to enable the feature. For chan_sip you can set "rtcp_mux = yes" either
-   globally or on a per-peer basis in sip.conf.
-
-New in 14.0.0
-
-ARI:
- - The policy for when to send "Dial" events has changed. Previously, "Dial"
-   events were sent on the calling channel's topic. However, starting in Asterisk
-   14, if there is no calling channel on which to send the event, the event is
-   instead sent on the called channel's topic. Note that for the ARI channels
-   resource's dial operation, this means that the "Dial" events will always be
-   sent on the called channel's topic.
-
-Channel Drivers:
-
-chan_dahdi:
- - For users using the FXO port (FXS signaling) distinctive ring detection
-   feature, you will need to adjust the dringX count values.  The count
-   values now only record ring end events instead of any DAHDI event.  A
-   ring-ring-ring pattern would exceed the pattern limits and stop
-   Caller-ID detection.
-
-chan_sip:
- - The SIP dial string has been extended past the [!dnid] option by another
-   exclamation mark: [!dnid[!fromuri].  An exclamation mark in the To-URI
-   will now mean changes to the From-URI.
-
-Core:
- - The REF_DEBUG compiler flag is now used to enable refdebug by default.
-   The setting can be overridden in asterisk.conf by setting refdebug in
-   the options category.  No recompile is required to enable/disable it.
-
- - 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.
-
-AMI:
- - The 'ModuleCheck' Action's Version key will no longer show the module
-   version. The value will always be blank.
-
-CLI:
- - The 'core show file version' command has been removed. When Asterisk
-   moved to Git, the source control version support was removed. As a
-   result, the CLi command was no longer useful and was removed as well.
-
-Logging:
- - The first callid created is now 1 instead of 0.  The value 0
-   is now reserved to represent a lack of callid.
-
-AMI:
- - The Command action now sends the output from the CLI command as a series
-   of Output headers for each line instead of as a block of text with the
-   --END COMMAND-- delimiter to match the output from other actions.
-
-   Commands that fail to execute (no such command, invalid syntax etc.) now
-   return an Error response instead of Success.
-
-app_amd:
- - The 'maximum_number_of_words' configuration option and parameter to the AMD
-   application previously did not match the documented functionality + variable
-   name.  In Asterisk 13, a value of '3' would mean that if '3' words were detected,
-   the result would be detection as a 'MACHINE'.  As of this version, the value
-   reflects the maximum words that if EXCEEDED (rather than reached), would
-   result in detection as a machine.  This means that you should update this
-   value to be one higher than your previos value, if your previous value
-   was working well for you.
-
-From 12 to 13:
-
-General Asterisk Changes:
- - The asterisk command line -I option and the asterisk.conf internal_timing
-   option are removed and always enabled if any timing module is loaded.
-
- - The per console verbose level feature as previously implemented caused a
-   large performance penalty.  The fix required some minor incompatibilities
-   if the new rasterisk is used to connect to an earlier version.  If the new
-   rasterisk connects to an older Asterisk version then the root console verbose
-   level is always affected by the "core set verbose" command of the remote
-   console even though it may appear to only affect the current console.  If
-   an older version of rasterisk connects to the new version then the
-   "core set verbose" command will have no effect.
-
- - The asterisk compatibility options in asterisk.conf have been removed.
-   These options enabled certain backwards compatibility features for
-   pbx_realtime, res_agi, and app_set that made their behaviour similar to
-   Asterisk 1.4. Users who used these backwards compatibility settings should
-   update their dialplans to use ',' instead of '|' as a delimiter, and should
-   use the Set dialplan application instead of the MSet dialplan application.
-
-Build System:
- - Sample config files have been moved from configs/ to a subfolder 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.
-
- - Added a new Compiler Flag, REF_DEBUG. 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.
-
-Applications:
-
-ConfBridge:
- - The sound_place_into_conference sound used in Confbridge is now deprecated
-   and is no longer functional since it has been broken since its inception
-   and the fix involved using a different method to achieve the same goal. The
-   new method to achieve this functionality is by using sound_begin to play
-   a sound to the conference when waitmarked users are moved into the conference.
-
- - Added 'Admin' header to ConfbridgeJoin, ConfbridgeLeave, ConfbridgeMute,
-   ConfbridgeUnmute, and ConfbridgeTalking AMI events.
-
-ControlPlayback:
- - The ControlPlayback and 'control stream file' AGI command will no longer
-   implicitly answer the channel. If you do not answer the channel prior to
-   using either this application or AGI command, you must send Progress
-   first.
-
-Queue:
- - Queue rules provided in queuerules.conf can no longer be named "general".
-
-SetMusicOnHold:
- - The SetMusicOnHold dialplan application was deprecated and has been removed.
-   Users of the application should use the CHANNEL function's musicclass
-   setting instead.
-
-WaitMusicOnHold:
- - The WaitMusicOnHold dialplan application was deprecated and has been
-   removed. Users of the application should use MusicOnHold with a duration
-   parameter instead.
-
-CDR Backends:
- - The cdr_sqlite module was deprecated and has been removed. Users of this
-   module should use the cdr_sqlite3_custom module instead.
-
-Channel Drivers:
-
-chan_dahdi:
- - SS7 support now requires libss7 v2.0 or later.
-
- - Added the inband_on_setup_ack compatibility option to chan_dahdi.conf to
-   deal with switches that don't send an inband progress indication in the
-   SETUP ACKNOWLEDGE message.
-   Default is now no.
-
-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 a 'force_avp' option to chan_pjsip which will force the usage of
-   'RTP/AVP', 'RTP/AVPF', 'RTP/SAVP', or 'RTP/SAVPF' as the media transport type
-   in SDP offers depending on settings, even when DTLS is used for media
-   encryption.
-
- - Added a 'media_use_received_transport' option to chan_pjsip which will
-   cause the SDP answer to use the media transport as received in the SDP
-   offer.
-
-chan_sip:
- - Made set SIPREFERREDBYHDR as inheritable for better chan_pjsip
-   interoperability.
-
- - 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.
-
- - Added a 'force_avp' option for chan_sip. When enabled this option will
-   cause the media transport in the offer or answer SDP to be 'RTP/AVP',
-   'RTP/AVPF', 'RTP/SAVP', or 'RTP/SAVPF' even if a DTLS stream has been
-   configured. This option can be set to improve interoperability with WebRTC
-   clients that don't use the RFC defined transport for DTLS.
-
- - The 'dtlsverify' option in chan_sip now has additional values besides
-   'yes' and 'no'. If 'yes' is specified both the certificate and fingerprint
-   will be verified. If 'no' is specified then neither the certificate or
-   fingerprint is verified. If 'certificate' is specified then only the
-   certificate is verified. If 'fingerprint' is specified then only the
-   fingerprint is verified.
-
- - A 'dtlsfingerprint' option has been added to chan_sip which allows the
-   hash to be specified for the DTLS fingerprint placed in SDP. Supported
-   values are 'sha-1' and 'sha-256' with 'sha-256' being the default.
-
- - The 'progressinband=never' option is now more zealous in the persecution of
-   progress messages coming from Asterisk. Channels bridged with a SIP channel
-   that has 'progressinband=never' set will not be able to forward their
-   progress indications through to the SIP device. chan_sip will now turn such
-   progress indications into a 180 Ringing (if a 180 has not yet been
-   transmitted) if 'progressinband=never'.
-
-  - The codec preference order in an SDP during an offer is slightly different
-    than previous releases. Prior to Asterisk 13, the preference order of
-    codecs used to be:
-    (1) Our preferred codec
-    (2) Our configured codecs
-    (3) Any non-audio joint codecs
-
-    One of the ways the new media format architecture in Asterisk 13 improves
-    performance is by reference counting formats, such that they can be reused
-    in many places without additional allocation. To not require a large
-    amount of locking, an instance of a format is immutable by convention.
-    This works well except for formats with attributes. Since a media format
-    with an attribute is a different object than the same format without an
-    attribute, we have to carry over the formats with attributes from an
-    inbound offer so that the correct attributes are offered in an outgoing
-    INVITE request. This requires some subtle tweaks to the preference order
-    to ensure that the media format with attributes is offered to a remote
-    peer, as opposed to the same media format (but without attributes) that
-    may be stored in the peer object.
-
-    All of this means that our offer offer list will now be:
-    (1) Our preferred codec
-    (2) Any joint codecs offered by the inbound offer
-    (3) All other codecs that are not the preferred codec and not a joint
-        codec offered by the inbound offer
-
-chan_unistim:
- - The unistim.conf 'dateformat' has changed meaning of options values to conform
-   values used inside Unistim protocol
-
- - Added 'dtmf_duration' option with changing default operation to disable
-   received dtmf playback on unistim phone
-
-Core:
-
-Account Codes:
- - accountcode behavior changed somewhat to add functional peeraccount
-   support.  The main change is that local channels now cross accountcode
-   and peeraccount across the special bridge between the ;1 and ;2 channels
-   just like channels between normal bridges.  See the CHANGES file for
-   more information.
-
-ARI:
- - The ARI version has been changed to 1.5.0. This is to reflect backwards
-   compatible changes made since 12.0.0 was released.
-
- - Added a new ARI resource 'mailboxes' which allows the creation and
-   modification of mailboxes managed by external MWI. Modules res_mwi_external
-   and res_stasis_mailbox must be enabled to use this resource.
-
- - Added new events for externally initiated transfers. The event
-   BridgeBlindTransfer is now raised when a channel initiates a blind transfer
-   of a bridge in the ARI controlled application to the dialplan; the
-   BridgeAttendedTransfer event is raised when a channel initiates an
-   attended transfer of a bridge in the ARI controlled application to the
-   dialplan.
-
- - Channel variables may now be specified as a body parameter to the
-   POST /channels operation. The 'variables' key in the JSON is interpreted
-   as a sequence of key/value pairs that will be added to the created channel
-   as channel variables. Other parameters in the JSON body are treated as
-   query parameters of the same name.
-
- - A bug fix in bridge creation has caused a behavioural change in how
-   subscriptions are created for bridges. A bridge created through ARI, does
-   not, by itself, have a subscription created for any particular Stasis
-   application. When a channel in a Stasis application joins a bridge, an
-   implicit event subscription is created for that bridge as well. Previously,
-   when a channel left such a bridge, the subscription was leaked; this allowed
-   for later bridge events to continue to be pushed to the subscribed
-   applications. That leak has been fixed; as a result, bridge events that were
-   delivered after a channel left the bridge are no longer delivered. An
-   application must subscribe to a bridge through the applications resource if
-   it wishes to receive all events related to a bridge.
-
-AMI:
- - The AMI version has been changed to 2.5.0. This is to reflect backwards
-   compatible changes made since 12.0.0 was released.
-
- - The DialStatus field in the DialEnd event can now have additional values.
-   This includes ABORT, CONTINUE, and GOTO.
-
- - The res_mwi_external_ami module can, if loaded, provide additional AMI
-   actions and events that convey MWI state within Asterisk. This includes
-   the MWIGet, MWIUpdate, and MWIDelete actions, as well as the MWIGet and
-   MWIGetComplete events that occur in response to an MWIGet action.
-
- - AMI now contains a new class authorization, 'security'. This is used with
-   the following new events: FailedACL, InvalidAccountID, SessionLimit,
-   MemoryLimit, LoadAverageLimit, RequestNotAllowed, AuthMethodNotAllowed,
-   RequestBadFormat, SuccessfulAuth, UnexpectedAddress, ChallengeResponseFailed,
-   InvalidPassword, ChallengeSent, and InvalidTransport.
-
- - Bridge related events now have two additional fields: BridgeName and
-   BridgeCreator. BridgeName is a descriptive name for the bridge;
-   BridgeCreator is the name of the entity that created the bridge. This
-   affects the following events: ConfbridgeStart, ConfbridgeEnd,
-   ConfbridgeJoin, ConfbridgeLeave, ConfbridgeRecord, ConfbridgeStopRecord,
-   ConfbridgeMute, ConfbridgeUnmute, ConfbridgeTalking, BlindTransfer,
-   AttendedTransfer, BridgeCreate, BridgeDestroy, BridgeEnter, BridgeLeave
-
- - MixMonitor AMI actions now require users to have authorization classes.
-   * MixMonitor - system
-   * MixMonitorMute - call or system
-   * StopMixMonitor - call or system
-
- - Removed the undocumented manager.conf block-sockets option.  It interferes with
-   TCP/TLS inactivity timeouts.
-
- - The response to the PresenceState AMI action has historically contained two
-   Message keys. The first of these is used as an informative message regarding
-   the success/failure of the action; the second contains a Presence state
-   specific message. Having two keys with the same unique name in an AMI
-   message is cumbersome for some client; hence, the Presence specific Message
-   has been deprecated. The message will now contain a PresenceMessage key
-   for the presence specific information; the Message key containing presence
-   information will be removed in the next major version of AMI.
-
- - The manager.conf 'eventfilter' now takes an "extended" regular expression
-   instead of a "basic" one.
-
-CDRs:
- - The "endbeforehexten" setting now defaults to "yes", instead of "no".
-   When set to "no", yhis setting will cause a new CDR to be generated when a
-   channel enters into hangup logic (either the 'h' extension or a hangup
-   handler subroutine). In general, this is not the preferred default: this
-   causes extra CDRs to be generated for a channel in many common dialplans.
-
-CLI commands:
- - "core show settings" now lists the current console verbosity in addition
-   to the root console verbosity.
-
- - "core set verbose" has not been able to support the by module verbose
-   logging levels since verbose logging levels were made per console.  That
-   syntax is now removed and a silence option added in its place.
-
-Logging:
- - The 'verbose' setting in logger.conf still takes an optional argument,
-   specifying the verbosity level for each logging destination.  However,
-   the default is now to once again follow the current root console level.
-   As a result, using the AMI Command action with "core set verbose" could
-   again set the root console verbose level and affect the verbose level
-   logged.
-
-HTTP:
- - Added http.conf session_inactivity timer option to close HTTP connections
-   that aren't doing anything.
-
- - Added support for persistent HTTP connections.  To enable persistent
-   HTTP connections configure the keep alive time between HTTP requests.  The
-   keep alive time between HTTP requests is configured in http.conf with the
-   session_keep_alive parameter.
-
-Realtime Configuration:
- - WARNING: The database migration script that adds the 'extensions' table for
-   realtime had to be modified due to an error when installing for MySQL.  The
-   'extensions' table's 'id' column was changed to be a primary key.  This could
-   potentially cause a migration problem.  If so, it may be necessary to
-   manually alter the affected table/column to bring it back in line with the
-   migration scripts.
-
- - New columns have been added to realtime tables for 'support_path' on
-   ps_registrations and ps_aors and for 'path' on ps_contacts for the new
-   SIP Path support in chan_pjsip.
-
- - The following new tables have been added for pjsip realtime: 'ps_systems',
-   'ps_globals', 'ps_tranports', 'ps_registrations'.
-
- - The following columns were added to the 'ps_aors' realtime table:
-   'maximum_expiration', 'outbound_proxy', and 'support_path'.
-
- - The following columns were added to the 'ps_contacts' realtime table:
-   'outbound_proxy', 'user_agent', and 'path'.
-
- - New columns have been added to the ps_endpoints realtime table for the
-   'media_address', 'redirect_method' and 'set_var' options.  Also the
-   'mwi_fromuser' column was renamed to 'mwi_from_user'. A new column
-   'message_context' was added to let users configure how MESSAGE requests are
-   routed to the dialplan.
-
- - A new column was added to the 'ps_globals' realtime table for the 'debug'
-   option.
-
- - PJSIP endpoint columns 'tos_audio' and 'tos_video' have been changed from
-   yes/no enumerators to string values. 'cos_audio' and 'cos_video' have been
-   changed from yes/no enumerators to integer values. PJSIP transport column
-   'tos' has been changed from a yes/no enumerator to a string value. 'cos' has
-   been changed from a yes/no enumerator to an integer value.
-
- - The 'queues' and 'queue_members' realtime tables have been added to the
-   config Alembic scripts.
-
- - A new set of Alembic scripts has been added for CDR tables. This will create
-   a 'cdr' table with the default schema that Asterisk expects.
-
- - A new upgrade script has been added that adds a 'queue_rules' table for
-   app_queue. Users of app_queue can store queue rules in a database. It is
-   important to note that app_queue only looks for this table on module load or
-   module reload; for more information, see the CHANGES file.
-
-Resources:
-
-res_odbc:
-- The compatibility setting, allow_empty_string_in_nontext, has been removed.
-  Empty column values will be stored as empty strings during realtime updates.
-
-res_jabber:
- - This module was deprecated and has been removed. Users of this module should
-   use res_xmpp instead.
-
-res_http_websocket:
- - Added a compatibility option to ari.conf, sip.conf, and pjsip.conf
-   'websocket_write_timeout'. When a websocket connection exists where Asterisk
-   writes a substantial amount of data to the connected client, and the connected
-   client is slow to process the received data, the socket may be disconnected.
-   In such cases, it may be necessary to adjust this value.
-   Default is 100 ms.
-Scripts:
-
-safe_asterisk:
- - The safe_asterisk script was previously not installed on top of an existing
-   version. This caused bug-fixes in that script not to be deployed. If your
-   safe_asterisk script is customized, be sure to keep your changes. Custom
-   values for variables should be created in *.sh file(s) inside
-   ASTETCDIR/startup.d/. See ASTERISK-21965.
-
- - Changed a log message in safe_asterisk and the $NOTIFY mail subject. If
-   you use tools to parse either of them, update your parse functions
-   accordingly. The changed strings are:
-   - "Exited on signal $EXITSIGNAL" => "Asterisk exited on signal $EXITSIGNAL."
-   - "Asterisk Died" => "Asterisk on $MACHINE died (sig $EXITSIGNAL)"
-
-Utilities:
- - The refcounter program has been removed in favor of the refcounter.py script
-   in contrib/scripts.
-
-From 11 to 12:
-
-There are many significant architectural changes in Asterisk 12. It is
-recommended that you not only read through this document for important
-changes that affect an upgrade, but that you also read through the CHANGES
-document in depth to better understand the new options available to you.
-
-Additional information on the architectural changes made in Asterisk can be
-found on the Asterisk wiki (https://wiki.asterisk.org)
-
-Of particular note, the following systems in Asterisk underwent significant
-changes. Documentation for the changes and a specification for their
-behavior in Asterisk 12 is also available on the Asterisk wiki.
- - AMI: Many events were changed, and the semantics of channels and bridges
-        were defined. In particular, how channels and bridges behave under
-        transfer scenarios and situations involving multiple parties has
-        changed significantly. See https://wiki.asterisk.org/wiki/x/dAFRAQ
-        for more information.
- - CDR: CDR logic was extracted from the many locations it existed in across
-        Asterisk and implemented as a consumer of Stasis message bus events.
-        As a result, consistency of records has improved significantly and the
-        behavior of CDRs in transfer scenarios has been defined in the CDR
-        specification. However, significant behavioral changes in CDRs resulted
-        from the transition. The most significant change is the addition of
-        CDR entries when a channel who is the Party A in a CDR leaves a bridge.
-        See https://wiki.asterisk.org/wiki/x/pwpRAQ for more information.
- - CEL: Much like CDRs, CEL was removed from the many locations it existed in
-        across Asterisk and implemented as a consumer of Stasis message bus
-        events. It now closely follows the Bridging API model of channels and
-        bridges, and has a much closer consistency of conveyed events as AMI.
-        For the changes in events, see https://wiki.asterisk.org/wiki/x/4ICLAQ.
-
-Build System:
- - Removed the CHANNEL_TRACE development mode build option. Certain aspects of
-   the CHANNEL_TRACE build option were incompatible with the new bridging
-   architecture.
-
- - Asterisk now depends on libjansson, libuuid and optionally (but recommended)
-   libxslt and uriparser.
-
- - The new SIP stack and channel driver uses a particular version of PJSIP.
-   Please see https://wiki.asterisk.org/wiki/x/J4GLAQ for more information on
-   configuring and installing PJSIP for use with Asterisk.
-
-AgentLogin and chan_agent:
- - Along with AgentRequest, this application has been modified to be a
-   replacement for chan_agent. The chan_agent module and the Agent channel
-   driver have been removed from Asterisk, as the concept of a channel driver
-   proxying in front of another channel driver was incompatible with the new
-   architecture (and has had numerous problems through past versions of
-   Asterisk). The act of a channel calling the AgentLogin application places the
-   channel into a pool of agents that can be requested by the AgentRequest
-   application. Note that this application, as well as all other agent related
-   functionality, is now provided by the app_agent_pool module.
-
- - This application no longer performs agent authentication. If authentication
-   is desired, the dialplan needs to perform this function using the
-   Authenticate or VMAuthenticate application or through an AGI script before
-   running AgentLogin.
-
- - The agents.conf schema has changed. Rather than specifying agents on a
-   single line in comma delineated fashion, each agent is defined in a separate
-   context. This allows agents to use the power of context templates in their
-   definition.
-
- - A number of parameters from agents.conf have been removed. This includes
-   maxloginretries, autologoffunavail, updatecdr, goodbye, group, recordformat,
-   urlprefix, and savecallsin. These options were obsoleted by the move from
-   a channel driver model to the bridging/application model provided by
-   app_agent_pool.
-
- - The AGENTUPDATECDR channel variable has also been removed, for the same
-   reason as the updatecdr option.
-
- - The endcall and enddtmf configuration options are removed.  Use the
-   dialplan function CHANNEL(dtmf_features) to set DTMF features on the agent
-   channel before calling AgentLogin.
-
-AgentMonitorOutgoing
- - This application has been removed. It was a holdover from when
-   AgentCallbackLogin was removed.
-
-Answer
- - It is no longer possible to bypass updating the CDR when answering a
-   channel. CDRs are based on the channel state and will be updated when
-   the channel is Answered.
-
-ControlPlayback
- - The channel variable CPLAYBACKSTATUS may now return the value
-   'REMOTESTOPPED' when playback is stopped by an external entity.
-
-DISA
- - This application now has a dependency on the app_cdr module. It uses this
-   module to hide the CDR created prior to execution of the DISA application.
-
-DumpChan:
- - The output of DumpChan no longer includes the DirectBridge or IndirectBridge
-   fields. Instead, if a channel is in a bridge, it includes a BridgeID field
-   containing the unique ID of the bridge that the channel happens to be in.
-
-ForkCDR:
- - Nearly every parameter in ForkCDR has been updated and changed to reflect
-   the changes in CDRs. Please see the documentation for the ForkCDR
-   application, as well as the CDR specification on the Asterisk wiki.
-
-NoCDR:
- - The NoCDR application has been deprecated. Please use the CDR_PROP function
-   to disable CDRs on a channel.
-
-ParkAndAnnounce:
- - The app_parkandannounce module has been removed. The application
-   ParkAndAnnounce is now provided by the res_parking module. See the
-   Parking changes for more information.
-
-ResetCDR:
- - The 'w' and 'a' options have been removed. Dispatching CDRs to registered
-   backends occurs on an as-needed basis in order to preserve linkedid
-   propagation and other needed behavior.
- - The 'e' option is deprecated. Please use the CDR_PROP function to enable
-   CDRs on a channel that they were previously disabled on.
- - The ResetCDR application is no longer a part of core Asterisk, and instead
-   is now delivered as part of app_cdr.
-
-Queues:
- - Queue strategy rrmemory now has a predictable order similar to strategy
-   rrordered. Members will be called in the order that they are added to the
-   queue.
-
- - Removed the queues.conf check_state_unknown option.  It is no longer
-   necessary.
-
- - It is now possible to play the Queue prompts to the first user waiting in a
-   call queue. Note that this may impact the ability for agents to talk with
-   users, as a prompt may still be playing when an agent connects to the user.
-   This ability is disabled by default but can be enabled on an individual
-   queue using the 'announce-to-first-user' option.
-
- - The configuration options eventwhencalled and eventmemberstatus have been
-   removed.  As a result, the AMI events QueueMemberStatus, AgentCalled,
-   AgentConnect, AgentComplete, AgentDump, and AgentRingNoAnswer will always be
-   sent.  The "Variable" fields will also no longer exist on the Agent* events.
-   These events can be filtered out from a connected AMI client using the
-   eventfilter setting in manager.conf.
-
- - The queue log now differentiates between blind and attended transfers. A
-   blind transfer will result in a BLINDTRANSFER message with the destination
-   context and extension. An attended transfer will result in an
-   ATTENDEDTRANSFER message. This message will indicate the method by which
-   the attended transfer was completed: "BRIDGE" for a bridge merge, "APP"
-   for running an application on a bridge or channel, or "LINK" for linking
-   two bridges together with local channels. The queue log will also now detect
-   externally initiated blind and attended transfers and record the transfer
-   status accordingly.
-
- - When performing queue pause/unpause on an interface without specifying an
-   individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at
-   least one member of any queue exists for that interface.
-
-SetAMAFlags
- - This application is deprecated in favor of CHANNEL(amaflags).
-
-VoiceMail:
- - Mailboxes defined by app_voicemail MUST be referenced by the rest of the
-   system as mailbox@context.  The rest of the system cannot add @default
-   to mailbox identifiers for app_voicemail that do not specify a context
-   any longer.  It is a mailbox identifier format that should only be
-   interpreted by app_voicemail.
-
- - The voicemail.conf configuration file now has an 'alias' configuration
-   parameter for use with the Directory application. The voicemail realtime
-   database table schema has also been updated with an 'alias' column. Systems
-   using voicemail with realtime should update their schemas accordingly.
-
-Channel Drivers:
- - When a channel driver is configured to enable jiterbuffers, they are now
-   applied unconditionally when a channel joins a bridge. If a jitterbuffer
-   is already set for that channel when it enters, such as by the JITTERBUFFER
-   function, then the existing jitterbuffer will be used and the one set by
-   the channel driver will not be applied.
-
-chan_bridge
- - chan_bridge is removed and its functionality is incorporated into ConfBridge
-   itself.
-
-chan_dahdi:
- - Analog port dialing and deferred DTMF dialing for PRI now distinguishes
-   between 'w' and 'W'.  The 'w' pauses dialing for half a second.  The 'W'
-   pauses dialing for one second.
-
- - The default for inband_on_proceeding has changed to no.
-
- - The CLI command 'dahdi destroy channel' is now 'dahdi destroy channels'.
-   A range of channels can be specified to be destroyed. Note that this command
-   should only be used if you understand the risks it entails.
-
- - The script specified by the chan_dahdi.conf mwimonitornotify option now gets
-   the exact configured mailbox name.  For app_voicemail mailboxes this is
-   mailbox@context.
-
- - Added mwi_vm_boxes that also must be configured for ISDN MWI to be enabled.
-
- - ignore_failed_channels now defaults to True: the channel will continue to
-   be configured even if configuring it has failed. This is generally a
-   better setup for systems with not more than one DAHDI device or with DAHDI
-   >= 2.8.0 .
-
-chan_local:
- - The /b option has been removed.
-
- - chan_local moved into the system core and is no longer a loadable module.
-
-chan_sip:
- - The 'callevents' parameter has been removed. Hold AMI events are now raised
-   in the core, and can be filtered out using the 'eventfilter' parameter
-   in manager.conf.
-
- - Dynamic realtime tables for SIP Users can now include a 'path' field. This
-   will store the path information for that peer when it registers. Realtime
-   tables can also use the 'supportpath' field to enable Path header support.
-
- - LDAP realtime configurations for SIP Users now have the AstAccountPathSupport
-   objectIdentifier. This maps to the supportpath option in sip.conf.
-
-Core:
- - Masquerades as an operation inside Asterisk have been effectively hidden
-   by the migration to the Bridging API. As such, many 'quirks' of Asterisk
-   no longer occur. This includes renaming of channels, "<ZOMBIE>" channels,
-   dropping of frame/audio hooks, and other internal implementation details
-   that users had to deal with. This fundamental change has large implications
-   throughout the changes documented for this version. For more information
-   about the new core architecture of Asterisk, please see the Asterisk wiki.
-
- - The following channel variables have changed behavior which is described in
-   the CHANGES file: TRANSFER_CONTEXT, BRIDGEPEER, BRIDGEPVTCALLID,
-   ATTENDED_TRANSFER_COMPLETE_SOUND, DYNAMIC_FEATURENAME, and DYNAMIC_PEERNAME.
-
-AMI (Asterisk Manager Interface):
- - Version 1.4 - The details of what happens to a channel when a masquerade
-   happens (transfers, parking, etc) have changed.
-   - The Masquerade event now includes the Uniqueid's of the clone and original
-     channels.
-   - Channels no longer swap Uniqueid's as a result of the masquerade.
-   - Instead of a shell game of renames, there's now a single rename, appending
-     <ZOMBIE> to the name of the original channel.
-
- - *Major* changes were made to both the syntax as well as the semantics of the
-   AMI protocol. In particular, AMI events have been substantially modified
-   and improved in this version of Asterisk. The major event changes are listed
-   below.
-   - NewPeerAccount has been removed. NewAccountCode is raised instead.
-   - Reload events have been consolidated and standardized.
-   - ModuleLoadReport has been removed.
-   - FaxSent is now SendFAX; FaxReceived is now ReceiveFAX. This standardizes
-     app_fax and res_fax events.
-   - MusicOnHold has been replaced with MusicOnHoldStart and MusicOnHoldStop.
-   - JabberEvent has been removed.
-   - Hold is now in the core and will now raise Hold and Unhold events.
-   - Join is now QueueCallerJoin.
-   - Leave is now QueueCallerLeave.
-   - Agentlogin/Agentlogoff is now AgentLogin/AgentLogoff, respectively.
-   - ChannelUpdate has been removed.
-   - Local channel optimization is now conveyed via LocalOptimizationBegin and
-     LocalOptimizationEnd.
-   - BridgeAction and BridgeExec have been removed.
-   - BlindTransfer and AttendedTransfer events were added.
-   - Dial is now DialBegin and DialEnd.
-   - DTMF is now DTMFBegin and DTMFEnd.
-   - Bridge has been replaced with BridgeCreate, BridgeEnter, BridgeLeave, and
-     BridgeDestroy
-   - MusicOnHold has been replaced with MusicOnHoldStart and MusicOnHoldStop
-   - AGIExec is now AGIExecStart and AGIExecEnd
-   - AsyncAGI is now AsyncAGIStart, AsyncAGIExec, and AsyncAGIEnd
-
- - The 'MCID' AMI event now publishes a channel snapshot when available and
-   its non-channel-snapshot parameters now use either the "MCallerID" or
-   'MConnectedID' prefixes with Subaddr*, Name*, and Num* suffixes instead
-   of 'CallerID' and 'ConnectedID' to avoid confusion with similarly named
-   parameters in the channel snapshot.
-
- - The 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been
-   renamed "DAHDIChannel" since it does not convey an Asterisk channel name.
-
- - All AMI events now contain a 'SystemName' field, if available.
-
- - Local channel information in events is now prefixed with 'LocalOne' and
-   'LocalTwo'. This replaces the suffix of '1' and '2' for the two halves of
-   the Local channel. This affects the 'LocalBridge', 'LocalOptimizationBegin',
-   and 'LocalOptimizationEnd' events.
-
- - The 'RTCPSent'/'RTCPReceived' events have been significantly modified from
-   previous versions. They now report all SR/RR packets sent/received, and
-   have been restructured to better reflect the data sent in a SR/RR. In
-   particular, the event structure now supports multiple report blocks.
-
- - The deprecated use of | (pipe) as a separator in the channelvars setting in
-   manager.conf has been removed.
-
- - The SIP SIPqualifypeer action now sends a response indicating it will qualify
-   a peer once a peer has been found to qualify.  Once the qualify has been
-   completed it will now issue a SIPqualifypeerdone event.
-
- - The AMI event 'Newexten' field 'Extension' is deprecated, and may be removed
-   in a future release. Please use the common 'Exten' field instead.
-
- - The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and
-   'UnParkedCall' have changed significantly in the new res_parking module.
-   - The 'Channel' and 'From' headers are gone. For the channel that was parked
-     or is coming out of parking, a 'Parkee' channel snapshot is issued and it
-     has a number of fields associated with it. The old 'Channel' header relayed
-     the same data as the new 'ParkeeChannel' header.
-   - The 'From' field was ambiguous and changed meaning depending on the event.
-     for most of these, it was the name of the channel that parked the call
-     (the 'Parker'). There is no longer a header that provides this channel name,
-     however the 'ParkerDialString' will contain a dialstring to redial the
-     device that parked the call.
-   - On UnParkedCall events, the 'From' header would instead represent the
-     channel responsible for retrieving the parkee. It receives a channel
-     snapshot labeled 'Retriever'. The 'from' field is is replaced with
-     'RetrieverChannel'.
-   - Lastly, the 'Exten' field has been replaced with 'ParkingSpace'.
-
- - The AMI event 'Parkinglot' (response to 'Parkinglots' command) in a similar
-   fashion has changed the field names 'StartExten' and 'StopExten' to
-   'StartSpace' and 'StopSpace' respectively.
-
- - The AMI 'Status' response event to the AMI Status action replaces the
-   'BridgedChannel' and 'BridgedUniqueid' headers with the 'BridgeID' header to
-   indicate what bridge the channel is currently in.
-
-CDR (Call Detail Records)
- - Significant changes have been made to the behavior of CDRs. The CDR engine
-   was effectively rewritten and built on the Stasis message bus. For a full
-   definition of CDR behavior in Asterisk 12, please read the specification
-   on the Asterisk wiki (wiki.asterisk.org).
-
- - CDRs will now be created between all participants in a bridge. For each
-   pair of channels in a bridge, a CDR is created to represent the path of
-   communication between those two endpoints. This lets an end user choose who
-   to bill for what during bridge operations with multiple parties.
-
- - The duration, billsec, start, answer, and end times now reflect the times
-   associated with the current CDR for the channel, as opposed to a cumulative
-   measurement of all CDRs for that channel.
-
-CEL:
- - The Uniqueid field for a channel is now a stable identifier, and will not
-   change due to transfers, parking, etc.
-
- - CEL has undergone significant rework in Asterisk 12, and is now built on the
-   Stasis message bus. Please see the specification for CEL on the Asterisk
-   wiki at https://wiki.asterisk.org/wiki/x/4ICLAQ for more detailed
-   information. A summary of the affected events is below:
-   - BRIDGE_START, BRIDGE_END, BRIDGE_UPDATE, 3WAY_START, 3WAY_END, CONF_ENTER,
-     CONF_EXIT, CONF_START, and CONF_END events have all been removed. These
-     events have been replaced by BRIDGE_ENTER/BRIDGE_EXIT.
-   - BLINDTRANSFER/ATTENDEDTRANSFER events now report the peer as NULL and
-     additional information in the extra string field.
-
-Dialplan Functions:
-
- - Certain dialplan functions have been marked as 'dangerous', and may only be
-   executed from the dialplan. Execution from extenal sources (AMI's GetVar and
-   SetVar actions; etc.) may be inhibited by setting live_dangerously in the
-   [options] section of asterisk.conf to no. SHELL(), channel locking, and
-   direct file read/write functions are marked as dangerous. DB_DELETE() and
-   REALTIME_DESTROY() are marked as dangerous for reads, but can now safely
-   accept writes (which ignore the provided value).
- - The default value for live_dangerously was changed from yes (in Asterisk 11
-   and earlier) to no (in Asterisk 12 and greater).
-
-Dialplan:
- - All channel and global variable names are evaluated in a case-sensitive
-   manner. In previous versions of Asterisk, variables created and evaluated in
-   the dialplan were evaluated case-insensitively, but built-in variables and
-   variable evaluation done internally within Asterisk was done
-   case-sensitively.
-
- - Asterisk has always had code to ignore dash '-' characters that are not
-   part of a character set in the dialplan extensions.  The code now
-   consistently ignores these characters when matching dialplan extensions.
-
- - BRIDGE_FEATURES channel variable is now casesensitive for feature letter
-   codes. Uppercase variants apply them to the calling party while lowercase
-   variants apply them to the called party.
-
-Features:
- - The features.conf [applicationmap] <FeatureName>  ActivatedBy option is
-   no longer honored.  The feature is always activated by the channel that has
-   DYNAMIC_FEATURES defined on it when it enters the bridge. Use predial to set
-   different values of DYNAMIC_FEATURES on the channels
-
- - Executing a dynamic feature on the bridge peer in a multi-party bridge will
-   execute it on all peers of the activating channel.
-
- - There is no longer an explicit 'features reload' CLI command. Features can
-   still be reloaded using 'module reload features'.
-
- - It is no longer necessary (or possible) to define the ATXFER_NULL_TECH in
-   features.c for atxferdropcall=no to work properly. This option now just
-   works.
-
-Parking:
- - Parking has been extracted from the Asterisk core as a loadable module,
-   res_parking.
-
- - Configuration is found in res_parking.conf. It is no longer supported in
-   features.conf
-
- - The arguments for the Park, ParkedCall, and ParkAndAnnounce applications
-   have been modified significantly. See the application documents for
-   specific details.
-
- - Numerous changes to Parking related applications, AMI and CLI commands and
-   internal inter-workings  have been made. Please read the CHANGES file for
-   the detailed list.
-
-Security Events Framework:
- - Security Event timestamps now use ISO 8601 formatted date/time instead of
-   the "seconds-microseconds" format that it was using previously.
-
-AGENT:
- - The password option has been disabled, as the AgentLogin application no
-   longer provides authentication.
-
-AUDIOHOOK_INHERIT:
- - Due to changes in the Asterisk core, this function is no longer needed to
-   preserve a MixMonitor on a channel during transfer operations and dialplan
-   execution. It is effectively obsolete.
-
-CDR: (function)
- - The 'amaflags' and 'accountcode' attributes for the CDR function are
-   deprecated. Use the CHANNEL function instead to access these attributes.
-
- - The 'l' option has been removed. When reading a CDR attribute, the most
-   recent record is always used. When writing a CDR attribute, all non-finalized
-   CDRs are updated.
-
- - The 'r' option has been removed, for the same reason as the 'l' option.
-
- - The 's' option has been removed, as LOCKED semantics no longer exist in the
-   CDR engine.
-
-VMCOUNT:
- - Mailboxes defined by app_voicemail MUST be referenced by the rest of the
-   system as mailbox@context.  The rest of the system cannot add @default
-   to mailbox identifiers for app_voicemail that do not specify a context
-   any longer.  It is a mailbox identifier format that should only be
-   interpreted by app_voicemail.
-
-res_rtp_asterisk:
- - ICE/STUN/TURN support in res_rtp_asterisk has been made optional. To enable
-   them, an Asterisk-specific version of PJSIP needs to be installed.
-   Tarballs are available from https://github.com/asterisk/pjproject/tags/.
-
-From 11.6 to 11.7:
-ConfBridge
- - ConfBridge now has the ability to set the language of announcements to the
-   conference.  The language can be set on a bridge profile in confbridge.conf
-   or by the dialplan function CONFBRIDGE(bridge,language)=en.
-chan_sip - Clarify The "sip show peers" Forcerport Column And Add Comedia
- - Under the "Forcerport" column, the "N" used to mean NAT (i.e. Yes).  With
-   the additon of auto_* NAT settings, the meaning changed and there was a
-   certain combination of letters added to indicate the current setting. The
-   combination of using "Y", "N", "A" or "a", can be confusing.  Therefore, we
-   now display clearly what the current Forcerport setting is: "Yes", "No",
-   "Auto (Yes)", "Auto (No)".
- - Since we are clarifying the Forcerport column, we have added a column to
-   display the Comedia setting since this is useful information as well.  We
-   no longer have a simple "NAT" setting like other versions before 11.
-
-From 11.5 to 11.6:
-* res_agi will now properly indicate if there was an error in streaming an
-  audio file.  The result code will be -1 and the result returned from the
-  the function will be RESULT_FAILURE instead of the prior behavior of always
-  returning RESULT_SUCCESS even if there was an error.
-
-From 11.4 to 11.5:
-* The default settings for chan_sip are now overriden properly by the general
-  settings in sip.conf.  Please look over your settings upon upgrading.
-
-From 11.3 to 11.4:
-* Added the 'n' option to MeetMe to prevent application of the DENOISE function
-  to a channel joining a conference. Some channel drivers that vary the number
-  of audio samples in a voice frame will experience significant quality problems
-  if a denoiser is attached to the channel; this option gives them the ability
-  to remove the denoiser without having to unload func_speex.
-
-* The Registry AMI event for SIP registrations will now always include the
-  Username field. A previous bug fix missed an instance where it was not
-  included; that has been corrected in this release.
-
-From 11.2.0 to 11.2.1:
-* Asterisk would previously not output certain error messages when a remote
-  console attempted to connect to Asterisk and no instance of Asterisk was
-  running. This error message is displayed on stderr; as a result, some
-  initialization scripts that used remote consoles to test for the presence
-  of a running Asterisk instance started to display erroneous error messages.
-  The init.d scripts and the safe_asterisk have been updated in the contrib
-  folder to account for this.
-
-From 11.2 to 11.3:
-
-* Now by default, when Asterisk is installed in a path other than /usr, the
-  Asterisk binary will search for shared libraries in ${libdir} in addition to
-  searching system libraries. This allows Asterisk to find its shared
-  libraries without having to specify LD_LIBRARY_PATH. This can be disabled by
-  passing --disable-rpath to configure.
-
-From 10 to 11:
-
-Voicemail:
- - All voicemails now have a "msg_id" which uniquely identifies a message. For
-   users of filesystem and IMAP storage of voicemail, this should be transparent.
-   For users of ODBC, you will need to add a "msg_id" column to your voice mail
-   messages table. This should be a string capable of holding at least 32 characters.
-   All messages created in old Asterisk installations will have a msg_id added to
-   them when required. This operation should be transparent as well.
-
-Parking:
- - The comebacktoorigin setting must now be set per parking lot. The setting in
-   the general section will not be applied automatically to each parking lot.
- - The BLINDTRANSFER channel variable is deleted from a channel when it is
-   bridged to prevent subtle bugs in the parking feature.  The channel
-   variable is used by Asterisk internally for the Park application to work
-   properly.  If you were using it for your own purposes, copy it to your
-   own channel variable before the channel is bridged.
-
-res_ais:
- - Users of res_ais in versions of Asterisk prior to Asterisk 11 must change
-   to use the res_corosync module, instead.  OpenAIS is deprecated, but
-   Corosync is still actively developed and maintained.  Corosync came out of
-   the OpenAIS project.
-
-Dialplan Functions:
- - MAILBOX_EXISTS has been deprecated. Use VM_INFO with the 'exists' parameter
-   instead.
- - Macro has been deprecated in favor of GoSub.  For redirecting and connected
-   line purposes use the following variables instead of their macro equivalents:
-   REDIRECTING_SEND_SUB, REDIRECTING_SEND_SUB_ARGS,
-   CONNECTED_LINE_SEND_SUB, CONNECTED_LINE_SEND_SUB_ARGS.
- - The REDIRECTING function now supports the redirecting original party id
-   and reason.
- - The HANGUPCAUSE and HANGUPCAUSE_KEYS functions have been introduced to
-   provide a replacement for the SIP_CAUSE hash. The HangupCauseClear
-   application has also been introduced to remove this data from the channel
-   when necessary.
-
-
-func_enum:
- - ENUM query functions now return a count of -1 on lookup error to
-   differentiate between a failed query and a successful query with 0 results
-   matching the specified type.
-
-CDR:
- - cdr_adaptive_odbc now supports specifying a schema so that Asterisk can
-   connect to databases that use schemas.
-
-Configuration Files:
- - Files listed below have been updated to be more consistent with how Asterisk
-   parses configuration files.  This makes configuration files more consistent
-   with what is expected across modules.
-
-   - cdr.conf: [general] and [csv] sections
-   - dnsmgr.conf
-   - dsp.conf
-
- - The 'verbose' setting in logger.conf now takes an optional argument,
-   specifying the verbosity level for each logging destination.  The default,
-   if not otherwise specified, is a verbosity of 3.
-
-AMI:
-  - DBDelTree now correctly returns an error when 0 rows are deleted just as
-    the DBDel action does.
-  - The IAX2 PeerStatus event now sends a 'Port' header.  In Asterisk 10, this was
-    erroneously being sent as a 'Post' header.
-
-CCSS:
- - Macro is deprecated. Use cc_callback_sub instead of cc_callback_macro
-   in channel configurations.
-
-app_meetme:
-  - The 'c' option (announce user count) will now work even if the 'q' (quiet)
-    option is enabled.
-
-app_followme:
- - Answered outgoing calls no longer get cut off when the next step is started.
-   You now have until the last step times out to decide if you want to accept
-   the call or not before being disconnected.
-
-chan_gtalk:
- - chan_gtalk has been deprecated in favor of the chan_motif channel driver. It is recommended
-   that users switch to using it as it is a core supported module.
-
-chan_jingle:
- - chan_jingle has been deprecated in favor of the chan_motif channel driver. It is recommended
-   that users switch to using it as it is a core supported module.
-
-SIP
-===
- - A new option "tonezone" for setting default tonezone for the channel driver
-   or individual devices
- - A new manager event, "SessionTimeout" has been added and is triggered when
-   a call is terminated due to RTP stream inactivity or SIP session timer
-   expiration.
- - SIP_CAUSE is now deprecated.  It has been modified to use the same
-   mechanism as the HANGUPCAUSE function.  Behavior should not change, but
-   performance should be vastly improved.  The HANGUPCAUSE function should now
-   be used instead of SIP_CAUSE. Because of this, the storesipcause option in
-   sip.conf is also deprecated.
- - The sip paramater for Originating Line Information (oli, isup-oli, and
-   ss7-oli) is now parsed out of the From header and copied into the channel's
-   ANI2 information field.  This is readable from the CALLERID(ani2) dialplan
-   function.
- - ICE support has been added and is enabled by default. Some endpoints may have
-   problems with the ICE candidates within the SDP. If this is the case ICE support
-   can be disabled globally or on a per-endpoint basis using the icesupport
-   configuration option. Symptoms of this include one way media or no media flow.
-
-chan_unistim
- - Due to massive update in chan_unistim phone keys functions and on-screen
-   information changed.
-
-users.conf:
- - A defined user with hasvoicemail=yes now finally uses a Gosub to stdexten
-   as documented in extensions.conf.sample since v1.6.0 instead of a Macro as
-   documented in v1.4.  Set the asterisk.conf stdexten=macro parameter to
-   invoke the stdexten the old way.
-
-res_jabber
- - This module has been deprecated in favor of the res_xmpp module. The res_xmpp
-   module is backwards compatible with the res_jabber configuration file, dialplan
-   functions, and AMI actions. The old CLI commands can also be made available using
-   the res_clialiases template for Asterisk 11.
-
-From 1.8 to 10:
-
-cel_pgsql:
- - This module now expects an 'extra' column in the database for data added
-   using the CELGenUserEvent() application.
-
-ConfBridge
- - ConfBridge's dialplan arguments have changed and are not
-   backwards compatible.
-
-File Interpreters
- - The format interpreter formats/format_sln16.c for the file extension
-   '.sln16' has been removed. The '.sln16' file interpreter now exists
-   in the formats/format_sln.c module along with new support for sln12,
-   sln24, sln32, sln44, sln48, sln96, and sln192 file extensions.
-
-HTTP:
- - A bindaddr must be specified in order for the HTTP server
-   to run. Previous versions would default to 0.0.0.0 if no
-   bindaddr was specified.
-
-Gtalk:
- - The default value for 'context' and 'parkinglots' in gtalk.conf has
-   been changed to 'default', previously they were empty.
-
-chan_dahdi:
- - The mohinterpret=passthrough setting is deprecated in favor of
-   moh_signaling=notify.
-
-pbx_lua:
- - Execution no longer continues after applications that do dialplan jumps
-   (such as app.goto).  Now when an application such as app.goto() is called,
-   control is returned back to the pbx engine and the current extension
-   function stops executing.
- - the autoservice now defaults to being on by default
- - autoservice_start() and autoservice_start() no longer return a value.
-
-Queue:
- - Mark QUEUE_MEMBER_PENALTY Deprecated it never worked for realtime members
- - QUEUE_MEMBER is now R/W supporting setting paused, ignorebusy and penalty.
-
-Asterisk Database:
- - The internal Asterisk database has been switched from Berkeley DB 1.86 to
-   SQLite 3. An existing Berkeley astdb file can be converted with the astdb2sqlite3
-   utility in the UTILS section of menuselect. If an existing astdb is found and no
-   astdb.sqlite3 exists, astdb2sqlite3 will be compiled automatically. Asterisk will
-   convert an existing astdb to the SQLite3 version automatically at runtime. If
-   moving back from Asterisk 10 to Asterisk 1.8, the astdb2bdb utility can be used
-   to create a Berkeley DB copy of the SQLite3 astdb that Asterisk 10 uses.
-
-Manager:
- - The AMI protocol version was incremented to 1.2 as a result of changing two
-   instances of the Unlink event to Bridge events. This change was documented
-   as part of the AMI 1.1 update, but two Unlink events were inadvertently left
-   unchanged.
-
-Module Support Level
- - All modules in the addons, apps, bridge, cdr, cel, channels, codecs,
-   formats, funcs, pbx, and res have been updated to include MODULEINFO data
-   that includes <support_level> tags with a value of core, extended, or deprecated.
-   More information is available on the Asterisk wiki at
-   https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States
-
-   Deprecated modules are now marked to not build by default and must be explicitly
-   enabled in menuselect.
-
-chan_sip:
- - Setting of HASH(SIP_CAUSE,<slave-channel-name>) on channels is now disabled
-   by default. It can be enabled using the 'storesipcause' option. This feature
-   has a significant performance penalty.
-
-UDPTL:
- - The default UDPTL port range in udptl.conf.sample differed from the defaults
-   in the source. If you didn't have a config file, you got 4500 to 4599. Now the
-   default is 4000 to 4999.
-
-From 10.4 to 10.5:
-
-* The complex processor detection and optimization has been removed from
-  the makefile in favor of using native optimization support when available.
-  BUILD_NATIVE can be disabled via menuselect under "Compiler Flags".
-
-From 10.2 to 10.3:
-
-* If no transport is specified in sip.conf, transport will default to UDP.
-  Also, if multiple transport= lines are used, only the last will be used.
-
-From 1.8 to 10:
-
-cel_pgsql:
- - This module now expects an 'extra' column in the database for data added
-   using the CELGenUserEvent() application.
-
-ConfBridge
- - ConfBridge's dialplan arguments have changed and are not
-   backwards compatible.
-
-File Interpreters
- - The format interpreter formats/format_sln16.c for the file extension
-   '.sln16' has been removed. The '.sln16' file interpreter now exists
-   in the formats/format_sln.c module along with new support for sln12,
-   sln24, sln32, sln44, sln48, sln96, and sln192 file extensions.
-
-HTTP:
- - A bindaddr must be specified in order for the HTTP server
-   to run. Previous versions would default to 0.0.0.0 if no
-   bindaddr was specified.
-
-Gtalk:
- - The default value for 'context' and 'parkinglots' in gtalk.conf has
-   been changed to 'default', previously they were empty.
-
-chan_dahdi:
- - The mohinterpret=passthrough setting is deprecated in favor of
-   moh_signaling=notify.
-
-pbx_lua:
- - Execution no longer continues after applications that do dialplan jumps
-   (such as app.goto).  Now when an application such as app.goto() is called,
-   control is returned back to the pbx engine and the current extension
-   function stops executing.
- - the autoservice now defaults to being on by default
- - autoservice_start() and autoservice_start() no longer return a value.
-
-Queue:
- - Mark QUEUE_MEMBER_PENALTY Deprecated it never worked for realtime members
- - QUEUE_MEMBER is now R/W supporting setting paused, ignorebusy and penalty.
-
-Asterisk Database:
- - The internal Asterisk database has been switched from Berkeley DB 1.86 to
-   SQLite 3. An existing Berkeley astdb file can be converted with the astdb2sqlite3
-   utility in the UTILS section of menuselect. If an existing astdb is found and no
-   astdb.sqlite3 exists, astdb2sqlite3 will be compiled automatically. Asterisk will
-   convert an existing astdb to the SQLite3 version automatically at runtime.
-
-Module Support Level
- - All modules in the addons, apps, bridge, cdr, cel, channels, codecs,
-   formats, funcs, pbx, and res have been updated to include MODULEINFO data
-   that includes <support_level> tags with a value of core, extended, or deprecated.
-   More information is available on the Asterisk wiki at
-   https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States
-
-   Deprecated modules are now marked to not build by default and must be explicitly
-   enabled in menuselect.
-
-From 1.8.13 to 1.8.14:
-* permitdirectmedia/denydirectmedia now controls whether peers can be
-  bridged via directmedia by comparing the ACL to the bridging peer's
-  address rather than its own address.
-
-From 1.8.12 to 1.8.13:
-* The complex processor detection and optimization has been removed from
-  the makefile in favor of using native optimization support when available.
-  BUILD_NATIVE can be disabled via menuselect under "Compiler Flags".
-
-From 1.8.10 to 1.8.11:
-
-* If no transport is specified in sip.conf, transport will default to UDP.
-  Also, if multiple transport= lines are used, only the last will be used.
-
-From 1.6.2 to 1.8:
-
-* chan_sip no longer sets HASH(SIP_CAUSE,<chan name>) on channels by default.
-  This must now be enabled by setting 'sipstorecause' to 'yes' in sip.conf.
-  This carries a performance penalty.
-
-* Asterisk now requires libpri 1.4.11+ for PRI support.
-
-* A couple of CLI commands in res_ais were changed back to their original form:
-    "ais show clm members" --> "ais clm show members"
-    "ais show evt event channels" --> "ais evt show event channels"
-
-* The default value for 'autofill' and 'shared_lastcall' in queues.conf has
-  been changed to 'yes'.
-
-* The default value for the alwaysauthreject option in sip.conf has been changed
-  from "no" to "yes".
-
-* The behavior of the 'parkedcallstimeout' has changed slightly.  The formulation
-  of the extension name that a timed out parked call is delivered to when this
-  option is set to 'no' was modified such that instead of converting '/' to '0',
-  the '/' is converted to an underscore '_'.  See the updated documentation in
-  features.conf.sample for more information on the behavior of the
-  'parkedcallstimeout' option.
-
-* Asterisk-addons no longer exists as an independent package.  Those modules
-  now live in the addons directory of the main Asterisk source tree.  They
-  are not enabled by default.  For more information about why modules live in
-  addons, see README-addons.txt.
-
-* The rarely used 'event_log' and LOG_EVENT channel have been removed; the few
-  users of this channel in the tree have been converted to LOG_NOTICE or removed
-  (in cases where the same message was already generated to another channel).
-
-* The usage of RTP inside of Asterisk has now become modularized. This means
-  the Asterisk RTP stack now exists as a loadable module, res_rtp_asterisk.
-  If you are not using autoload=yes in modules.conf you will need to ensure
-  it is set to load. If not, then any module which uses RTP (such as chan_sip)
-  will not be able to send or receive calls.
-
-* The app_dahdiscan.c file has been removed, but the dialplan app DAHDIScan still
-  remains. It now exists within app_chanspy.c and retains the exact same
-  functionality as before.
-
-* The default behavior for Set, AGI, and pbx_realtime has been changed to implement
-  1.6 behavior by default, if there is no [compat] section in asterisk.conf.  In
-  prior versions, the behavior defaulted to 1.4 behavior, to assist in upgrades.
-  Specifically, that means that pbx_realtime and res_agi expect you to use commas
-  to separate arguments in applications, and Set only takes a single pair of
-  a variable name/value.  The old 1.4 behavior may still be obtained by setting
-  app_set, pbx_realtime, and res_agi each to 1.4 in the [compat] section of
-  asterisk.conf.
-
-* The PRI channels in chan_dahdi can no longer change the channel name if a
-  different B channel is selected during call negotiation.  To prevent using
-  the channel name to infer what B channel a call is using and to avoid name
-  collisions, the channel name format is changed.
-  The new channel naming for PRI channels is:
-  DAHDI/i<span>/<number>[:<subaddress>]-<sequence-number>
-
-* Added CHANNEL(dahdi_span), CHANNEL(dahdi_channel), and CHANNEL(dahdi_type)
-  so the dialplan can determine the B channel currently in use by the channel.
-  Use CHANNEL(no_media_path) to determine if the channel even has a B channel.
-
-* Added AMI event DAHDIChannel to associate a DAHDI channel with an Asterisk
-  channel so AMI applications can passively determine the B channel currently
-  in use.  Calls with "no-media" as the DAHDIChannel do not have an associated
-  B channel.  No-media calls are either on hold or call-waiting.
-
-* The ChanIsAvail application has been changed so the AVAILSTATUS variable
-  no longer contains both the device state and cause code. The cause code
-  is now available in the AVAILCAUSECODE variable. If existing dialplan logic
-  is written to expect AVAILSTATUS to contain the cause code it needs to be
-  changed to use AVAILCAUSECODE.
-
-* ExternalIVR will now send Z events for invalid or missing files, T events
-  now include the interrupted file and bugs in argument parsing have been
-  fixed so there may be arguments specified in incorrect ways that were
-  working that will no longer work. Please see
-  https://wiki.asterisk.org/wiki/display/AST/External+IVR+Interface for details.
-
-* OSP lookup application changes following variable names:
-  OSPPEERIP to OSPINPEERIP
-  OSPTECH to OSPOUTTECH
-  OSPDEST to OSPDESTINATION
-  OSPCALLING to OSPOUTCALLING
-  OSPCALLED to OSPOUTCALLED
-  OSPRESULTS to OSPDESTREMAILS
-
-* The Manager event 'iax2 show peers' output has been updated.  It now has a
-  similar output of 'sip show peers'.
-
-* VoiceMailMain and VMAuthenticate, if a '*' is entered in the first position
-  of a Mailbox or Password, will, if it exists, jump to the 'a' extension in
-  the current dialplan context.
-
-* The CALLERPRES() dialplan function is deprecated in favor of
-  CALLERID(num-pres) and CALLERID(name-pres).
-
-* Environment variables that start with "AST_" are reserved to the system and
-  may no longer be set from the dialplan.
-
-* When a call is redirected inside of a Dial, the app and appdata fields of the
-  CDR will now be set to "AppDial" and "(Outgoing Line)" instead of being blank.
-
-* The CDR handling of billsec and duration field has changed. If your table
-  definition specifies those fields as float,double or similar they will now
-  be logged with microsecond accuracy instead of a whole integer.
-
-* chan_sip will no longer set up a local call forward when receiving a
-  482 Loop Detected response. The dialplan will just continue from where it
-  left off.
-
-* The 'stunaddr' option has been removed from chan_sip.  This feature did not
-  behave as expected, had no correct use case, and was not RFC compliant. The
-  removal of this feature will hopefully be followed by a correct RFC compliant
-  STUN implementation in chan_sip in the future.
-
-* The default value for the pedantic option in sip.conf has been changed
-  from "no" to "yes".
-
-* The ConnectedLineNum and ConnectedLineName headers were added to many AMI
-  events/responses if the CallerIDNum/CallerIDName headers were also present.
-  The addition of connected line support changes the behavior of the channel
-  caller ID somewhat.  The channel caller ID value no longer time shares with
-  the connected line ID on outgoing call legs.  The timing of some AMI
-  events/responses output the connected line ID as caller ID.  These party ID's
-  are now separate.
-
-* The Dial application d and H options do not automatically answer the call
-  anymore.  It broke DTMF attended transfers.  Since many SIP and ISDN phones
-  cannot send DTMF before a call is connected, you need to answer the call
-  leg to those phones before using Dial with these options for them to have
-  any effect before the dialed party answers.
-
-* The outgoing directory (where .call files are read) now uses inotify to
-  detect file changes instead of polling the directory on a regular basis.
-  If your outgoing folder is on a NFS mount or another network file system,
-  changes to the files will not be detected.  You can revert to polling the
-  directory by specifying --without-inotify to configure before compiling.
-
-* The 'sipusers' realtime table has been removed completely. Use the 'sippeers'
-  table with type 'user' for user type objects.
-
-* The sip.conf allowoverlap option now accepts 'dtmf' as a value.  If you
-  are using the early media DTMF overlap dialing method you now need to set
-  allowoverlap=dtmf.
-
-From 1.6.1 to 1.6.2:
-
-* SIP no longer sends the 183 progress message for early media by
-  default.  Applications requiring early media should use the
-  progress() dialplan app to generate the progress message.
-
-* The firmware for the IAXy has been removed from Asterisk.  It can be
-  downloaded from http://downloads.digium.com/pub/iaxy/.  To have Asterisk
-  install the firmware into its proper location, place the firmware in the
-  contrib/firmware/iax/ directory in the Asterisk source tree before running
-  "make install".
-
-* T.38 FAX error correction mode can no longer be configured in udptl.conf;
-  instead, it is configured on a per-peer (or global) basis in sip.conf, with
-  the same default as was present in udptl.conf.sample.
-
-* T.38 FAX maximum datagram size can no longer be configured in updtl.conf;
-  instead, it is either supplied by the application servicing the T.38 channel
-  (for a FAX send or receive) or calculated from the bridged endpoint's
-  maximum datagram size (for a T.38 FAX passthrough call). In addition, sip.conf
-  allows for overriding the value supplied by a remote endpoint, which is useful
-  when T.38 connections are made to gateways that supply incorrectly-calculated
-  maximum datagram sizes.
-
-* There have been some changes to the IAX2 protocol to address the security
-  concerns documented in the security advisory AST-2009-006.  Please see the
-  IAX2 security document, doc/IAX2-security.pdf, for information regarding
-  backwards compatibility with versions of Asterisk that do not contain these
-  changes to IAX2.
-
-* The 'canreinvite' option support by the SIP, MGCP and Skinny channel drivers
-  has been renamed to 'directmedia', to better reflect what it actually does.
-  In the case of SIP, there are still re-INVITEs issued for T.38 negotiation,
-  starting and stopping music-on-hold, and other reasons, and the 'canreinvite'
-  option never had any effect on these cases, it only affected the re-INVITEs
-  used for direct media path setup. For MGCP and Skinny, the option was poorly
-  named because those protocols don't even use INVITE messages at all. For
-  backwards compatibility, the old option is still supported in both normal
-  and Realtime configuration files, but all of the sample configuration files,
-  Realtime/LDAP schemas, and other documentation refer to it using the new name.
-
-* The default console now will use colors according to the default background
-  color, instead of forcing the background color to black.  If you are using a
-  light colored background for your console, you may wish to use the option
-  flag '-W' to present better color choices for the various messages.  However,
-  if you'd prefer the old method of forcing colors to white text on a black
-  background, the compatibility option -B is provided for this purpose.
-
-* SendImage() no longer hangs up the channel on transmission error or on
-  any other error; in those cases, a FAILURE status is stored in
-  SENDIMAGESTATUS and dialplan execution continues.  The possible
-  return values stored in SENDIMAGESTATUS are: SUCCESS, FAILURE, and
-  UNSUPPORTED. ('OK' has been replaced with 'SUCCESS', and 'NOSUPPORT'
-  has been replaced with 'UNSUPPORTED').  This change makes the
-  SendImage application more consistent with other applications.
-
-* skinny.conf now has separate sections for lines and devices.
-  Please have a look at configs/skinny.conf.sample and update
-  your skinny.conf.
-
-* Queue names previously were treated in a case-sensitive manner,
-  meaning that queues with names like "sales" and "sALeS" would be
-  seen as unique queues. The parsing logic has changed to use
-  case-insensitive comparisons now when originally hashing based on
-  queue names, meaning that now the two queues mentioned as examples
-  earlier will be seen as having the same name.
-
-* The SPRINTF() dialplan function has been moved into its own module,
-  func_sprintf, and is no longer included in func_strings. If you use this
-  function and do not use 'autoload=yes' in modules.conf, you will need
-  to explicitly load func_sprintf for it to be available.
-
-* The res_indications module has been removed.  Its functionality was important
-  enough that most of it has been moved into the Asterisk core.
-  Two applications previously provided by res_indications, PlayTones and
-  StopPlayTones, have been moved into a new module, app_playtones.
-
-* Support for Taiwanese was incorrectly supported with the "tw" language code.
-  In reality, the "tw" language code is reserved for the Twi language, native
-  to Ghana.  If you were previously using the "tw" language code, you should
-  switch to using either "zh" (for Mandarin Chinese) or "zh_TW" for Taiwan
-  specific localizations.  Additionally, "mx" should be changed to "es_MX",
-  Georgian was incorrectly specified as "ge" but should be "ka", and Czech is
-  "cs", not "cz".
-
-* DAHDISendCallreroutingFacility() parameters are now comma-separated,
-  instead of the old pipe.
-
-* res_jabber: autoprune has been disabled by default, to avoid misconfiguration
-  that would end up being interpreted as a bug once Asterisk started removing
-  the contacts from a user list.
-
-* The cdr.conf file must exist and be configured correctly in order for CDR
-  records to be written.
-
-* cdr_pgsql now assumes the encoding of strings it is handed are in LATIN9,
-  which should cover most uses of the extended ASCII set.  If your strings
-  use a different encoding in Asterisk, the "encoding" parameter may be set
-  to specify the correct character set.
-
-From 1.6.0.1 to 1.6.1:
-
-* The ast_agi_register_multiple() and ast_agi_unregister_multiple()
-  API calls were added in 1.6.0, so that modules that provide multiple
-  AGI commands could register/unregister them all with a single
-  step. However, these API calls were not implemented properly, and did
-  not allow the caller to know whether registration or unregistration
-  succeeded or failed. They have been redefined to now return success
-  or failure, but this means any code using these functions will need
-  be recompiled after upgrading to a version of Asterisk containing
-  these changes. In addition, the source code using these functions
-  should be reviewed to ensure it can properly react to failure
-  of registration or unregistration of its API commands.
-
-* The ast_agi_fdprintf() API call has been renamed to ast_agi_send()
-  to better match what it really does, and the argument order has been
-  changed to be consistent with other API calls that perform similar
-  operations.
-
-From 1.6.0.x to 1.6.1:
-
-* In previous versions of Asterisk, due to the way objects were arranged in
-  memory by chan_sip, the order of entries in sip.conf could be adjusted to
-  control the behavior of matching against peers and users.  The way objects
-  are managed has been significantly changed for reasons involving performance
-  and stability.  A side effect of these changes is that the order of entries
-  in sip.conf can no longer be relied upon to control behavior.
-
-* The following core commands dealing with dialplan have been deprecated: 'core
-  show globals', 'core set global' and 'core set chanvar'. Use the equivalent
-  'dialplan show globals', 'dialplan set global' and 'dialplan set chanvar'
-  instead.
-
-* In the dialplan expression parser, the logical value of spaces
-  immediately preceding a standalone 0 previously evaluated to
-  true. It now evaluates to false.  This has confused a good many
-  people in the past (typically because they failed to realize the
-  space had any significance).  Since this violates the Principle of
-  Least Surprise, it has been changed.
-
-* While app_directory has always relied on having a voicemail.conf or users.conf file
-  correctly set up, it now is dependent on app_voicemail being compiled as well.
-
-* SIP: All of the functionality in SIPCHANINFO() has been implemented in CHANNEL(),
-  and you should start using that function instead for retrieving information about
-  the channel in a technology-agnostic way.
-
-* If you have any third party modules which use a config file variable whose
-  name ends in a '+', please note that the append capability added to this
-  version may now conflict with that variable naming scheme.  An easy
-  workaround is to ensure that a space occurs between the '+' and the '=',
-  to differentiate your variable from the append operator.  This potential
-  conflict is unlikely, but is documented here to be thorough.
-
-* The "Join" event from app_queue now uses the CallerIDNum header instead of
-  the CallerID header to indicate the CallerID number.
-
-* If you use ODBC storage for voicemail, there is a new field called "flag"
-  which should be a char(8) or larger.  This field specifies whether or not a
-  message has been designated to be "Urgent", "PRIORITY", or not.
-
-From 1.4 to 1.6:
-
-AEL:
-
-* Macros are now implemented underneath with the Gosub() application.
-  Heaven Help You if you wrote code depending on any aspect of this!
-  Previous to 1.6, macros were implemented with the Macro() app, which
-  provided a nice feature of auto-returning. The compiler will do its
-  best to insert a Return() app call at the end of your macro if you did
-  not include it, but really, you should make sure that all execution
-  paths within your macros end in "return;".
-
-* The conf2ael program is 'introduced' in this release; it is in a rather
-  crude state, but deemed useful for making a first pass at converting
-  extensions.conf code into AEL. More intelligence will come with time.
-
-Core:
-
-* The 'languageprefix' option in asterisk.conf is now deprecated, and
-  the default sound file layout for non-English sounds is the 'new
-  style' layout introduced in Asterisk 1.4 (and used by the automatic
-  sound file installer in the Makefile).
-
-* The ast_expr2 stuff has been modified to handle floating-point numbers.
-  Numbers of the format D.D are now acceptable input for the expr parser,
-  Where D is a string of base-10 digits. All math is now done in "long double",
-  if it is available on your compiler/architecture. This was half-way between
-  a bug-fix (because the MATH func returns fp by default), and an enhancement.
-  Also, for those counting on, or needing, integer operations, a series of
-  'functions' were also added to the expr language, to allow several styles
-  of rounding/truncation, along with a set of common floating point operations,
-  like sin, cos, tan, log, pow, etc. The ability to call external functions
-  like CDR(), etc. was also added, without having to use the ${...} notation.
-
-* The delimiter passed to applications has been changed to the comma (','), as
-  that is what people are used to using within extensions.conf.  If you are
-  using realtime extensions, you will need to translate your existing dialplan
-  to use this separator.  To use a literal comma, you need merely to escape it
-  with a backslash ('\').  Another possible side effect is that you may need to
-  remove the obscene level of backslashing that was necessary for the dialplan
-  to work correctly in 1.4 and previous versions.  This should make writing
-  dialplans less painful in the future, albeit with the pain of a one-time
-  conversion.  If you would like to avoid this conversion immediately, set
-  pbx_realtime=1.4 in the [compat] section of asterisk.conf.  After
-  transitioning, set pbx_realtime=1.6 in the same section.
-
-* For the same purpose as above, you may set res_agi=1.4 in the [compat]
-  section of asterisk.conf to continue to use the '|' delimiter in the EXEC
-  arguments of AGI applications.  After converting to use the ',' delimiter,
-  change this option to res_agi=1.6.
-
-* As a side effect of the application delimiter change, many places that used
-  to need quotes in order to get the proper meaning are no longer required.
-  You now only need to quote strings in configuration files if you literally
-  want quotation marks within a string.
-
-* Any applications run that contain the pipe symbol but not a comma symbol will
-  get a warning printed to the effect that the application delimiter has changed.
-  However, there are legitimate reasons why this might be useful in certain
-  situations, so this warning can be turned off with the dontwarn option in
-  asterisk.conf.
-
-* The logger.conf option 'rotatetimestamp' has been deprecated in favor of
-  'rotatestrategy'.  This new option supports a 'rotate' strategy that more
-  closely mimics the system logger in terms of file rotation.
-
-* The concise versions of various CLI commands are now deprecated. We recommend
-  using the manager interface (AMI) for application integration with Asterisk.
-
-Voicemail:
-
-* The voicemail configuration values 'maxmessage' and 'minmessage' have
-  been changed to 'maxsecs' and 'minsecs' to clarify their purpose and
-  to make them more distinguishable from 'maxmsgs', which sets folder
-  size.  The old variables will continue to work in this version, albeit
-  with a deprecation warning.
-
-* If you use any interface for modifying voicemail aside from the built in
-  dialplan applications, then the option "pollmailboxes" *must* be set in
-  voicemail.conf for message waiting indication (MWI) to work properly.  This
-  is because Voicemail notification is now event based instead of polling
-  based.  The channel drivers are no longer responsible for constantly manually
-  checking mailboxes for changes so that they can send MWI information to users.
-  Examples of situations that would require this option are web interfaces to
-  voicemail or an email client in the case of using IMAP storage.
-
-Applications:
-
-
-* ChanIsAvail() now has a 't' option, which allows the specified device
-  to be queried for state without consulting the channel drivers. This
-  performs mostly a 'ChanExists' sort of function.
-
-* ChannelRedirect() will not terminate the channel that fails to do a
-  channelredirect as it has done previously. Instead CHANNELREDIRECT_STATUS
-  will reflect if the attempt was successful of not.
-
-* SetCallerPres() has been replaced with the CALLERPRES() dialplan function
-  and is now deprecated.
-
-* DISA()'s fifth argument is now an options argument.  If you have previously
-  used 'NOANSWER' in this argument, you'll need to convert that to the new
-  option 'n'.
-
-* Macro() is now deprecated.  If you need subroutines, you should use the
-  Gosub()/Return() applications.  To replace MacroExclusive(), we have
-  introduced dialplan functions LOCK(), TRYLOCK(), and UNLOCK().  You may use
-  these functions in any location where you desire to ensure that only one
-  channel is executing that path at any one time.  The Macro() applications
-  are deprecated for performance reasons.  However, since Macro() has been
-  around for a long time and so many dialplans depend heavily on it, for the
-  sake of backwards compatibility it will not be removed .  It is also worth
-  noting that using both Macro() and GoSub() at the same time is _heavily_
-  discouraged.
-
-* Read() now sets a READSTATUS variable on exit.  It does NOT automatically
-  return -1 (and hangup) anymore on error.  If you want to hangup on error,
-  you need to do so explicitly in your dialplan.
-
-* Privacy() no longer uses privacy.conf, so any options must be specified
-  directly in the application arguments.
-
-* MusicOnHold application now has duration parameter which allows specifying
-  timeout in seconds.
-
-* WaitMusicOnHold application is now deprecated in favor of extended MusicOnHold.
-
-* SetMusicOnHold is now deprecated. You should use Set(CHANNEL(musicclass)=...)
-  instead.
-
-* The arguments in ExecIf changed a bit, to be more like other applications.
-  The syntax is now ExecIf(<cond>?appiftrue(args):appiffalse(args)).
-
-* The behavior of the Set application now depends upon a compatibility option,
-  set in asterisk.conf.  To use the old 1.4 behavior, which allowed Set to take
-  multiple key/value pairs, set app_set=1.4 in [compat] in asterisk.conf.  To
-  use the new behavior, which permits variables to be set with embedded commas,
-  set app_set=1.6 in [compat] in asterisk.conf.  Note that you can have both
-  behaviors at the same time, if you switch to using MSet if you want the old
-  behavior.
-
-Dialplan Functions:
-
-* QUEUE_MEMBER_COUNT() has been deprecated in favor of the QUEUE_MEMBER() function. For
-  more information, issue a "show function QUEUE_MEMBER" from the CLI.
-
-CDR:
-
-* The cdr_sqlite module has been marked as deprecated in favor of
-  cdr_sqlite3_custom.  It will potentially be removed from the tree
-  after Asterisk 1.6 is released.
-
-* The cdr_odbc module now uses res_odbc to manage its connections.  The
-  username and password parameters in cdr_odbc.conf, therefore, are no
-  longer used.  The dsn parameter now points to an entry in res_odbc.conf.
-
-* The uniqueid field in the core Asterisk structure has been changed from a
-  maximum 31 character field to a 149 character field, to account for all
-  possible values the systemname prefix could be.  In the past, if the
-  systemname was too long, the uniqueid would have been truncated.
-
-* The cdr_tds module now supports all versions of FreeTDS that contain
-  the db-lib frontend.  It will also now log the userfield variable if
-  the target database table contains a column for it.
-
-Formats:
-
-* format_wav: The GAIN preprocessor definition and source code that used it
-  is removed.  This change was made in response to user complaints of
-  choppiness or the clipping of loud signal peaks.  To increase the volume
-  of voicemail messages, use the 'volgain' option in voicemail.conf
-
-Channel Drivers:
-
-* SIP: a small upgrade to support the "Record" button on the SNOM360,
-  which sends a sip INFO message with a "Record: on" or "Record: off"
-  header. If Asterisk is set up (via features.conf) to accept "One Touch Monitor"
-  requests (by default, via '*1'), then the user-configured dialpad sequence
-  is generated, and recording can be started and stopped via this button. The
-  file names and formats are all controlled via the normal mechanisms. If the
-  user has not configured the automon feature, the normal "415 Unsupported media type"
-  is returned, and nothing is done.
-
-* SIP: The "call-limit" option is marked as deprecated. It still works in this version of
-  Asterisk, but will be removed in the following version. Please use the groupcount functions
-  in the dialplan to enforce call limits. The "limitonpeer" configuration option is
-  now renamed to "counteronpeer".
-
-* SIP: The "username" option is now renamed to "defaultuser" to match "defaultip".
-  These are used only before registration to call a peer with the uri
-       sip:defaultuser@defaultip
-  The "username" setting still work, but is deprecated and will not work in
-  the next version of Asterisk.
-
-* SIP: The old "insecure" options, deprecated in 1.4, have been removed.
-  "insecure=very" should be changed to "insecure=port,invite"
-  "insecure=yes" should be changed to "insecure=port"
-  Be aware that some telephony providers show the invalid syntax in their
-  sample configurations.
-
-* chan_local.c: the comma delimiter inside the channel name has been changed to a
-  semicolon, in order to make the Local channel driver compatible with the comma
-  delimiter change in applications.
-
-* H323: The "tos" setting has changed name to "tos_audio" and "cos" to "cos_audio"
-  to be compatible with settings in sip.conf. The "tos" and "cos" configuration
-  is deprecated and will stop working in the next release of Asterisk.
-
-* Console: A new console channel driver, chan_console, has been added to Asterisk.
-  This new module can not be loaded at the same time as chan_alsa or chan_oss.  The
-  default modules.conf only loads one of them (chan_oss by default).  So, unless you
-  have modified your modules.conf to not use the autoload option, then you will need
-  to modify modules.conf to add another "noload" line to ensure that only one of
-  these three modules gets loaded.
-
-* DAHDI: The chan_zap module that supported PSTN interfaces using
-  Zaptel has been renamed to chan_dahdi, and only supports the DAHDI
-  telephony driver package for PSTN interfaces. See the
-  Zaptel-to-DAHDI.txt file for more details on this transition.
-
-* DAHDI: The "msdstrip" option has been deprecated, as it provides no value over
-  the method of stripping digits in the dialplan using variable substring syntax.
-
-Configuration:
-
-* pbx_dundi.c: tos parameter changed to use new values. Old values like lowdelay,
-  lowcost and other is not acceptable now. Look into qos.tex for description of
-  this parameter.
-
-* queues.conf: the queue-lessthan sound file option is no longer available, and the
-  queue-round-seconds option no longer takes '1' as a valid parameter.
-
-Manager:
-
-* Manager has been upgraded to version 1.1 with a lot of changes.
-  Please check doc/manager_1_1.txt for information
-
-* The IAXpeers command output has been changed to more closely resemble the
-  output of the SIPpeers command.
-
-* cdr_manager now reports at the "cdr" level, not at "call"  You may need to
-   change your manager.conf to add the level to existing AMI users, if they
-   want to see the CDR events generated.
-
-* The Originate command now requires the Originate write permission.  For
-   Originate with the Application parameter, you need the additional System
-   privilege if you want to do anything that calls out to a subshell.
-
-iLBC Codec:
-
-* Previously, the Asterisk source code distribution included the iLBC
-  encoder/decoder source code, from Global IP Solutions
-  (http://www.gipscorp.com). This code is not licensed for
-  distribution, and thus has been removed from the Asterisk source
-  code distribution. If you wish to use codec_ilbc to support iLBC
-  channels in Asterisk, you can run the contrib/scripts/get_ilbc_source.sh
-  script to download the source and put it in the proper place in
-  the Asterisk build tree. Once that is done you can follow your normal
-  steps of building Asterisk. You will need to run 'menuselect' and enable
-  the iLBC codec in the 'Codec  Translators' category.
-
-From 1.2 to 1.4:
-
-Build Process (configure script):
-
-Asterisk now uses an autoconf-generated configuration script to learn how it
-should build itself for your system. As it is a standard script, running:
-
-$ ./configure --help
-
-will show you all the options available. This script can be used to tell the
-build process what libraries you have on your system (if it cannot find them
-automatically), which libraries you wish to have ignored even though they may
-be present, etc.
-
-You must run the configure script before Asterisk will build, although it will
-attempt to automatically run it for you with no options specified; for most
-users, that will result in a similar build to what they would have had before
-the configure script was added to the build process (except for having to run
-'make' again after the configure script is run). Note that the configure script
-does NOT need to be re-run just to rebuild Asterisk; you only need to re-run it
-when your system configuration changes or you wish to build Asterisk with
-different options.
-
-Build Process (module selection):
-
-The Asterisk source tree now includes a basic module selection and build option
-selection tool called 'menuselect'. Run 'make menuselect' to make your choices.
-In this tool, you can disable building of modules that you don't care about,
-turn on/off global options for the build and see which modules will not
-(and cannot) be built because your system does not have the required external
-dependencies installed.
-
-The resulting file from menuselect is called 'menuselect.makeopts'. Note that
-the resulting menuselect.makeopts file generally contains which modules *not*
-to build. The modules listed in this file indicate which modules have unmet
-dependencies, a present conflict, or have been disabled by the user in the
-menuselect interface. Compiler Flags can also be set in the menuselect
-interface.  In this case, the resulting file contains which CFLAGS are in use,
-not which ones are not in use.
-
-If you would like to save your choices and have them applied against all
-builds, the file can be copied to '~/.asterisk.makeopts' or
-'/etc/asterisk.makeopts'.
-
-Build Process (Makefile targets):
-
-The 'valgrind' and 'dont-optimize' targets have been removed; their functionality
-is available by enabling the DONT_OPTIMIZE setting in the 'Compiler Flags' menu
-in the menuselect tool.
-
-It is now possible to run most make targets against a single subdirectory; from
-the top level directory, for example, 'make channels' will run 'make all' in the
-'channels' subdirectory. This also is true for 'clean', 'distclean' and 'depend'.
-
-Sound (prompt) and Music On Hold files:
-
-Beginning with Asterisk 1.4, the sound files and music on hold files supplied for
-use with Asterisk have been replaced with new versions produced from high quality
-master recordings, and are available in three languages (English, French and
-Spanish) and in five formats (WAV (uncompressed), mu-Law, a-Law, GSM and G.729).
-In addition, the music on hold files provided by opsound.org Music are now available
-in the same five formats, but no longer available in MP3 format.
-
-The Asterisk 1.4 tarball packages will only include English prompts in GSM format,
-(as were supplied with previous releases) and the opsound.org MOH files in WAV format.
-All of the other variations can be installed by running 'make menuselect' and
-selecting the packages you wish to install; when you run 'make install', those
-packages will be downloaded and installed along with the standard files included
-in the tarball.
-
-If for some reason you expect to not have Internet access at the time you will be
-running 'make install', you can make your package selections using menuselect and
-then run 'make sounds' to download (only) the sound packages; this will leave the
-sound packages in the 'sounds' subdirectory to be used later during installation.
-
-WARNING: Asterisk 1.4 supports a new layout for sound files in multiple languages;
-instead of the alternate-language files being stored in subdirectories underneath
-the existing files (for French, that would be digits/fr, letters/fr, phonetic/fr,
-etc.) the new layout creates one directory under /var/lib/asterisk/sounds for the
-language itself, then places all the sound files for that language under that
-directory and its subdirectories. This is the layout that will be created if you
-select non-English languages to be installed via menuselect, HOWEVER Asterisk does
-not default to this layout and will not find the files in the places it expects them
-to be. If you wish to use this layout, make sure you put 'languageprefix=yes' in your
-/etc/asterisk/asterisk.conf file, so that Asterisk will know how the files were
-installed.
-
-PBX Core:
-
-* The (very old and undocumented) ability to use BYEXTENSION for dialing
-  instead of ${EXTEN} has been removed.
-
-* Builtin (res_features) transfer functionality attempts to use the context
-  defined in TRANSFER_CONTEXT variable of the transferer channel first. If
-  not set, it uses the transferee variable. If not set in any channel, it will
-  attempt to use the last non macro context. If not possible, it will default
-  to the current context.
-
-* The autofallthrough setting introduced in Asterisk 1.2 now defaults to 'yes';
-  if your dialplan relies on the ability to 'run off the end' of an extension
-  and wait for a new extension without using WaitExten() to accomplish that,
-  you will need set autofallthrough to 'no' in your extensions.conf file.
-
-Command Line Interface:
-
-* 'show channels concise', designed to be used by applications that will parse
-  its output, previously used ':' characters to separate fields. However, some
-  of those fields can easily contain that character, making the output not
-  parseable. The delimiter has been changed to '!'.
-
-Applications:
-
-* In previous Asterisk releases, many applications would jump to priority n+101
-  to indicate some kind of status or error condition.  This functionality was
-  marked deprecated in Asterisk 1.2.  An option to disable it was provided with
-  the default value set to 'on'.  The default value for the global priority
-  jumping option is now 'off'.
-
-* The applications Cut, Sort, DBGet, DBPut, SetCIDNum, SetCIDName, SetRDNIS,
-  AbsoluteTimeout, DigitTimeout, ResponseTimeout, SetLanguage, GetGroupCount,
-  and GetGroupMatchCount were all deprecated in version 1.2, and therefore have
-  been removed in this version.  You should use the equivalent dialplan
-  function in places where you have previously used one of these applications.
-
-* The application SetGlobalVar has been deprecated.  You should replace uses
-  of this application with the following combination of Set and GLOBAL():
-  Set(GLOBAL(name)=value).  You may also access global variables exclusively by
-  using the GLOBAL() dialplan function, instead of relying on variable
-  interpolation falling back to globals when no channel variable is set.
-
-* The application SetVar has been renamed to Set.  The syntax SetVar was marked
-  deprecated in version 1.2 and is no longer recognized in this version.  The
-  use of Set with multiple argument pairs has also been deprecated.  Please
-  separate each name/value pair into its own dialplan line.
-
-* app_read has been updated to use the newer options codes, using "skip" or
-  "noanswer" will not work.  Use s or n.  Also there is a new feature i, for
-  using indication tones, so typing in skip would give you unexpected results.
-
-* OSPAuth is added to authenticate OSP tokens in in_bound call setup messages.
-
-* The CONNECT event in the queue_log from app_queue now has a second field
-  in addition to the holdtime field. It contains the unique ID of the
-  queue member channel that is taking the call. This is useful when trying
-  to link recording filenames back to a particular call from the queue.
-
-* The old/current behavior of app_queue has a serial type behavior
-  in that the queue will make all waiting callers wait in the queue
-  even if there is more than one available member ready to take
-  calls until the head caller is connected with the member they
-  were trying to get to. The next waiting caller in line then
-  becomes the head caller, and they are then connected with the
-  next available member and all available members and waiting callers
-  waits while this happens. This cycle continues until there are
-  no more available members or waiting callers, whichever comes first.
-  The new behavior, enabled by setting autofill=yes in queues.conf
-  either at the [general] level to default for all queues or
-  to set on a per-queue level, makes sure that when the waiting
-  callers are connecting with available members in a parallel fashion
-  until there are no more available members or no more waiting callers,
-  whichever comes first. This is probably more along the lines of how
-  one would expect a queue should work and in most cases, you will want
-  to enable this new behavior. If you do not specify or comment out this
-  option, it will default to "no" to keep backward compatability with the old
-  behavior.
-
-* Queues depend on the channel driver reporting the proper state
-  for each member of the queue. To get proper signalling on
-  queue members that use the SIP channel driver, you need to
-  enable a call limit (could be set to a high value so it
-  is not put into action) and also make sure that both inbound
-  and outbound calls are accounted for.
-
-  Example:
-
-       [general]
-       limitonpeer = yes
-
-       [peername]
-       type=friend
-       call-limit=10
-
-
-* The app_queue application now has the ability to use MixMonitor to
-  record conversations queue members are having with queue callers. Please
-  see configs/queues.conf.sample for more information on this option.
-
-* The app_queue application strategy called 'roundrobin' has been deprecated
-  for this release. Users are encouraged to use 'rrmemory' instead, since it
-  provides more 'true' round-robin call delivery. For the Asterisk 1.6 release,
-  'rrmemory' will be renamed 'roundrobin'.
-
-* The app_queue application option called 'monitor-join' has been deprecated
-  for this release. Users are encouraged to use 'monitor-type=mixmonitor' instead,
-  since it provides the same functionality but is not dependent on soxmix or some
-  other external program in order to mix the audio.
-
-* app_meetme: The 'm' option (monitor) is renamed to 'l' (listen only), and
-  the 'm' option now provides the functionality of "initially muted".
-  In practice, most existing dialplans using the 'm' flag should not notice
-  any difference, unless the keypad menu is enabled, allowing the user
-  to unmute themselves.
-
-* ast_play_and_record would attempt to cancel the recording if a DTMF
-  '0' was received.  This behavior was not documented in most of the
-  applications that used ast_play_and_record and the return codes from
-  ast_play_and_record weren't checked for properly.
-  ast_play_and_record has been changed so that '0' no longer cancels a
-  recording.  If you want to allow DTMF digits to cancel an
-  in-progress recording use ast_play_and_record_full which allows you
-  to specify which DTMF digits can be used to accept a recording and
-  which digits can be used to cancel a recording.
-
-* ast_app_messagecount has been renamed to ast_app_inboxcount.  There is now a
-  new ast_app_messagecount function which takes a single context/mailbox/folder
-  mailbox specification and returns the message count for that folder only.
-  This addresses the deficiency of not being able to count the number of
-  messages in folders other than INBOX and Old.
-
-* The exit behavior of the AGI applications has changed. Previously, when
-  a connection to an AGI server failed, the application would cause the channel
-  to immediately stop dialplan execution and hangup. Now, the only time that
-  the AGI applications will cause the channel to stop dialplan execution is
-  when the channel itself requests hangup. The AGI applications now set an
-  AGISTATUS variable which will allow you to find out whether running the AGI
-  was successful or not.
-
-  Previously, there was no way to handle the case where Asterisk was unable to
-  locally execute an AGI script for some reason. In this case, dialplan
-  execution will continue as it did before, but the AGISTATUS variable will be
-  set to "FAILURE".
-
-  A locally executed AGI script can now exit with a non-zero exit code and this
-  failure will be detected by Asterisk. If an AGI script exits with a non-zero
-  exit code, the AGISTATUS variable will be set to "FAILURE" as opposed to
-  "SUCCESS".
-
-* app_voicemail: The ODBC_STORAGE capability now requires the extended table format
-  previously used only by EXTENDED_ODBC_STORAGE. This means that you will need to update
-  your table format using the schema provided in doc/odbcstorage.txt
-
-* app_waitforsilence: Fixes have been made to this application which changes the
-  default behavior with how quickly it returns. You can maintain "old-style" behavior
-  with the addition/use of a third "timeout" parameter.
-  Please consult the application documentation and make changes to your dialplan
-  if appropriate.
-
-Manager:
-
-* After executing the 'status' manager action, the "Status" manager events
-  included the header "CallerID:" which was actually only the CallerID number,
-  and not the full CallerID string.  This header has been renamed to
-  "CallerIDNum".  For compatibility purposes, the CallerID parameter will remain
-  until after the release of 1.4, when it will be removed.  Please use the time
-  during the 1.4 release to make this transition.
-
-* The AgentConnect event now has an additional field called "BridgedChannel"
-  which contains the unique ID of the queue member channel that is taking the
-  call. This is useful when trying to link recording filenames back to
-  a particular call from the queue.
-
-* app_userevent has been modified to always send Event: UserEvent with the
-  additional header UserEvent: <userspec>.  Also, the Channel and UniqueID
-  headers are not automatically sent, unless you specify them as separate
-  arguments.  Please see the application help for the new syntax.
-
-* app_meetme: Mute and Unmute events are now reported via the Manager API.
-  Native Manager API commands MeetMeMute and MeetMeUnmute are provided, which
-  are easier to use than "Action Command:". The MeetMeStopTalking event has
-  also been deprecated in favor of the already existing MeetmeTalking event
-  with a "Status" of "on" or "off" added.
-
-* OriginateFailure and OriginateSuccess events were replaced by event
-  OriginateResponse with a header named "Response" to indicate success or
-  failure
-
-Variables:
-
-* The builtin variables ${CALLERID}, ${CALLERIDNAME}, ${CALLERIDNUM},
-  ${CALLERANI}, ${DNID}, ${RDNIS}, ${DATETIME}, ${TIMESTAMP}, ${ACCOUNTCODE},
-  and ${LANGUAGE} have all been deprecated in favor of their related dialplan
-  functions.  You are encouraged to move towards the associated dialplan
-  function, as these variables will be removed in a future release.
-
-* The CDR-CSV variables uniqueid, userfield, and basing time on GMT are now
-  adjustable from cdr.conf, instead of recompiling.
-
-* OSP applications exports several new variables, ${OSPINHANDLE},
-  ${OSPOUTHANDLE}, ${OSPINTOKEN}, ${OSPOUTTOKEN}, ${OSPCALLING},
-  ${OSPINTIMELIMIT}, and ${OSPOUTTIMELIMIT}
-
-* Builtin transfer functionality sets the variable ${TRANSFERERNAME} in the new
-  created channel. This variables holds the channel name of the transferer.
-
-* The dial plan variable PRI_CAUSE will be removed from future versions
-  of Asterisk.
-  It is replaced by adding a cause value to the hangup() application.
-
-Functions:
-
-* The function ${CHECK_MD5()} has been deprecated in favor of using an
-  expression: $[${MD5(<string>)} = ${saved_md5}].
-
-* The 'builtin' functions that used to be combined in pbx_functions.so are
-  now built as separate modules. If you are not using 'autoload=yes' in your
-  modules.conf file then you will need to explicitly load the modules that
-  contain the functions you want to use.
-
-* The ENUMLOOKUP() function with the 'c' option (for counting the number of
-  records), but the lookup fails to match any records, the returned value will
-  now be "0" instead of blank.
-
-* The REALTIME() function is now available in version 1.4 and app_realtime has
-  been deprecated in favor of the new function. app_realtime will be removed
-  completely with the version 1.6 release so please take the time between
-  releases to make any necessary changes
-
-* The QUEUEAGENTCOUNT() function has been deprecated in favor of
-  QUEUE_MEMBER_COUNT().
-
-The IAX2 channel:
-
-* It is possible that previous configurations depended on the order in which
-  peers and users were specified in iax.conf for forcing the order in which
-  chan_iax2 matched against them.  This behavior is going away and is considered
-  deprecated in this version.  Avoid having ambiguous peer and user entries and
-  to make things easy on yourself, always set the "username" option for users
-  so that the remote end can match on that exactly instead of trying to infer
-  which user you want based on host.
-
-  If you would like to go ahead and use the new behavior which doesn't use the
-  order in the config file to influence matching order, then change the
-  MAX_PEER_BUCKETS define in chan_iax2.c to a value greater than one.  An
-  example is provided there.  By changing this, you will get *much* better
-  performance on systems that do a lot of peer and user lookups as they will be
-  stored in memory in a much more efficient manner.
-
-* The "mailboxdetail" option has been deprecated.  Previously, if this option
-  was not enabled, the 2 byte MSGCOUNT information element would be set to all
-  1's to indicate there there is some number of messages waiting.  With this
-  option enabled, the number of new messages were placed in one byte and the
-  number of old messages are placed in the other.  This is now the default
-  (and the only) behavior.
-
-The SIP channel:
-
-* The "incominglimit" setting is replaced by the "call-limit" setting in
-  sip.conf.
-
-* OSP support code is removed from SIP channel to OSP applications. ospauth
-  option in sip.conf is removed to osp.conf as authpolicy. allowguest option
-  in sip.conf cannot be set as osp anymore.
-
-* The Asterisk RTP stack has been changed in regards to RFC2833 reception
-  and transmission. Packets will now be sent with proper duration instead of all
-  at once. If you are receiving calls from a pre-1.4 Asterisk installation you
-  will want to turn on the rfc2833compensate option. Without this option your
-  DTMF reception may act poorly.
-
-* The $SIPUSERAGENT dialplan variable is deprecated and will be removed
-  in coming versions of Asterisk. Please use the dialplan function
-  SIPCHANINFO(useragent) instead.
-
-* The ALERT_INFO dialplan variable is deprecated and will be removed
-  in coming versions of Asterisk. Please use the dialplan application
-  sipaddheader() to add the "Alert-Info" header to the outbound invite.
-
-* The "canreinvite" option has changed. canreinvite=yes used to disable
-  re-invites if you had NAT=yes. In 1.4, you need to set canreinvite=nonat
-  to disable re-invites when NAT=yes. This is propably what you want.
-  The settings are now: "yes", "no", "nonat", "update". Please consult
-  sip.conf.sample for detailed information.
-
-The Zap channel:
-
-* Support for MFC/R2 has been removed, as it has not been functional for some
-  time and it has no maintainer.
-
-The Agent channel:
-
-* Callback mode (AgentCallbackLogin) is now deprecated, since the entire function
-  it provided can be done using dialplan logic, without requiring additional
-  channel and module locks (which frequently caused deadlocks). An example of
-  how to do this using AEL dialplan is in doc/queues-with-callback-members.txt.
-
-The G726-32 codec:
-
-* It has been determined that previous versions of Asterisk used the wrong codeword
-  packing order for G726-32 data. This version supports both available packing orders,
-  and can transcode between them. It also now selects the proper order when
-  negotiating with a SIP peer based on the codec name supplied in the SDP. However,
-  there are existing devices that improperly request one order and then use another;
-  Sipura and Grandstream ATAs are known to do this, and there may be others. To
-  be able to continue to use these devices with this version of Asterisk and the
-  G726-32 codec, a configuration parameter called 'g726nonstandard' has been added
-  to sip.conf, so that Asterisk can use the packing order expected by the device (even
-  though it requested a different order). In addition, the internal format number for
-  G726-32 has been changed, and the old number is now assigned to AAL2-G726-32. The
-  result of this is that this version of Asterisk will be able to interoperate over
-  IAX2 with older versions of Asterisk, as long as this version is told to allow
-  'g726aal2' instead of 'g726' as the codec for the call.
-
-Installation:
-
-* On BSD systems, the installation directories have changed to more "FreeBSDish"
-  directories. On startup, Asterisk will look for the main configuration in
-  /usr/local/etc/asterisk/asterisk.conf
-  If you have an old installation, you might want to remove the binaries and
-  move the configuration files to the new locations. The following directories
-  are now default:
-       ASTLIBDIR       /usr/local/lib/asterisk
-       ASTVARLIBDIR    /usr/local/share/asterisk
-       ASTETCDIR       /usr/local/etc/asterisk
-       ASTBINDIR       /usr/local/bin/asterisk
-       ASTSBINDIR      /usr/local/sbin/asterisk
-
-Music on Hold:
-
-* The music on hold handling has been changed in some significant ways in hopes
-  to make it work in a way that is much less confusing to users. Behavior will
-  not change if the same configuration is used from older versions of Asterisk.
-  However, there are some new configuration options that will make things work
-  in a way that makes more sense.
-
-  Previously, many of the channel drivers had an option called "musicclass" or
-  something similar. This option set what music on hold class this channel
-  would *hear* when put on hold. Some people expected (with good reason) that
-  this option was to configure what music on hold class to play when putting
-  the bridged channel on hold. This option has now been deprecated.
-
-  Two new music on hold related configuration options for channel drivers have
-  been introduced. Some channel drivers support both options, some just one,
-  and some support neither of them. Check the sample configuration files to see
-  which options apply to which channel driver.
-
-  The "mohsuggest" option specifies which music on hold class to suggest to the
-  bridged channel when putting them on hold. The only way that this class can
-  be overridden is if the bridged channel has a specific music class set that
-  was done in the dialplan using Set(CHANNEL(musicclass)=something).
-
-  The "mohinterpret" option is similar to the old "musicclass" option. It
-  specifies which music on hold class this channel would like to listen to when
-  put on hold. This music class is only effective if this channel has no music
-  class set on it from the dialplan and the bridged channel putting this one on
-  hold had no "mohsuggest" setting.
-
-  The IAX2 and Zap channel drivers have an additional feature for the
-  "mohinterpret" option. If this option is set to "passthrough", then these
-  channel drivers will pass through the HOLD message in signalling instead of
-  starting music on hold on the channel. An example for how this would be
-  useful is in an enterprise network of Asterisk servers. When one phone on one
-  server puts a phone on a different server on hold, the remote server will be
-  responsible for playing the hold music to its local phone that was put on
-  hold instead of the far end server across the network playing the music.
-
-CDR Records:
-
-* The behavior of the "clid" field of the CDR has always been that it will
-  contain the callerid ANI if it is set, or the callerid number if ANI was not
-  set.  When using the "callerid" option for various channel drivers, some
-  would set ANI and some would not.  This has been cleared up so that all
-  channel drivers set ANI.  If you would like to change the callerid number
-  on the channel from the dialplan and have that change also show up in the
-  CDR, then you *must* set CALLERID(ANI) as well as CALLERID(num).
-
-API:
-
-* There are some API functions that were not previously prefixed with the 'ast_'
-  prefix but now are; these include the ADSI, ODBC and AGI interfaces. If you
-  have a module that uses the services provided by res_adsi, res_odbc, or
-  res_agi, you will need to add ast_ prefixes to the functions that you call
-  from those modules.
-
-Formats:
-
-* format_wav: The GAIN preprocessor definition has been changed from 2 to 0
-  in Asterisk 1.4.  This change was made in response to user complaints of
-  choppiness or the clipping of loud signal peaks.  The GAIN preprocessor
-  definition will be retained in Asterisk 1.4, but will be removed in a
-  future release.  The use of GAIN for the increasing of voicemail message
-  volume should use the 'volgain' option in voicemail.conf
-
-From 1.0 to 1.2:
-
-Compiling:
-
-* The Asterisk 1.2 source code now uses C language features
-  supported only by 'modern' C compilers.  Generally, this means GCC
-  version 3.0 or higher, although some GCC 2.96 releases will also
-  work.  Some non-GCC compilers that support C99 and the common GCC
-  extensions (including anonymous structures and unions) will also
-  work.  All releases of GCC 2.95 do _not_ have the requisite feature
-  support; systems using that compiler will need to be upgraded to
-  a more recent compiler release.
-
-Dialplan Expressions:
-
-* The dialplan expression parser (which handles $[ ... ] constructs)
-  has gone through a major upgrade, but has one incompatible change:
-  spaces are no longer required around expression operators, including
-  string comparisons. However, you can now use quoting to keep strings
-  together for comparison. For more details, please read the
-  doc/README.variables file, and check over your dialplan for possible
-  problems.
-
-Agents:
-
-* The default for ackcall has been changed to "no" instead of "yes"
-  because of a bug which caused the "yes" behavior to generally act like
-  "no".  You may need to adjust the value if your agents behave
-  differently than you expect with respect to acknowledgement.
-
-* The AgentCallBackLogin application now requires a second '|' before
-  specifying an extension@context.  This is to distinguish the options
-  string from the extension, so that they do not conflict.  See
-  'show application AgentCallbackLogin' for more details.
-
-Parking:
-
-* Parking behavior has changed slightly; when a parked call times out,
-  Asterisk will attempt to deliver the call back to the extension that
-  parked it, rather than the 's' extension. If that extension is busy
-  or unavailable, the parked call will be lost.
-
-Dialing:
-
-* The Caller*ID of the outbound leg is now the extension that was
-  called, rather than the Caller*ID of the inbound leg of the call.  The
-  "o" flag for Dial can be used to restore the original behavior if
-  desired.  Note that if you are looking for the originating callerid
-  from the manager event, there is a new manager event "Dial" which
-  provides the source and destination channels and callerid.
-
-IAX:
-
-* The naming convention for IAX channels has changed in two ways:
-   1. The call number follows a "-" rather than a "/" character.
-   2. The name of the channel has been simplified to IAX2/peer-callno,
-   rather than IAX2/peer@peer-callno or even IAX2/peer@peer/callno.
-
-SIP:
-
-* The global option "port" in 1.0.X that is used to set which port to
-  bind to has been changed to "bindport" to be more consistent with
-  the other channel drivers and to avoid confusion with the "port"
-  option for users/peers.
-
-* The "Registry" event now uses "Username" rather than "User" for
-  consistency with IAX.
-
-Applications:
-
-* With the addition of dialplan functions (which operate similarly
-  to variables), the SetVar application has been renamed to Set.
-
-* The CallerPres application has been removed.  Use SetCallerPres
-  instead.  It accepts both numeric and symbolic names.
-
-* The applications GetGroupCount, GetGroupMatchCount, SetGroup, and
-  CheckGroup have been deprecated in favor of functions.  Here is a
-  table of their replacements:
-
-  GetGroupCount([groupname][@category]        GROUP_COUNT([groupname][@category])      Set(GROUPCOUNT=${GROUP_COUNT()})
-  GroupMatchCount(groupmatch[@category])       GROUP_MATCH_COUNT(groupmatch[@category])        Set(GROUPCOUNT=${GROUP_MATCH_COUNT(SIP/.*)})
-  SetGroup(groupname[@category])              GROUP([category])=groupname              Set(GROUP()=test)
-  CheckGroup(max[@category])                  N/A                                      GotoIf($[ ${GROUP_COUNT()} > 5 ]?103)
-
-  Note that CheckGroup does not have a direct replacement.  There is
-  also a new function called GROUP_LIST() which will return a space
-  separated list of all of the groups set on a channel.  The GROUP()
-  function can also return the name of the group set on a channel when
-  used in a read environment.
-
-* The applications DBGet and DBPut have been deprecated in favor of
-  functions.  Here is a table of their replacements:
-
-  DBGet(foo=family/key)        Set(foo=${DB(family/key)})
-  DBPut(family/key=${foo})     Set(DB(family/key)=${foo})
-
-* The application SetLanguage has been deprecated in favor of the
-  function LANGUAGE().
-
-  SetLanguage(fr)              Set(LANGUAGE()=fr)
-
-  The LANGUAGE function can also return the currently set language:
-
-  Set(MYLANG=${LANGUAGE()})
-
-* The applications AbsoluteTimeout, DigitTimeout, and ResponseTimeout
-  have been deprecated in favor of the function TIMEOUT(timeouttype):
-
-  AbsoluteTimeout(300)         Set(TIMEOUT(absolute)=300)
-  DigitTimeout(15)             Set(TIMEOUT(digit)=15)
-  ResponseTimeout(15)          Set(TIMEOUT(response)=15)
-
-  The TIMEOUT() function can also return the currently set timeouts:
-
-  Set(DTIMEOUT=${TIMEOUT(digit)})
-
-* The applications SetCIDName, SetCIDNum, and SetRDNIS have been
-  deprecated in favor of the CALLERID(datatype) function:
-
-  SetCIDName(Joe Cool)         Set(CALLERID(name)=Joe Cool)
-  SetCIDNum(2025551212)                Set(CALLERID(number)=2025551212)
-  SetRDNIS(2024561414)         Set(CALLERID(RDNIS)=2024561414)
-
-* The application Record now uses the period to separate the filename
-  from the format, rather than the colon.
-
-* The application VoiceMail now supports a 'temporary' greeting for each
-  mailbox. This greeting can be recorded by using option 4 in the
-  'mailbox options' menu, and 'change your password' option has been
-  moved to option 5.
-
-* The application VoiceMailMain now only matches the 'default' context if
-  none is specified in the arguments.  (This was the previously
-  documented behavior, however, we didn't follow that behavior.)  The old
-  behavior can be restored by setting searchcontexts=yes in voicemail.conf.
-
-Queues:
-
-* A queue is now considered empty not only if there are no members but if
-  none of the members are available (e.g. agents not logged on).  To
-  restore the original behavior, use "leavewhenempty=strict" or
-  "joinwhenempty=strict" instead of "=yes" for those options.
-
-* It is now possible to use multi-digit extensions in the exit context
-  for a queue (although you should not have overlapping extensions,
-  as there is no digit timeout). This means that the EXITWITHKEY event
-  in queue_log can now contain a key field with more than a single
-  character in it.
-
-Extensions:
-
-* By default, there is a new option called "autofallthrough" in
-  extensions.conf that is set to yes.  Asterisk 1.0 (and earlier)
-  behavior was to wait for an extension to be dialed after there were no
-  more extensions to execute.  "autofallthrough" changes this behavior
-  so that the call will immediately be terminated with BUSY,
-  CONGESTION, or HANGUP based on Asterisk's best guess.  If you are
-  writing an extension for IVR, you must use the WaitExten application
-  if "autofallthrough" is set to yes.
-
-AGI:
-
-* AGI scripts did not always get SIGHUP at the end, previously.  That
-  behavior has been fixed.  If you do not want your script to terminate
-  at the end of AGI being called (e.g. on a hangup) then set SIGHUP to
-  be ignored within your application.
-
-* CallerID is reported with agi_callerid and agi_calleridname instead
-  of a single parameter holding both.
-
-Music On Hold:
-
-* The preferred format for musiconhold.conf has changed; please see the
-  sample configuration file for the new format. The existing format
-  is still supported but will generate warnings when the module is loaded.
-
-chan_modem:
-
-* All the chan_modem channel drivers (aopen, bestdata and i4l) are deprecated
-  in this release, and will be removed in the next major Asterisk release.
-  Please migrate to chan_misdn for ISDN interfaces; there is no upgrade
-  path for aopen and bestdata modem users.
-
-MeetMe:
-
-* The conference application now allows users to increase/decrease their
-  speaking volume and listening volume (independently of each other and
-  other users); the 'admin' and 'user' menus have changed, and new sound
-  files are included with this release. However, if a user calling in
-  over a Zaptel channel that does NOT have hardware DTMF detection
-  increases their speaking volume, it is likely they will no longer be
-  able to enter/exit the menu or make any further adjustments, as the
-  software DTMF detector will not be able to recognize the DTMF coming
-  from their device.
-
-GetVar Manager Action:
-
-* Previously, the behavior of the GetVar manager action reported the value
-  of a variable in the following manner:
-   > name: value
-  This has been changed to a manner similar to the SetVar action and is now
-   > Variable: name
-   > Value: value