Skip to content
Snippets Groups Projects
CHANGES 372 KiB
Newer Older
==============================================================================
=== THIS FILE IS AUTOMATICALLY GENERATED DURING THE RELEASE
=== PROCESS. DO NOT MAKE CHANGES HERE. INSTEAD, REFER TO
=== doc/CHANGES-staging/README.md FOR MORE DETAILS.
===
=== This file documents the new and/or enhanced functionality added in
=== the Asterisk versions listed below. This file does NOT include
=== changes in behavior that would not be backwards compatible with
=== previous versions; for that information see the UPGRADE.txt file
=== and the other UPGRADE files for older releases.
===
==============================================================================
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 20.0.0 to Asterisk 20.1.0 ------------
------------------------------------------------------------------------------

AMI
------------------
 * The AOCMessage action can now be used to generate AOC-S messages.

Add support for named capture agent.
------------------
 * A name for the capture agent can now be specified
   using the capture_name option which, if specified,
   will be sent to the HEP server.

app_if
------------------
 * Adds the If, ElseIf, Else, EndIf, and ExitIf applications
   for conditional execution of a block of code.

app_mixmonitor
------------------
 * The d option for MixMonitor now allows deleting
   the original recording when MixMonitor exits,
   which can be useful when MixMonitor copies it
   somewhere else before exiting.

 * Adds the c option to use the real Caller ID on
   the channel in voicemail recordings as opposed
   to the Connected Line.

app_voicemail
------------------
 * The voicemail user option attachextrecs can
   now be set to control whether external recordings
   trigger voicemail email notifications.

cdr
------------------
 * Two new options have been added which allow
   bridging and dial state changes to be ignored
   in CDRs, which can be useful if a single CDR
   is desired for a channel.

chan_dahdi
------------------
 * FXO channels (FXS signaled) that don't use callerid or
   distinctive ring detection can now be configured
   to enter the dialplan immediately using immediate=yes,
   instead of waiting for at least one ring.

pbx_builtins
------------------
 * It is now possible to not wait for media on
   a channel when answering it using Answer,
   by specifying the i option.

res_pjsip
------------------
 * Added options "security_negotiation" and "security_mechanisms" to pjsip
   endpoints and registrations. "security_negotiation" can be set to "no" (default)
   or "mediasec", and "security_mechanisms" can be a list of comma-separated
   security_mechanisms in the form defined by RFC 3329 section 2.2.

 * A new option named "all_codecs_on_empty_reinvite" has been added to the
   global section. When this option is enabled, on reception of a re-INVITE
   without SDP, Asterisk will send an SDP offer in the 200 OK response containing
   all configured codecs on the endpoint, instead of simply those that have
   already been negotiated. RFC 3261 specifies this as a SHOULD requirement.
   The default value is "off".

res_pjsip_aoc
------------------
 * Added res_pjsip_aoc which gives chan_pjsip the ability to send Advice-of-Charge messages.
   A new endpoint option, send_aoc, controls this.

res_pjsip_header_funcs
------------------
 * The new PJSIP_HEADER_PARAM function now fully supports both
   URI and header parameters. Both reading and writing
   parameters are supported.

res_pjsip_logger
------------------
 * SIP messages can now be filtered by SIP request method
   (INVITE, CANCEL, ACK, BYE, REGISTER, OPTION,
   SUBSCRIBE, NOTIFY, PUBLISH, INFO, and MESSAGE),
   allowing for more granular debugging to be done
   in the CLI. This applies to requests but not responses.

res_pjsip_notify
------------------
 * Allows using the config options in pjsip_notify.conf
   from AMI actions as with the existing CLI commands.

res_tonedetect
------------------
 * The TONE_DETECT function now supports
   detection of audible ringback tone
   using the p option.

xmldocs
------------------
 * The XML documentation can now be reloaded without restarting
   Asterisk, which makes it possible to load new modules that
   enforce documentation without restarting Asterisk.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 19.0.0 to Asterisk 20.0.0 ------------
