2990 lines
140 KiB
Plaintext
2990 lines
140 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 18.15.0 to Asterisk 18.15.1 ----------
|
||
|
------------------------------------------------------------------------------
|
||
|
|
||
|
AMI (Asterisk Manager Interface)
|
||
|
------------------
|
||
|
* Previously, GetConfig and UpdateConfig were able to access files outside of
|
||
|
the Asterisk configuration directory. Now this access is put behind the
|
||
|
live_dangerously configuration option in asterisk.conf, which is disabled by
|
||
|
default. If access to configuration files outside of the Asterisk configuation
|
||
|
directory is required via AMI, then the live_dangerously configuration option
|
||
|
must be set to yes.
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
--- Functionality changes from Asterisk 18.14.0 to Asterisk 18.15.0 ----------
|
||
|
------------------------------------------------------------------------------
|
||
|
|
||
|
res_crypto
|
||
|
------------------
|
||
|
* In addition to only paying attention to files ending with .key or .pub
|
||
|
in the keys directory, we now also ignore any files which aren't regular
|
||
|
files.
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
--- Functionality changes from Asterisk 18.11.3 to Asterisk 18.12.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 18.10.0 to Asterisk 18.11.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 18.8.0 to Asterisk 18.9.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.
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
--- Functionality changes from Asterisk 18.7.0 to Asterisk 18.8.0 ------------
|
||
|
------------------------------------------------------------------------------
|
||
|
|
||
|
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.
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
--- Functionality changes from Asterisk 18.4.0 to Asterisk 18.5.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.
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
--- Functionality changes from Asterisk 18.3.0 to Asterisk 18.4.0 ------------
|
||
|
------------------------------------------------------------------------------
|
||
|
|
||
|
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.
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
--- Functionality changes from Asterisk 18.2.2 to Asterisk 18.3.0 ------------
|
||
|
------------------------------------------------------------------------------
|
||
|
|
||
|
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
|