===
==============================================================================
+------------------------------------------------------------------------------
+--- 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 --------------------------
------------------------------------------------------------------------------
===
===========================================================
+------------------------------------------------------------------------------
+--- New functionality introduced in Asterisk 19.0.0 --------------------------
+------------------------------------------------------------------------------
+
+Log Rotate
+------------------
+ * The sample logger files have been changed to have .log as their file
+ extension. This was done so that when attached to issues on the issue
+ tracker, they are able to be opened in the browser for convenience.
+ Because of this, the asterisk.logrotate script has been updated to look
+ for .log extensions instead of no extension for files such as full
+ and messages.
+
+chan_sip
+------------------
+ * chan_sip is no longer built by default. To build it, make sure to
+ enable it when running 'make menuselect'
+
+------------------------------------------------------------------------------
+--- Functionality changes from Asterisk 18.0.0 to Asterisk 19.0.0 ------------
+------------------------------------------------------------------------------
+
+STIR/SHAKEN
+------------------
+ * The configuration option public_key_url in stir_shaken.conf
+ has been renamed to public_cert_url to better fit what it
+ contains. Only the name has changed - functionality is the
+ same.
+
+ * STIR/SHAKEN originally needed an origid to be specified in
+ stir_shaken.conf under the certificate config object in
+ order to work. Now, one is automatically created by
+ generating a UUID, as recommended by RFC8588. Any origid
+ you have in your stir_shaken.conf will need to be removed
+ for the module to read in certificates.
+
+menuselect
+------------------
+ * menuselect --enable, --disable, --enable-category and --disable-category will
+ now fail with a non-zero exit code instead of silently failing if an invalid
+ option or category is specified.
+
+res_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 --------------------------
------------------------------------------------------------------------------
+++ /dev/null
-Subject: 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".
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: 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.
-
+++ /dev/null
-Subject: app_dial announcement option
-
-The A option for Dial now supports
-playing audio to the caller as well
-as the called party.
-
+++ /dev/null
-Subject: Add variable support to Originate
-
-The Originate application now allows
-variables to be set on the new channel
-through a new option.
-
+++ /dev/null
-Subject: New Reload application
-
-Adds an application to reload modules
-
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: WaitForCondition application
-
-This application provides a way to halt
-dialplan execution until a provided
-condition evaluates to true.
+++ /dev/null
-Subject: chan_iax2
-
-You can now specify a default "auth" method in the
-[general] section of iax.conf
+++ /dev/null
-Subject: AMI Flash event
-
-Hook flash events are now exposed as AMI events.
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: func_volume now can be read
-
-The VOLUME function can now also be used
-to read existing values previously set.
+++ /dev/null
-Subject: 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.
-
+++ /dev/null
-Subject: logger
-
-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)
+++ /dev/null
-Subject: 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
+++ /dev/null
-Subject: Core
-
-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.
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: app_mixmonitor
-
-app_mixmonitor now sends manager events MixMonitorStart, MixMonitorStop and
-MixMonitorMute when the channel monitoring is started, stopped and muted (or
-unmuted) respectively.
+++ /dev/null
-Subject: res_pjsip
-
-PJSIP endpoints can now be configured to skip authentication when
-handling OPTIONS requests by setting the allow_unauthenticated_options
-configuration property to 'yes.'
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: res_pjsip
-
-PJSIP transports can now be partially reloaded safely. This allows the
-local_net and external_* options to be updated without restarting Asterisk.
+++ /dev/null
-Subject: res_pjsip
-
-PJSIP support of registrations of endpoints in multidomain
-scenarios, where the endpoint contains the domain info
-in pjsip_endpoint.conf
+++ /dev/null
-Subject: 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.
+++ /dev/null
-res_pjsip_dtmf_info: Hook flash
-
-Adds recognition for application/
-hook-flash as a hook flash event.
-
+++ /dev/null
-Subject: 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
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: 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".
+++ /dev/null
-Subject: app_voicemail
-
-You can now customize the "beep" tone or omit it entirely.
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: Log Rotate
-Master-Only: True
-
-The sample logger files have been changed to have .log as their file
-extension. This was done so that when attached to issues on the issue
-tracker, they are able to be opened in the browser for convenience.
-Because of this, the asterisk.logrotate script has been updated to look
-for .log extensions instead of no extension for files such as full
-and messages.
+++ /dev/null
-Subject: chan_sip
-Master-Only: True
-
-chan_sip is no longer built by default. To build it, make sure to
-enable it when running 'make menuselect'
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: 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".
+++ /dev/null
-Subject: 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.
+++ /dev/null
-Subject: STIR/SHAKEN
-
-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.