------------------------------------------------------------------------------

New EXPORT function
------------------
 * A new function, EXPORT, allows writing variables
   and functions on other channels, the complement
   of the IMPORT function.

app_amd
------------------
 * An audio file to play during AMD processing can
   now be specified to the AMD application or configured
   in the amd.conf configuration file.

app_bridgewait
------------------
 * Adds the n option to not answer the channel when
   the BridgeWait application is called.

features
------------------
 * The Bridge application now has the n "no answer" option
   that can be used to prevent the channel from being
   automatically answered prior to bridging.

func_strings
------------------
 * Three new functions, TRIM, LTRIM, and RTRIM, are
   now available for trimming leading and trailing
   whitespace.

res_pjsip
------------------
 * A new option named "peer_supported" has been added to the endpoint option
   100rel. When set to this option, Asterisk sends provisional responses
   reliably if the peer supports it. If the peer does not support reliable
   provisional responses, Asterisk sends them normally.

------------------------------------------------------------------------------
--- Functionality changes from Asterisk 19.0.0 to Asterisk 20.0.0 ------------
------------------------------------------------------------------------------

Transfer feature
------------------
 * The following capabilities have been added to the
   transfer feature:

   - The transfer initiation announcement prompt can
   now be customized in features.conf.

   - The TRANSFER_EXTEN variable now can be set on the
   transferer's channel in order to allow the transfer
   function to automatically attempt to go to the extension
   contained in this variable, if it exists. The transfer
   context behavior is not changed (TRANSFER_CONTEXT is used
   if it exists; otherwise the default context is used).

app_confbridge
------------------
 * Adds the end_marked_any option which can be used
   to kick users from a conference after any
   marked user leaves (including marked users).

db
------------------
 * The DBPrefixGet AMI action now allows retrieving
   all of the DB keys beginning with a particular
   prefix.

locks
------------------
 * A new AMI event, DeadlockStart, is now available
   when Asterisk is compiled with DETECT_DEADLOCKS,
   and can indicate that a deadlock has occured.

res_geolocation
------------------
 * * Added processing for the 'confidence' element.
   * Added documentation to some APIs.
   * removed a lot of complex code related to the very-off-nominal
     case of needing to process multiple location info sources.
   * Create a new 'ast_geoloc_eprofile_to_pidf' API that just takes
     one eprofile instead of a datastore of multiples.
   * Plugged a huge leak in XML processing that arose from
     insufficient documentation by the libxml/libxslt authors.
   * Refactored stylesheets to be more efficient.
   * Renamed 'profile_action' to 'profile_precedence' to better
     reflect it's purpose.
   * Added the config option for 'allow_routing_use' which
     sets the value of the 'Geolocation-Routing' header.
   * Removed the GeolocProfileCreate and GeolocProfileDelete
     dialplan apps.
   * Changed the GEOLOC_PROFILE dialplan function as follows:
     * Removed the 'profile' argument.
     * Automatically create a profile if it doesn't exist.
     * Delete a profile if 'inheritable' is set to no.
   * Fixed various bugs and leaks
   * Updated Asterisk WiKi documentation.

   Added 4 built-in profiles:
     "<prefer_config>"
     "<discard_config>"
     "<prefer_incoming>"
     "<discard_incoming>"
   The profiles are empty except for having their precedence
   set.

   Added profile parameter "suppress_empty_ca_elements" that
   will cause Civic Address elements that are empty to be
   suppressed from the outgoing PIDF-LO document.

   You can now specify the location object's format, location_info,
   method, location_source and confidence parameters directly on
   a profile object for simple scenarios where the location
   information isn't common with any other profiles.  This is
   mutually exclusive with setting location_reference on the
   profile.

   Added an 'a' option to the GEOLOC_PROFILE function to allow
   variable lists like location_info_refinement to be appended
   to instead of replacing the entire list.

   Added an 'r' option to the GEOLOC_PROFILE function to resolve all
   variables before a read operation and after a Set operation.

