mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			3129 lines
		
	
	
		
			143 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			3129 lines
		
	
	
		
			143 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ===========================================================
 | |
| ===
 | |
| === 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.
 | |
| ===
 | |
| ===========================================================
 | |
| 
 | |
| ------------------------------------------------------------------------------
 | |
| --- Functionality changes from Asterisk 19.4.0 to Asterisk 19.5.0 ------------
 | |
| ------------------------------------------------------------------------------
 | |
| 
 | |
| 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.
 | |
| 
 | |
| ------------------------------------------------------------------------------
 | |
| --- Functionality changes from Asterisk 19.2.0 to Asterisk 19.3.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.
 | |
| 
 | |
| ------------------------------------------------------------------------------
 | |
| --- Functionality changes from Asterisk 19.0.0 to Asterisk 19.1.0 ------------
 | |
| ------------------------------------------------------------------------------
 | |
| 
 | |
| 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.
 | |
| 
 | |
| ------------------------------------------------------------------------------
 | |
| --- 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.
 | |
| 
 | |
| app_dahdiras
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| app_fax
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| app_ices
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| app_image
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| app_meetme
 | |
| ------------------
 | |
|  * This module is now deprecated and will no
 | |
|    longer be built by default. It is scheduled
 | |
|    to be removed as of Asterisk 21.
 | |
| 
 | |
| app_mysql
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 1.8
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| app_nbscat
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| app_osplookup
 | |
| ------------------
 | |
|  * This module is now deprecated and will no
 | |
|    longer be built by default. It is scheduled
 | |
|    to be removed as of Asterisk 21.
 | |
| 
 | |
| app_url
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| cdr_mysql
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 1.8
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| cdr_syslog
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| chan_alsa
 | |
| ------------------
 | |
|  * This module is now deprecated and will no
 | |
|    longer be built by default. It is scheduled
 | |
|    to be removed as of Asterisk 21.
 | |
| 
 | |
| chan_mgcp
 | |
| ------------------
 | |
|  * This module is now deprecated and will no
 | |
|    longer be built by default. It is scheduled
 | |
|    to be removed as of Asterisk 21.
 | |
| 
 | |
| chan_misdn
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| chan_nbs
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| chan_oss
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| chan_phone
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| chan_sip
 | |
| ------------------
 | |
|  * chan_sip is no longer built by default. To build it, make sure to
 | |
|    enable it when running 'make menuselect'
 | |
| 
 | |
| chan_skinny
 | |
| ------------------
 | |
|  * This module is now deprecated and will no
 | |
|    longer be built by default. It is scheduled
 | |
|    to be removed as of Asterisk 21.
 | |
| 
 | |
| chan_vpb
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| conf2ael
 | |
| ------------------
 | |
|  * This application was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| muted
 | |
| ------------------
 | |
|  * This application was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| res_config_sqlite
 | |
| ------------------
 | |
|  * This module was deprecated in Asterisk 16
 | |
|    and is now being removed in accordance with
 | |
|    the Asterisk Module Deprecation policy.
 | |
| 
 | |
| 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.
 | |
| 
 | |
| res_pktccops
 | |
| ------------------
 | |
|  * This module is now deprecated and will no
 | |
|    longer be built by default. It is scheduled
 | |
|    to be removed as of Asterisk 21.
 | |
| 
 | |
| ------------------------------------------------------------------------------
 | |
| --- 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.
 | |
| 
 | |
| 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.
 | |
| 
 | |
| 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_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_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
 |