|
|
|
@ -12,6 +12,278 @@
|
|
|
|
|
===
|
|
|
|
|
==============================================================================
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
--- Functionality changes from Asterisk 18.0.0 to Asterisk 19.0.0 ------------
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
AMI Flash event
|
|
|
|
|
------------------
|
|
|
|
|
* Hook flash events are now exposed as AMI events.
|
|
|
|
|
|
|
|
|
|
Add variable support to Originate
|
|
|
|
|
------------------
|
|
|
|
|
* The Originate application now allows
|
|
|
|
|
variables to be set on the new channel
|
|
|
|
|
through a new option.
|
|
|
|
|
|
|
|
|
|
Core
|
|
|
|
|
------------------
|
|
|
|
|
* Added debug logging categories that allow a user to output debug information
|
|
|
|
|
based on a specified category. This lets the user limit, and filter debug
|
|
|
|
|
output to data relevant to a particular context, or topic. For instance the
|
|
|
|
|
following categories are now available for debug logging purposes:
|
|
|
|
|
|
|
|
|
|
dtls, dtls_packet, ice, rtcp, rtcp_packet, rtp, rtp_packet, stun, stun_packet
|
|
|
|
|
|
|
|
|
|
These debug categories can be enable/disable via an Asterisk CLI command:
|
|
|
|
|
|
|
|
|
|
core set debug category <category>[:<sublevel>] [category[:<sublevel] ...]
|
|
|
|
|
core set debug category off [<category> [<category>] ...]
|
|
|
|
|
|
|
|
|
|
If no sub-level is associated all debug statements for a given category are
|
|
|
|
|
output. If a sub-level is given then only those statements assigned a value
|
|
|
|
|
at or below the associated sub-level are output.
|
|
|
|
|
|
|
|
|
|
* The location where the media cache stores its temporary files
|
|
|
|
|
is no longer hardcoded to /tmp but can now be configured separately
|
|
|
|
|
via the astcachedir config variable in asterisk.conf.
|
|
|
|
|
|
|
|
|
|
The default location for astcachedir is now /var/cache/asterisk
|
|
|
|
|
instead of /tmp, please make sure to manually cleanup and/or
|
|
|
|
|
migrate the temporary files in /tmp after upgrading.
|
|
|
|
|
|
|
|
|
|
MessageSend
|
|
|
|
|
------------------
|
|
|
|
|
* The MessageSend dialplan application now takes an
|
|
|
|
|
optional third argument that can set the message's
|
|
|
|
|
"To" field on outgoing messages. It's an alternative
|
|
|
|
|
to using the MESSAGE(to) dialplan function.
|
|
|
|
|
|
|
|
|
|
To prevent confusion with the first argument, currently
|
|
|
|
|
named "to", it's been renamed to "destination".
|
|
|
|
|
Its function, creating the request URI, hasn't changed.
|
|
|
|
|
|
|
|
|
|
The online documentation has also been enhanced to
|
|
|
|
|
explain the behavior.
|
|
|
|
|
|
|
|
|
|
Despite the changes in this commit, there should be
|
|
|
|
|
no impact to current users of MessageSend.
|
|
|
|
|
|
|
|
|
|
New ConfKick application
|
|
|
|
|
------------------
|
|
|
|
|
* Adds a ConfKick() application, which allows
|
|
|
|
|
a specific channel, all users, or all non-admin
|
|
|
|
|
users to be kicked from a conference bridge.
|
|
|
|
|
|
|
|
|
|
New Reload application
|
|
|
|
|
------------------
|
|
|
|
|
* Adds an application to reload modules
|
|
|
|
|
|
|
|
|
|
PlaybackFinished has a new error state
|
|
|
|
|
------------------
|
|
|
|
|
* The PlaybackFinished event now has a new state "failed"
|
|
|
|
|
that is used when the sound file was not played due to an error.
|
|
|
|
|
Before the state on PlaybackFinished was always "done".
|
|
|
|
|
|
|
|
|
|
In case of multiple sound files to be played,
|
|
|
|
|
the PlaybackFinished is sent only once in the end of the list,
|
|
|
|
|
even in case of error.
|
|
|
|
|
|
|
|
|
|
WaitForCondition application
|
|
|
|
|
------------------
|
|
|
|
|
* This application provides a way to halt
|
|
|
|
|
dialplan execution until a provided
|
|
|
|
|
condition evaluates to true.
|
|
|
|
|
|
|
|
|
|
app_confbridge
|
|
|
|
|
------------------
|
|
|
|
|
* app_confbridge now has the ability to force the estimated bitrate on an SFU
|
|
|
|
|
bridge. To use it, set a bridge profile's remb_behavior to "force" and
|
|
|
|
|
set remb_estimated_bitrate to a rate in bits per second. The
|
|
|
|
|
remb_estimated_bitrate parameter is ignored if remb_behavior is something
|
|
|
|
|
other than "force".
|
|
|
|
|
|
|
|
|
|
app_confbridge answer supervision control
|
|
|
|
|
------------------
|
|
|
|
|
* app_confbridge now provides a user option to prevent
|
|
|
|
|
answer supervision if the channel hasn't been
|
|
|
|
|
answered yet. To use it, set a user profile's
|
|
|
|
|
answer_channel option to no.
|
|
|
|
|
|
|
|
|
|
app_dial announcement option
|
|
|
|
|
------------------
|
|
|
|
|
* The A option for Dial now supports
|
|
|
|
|
playing audio to the caller as well
|
|
|
|
|
as the called party.
|
|
|
|
|
|
|
|
|
|
app_mixmonitor
|
|
|
|
|
------------------
|
|
|
|
|
* app_mixmonitor now sends manager events MixMonitorStart, MixMonitorStop and
|
|
|
|
|
MixMonitorMute when the channel monitoring is started, stopped and muted (or
|
|
|
|
|
unmuted) respectively.
|
|
|
|
|
|
|
|
|
|
app_voicemail
|
|
|
|
|
------------------
|
|
|
|
|
* The VoiceMail application can now be configured to send greetings and
|
|
|
|
|
instructions via early media and only answering the channel when it is
|
|
|
|
|
time for the caller to record their message. This behavior can be
|
|
|
|
|
activated by passing the new 'e' option to VoiceMail.
|
|
|
|
|
|
|
|
|
|
* You can now customize the "beep" tone or omit it entirely.
|
|
|
|
|
|
|
|
|
|
chan_iax2
|
|
|
|
|
------------------
|
|
|
|
|
* You can now specify a default "auth" method in the
|
|
|
|
|
[general] section of iax.conf
|
|
|
|
|
|
|
|
|
|
chan_pjsip
|
|
|
|
|
------------------
|
|
|
|
|
* The PJSIP_SEND_SESSION_REFRESH dialplan function now issues a warning, and
|
|
|
|
|
returns unsuccessful if it's used on a channel prior to answering.
|
|
|
|
|
|
|
|
|
|
chan_pjsip, app_transfer
|
|
|
|
|
------------------
|
|
|
|
|
* Added TRANSFERSTATUSPROTOCOL variable. When transfer is performed,
|
|
|
|
|
transfers can pass a protocol specific error code.
|
|
|
|
|
Example, in SIP 3xx-6xx represent any SIP specific error received when
|
|
|
|
|
performing a REFER.
|
|
|
|
|
|
|
|
|
|
func_math: Three new dialplan functions
|
|
|
|
|
------------------
|
|
|
|
|
* Introduce three new functions, MIN, MAX, and ABS, which can be used to
|
|
|
|
|
obtain the minimum or maximum of up to two integers or absolute value.
|
|
|
|
|
|
|
|
|
|
func_odbc
|
|
|
|
|
------------------
|
|
|
|
|
* Introduce an ARGC variable for func_odbc functions, along with a minargs
|
|
|
|
|
per-function configuration option.
|
|
|
|
|
|
|
|
|
|
minargs enables enforcing of minimum count of arguments to pass to
|
|
|
|
|
func_odbc, so if you're unconditionally using ARG1 through ARG4 then
|
|
|
|
|
this should be set to 4. func_odbc will generate an error in this case,
|
|
|
|
|
so for example
|
|
|
|
|
|
|
|
|
|
[FOO]
|
|
|
|
|
minargs = 4
|
|
|
|
|
|
|
|
|
|
and ODBC_FOO(a,b,c) in dialplan will now error out instead of using a
|
|
|
|
|
potentially leaked ARG4 from Gosub().
|
|
|
|
|
|
|
|
|
|
ARGC is needed if you're using optional argument, to verify whether or
|
|
|
|
|
not an argument has been passed, else it's possible to use a leaked ARGn
|
|
|
|
|
from Gosub (app_stack). So now you can safely do
|
|
|
|
|
${IF($[${ARGC}>3]?${ARGV}:default value)} kind of thing.
|
|
|
|
|
|
|
|
|
|
func_volume now can be read
|
|
|
|
|
------------------
|
|
|
|
|
* The VOLUME function can now also be used
|
|
|
|
|
to read existing values previously set.
|
|
|
|
|
|
|
|
|
|
logger
|
|
|
|
|
------------------
|
|
|
|
|
* Added a new log formatter called "plain" that always prints
|
|
|
|
|
file, function and line number if available (even for verbose
|
|
|
|
|
messages) and never prints color control characters. Most
|
|
|
|
|
suitable for file output but can be used for other channels
|
|
|
|
|
as well.
|
|
|
|
|
|
|
|
|
|
You use it in logger.conf like so:
|
|
|
|
|
debug => [plain]debug
|
|
|
|
|
console => [plain]error,warning,debug,notice,pjsip_history
|
|
|
|
|
messages => [plain]warning,error,verbose
|
|
|
|
|
|
|
|
|
|
* The dateformat option in logger.conf will now control the remote
|
|
|
|
|
console (asterisk -r -T) timestamp format. Previously, dateformat only
|
|
|
|
|
controlled the formatting of the timestamp going to log files and the
|
|
|
|
|
main console (asterisk -c) but only for non-verbose messages.
|
|
|
|
|
|
|
|
|
|
Internally, Asterisk does not send the logging timestamp with verbose
|
|
|
|
|
messages to console clients. It's up to the Asterisk remote consoles
|
|
|
|
|
to format verbose messages. Asterisk remote consoles previously did
|
|
|
|
|
not load dateformat from logger.conf.
|
|
|
|
|
|
|
|
|
|
Previously there was a non-configurable and hard-coded "%b %e %T"
|
|
|
|
|
dateformat that would be used no matter what on all verbose console
|
|
|
|
|
messages printed on remote consoles.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
logger.conf
|
|
|
|
|
dateformat=%F %T.%3q
|
|
|
|
|
|
|
|
|
|
# asterisk -rvvv -T
|
|
|
|
|
[2021-03-19 09:54:19.760-0400] Loading res_stasis_answer.so.
|
|
|
|
|
[Mar 19 09:55:43] -- Goto (dialExten,s,1)
|
|
|
|
|
|
|
|
|
|
Given the following example configuration in logger.conf, Asterisk log
|
|
|
|
|
files and the console, will log verbose messages using the given
|
|
|
|
|
timestamp. Now ensuring that all remote console messages are logged
|
|
|
|
|
with the same dateformat as other log streams.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
[general]
|
|
|
|
|
dateformat=%F %T.%3q
|
|
|
|
|
|
|
|
|
|
[logfiles]
|
|
|
|
|
console => notice,warning,error,verbose
|
|
|
|
|
full => notice,warning,error,debug,verbose
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Now we have a globally-defined dateformat that will be used
|
|
|
|
|
consistently across the Asterisk main console, remote consoles, and
|
|
|
|
|
log files.
|
|
|
|
|
|
|
|
|
|
Now we have consistent logging:
|
|
|
|
|
|
|
|
|
|
# asterisk -rvvv -T
|
|
|
|
|
[2021-03-19 09:54:19.760-0400] Loading res_stasis_answer.so.
|
|
|
|
|
[2021-03-19 09:55:43.920-0400] -- Goto (dialExten,s,1)
|
|
|
|
|
|
|
|
|
|
res_pjsip
|
|
|
|
|
------------------
|
|
|
|
|
* PJSIP transports can now be partially reloaded safely. This allows the
|
|
|
|
|
local_net and external_* options to be updated without restarting Asterisk.
|
|
|
|
|
|
|
|
|
|
* PJSIP endpoints can now be configured to skip authentication when
|
|
|
|
|
handling OPTIONS requests by setting the allow_unauthenticated_options
|
|
|
|
|
configuration property to 'yes.'
|
|
|
|
|
|
|
|
|
|
* PJSIP support of registrations of endpoints in multidomain
|
|
|
|
|
scenarios, where the endpoint contains the domain info
|
|
|
|
|
in pjsip_endpoint.conf
|
|
|
|
|
|
|
|
|
|
res_pjsip_dialog_info_body_generator
|
|
|
|
|
------------------
|
|
|
|
|
* PJSIP now supports RFC 4235 Section 4.1.6 dialog-info+xml local and
|
|
|
|
|
remote elements by iterating through ringing channels and inserting
|
|
|
|
|
that info into NOTIFY packet sent to the endpoint.
|
|
|
|
|
|
|
|
|
|
res_pjsip_messaging
|
|
|
|
|
------------------
|
|
|
|
|
* Implemented the new "to" parameter of the MessageSend()
|
|
|
|
|
dialplan application. This allows a user to specify
|
|
|
|
|
a complete SIP "To" header separate from the Request URI.
|
|
|
|
|
We now also accept a destination in the same format
|
|
|
|
|
as Dial()... PJSIP/number@endpoint
|
|
|
|
|
|
|
|
|
|
res_rtp_asterisk
|
|
|
|
|
------------------
|
|
|
|
|
* By default Asterisk reports the PJSIP version in all
|
|
|
|
|
STUN packets it sends.
|
|
|
|
|
|
|
|
|
|
This behaviour may not be desired in a production
|
|
|
|
|
environment and can now be disabled by setting the
|
|
|
|
|
stun_software_attribute option to 'no' in rtp.conf.
|
|
|
|
|
|
|
|
|
|
res_srtp
|
|
|
|
|
------------------
|
|
|
|
|
* SRTP replay protection has been added to res_srtp and
|
|
|
|
|
a new configuration option "srtpreplayprotection" has
|
|
|
|
|
been added to the rtp.conf config file. For security
|
|
|
|
|
reasons, the default setting is "yes". Buggy clients
|
|
|
|
|
may not handle this correctly which could result in
|
|
|
|
|
no, or one way, audio and Asterisk error messages like
|
|
|
|
|
"replay check failed".
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
--- New functionality introduced in Asterisk 18.0.0 --------------------------
|
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|