res_musiconhold_answeredonly
------------------
 * This change adds an option, answeredonly, that will prevent music
   on hold on channels that are not answered.

res_pjsip
------------------
 * TLS transports in res_pjsip can now reload their TLS certificate
   and private key files, provided the filename of them has not
   changed.

259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748
Applications
------------------
 * added support for Danish syntax, playing the correct plural sound file
   dependen on where you have 1 or multipe messages
   based on the existing SE/NO code

 * added that we set DIALEDPEERNUMBER on the outgoing channels
   so it is avalible in b(content^extension^line)
   this add the same behaviour as Dial

Channel-agnostic MF support
------------------
 * A SendMF application and PlayMF manager
   application are now included to send
   arbitrary standard R1 MF tones on the
   current channel or another specified channel.

Core
------------------
 * Bundled PJProject Build

   The build process has been updated to make pjproject troubleshooting
   and development easier. See third-party/pjproject/README-hacking.md or
   https://wiki.asterisk.org/wiki/display/AST/Bundled+PJProject
   for more info.

Handle non-standard Meter metric type safely
------------------
 * A meter_support flag has been introduced that defaults to true to maintain current behaviour.
   If disabled, a counter metric type will be used instead wherever a meter metric type was used,
   the counter will have a "_meter" suffix appended to the metric name.

MessageSend
------------------
 * The MessageSend AMI action has been updated to allow the Destination
   and the To addresses to be provided separately. This brings the
   MessageSend manager command in line with the capabilities of the
   MessageSend dialplan application.

ToneScan application
------------------
 * A new application, ToneScan, allows for
   synchronous detection of call progress
   signals such as dial tone, busy tone,
   Special Information Tones, and modems.

ami
------------------
 * An AMI event now exists for "Wink".

 * AMI events can now be globally disabled using
   the disabledevents [general] setting.

app_confbridge
------------------
 * Added the hear_own_join_sound option to the confbridge user profile to
   control who hears the sound_join audio file. When set to 'yes' the user
   entering the conference and the participants already in the conference
   will hear the sound_join audio file. When set to 'no' the user entering
   the conference will not hear the sound_join audio file, but the
   participants already in the conference will hear the sound_join audio file.

 * Adds the CONFBRIDGE_CHANNELS function which can
   be used to retrieve a list of channels in a ConfBridge,
   optionally filtered by a particular category. This
   list can then be used with functions like SHIFT, POP,
   UNSHIFT, etc.

app_dtmfstore
------------------
 * New application which collects digits
   dialed and stores them into
   a specified variable.

app_mf
------------------
 * Adds MF receiver and sender applications to support
   the R1 MF signaling protocol, including integration
   with the Dial application.

 * Adds an option to ReceiveMF to cap the
   number of digits read at a user-specified
   maximum.

app_milliwatt
------------------
 * The Milliwatt application's existing behavior is
   incorrect in that it plays a constant tone, which
   is not how digital milliwatt test lines actually
   work.

   An option is added so that a proper milliwatt test
   tone can be provided, including a 1 second silent
   interval every 10 seconds. However, for compatability
   reasons, the default behavior remains unchanged.

app_morsecode
------------------
 * Extends the Morsecode application by adding support for
   American Morse code and adds a configurable option
   for the frequency used in off intervals.

app_originate
------------------
 * Codecs can now be specified for dialplan-originated
   calls, as with call files and the manager action.
   By default, only the slin codec is now used, instead
   of all the slin* codecs.

app_playback
------------------
 * A new option 'mix' is added to the Playback application that 
   will play by filename and say.conf. It will look on the format of the 
   name, if it is like say format it will play with say.conf if not it 
   will play the file name.

