bridge_native_rtp: Fix T.38 issues with remote bridges
[asterisk/asterisk.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 9c0312d..3191b6f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -9,9 +9,488 @@
 ==============================================================================
 
 ------------------------------------------------------------------------------
+--- 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 ------------
 ------------------------------------------------------------------------------
@@ -25,6 +504,15 @@ ARI
    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
@@ -44,22 +532,23 @@ chan_sip
      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 ------------
 ------------------------------------------------------------------------------
 
-Applications
---------------------------
+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'
- * Monitor() - A new option, B(), has been added that will turn on a periodic
-   beep while the call is being recorded.
-
-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.
 
 ChanSpy
 --------------------------
@@ -96,6 +585,11 @@ Directory
      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
@@ -123,6 +617,7 @@ 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.
 
@@ -137,20 +632,19 @@ chan_sip
    the Request URI will be stored in the SIPURIPHONECONTEXT channel variable on
    the inbound channel.
 
-Debugging
--------------------------
+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.
 
-Core
-------------------
- * Exposed sorcery-based configuration files like pjsip.conf to dialplans via
-   the new AST_SORCERY diaplan function.
-
 ARI
 ------------------
  * The live recording object on recording events now contains a target_uri
@@ -189,6 +683,17 @@ 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
@@ -1518,7 +2023,6 @@ sip_to_res_pjsip.py
    what the script provides will be needed.
 
 ------------------------------------------------------------------------------
->>>>>>> .merge-right.r412746
 --- Functionality changes from Asterisk 10 to Asterisk 11 --------------------
 ------------------------------------------------------------------------------
 
@@ -1894,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.