bridge_native_rtp: Fix T.38 issues with remote bridges
[asterisk/asterisk.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 381de61..3191b6f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -9,9 +9,552 @@
 ==============================================================================
 
 ------------------------------------------------------------------------------
+--- Functionality changes from Asterisk 13 to Asterisk 14 --------------------
+------------------------------------------------------------------------------
+
+Channel Drivers
+------------------
+
+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).
+
+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.
+
+Functions
+------------------
+
+CHANNEL
+------------------
+ * Added CHANNEL(onhold) item that returns 1 (onhold) and 0 (not-onhold) for
+   the hold status of a channel.
+
+
+Resources
+------------------
+
+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.
+
+
+------------------------------------------------------------------------------
 --- 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.
+
+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 inhereted 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
@@ -21,6 +564,305 @@ ConfBridge
    menus, bridge settings, and user settings that have been applied by the
    CONFBRIDGE dialplan function.
 
+ * The ConfBridge dialplan application now sets a channel variable,
+   CONFBRIGE_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 canflicts 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. Functionalty
+   such as SRV records and failover will not be available if system resolution
+   is in use.
+
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 11 to Asterisk 12 --------------------
 ------------------------------------------------------------------------------
@@ -144,6 +986,12 @@ AlarmReceiver
  * 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
@@ -350,6 +1198,12 @@ UserEvent
 
 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.
@@ -582,6 +1436,9 @@ AMI (Asterisk Manager Interface)
  * 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
@@ -834,6 +1691,12 @@ chan_dahdi
    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
@@ -980,6 +1843,14 @@ 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
 ------------------
@@ -1104,6 +1975,9 @@ res_pjsip (and many others)
    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
@@ -1148,7 +2022,6 @@ sip_to_res_pjsip.py
    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 --------------------
 ------------------------------------------------------------------------------
@@ -1525,6 +2398,15 @@ chan_skinny
 
 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.