app_queue
------------------
 * Reload behavior in app_queue has been changed so
   queue and agent stats are not reset during full
   app_queue module reloads. The queue reset stats
   CLI command may still be used to reset stats while
   Asterisk is running.

 * Add field to save the time value when a member enter a queue.
   Shows this time in seconds using 'queue show' command and the
   field LoginTime for responses for AMI the events.

   The output for the CLI command `queue show` is changed by added a
   extra data field for the information of the time login time for each
   member.

 * added that we set DIALEDPEERNUMBER on the outgoing channels
   so it is avalible in b(content^extension^line)
   this add the same behaviour as Dial

 * Load queues and members from Realtime for
   AMI actions: QueuePause, QueueStatus and QueueSummary,
   Applications: PauseQueueMember and UnpauseQueueMember.

 * Added a new AMI action: QueueWithdrawCaller
   This AMI action makes it possible to withdraw a caller from a queue
   back to the dialplan. The call will be signaled to leave the queue
   whenever it can, hence, it not guaranteed that the call will leave
   the queue.

   Optional custom data can be passed in the request, in the WithdrawInfo
   parameter. If the call successfully withdrawn the queue,
   it can be retrieved using the QUEUE_WITHDRAW_INFO variable.

   This can be useful for certain uses, such as dispatching the call
   to a specific extension.

 * The m option now allows an override music on hold
   class to be specified for the Queue application
   within the dialplan.

app_queue.c
------------------
 * Allow multiple files to be streamed for agent announcement.

app_queues
------------------
 * adding support for playing the correct en/et for nordic languages

 * Don't play sound_thanks if there is no leading hold_time message
   When the only announcement is hold time, and there is no hold time (0 min, 0 sec), asterisk will say "thank you for your patience"

app_read
------------------
 * A new option allows the digit '#' to be read literally,
   rather than used exclusively as the input terminator
   character.

app_sendtext
------------------
 * A ReceiveText application has been added that can be
   used in conjunction with the SendText application.

app_voicemail
------------------
 * Add a new 'S' option to VoiceMail which prevents the instructions
   (vm-intro) from being played if a busy/unavailable/temporary greeting
   from the voicemail user is played. This is similar to the existing 's'
   option except that instructions will still be played if no user
   greeting is available.

 * added support for Danish syntax, playing the correct plural sound file
   dependen on where you have 1 or multipe messages
   based on the existing SE/NO code

 * The r option has been added, which prevents deletion
   of messages from VoiceMailMain, which can be
   useful for shared mailboxes.

apps
------------------
 * A new option 'mix' is added to the Playback application that 
   will play by filename and say.conf. It will look on the format of the 
   name, if it is like say format it will play with say.conf if not it 
   will play the file name.

ari
------------------
 * Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP)
   to ARI channel resources as 'protocol_id'.

   ASTERISK-30027

ast_coredumper
------------------
 * New options:
    --pid=<asterisk_pid>
      Allows specification of an Asterisk instance when trying to
      and the script can't determine it itself.
    --libdir=<system library directory>
      Allows specification of a non-standard installation directory
      containing the Asterisk modules.
    --(no-)rename
      Renames the coredump and the output files with readable
      timestamps. This is the default.
   Removed unneeded or confusing options:
    --append-coredumps
    --conffile
    --no-default-search
    --tarball-uniqueid
   Changed Variables:
    COREDUMPS is now just "/tmp/core!(*.txt)"
    DATEFORMAT is renamed to DATEOPTS and defaults to '-u +%FT%H-%M-%SZ'
   Changed behavior:
    If you use 'running' or 'RUNNING' you no longer need to specify
    '--no-default-search' to ignore existing coredumps.

cdr
------------------
 * A new CDR option, channeldefaultenabled, allows controlling
   whether CDR is enabled or disabled by default on
   newly created channels. The default behavior remains
   unchanged from previous versions of Asterisk (new
   channels will have CDR enabled, as long as CDR is
   enabled globally).

chan_dahdi
------------------
 * Previously, cadences were appended on dahdi restart,
   rather than reloaded. This prevented cadences from
   being updated and maxed out the available cadences
   if reloaded multiple times. This behavior is fixed
   so that reloading cadences is idempotent and cadences
   can actually be reloaded.

 * A POLARITY function is now available that allows
   getting or setting the polarity on a channel
   from the dialplan.

chan_iax2
------------------
 * ANI2 (OLI) is now transmitted over IAX2 calls
   as an information element.

 * Both a secret and an outkey may be specified at dial time,
   since encryption is possible with RSA authentication.

chan_pjsip
------------------
 * Add function PJSIP_HEADERS() to get list of headers by pattern in the same way as SIP_HEADERS() do.

   Add ability to read header by pattern using PJSIP_HEADER().

 * added global config option "allow_sending_180_after_183"

   Allow Asterisk to send 180 Ringing to an endpoint
   after 183 Session Progress has been send.
   If disabled Asterisk will instead send only a
   183 Session Progress to the endpoint.

 * Hook flash events can now be sent on a PJSIP channel
   if requested to do so.

chan_sip
------------------
 * Session timers get removed on UPDATE
   Fix if Asterisk receives a SIP REFER with Session-Timers UAC
   that Asterisk maintains Session-Timers when sending UPDATE request

chan_sip.c
------------------
 * resolve issue with pickup on device that uses "183" and not "180"

channel_internal_api
------------------
 * CHANNEL(lastcontext) and CHANNEL(lastexten)
   are now available for use in the dialplan.

cli
------------------
 * The "module refresh" command has been added,
   which allows unloading and then loading a
   module with a single command.

 * A new CLI command 'dialplan eval function' has been
   added which allows users to test the behavior of
   dialplan function calls directly from the CLI.

func_channel
------------------
 * Adds the CHANNEL_EXISTS function to check for the existence
   of a channel by name or unique ID.

func_db
------------------
 * The function DB_KEYCOUNT has been added, which
   returns the cardinality of the keys at a specified
   prefix in AstDB, i.e. the number of keys at a
   given prefix.

func_env.c
------------------
 * Two new functions, DIRNAME and BASENAME, are now
   included which allow users to obtain the directory
   or the base filename of any file.

func_evalexten
------------------
 * This adds the EVAL_EXTEN function which may be
   used to evaluate data at dialplan extensions.

func_framedrop
------------------
 * New function to selectively drop specified frames
   in either direction on a channel.

func_json
------------------
 * The JSON_DECODE dialplan function can now be used
   to parse JSON strings, such as in conjunction with
   CURL for using API responses.

func_odbc
------------------
 * A SQL_ESC_BACKSLASHES dialplan function has been added which
   escapes backslashes. Usage of this is dependent on whether the
   database in use can use backslashes to escape ticks or not. If
   it can, then usage of this prevents a broken SQL query depending
   on how the SQL query is constructed.

func_scramble
------------------
 * Adds an audio scrambler function that may be used to
   distort voice audio on a channel as a privacy
   enhancement.

func_strings
------------------
 * A new STRBETWEEN function is now included which
   allows a substring to be inserted between characters
   in a string. This is particularly useful for transforming
   dial strings, such as adding pauses between digits
   for a string of digits that are sent to another channel.

func_vmcount
------------------
 * Multiple mailboxes may now be specified instead of just one.

logger
------------------
 * Added the ability to define custom log levels in logger.conf
   and use them in the Log dialplan application. Also adds a
   logger show levels CLI command.

res_agi
------------------
 * Agi command 'exec' can now be enabled
   to evaluate dialplan functions and variables
   by setting the variable AGIEXECFULL to yes.

res_cliexec
------------------
 * A new CLI command, dialplan exec application, has
   been added which allows dialplan applications to be
   executed at the CLI, useful for some quick testing
   without needing to write dialplan.

res_fax_spandsp
------------------
 * Adds support for spandsp 3.0.0.

res_geolocation
------------------
 * Added res_geolocation which creates the core capabilities
   to manipulate Geolocation information on SIP INVITEs.

res_parking
------------------
 * An m option to Park and ParkAndAnnounce now allows
   specifying a music on hold class override.

res_pjproject
------------------
 * In pjproject.conf you can now map pjproject log levels
   to the Asterisk TRACE log level.  The default mappings
   have therefore changed so that only pjproject levels
   3 and 4 are mapped to DEBUG and 5 and 6 are now mapped
   to TRACE.  Previously 3, 4, 5, and 6 were all mapped to
   DEBUG.

res_pjsip
------------------
 * A new transport option 'allow_wildcard_certs' has been added that when it
   and 'verify_server' are both set to 'yes', enables verification against
   wildcards, i.e. '*.' in certs for common, and subject alt names of type DNS
   for TLS transport types. Names must start with the wildcard. Partial wildcards,
   e.g. 'f*.example.com' and 'foo.*.com' are not allowed. As well, names only
   match against a single level meaning '*.example.com' matches 'foo.example.com',
   but not 'foo.bar.example.com'.

res_pjsip_geolocation
------------------
 * Added res_pjsip_geolocation which gives chan_pjsip
   the ability to use the core geolocation capabilities.

res_pjsip_header_funcs
------------------
 * Add function PJSIP_RESPONSE_HEADERS() to get list of header names from 200 response, in the same way as PJSIP_HEADERS() from the request.

   Add function PJSIP_RESPONSE_HEADER() to read header from 200 response, in the same way as PJSIP_HEADER() from the request.

res_pjsip_pubsub
------------------
 * A new resource_list option, resource_display_name, indicates
   whether display name of resource or the resource name being
   provided for RLS entries.
   If this option is enabled, the Display Name will be provided.
   This option is disabled by default to remain the previous behavior.
   If the 'event' set to 'presence' or 'dialog' the non-empty HINT name
   will be set as the Display Name.
   The 'message-summary' is not supported yet.

 * The Resource List Subscriptions (RLS) is dynamic now.
   The asterisk now updates current subscriptions to reflect the changes
   to the list on subscription refresh. If list items are added,
   removed, updated or do not exist anymore, the asterisk regenerates
   the resource list.

res_pjsip_registrar
------------------
 * Adds new PJSIP AOR option remove_unavailable to either
   remove unavailable contacts when a REGISTER exceeds
   max_contacts when remove_existing is disabled, or
   prioritize unavailable contacts over other existing
   contacts when remove_existing is enabled.

res_pjsip_t38
------------------
 * In res_pjsip_sdp_rtp, the bind_rtp_to_media_address option and the
   fallback use of the transport's bind address solve problems sending
   media on systems that cannot send ipv4 packets on ipv6 sockets, and
   certain other situations. This change extends both of these behaviors
   to UDPTL sessions as well in res_pjsip_t38, to fix fax-specific
   problems on these systems, introducing a new option
   endpoint/t38_bind_udptl_to_media_address.

res_rtp_asterisk
------------------
 * When the address of the STUN server (stunaddr) is a name resolved via DNS, the
   stunaddr will be recurringly resolved when the DNS answer Time-To-Live (TTL)
   expires. This allows the STUN server to change its IP address without having to
   reload the res_rtp_asterisk module.

res_tonedetect
------------------
 * Arbitrary tone detection is now available through a
   WaitForTone application (blocking) and a TONE_DETECT
   function (non-blocking).

say.c
------------------
 * Adds SAYFILES function to retrieve the file names that would
   be played by corresponding Say applications, such as
   SayDigits, SayAlpha, etc.

   Additionally adds SayMoney and SayOrdinal applications.

stasis_channels
------------------
 * Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP)
   to ARI channel resources as 'protocol_id'.

   ASTERISK-30027

------------------------------------------------------------------------------
--- 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

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