doxygen: Fix doxygen errors.
[asterisk/asterisk.git] / CHANGES
1 ==============================================================================
2 ===
3 === THIS FILE IS AUTOMATICALLY GENERATED DURING THE RELEASE
4 === PROCESS. DO NOT MAKE CHANGES HERE. INSTEAD, REFER TO
5 === doc/CHANGES-staging/README.md FOR MORE DETAILS.
6 ===
7 === This file documents the new and/or enhanced functionality added in
8 === the Asterisk versions listed below. This file does NOT include
9 === changes in behavior that would not be backwards compatible with
10 === previous versions; for that information see the UPGRADE.txt file
11 === and the other UPGRADE files for older releases.
12 ===
13 ==============================================================================
14
15 ------------------------------------------------------------------------------
16 --- Functionality changes from Asterisk 19.0.0 to Asterisk 20.0.0 ------------
17 ------------------------------------------------------------------------------
18
19 Applications
20 ------------------
21  * added support for Danish syntax, playing the correct plural sound file
22    dependen on where you have 1 or multipe messages
23    based on the existing SE/NO code
24
25  * added that we set DIALEDPEERNUMBER on the outgoing channels
26    so it is avalible in b(content^extension^line)
27    this add the same behaviour as Dial
28
29 Channel-agnostic MF support
30 ------------------
31  * A SendMF application and PlayMF manager
32    application are now included to send
33    arbitrary standard R1 MF tones on the
34    current channel or another specified channel.
35
36 Core
37 ------------------
38  * Bundled PJProject Build
39
40    The build process has been updated to make pjproject troubleshooting
41    and development easier. See third-party/pjproject/README-hacking.md or
42    https://wiki.asterisk.org/wiki/display/AST/Bundled+PJProject
43    for more info.
44
45 Handle non-standard Meter metric type safely
46 ------------------
47  * A meter_support flag has been introduced that defaults to true to maintain current behaviour.
48    If disabled, a counter metric type will be used instead wherever a meter metric type was used,
49    the counter will have a "_meter" suffix appended to the metric name.
50
51 MessageSend
52 ------------------
53  * The MessageSend AMI action has been updated to allow the Destination
54    and the To addresses to be provided separately. This brings the
55    MessageSend manager command in line with the capabilities of the
56    MessageSend dialplan application.
57
58 ToneScan application
59 ------------------
60  * A new application, ToneScan, allows for
61    synchronous detection of call progress
62    signals such as dial tone, busy tone,
63    Special Information Tones, and modems.
64
65 ami
66 ------------------
67  * An AMI event now exists for "Wink".
68
69  * AMI events can now be globally disabled using
70    the disabledevents [general] setting.
71
72 app_confbridge
73 ------------------
74  * Added the hear_own_join_sound option to the confbridge user profile to
75    control who hears the sound_join audio file. When set to 'yes' the user
76    entering the conference and the participants already in the conference
77    will hear the sound_join audio file. When set to 'no' the user entering
78    the conference will not hear the sound_join audio file, but the
79    participants already in the conference will hear the sound_join audio file.
80
81  * Adds the CONFBRIDGE_CHANNELS function which can
82    be used to retrieve a list of channels in a ConfBridge,
83    optionally filtered by a particular category. This
84    list can then be used with functions like SHIFT, POP,
85    UNSHIFT, etc.
86
87 app_dtmfstore
88 ------------------
89  * New application which collects digits
90    dialed and stores them into
91    a specified variable.
92
93 app_mf
94 ------------------
95  * Adds MF receiver and sender applications to support
96    the R1 MF signaling protocol, including integration
97    with the Dial application.
98
99  * Adds an option to ReceiveMF to cap the
100    number of digits read at a user-specified
101    maximum.
102
103 app_milliwatt
104 ------------------
105  * The Milliwatt application's existing behavior is
106    incorrect in that it plays a constant tone, which
107    is not how digital milliwatt test lines actually
108    work.
109
110    An option is added so that a proper milliwatt test
111    tone can be provided, including a 1 second silent
112    interval every 10 seconds. However, for compatability
113    reasons, the default behavior remains unchanged.
114
115 app_morsecode
116 ------------------
117  * Extends the Morsecode application by adding support for
118    American Morse code and adds a configurable option
119    for the frequency used in off intervals.
120
121 app_originate
122 ------------------
123  * Codecs can now be specified for dialplan-originated
124    calls, as with call files and the manager action.
125    By default, only the slin codec is now used, instead
126    of all the slin* codecs.
127
128 app_playback
129 ------------------
130  * A new option 'mix' is added to the Playback application that 
131    will play by filename and say.conf. It will look on the format of the 
132    name, if it is like say format it will play with say.conf if not it 
133    will play the file name.
134
135 app_queue
136 ------------------
137  * Reload behavior in app_queue has been changed so
138    queue and agent stats are not reset during full
139    app_queue module reloads. The queue reset stats
140    CLI command may still be used to reset stats while
141    Asterisk is running.
142
143  * Add field to save the time value when a member enter a queue.
144    Shows this time in seconds using 'queue show' command and the
145    field LoginTime for responses for AMI the events.
146
147    The output for the CLI command `queue show` is changed by added a
148    extra data field for the information of the time login time for each
149    member.
150
151  * added that we set DIALEDPEERNUMBER on the outgoing channels
152    so it is avalible in b(content^extension^line)
153    this add the same behaviour as Dial
154
155  * Load queues and members from Realtime for
156    AMI actions: QueuePause, QueueStatus and QueueSummary,
157    Applications: PauseQueueMember and UnpauseQueueMember.
158
159  * Added a new AMI action: QueueWithdrawCaller
160    This AMI action makes it possible to withdraw a caller from a queue
161    back to the dialplan. The call will be signaled to leave the queue
162    whenever it can, hence, it not guaranteed that the call will leave
163    the queue.
164
165    Optional custom data can be passed in the request, in the WithdrawInfo
166    parameter. If the call successfully withdrawn the queue,
167    it can be retrieved using the QUEUE_WITHDRAW_INFO variable.
168
169    This can be useful for certain uses, such as dispatching the call
170    to a specific extension.
171
172  * The m option now allows an override music on hold
173    class to be specified for the Queue application
174    within the dialplan.
175
176 app_queue.c
177 ------------------
178  * Allow multiple files to be streamed for agent announcement.
179
180 app_queues
181 ------------------
182  * adding support for playing the correct en/et for nordic languages
183
184  * Don't play sound_thanks if there is no leading hold_time message
185    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"
186
187 app_read
188 ------------------
189  * A new option allows the digit '#' to be read literally,
190    rather than used exclusively as the input terminator
191    character.
192
193 app_sendtext
194 ------------------
195  * A ReceiveText application has been added that can be
196    used in conjunction with the SendText application.
197
198 app_voicemail
199 ------------------
200  * Add a new 'S' option to VoiceMail which prevents the instructions
201    (vm-intro) from being played if a busy/unavailable/temporary greeting
202    from the voicemail user is played. This is similar to the existing 's'
203    option except that instructions will still be played if no user
204    greeting is available.
205
206  * added support for Danish syntax, playing the correct plural sound file
207    dependen on where you have 1 or multipe messages
208    based on the existing SE/NO code
209
210  * The r option has been added, which prevents deletion
211    of messages from VoiceMailMain, which can be
212    useful for shared mailboxes.
213
214 apps
215 ------------------
216  * A new option 'mix' is added to the Playback application that 
217    will play by filename and say.conf. It will look on the format of the 
218    name, if it is like say format it will play with say.conf if not it 
219    will play the file name.
220
221 ari
222 ------------------
223  * Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP)
224    to ARI channel resources as 'protocol_id'.
225
226    ASTERISK-30027
227
228 ast_coredumper
229 ------------------
230  * New options:
231     --pid=<asterisk_pid>
232       Allows specification of an Asterisk instance when trying to
233       and the script can't determine it itself.
234     --libdir=<system library directory>
235       Allows specification of a non-standard installation directory
236       containing the Asterisk modules.
237     --(no-)rename
238       Renames the coredump and the output files with readable
239       timestamps. This is the default.
240    Removed unneeded or confusing options:
241     --append-coredumps
242     --conffile
243     --no-default-search
244     --tarball-uniqueid
245    Changed Variables:
246     COREDUMPS is now just "/tmp/core!(*.txt)"
247     DATEFORMAT is renamed to DATEOPTS and defaults to '-u +%FT%H-%M-%SZ'
248    Changed behavior:
249     If you use 'running' or 'RUNNING' you no longer need to specify
250     '--no-default-search' to ignore existing coredumps.
251
252 cdr
253 ------------------
254  * A new CDR option, channeldefaultenabled, allows controlling
255    whether CDR is enabled or disabled by default on
256    newly created channels. The default behavior remains
257    unchanged from previous versions of Asterisk (new
258    channels will have CDR enabled, as long as CDR is
259    enabled globally).
260
261 chan_dahdi
262 ------------------
263  * Previously, cadences were appended on dahdi restart,
264    rather than reloaded. This prevented cadences from
265    being updated and maxed out the available cadences
266    if reloaded multiple times. This behavior is fixed
267    so that reloading cadences is idempotent and cadences
268    can actually be reloaded.
269
270  * A POLARITY function is now available that allows
271    getting or setting the polarity on a channel
272    from the dialplan.
273
274 chan_iax2
275 ------------------
276  * ANI2 (OLI) is now transmitted over IAX2 calls
277    as an information element.
278
279  * Both a secret and an outkey may be specified at dial time,
280    since encryption is possible with RSA authentication.
281
282 chan_pjsip
283 ------------------
284  * Add function PJSIP_HEADERS() to get list of headers by pattern in the same way as SIP_HEADERS() do.
285
286    Add ability to read header by pattern using PJSIP_HEADER().
287
288  * added global config option "allow_sending_180_after_183"
289
290    Allow Asterisk to send 180 Ringing to an endpoint
291    after 183 Session Progress has been send.
292    If disabled Asterisk will instead send only a
293    183 Session Progress to the endpoint.
294
295  * Hook flash events can now be sent on a PJSIP channel
296    if requested to do so.
297
298 chan_sip
299 ------------------
300  * Session timers get removed on UPDATE
301    Fix if Asterisk receives a SIP REFER with Session-Timers UAC
302    that Asterisk maintains Session-Timers when sending UPDATE request
303
304 chan_sip.c
305 ------------------
306  * resolve issue with pickup on device that uses "183" and not "180"
307
308 channel_internal_api
309 ------------------
310  * CHANNEL(lastcontext) and CHANNEL(lastexten)
311    are now available for use in the dialplan.
312
313 cli
314 ------------------
315  * The "module refresh" command has been added,
316    which allows unloading and then loading a
317    module with a single command.
318
319  * A new CLI command 'dialplan eval function' has been
320    added which allows users to test the behavior of
321    dialplan function calls directly from the CLI.
322
323 func_channel
324 ------------------
325  * Adds the CHANNEL_EXISTS function to check for the existence
326    of a channel by name or unique ID.
327
328 func_db
329 ------------------
330  * The function DB_KEYCOUNT has been added, which
331    returns the cardinality of the keys at a specified
332    prefix in AstDB, i.e. the number of keys at a
333    given prefix.
334
335 func_env.c
336 ------------------
337  * Two new functions, DIRNAME and BASENAME, are now
338    included which allow users to obtain the directory
339    or the base filename of any file.
340
341 func_evalexten
342 ------------------
343  * This adds the EVAL_EXTEN function which may be
344    used to evaluate data at dialplan extensions.
345
346 func_framedrop
347 ------------------
348  * New function to selectively drop specified frames
349    in either direction on a channel.
350
351 func_json
352 ------------------
353  * The JSON_DECODE dialplan function can now be used
354    to parse JSON strings, such as in conjunction with
355    CURL for using API responses.
356
357 func_odbc
358 ------------------
359  * A SQL_ESC_BACKSLASHES dialplan function has been added which
360    escapes backslashes. Usage of this is dependent on whether the
361    database in use can use backslashes to escape ticks or not. If
362    it can, then usage of this prevents a broken SQL query depending
363    on how the SQL query is constructed.
364
365 func_scramble
366 ------------------
367  * Adds an audio scrambler function that may be used to
368    distort voice audio on a channel as a privacy
369    enhancement.
370
371 func_strings
372 ------------------
373  * A new STRBETWEEN function is now included which
374    allows a substring to be inserted between characters
375    in a string. This is particularly useful for transforming
376    dial strings, such as adding pauses between digits
377    for a string of digits that are sent to another channel.
378
379 func_vmcount
380 ------------------
381  * Multiple mailboxes may now be specified instead of just one.
382
383 logger
384 ------------------
385  * Added the ability to define custom log levels in logger.conf
386    and use them in the Log dialplan application. Also adds a
387    logger show levels CLI command.
388
389 res_agi
390 ------------------
391  * Agi command 'exec' can now be enabled\r
392    to evaluate dialplan functions and variables\r
393    by setting the variable AGIEXECFULL to yes.
394
395 res_cliexec
396 ------------------
397  * A new CLI command, dialplan exec application, has
398    been added which allows dialplan applications to be
399    executed at the CLI, useful for some quick testing
400    without needing to write dialplan.
401
402 res_fax_spandsp
403 ------------------
404  * Adds support for spandsp 3.0.0.
405
406 res_geolocation
407 ------------------
408  * Added res_geolocation which creates the core capabilities
409    to manipulate Geolocation information on SIP INVITEs.
410
411 res_parking
412 ------------------
413  * An m option to Park and ParkAndAnnounce now allows
414    specifying a music on hold class override.
415
416 res_pjproject
417 ------------------
418  * In pjproject.conf you can now map pjproject log levels
419    to the Asterisk TRACE log level.  The default mappings
420    have therefore changed so that only pjproject levels
421    3 and 4 are mapped to DEBUG and 5 and 6 are now mapped
422    to TRACE.  Previously 3, 4, 5, and 6 were all mapped to
423    DEBUG.
424
425 res_pjsip
426 ------------------
427  * A new transport option 'allow_wildcard_certs' has been added that when it
428    and 'verify_server' are both set to 'yes', enables verification against
429    wildcards, i.e. '*.' in certs for common, and subject alt names of type DNS
430    for TLS transport types. Names must start with the wildcard. Partial wildcards,
431    e.g. 'f*.example.com' and 'foo.*.com' are not allowed. As well, names only
432    match against a single level meaning '*.example.com' matches 'foo.example.com',
433    but not 'foo.bar.example.com'.
434
435 res_pjsip_geolocation
436 ------------------
437  * Added res_pjsip_geolocation which gives chan_pjsip
438    the ability to use the core geolocation capabilities.
439
440 res_pjsip_header_funcs
441 ------------------
442  * Add function PJSIP_RESPONSE_HEADERS() to get list of header names from 200 response, in the same way as PJSIP_HEADERS() from the request.
443
444    Add function PJSIP_RESPONSE_HEADER() to read header from 200 response, in the same way as PJSIP_HEADER() from the request.
445
446 res_pjsip_pubsub
447 ------------------
448  * A new resource_list option, resource_display_name, indicates
449    whether display name of resource or the resource name being
450    provided for RLS entries.
451    If this option is enabled, the Display Name will be provided.
452    This option is disabled by default to remain the previous behavior.
453    If the 'event' set to 'presence' or 'dialog' the non-empty HINT name
454    will be set as the Display Name.
455    The 'message-summary' is not supported yet.
456
457  * The Resource List Subscriptions (RLS) is dynamic now.
458    The asterisk now updates current subscriptions to reflect the changes
459    to the list on subscription refresh. If list items are added,
460    removed, updated or do not exist anymore, the asterisk regenerates
461    the resource list.
462
463 res_pjsip_registrar
464 ------------------
465  * Adds new PJSIP AOR option remove_unavailable to either
466    remove unavailable contacts when a REGISTER exceeds
467    max_contacts when remove_existing is disabled, or
468    prioritize unavailable contacts over other existing
469    contacts when remove_existing is enabled.
470
471 res_pjsip_t38
472 ------------------
473  * In res_pjsip_sdp_rtp, the bind_rtp_to_media_address option and the
474    fallback use of the transport's bind address solve problems sending
475    media on systems that cannot send ipv4 packets on ipv6 sockets, and
476    certain other situations. This change extends both of these behaviors
477    to UDPTL sessions as well in res_pjsip_t38, to fix fax-specific
478    problems on these systems, introducing a new option
479    endpoint/t38_bind_udptl_to_media_address.
480
481 res_rtp_asterisk
482 ------------------
483  * When the address of the STUN server (stunaddr) is a name resolved via DNS, the
484    stunaddr will be recurringly resolved when the DNS answer Time-To-Live (TTL)
485    expires. This allows the STUN server to change its IP address without having to
486    reload the res_rtp_asterisk module.
487
488 res_tonedetect
489 ------------------
490  * Arbitrary tone detection is now available through a
491    WaitForTone application (blocking) and a TONE_DETECT
492    function (non-blocking).
493
494 say.c
495 ------------------
496  * Adds SAYFILES function to retrieve the file names that would
497    be played by corresponding Say applications, such as
498    SayDigits, SayAlpha, etc.
499
500    Additionally adds SayMoney and SayOrdinal applications.
501
502 stasis_channels
503 ------------------
504  * Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP)
505    to ARI channel resources as 'protocol_id'.
506
507    ASTERISK-30027
508
509 ------------------------------------------------------------------------------
510 --- Functionality changes from Asterisk 18.0.0 to Asterisk 19.0.0 ------------
511 ------------------------------------------------------------------------------
512
513 AMI Flash event
514 ------------------
515  * Hook flash events are now exposed as AMI events.
516
517 Add variable support to Originate
518 ------------------
519  * The Originate application now allows
520    variables to be set on the new channel
521    through a new option.
522
523 Core
524 ------------------
525  * Added debug logging categories that allow a user to output debug information
526    based on a specified category. This lets the user limit, and filter debug
527    output to data relevant to a particular context, or topic. For instance the
528    following categories are now available for debug logging purposes:
529
530      dtls, dtls_packet, ice, rtcp, rtcp_packet, rtp, rtp_packet, stun, stun_packet
531
532    These debug categories can be enable/disable via an Asterisk CLI command:
533
534      core set debug category <category>[:<sublevel>] [category[:<sublevel] ...]
535      core set debug category off [<category> [<category>] ...]
536
537    If no sub-level is associated all debug statements for a given category are
538    output. If a sub-level is given then only those statements assigned a value
539    at or below the associated sub-level are output.
540
541  * The location where the media cache stores its temporary files
542    is no longer hardcoded to /tmp but can now be configured separately
543    via the astcachedir config variable in asterisk.conf.
544
545    The default location for astcachedir is now /var/cache/asterisk
546    instead of /tmp, please make sure to manually cleanup and/or
547    migrate the temporary files in /tmp after upgrading.
548
549 MessageSend
550 ------------------
551  * The MessageSend dialplan application now takes an
552    optional third argument that can set the message's
553    "To" field on outgoing messages.  It's an alternative
554    to using the MESSAGE(to) dialplan function.
555
556    To prevent confusion with the first argument, currently
557    named "to", it's been renamed to "destination".
558    Its function, creating the request URI, hasn't changed.
559
560    The online documentation has also been enhanced to
561    explain the behavior.
562
563    Despite the changes in this commit, there should be
564    no impact to current users of MessageSend.
565
566 New ConfKick application
567 ------------------
568  * Adds a ConfKick() application, which allows
569    a specific channel, all users, or all non-admin
570    users to be kicked from a conference bridge.
571
572 New Reload application
573 ------------------
574  * Adds an application to reload modules
575
576 PlaybackFinished has a new error state
577 ------------------
578  * The PlaybackFinished event now has a new state "failed"
579    that is used when the sound file was not played due to an error.
580    Before the state on PlaybackFinished was always "done".
581
582    In case of multiple sound files to be played,
583    the PlaybackFinished is sent only once in the end of the list,
584    even in case of error.
585
586 WaitForCondition application
587 ------------------
588  * This application provides a way to halt
589    dialplan execution until a provided
590    condition evaluates to true.
591
592 app_confbridge
593 ------------------
594  * app_confbridge now has the ability to force the estimated bitrate on an SFU
595    bridge.  To use it, set a bridge profile's remb_behavior to "force" and
596    set remb_estimated_bitrate to a rate in bits per second.  The
597    remb_estimated_bitrate parameter is ignored if remb_behavior is something
598    other than "force".
599
600 app_confbridge answer supervision control
601 ------------------
602  * app_confbridge now provides a user option to prevent
603    answer supervision if the channel hasn't been
604    answered yet. To use it, set a user profile's
605    answer_channel option to no.
606
607 app_dial announcement option
608 ------------------
609  * The A option for Dial now supports
610    playing audio to the caller as well
611    as the called party.
612
613 app_mixmonitor
614 ------------------
615  * app_mixmonitor now sends manager events MixMonitorStart, MixMonitorStop and
616    MixMonitorMute when the channel monitoring is started, stopped and muted (or
617    unmuted) respectively.
618
619 app_voicemail
620 ------------------
621  * The VoiceMail application can now be configured to send greetings and
622    instructions via early media and only answering the channel when it is
623    time for the caller to record their message. This behavior can be
624    activated by passing the new 'e' option to VoiceMail.
625
626  * You can now customize the "beep" tone or omit it entirely.
627
628 chan_iax2
629 ------------------
630  * You can now specify a default "auth" method in the
631    [general] section of iax.conf
632
633 chan_pjsip
634 ------------------
635  * The PJSIP_SEND_SESSION_REFRESH dialplan function now issues a warning, and
636    returns unsuccessful if it's used on a channel prior to answering.
637
638 chan_pjsip, app_transfer
639 ------------------
640  * Added TRANSFERSTATUSPROTOCOL variable.  When transfer is performed,
641    transfers can pass a protocol specific error code.
642    Example, in SIP 3xx-6xx represent any SIP specific error received when
643    performing a REFER.
644
645 func_math: Three new dialplan functions
646 ------------------
647  * Introduce three new functions, MIN, MAX, and ABS, which can be used to
648    obtain the minimum or maximum of up to two integers or absolute value.
649
650 func_odbc
651 ------------------
652  * Introduce an ARGC variable for func_odbc functions, along with a minargs
653    per-function configuration option.
654
655    minargs enables enforcing of minimum count of arguments to pass to
656    func_odbc, so if you're unconditionally using ARG1 through ARG4 then
657    this should be set to 4.  func_odbc will generate an error in this case,
658    so for example
659
660    [FOO]
661    minargs = 4
662
663    and ODBC_FOO(a,b,c) in dialplan will now error out instead of using a
664    potentially leaked ARG4 from Gosub().
665
666    ARGC is needed if you're using optional argument, to verify whether or
667    not an argument has been passed, else it's possible to use a leaked ARGn
668    from Gosub (app_stack).  So now you can safely do
669    ${IF($[${ARGC}>3]?${ARGV}:default value)} kind of thing.
670
671 func_volume now can be read
672 ------------------
673  * The VOLUME function can now also be used
674    to read existing values previously set.
675
676 logger
677 ------------------
678  * Added a new log formatter called "plain" that always prints
679    file, function and line number if available (even for verbose
680    messages) and never prints color control characters.  Most
681    suitable for file output but can be used for other channels
682    as well.
683
684    You use it in logger.conf like so:
685    debug => [plain]debug
686    console => [plain]error,warning,debug,notice,pjsip_history
687    messages => [plain]warning,error,verbose
688
689  * The dateformat option in logger.conf will now control the remote
690    console (asterisk -r -T) timestamp format.  Previously, dateformat only
691    controlled the formatting of the timestamp going to log files and the
692    main console (asterisk -c) but only for non-verbose messages.
693
694    Internally, Asterisk does not send the logging timestamp with verbose
695    messages to console clients. It's up to the Asterisk remote consoles
696    to format verbose messages.  Asterisk remote consoles previously did
697    not load dateformat from logger.conf.
698
699    Previously there was a non-configurable and hard-coded "%b %e %T"
700    dateformat that would be used no matter what on all verbose console
701    messages printed on remote consoles.
702
703    Example:
704    logger.conf
705     dateformat=%F %T.%3q
706
707    # asterisk -rvvv -T
708    [2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so.
709    [Mar 19 09:55:43]     -- Goto (dialExten,s,1)
710
711    Given the following example configuration in logger.conf, Asterisk log
712    files and the console, will log verbose messages using the given
713    timestamp.  Now ensuring that all remote console messages are logged
714    with the same dateformat as other log streams.
715
716    ---
717    [general]
718    dateformat=%F %T.%3q
719
720    [logfiles]
721    console  => notice,warning,error,verbose
722    full     => notice,warning,error,debug,verbose
723    ---
724
725    Now we have a globally-defined dateformat that will be used
726    consistently across the Asterisk main console, remote consoles, and
727    log files.
728
729    Now we have consistent logging:
730
731    # asterisk -rvvv -T
732    [2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so.
733    [2021-03-19 09:55:43.920-0400]     -- Goto (dialExten,s,1)
734
735 res_pjsip
736 ------------------
737  * PJSIP transports can now be partially reloaded safely. This allows the
738    local_net and external_* options to be updated without restarting Asterisk.
739
740  * PJSIP endpoints can now be configured to skip authentication when
741    handling OPTIONS requests by setting the allow_unauthenticated_options
742    configuration property to 'yes.'
743
744  * PJSIP support of registrations of endpoints in multidomain
745    scenarios, where the endpoint contains the domain info
746    in pjsip.conf.
747
748 res_pjsip_dialog_info_body_generator
749 ------------------
750  * PJSIP now supports RFC 4235 Section 4.1.6 dialog-info+xml local and
751    remote elements by iterating through ringing channels and inserting
752    that info into NOTIFY packet sent to the endpoint.
753
754 res_pjsip_messaging
755 ------------------
756  * Implemented the new "to" parameter of the MessageSend()
757    dialplan application.  This allows a user to specify
758    a complete SIP "To" header separate from the Request URI.
759    We now also accept a destination in the same format
760    as Dial()...  PJSIP/number@endpoint
761
762 res_rtp_asterisk
763 ------------------
764  * By default Asterisk reports the PJSIP version in all
765    STUN packets it sends.
766
767    This behaviour may not be desired in a production
768    environment and can now be disabled by setting the
769    stun_software_attribute option to 'no' in rtp.conf.
770
771 res_srtp
772 ------------------
773  * SRTP replay protection has been added to res_srtp and
774    a new configuration option "srtpreplayprotection" has
775    been added to the rtp.conf config file.  For security
776    reasons, the default setting is "yes".  Buggy clients
777    may not handle this correctly which could result in
778    no, or one way, audio and Asterisk error messages like
779    "replay check failed".
780
781 ------------------------------------------------------------------------------
782 --- New functionality introduced in Asterisk 18.0.0 --------------------------
783 ------------------------------------------------------------------------------
784
785 Core
786 ------------------
787  * The Streams API becomes the home for the core ACN capabilities.
788    These include...
789
790     * Parsing and formatting of codec negotiation preferences.
791     * Resolving pending streams and topologies with those configured
792       using configured preferences.
793     * Utility functions for creating string representations of
794       streams, topologies, and negotiation preferences.
795
796    For codec negotiation preferences:
797     * Added ast_stream_codec_prefs_parse() which takes a string
798       representation of codec negotiation preferences, which
799       may come from a pjsip endpoint for example, and populates
800       a ast_stream_codec_negotiation_prefs structure.
801     * Added ast_stream_codec_prefs_to_str() which does the reverse.
802     * Added many functions to parse individual parameter name
803       and value strings to their respective enum values, and the
804       reverse.
805
806    For streams:
807     * Added ast_stream_create_resolved() which takes a "live" stream
808       and resolves it with a configured stream and the negotiation
809       preferences to create a new stream.
810     * Added ast_stream_to_str() which create a string representation
811       of a stream suitable for debug or display purposes.
812
813    For topology:
814     * Added ast_stream_topology_create_resolved() which takes a "live"
815       topology and resolves it, stream by stream, with a configured
816       topology stream and the negotiation preferences to create a new
817       topology.
818     * Added ast_stream_topology_to_str() which create a string
819       representation of a topology suitable for debug or display
820       purposes.
821     * Renamed ast_format_caps_from_topology() to
822       ast_stream_topology_get_formats() to be more consistent with
823       the existing ast_stream_get_formats().
824
825    Additional changes:
826     * A new function ast_format_cap_append_names() appends the results
827       to the ast_str buffer instead of replacing buffer contents.
828
829 app_bridgeaddchan
830 ------------------
831  * The BridgeAdd application now behaves more like the Bridge application.
832    The application now sets the BRIDGERESULT channel variable to indicate
833    what happened when the channel resumes in dialplan.  This is instead of
834    hanging up the channel on failure conditions.
835
836 res_pjsip
837 ------------------
838  * Two new options, incoming_call_offer_pref and outgoing_call_offer_pref
839    have been added to res_pjsip endpoints that specify the preferred order
840    of codecs to use between those received/sent in an SDP offer and those
841    set in the endpoint configuration.
842
843 ------------------------------------------------------------------------------
844 --- Functionality changes from Asterisk 17.0.0 to Asterisk 18.0.0 ------------
845 ------------------------------------------------------------------------------
846
847 AMI
848 ------------------
849  * You can now specify an optional 'Content-Type' as an argument for the Asterisk
850    SendText manager action.
851
852 ARI
853 ------------------
854  * A new parameter 'inhibitConnectedLineUpdates' is now available in the
855    'bridges.addChannel' call. This prevents the identity of the newly connected
856    channel from being presented to other bridge members.
857
858 ARI Channels
859 ------------------
860  * The Channel resource has a new sub-resource "externalMedia".
861    This allows an application to create a channel for the sole purpose
862    of exchanging media with an external server.  Once created, this
863    channel could be placed into a bridge with existing channels to
864    allow the external server to inject audio into the bridge or
865    receive audio from the bridge.
866    See https://wiki.asterisk.org/wiki/display/AST/External+Media+and+ARI
867    for more information.
868
869 Core
870 ------------------
871  * H.265/HEVC is now a supported video codec and it can be used by
872    specifying "h265" in the allow line.
873    Please note however, that handling of the additional SDP parameters
874    described in RFC 7798 section 7.2 is not yet supported.
875
876 Features
877 ------------------
878  * Adds support for AudioSocket, a very simple bidirectional audio streaming
879    protocol. There are both channel and application interfaces.
880
881    A description of the protocol can be found on the referenced wiki page. A
882    short talk about the reasons and implementation can be found on YouTube at
883    the link provided.
884
885    ARI support has also been added via the existing "externalMedia" ARI
886    functionality. The UUID is specified using the arbitrary "data" field.
887
888    Wiki: https://wiki.asterisk.org/wiki/display/AST/AudioSocket
889    YouTube: https://www.youtube.com/watch?v=tjduXbZZEgI
890
891 Messaging
892 ------------------
893  * In order to reduce the amount of AMI and ARI events generated,
894    the global "Message/ast_msg_queue" channel can be set to suppress
895    it's normal channel housekeeping events such as "Newexten",
896    "VarSet", etc. This can greatly reduce load on the manager
897    and ARI applications when the Digium Phone Module for Asterisk
898    is in use.  To enable, set "hide_messaging_ami_events" in
899    asterisk.conf to "yes"  In Asterisk versions <18, the default
900    is "no" preserving existing behavior.  Beginning with
901    Asterisk 18, the option will default to "yes".
902
903 STIR/SHAKEN
904 ------------------
905  * STIR/SHAKEN support has been added to Asterisk. Configuration is done in
906    stir_shaken.conf. There is a sample configuration file to help you get
907    started (asterisk/configs/samples/stir_shaken.conf.sample). Once that's
908    set up, you can enable STIR/SHAKEN on any endpoint by setting stir_shaken
909    to yes on the endpoint configuration object. This will add an Identity
910    header on outgoing INVITEs, and check for an Identity header on incoming
911    INVITEs. This option has been added to Alembic as well.
912
913    The information received on an incoming INVITE can be checked using the
914    STIR_SHAKEN dialplan function. There are two variations:
915
916    STIR_SHAKEN(count)
917    STIR_SHAKEN(0, verify_result)
918
919    The first variation will tell you how many STIR/SHAKEN results are on the
920    channel. The second fetches information for a specific result. The first
921    parameter is the index, followed by what information you want to retrieve.
922    The available options are 'verify_result', 'identity', and 'attestation'.
923
924 app_chanisavail
925 ------------------
926  * The ChanIsAvail application now tolerates empty positions in the supplied
927    device list.  Dialplan can now be simplified by not having to check for
928    empty positions in the device list.
929
930 app_confbridge
931 ------------------
932  * A new bridge profile option, maximum_sample_rate, has been added which sets
933    a maximum sample rate that the bridge will be mixed at. This allows the bridge
934    to move below the maximum sample rate as needed but caps it at the maximum.
935
936  * A new option, "text_messaging", has been added to the user profile
937    which allows control over whether text messaging is enabled or
938    disabled for a user. If enabled (the default) text messages
939    will be sent to the user. If disabled no text messages will be
940    sent to the user.
941
942 app_dial
943 ------------------
944  * The Dial application now tolerates empty positions in the supplied
945    destination list.  Dialplan can now be simplified by not having to check
946    for empty positions in the destination list.  If there are no endpoints to
947    dial then DIALSTATUS is set to CHANUNAVAIL.
948
949 app_mixmonitor
950 ------------------
951  * An option 'S' has been added to MixMonitor. If used in combination with
952    the r() and/or t() options, if a frame is available to write to one of
953    those files but not the other, a frame of silence if written to the file
954    that does not have an audio frame. This should prevent the two files
955    from "drifting" when mixed after the fact.
956
957  * If the 'filename' argument to MixMonitor() ended with '.wav49,'
958    Asterisk would silently convert the extension to '.WAV' when opening
959    the file for writing. This caused the MIXMONITOR_FILENAME variable to
960    reference the wrong file. The MIXMONITOR_FILENAME variable will now
961    reflect the name of the file that Asterisk actually used instead of
962    the filename that was passed to the application.
963
964 app_page
965 ------------------
966  * The Page application now tolerates empty positions in the supplied
967    destination list.  Dialplan can now be simplified by not having to check
968    for empty positions in the destination list.
969
970 app_voicemail
971 ------------------
972  * A feature was added in Asterisk 13.27.0 and 16.4.0 that removed lock files from
973    the Asterisk voicemail directory on startup. Some users that store their
974    voicemails on network storage devices experienced slow startup times due to the
975    relative expense of traversing the voicemail directory structure looking for
976    orphaned lock files. This feature has now been removed.
977
978    Users who require the lock files to be removed at startup should modify their
979    startup scripts to do so before starting the asterisk process.
980
981 chan_pjsip
982 ------------------
983  * A new dialplan function, PJSIP_MOH_PASSTHROUGH, has been added to chan_pjsip. This
984    allows the behaviour of the moh_passthrough endpoint option to be read or changed
985    in the dialplan. This allows control on a per-call basis.
986
987 chan_rtp
988 ------------------
989  * The UnicastRTP channel driver provided by chan_rtp now accepts
990    "<hostname>:<port>" as an alternative to "<ip_address>:<port>" in the destination.
991    The first AAAA (preferred) or A record resolved will be used as the destination.
992    The lookup is synchronous so beware of possible dialplan delays if you specify a
993    hostname.
994
995 func_curl
996 ------------------
997  * A new parameter, httpheader, has been added to CURLOPT function. This parameter
998    allows to set custom http headers for subsequent calls off CURL function.
999    Any setting of headers will replace the default curl headers
1000    (e.g. "Content-type: application/x-www-form-urlencoded")
1001
1002  * A new option, followlocation, can now be enabled with the CURLOPT()
1003    dialplan function. Setting this will instruct cURL to follow 3xx
1004    redirects, which it does not by default.
1005
1006 func_jitterbuffer
1007 ------------------
1008  * The JITTERBUFFER dialplan function now has an option to enable video synchronization
1009    support. When enabled and used with a compatible channel driver (chan_sip, chan_pjsip)
1010    the video is buffered according to the size of the audio jitterbuffer and is
1011    synchronized to the audio.
1012
1013 func_volume
1014 ------------------
1015  * Accept decimal number as argument.
1016
1017 http
1018 ------------------
1019  * You can now disable the /httpstatus page served by Asterisk's built-in
1020    HTTP server by setting 'enable_status' to 'no' in http.conf.
1021
1022 minmemfree
1023 ------------------
1024  * The 'minmemfree' configuration option now counts memory allocated to
1025    the filesystem cache as "free" because it is memory that is available
1026    to the process.
1027
1028 res_ari_channels
1029 ------------------
1030  * When creating a channel in ARI using the create call
1031    you can now specify dialplan variables to be set as part
1032    of the same operation.
1033
1034 res_musiconhold
1035 ------------------
1036  * This fix allows a realtime moh class to be unregistered from the command
1037    line. This is useful when the contents of a directory referenced by a
1038    realtime moh class have changed.
1039    The realtime moh class is then reloaded on the next request and uses the
1040    new directory contents.
1041
1042  * A new mode - playlist - has been added to res_musiconhold. This mode allows the
1043    user to specify the files (or URLs) to play explicitly by putting them directly
1044    in musiconhold.conf.
1045
1046 res_pjsip
1047 ------------------
1048  * Added a new PJSIP system setting called disable_rport.
1049    Default is no to keep support working as before.
1050
1051    If it is false (default) it adds the 'rport' parameter in the outgoing request message.
1052    If it is true it does not add the 'rport' parameter in the outgoing request message.
1053
1054    This is a system option, but working as a global option.
1055
1056 res_pjsip_endpoint_identifier_ip
1057 ------------------
1058  * In 'type = identify' sections, the addresses specified for the 'match'
1059    clause can now include a port number. For IP addresses, the port is
1060    provided by including a colon after the address, followed by the
1061    desired port number. If supplied, the netmask should follow the port
1062    number. To specify a port for IPv6 addresses, the address itself must
1063    be enclosed in brackets to be parsed correctly.
1064
1065 res_pjsip_logger
1066 ------------------
1067  * The PJSIP packet logger now has the following CLI commands:
1068
1069    pjsip set logger pcap <filename>
1070
1071    When used this will create a pcap file containing the incoming
1072    and outgoing SIP packets, in unencrypted form.
1073
1074    pjsip set logger console <on / off>
1075
1076    This allows you to toggle logging to console on and off.
1077
1078    pjsip set logger host <IP/subnet mask> add
1079
1080    This allows you to add an additional IP address or subnet
1081    mask to logging, allowing you to log multiple instead of
1082    just a single IP address or all traffic.
1083
1084    The normal "pjsip set logger host" CLI command has also been
1085    expanded to allow subnet masks as well.
1086
1087 res_pjsip_session
1088 ------------------
1089  * When placing an outgoing call to a PJSIP endpoint the intent
1090    of any requested formats will now be respected. If only an audio
1091    format is requested (such as ulaw) but the underlying endpoint
1092    does not support the format the resulting SDP will still only
1093    contain an audio stream, and not any additional streams such as
1094    video.
1095
1096  * Two new options, incoming_call_offer_pref and outgoing_call_offer_pref
1097    have been added to res_pjsip endpoints that specify the preferred order
1098    of codecs to use between those received/sent in an SDP offer and those
1099    set in the endpoint configuration.
1100
1101 res_rtp_asterisk
1102 ------------------
1103  * This change include a new cli command 'rtp show settings'
1104
1105    The command display by general settings of rtp configuration. For this
1106    point is added the fields: rtpstart, rtpend, dtmftimeout, rtpchecksum,
1107    strictrtp, learning_min_sequential and icesupport.
1108
1109  * The blacklist mechanism in res_rtp_asterisk for ICE and STUN was converted to
1110    an ACL mechanism.
1111
1112    As such six now options are now available:
1113
1114    ice_deny
1115    ice_permit
1116    ice_acl
1117    stun_deny
1118    stun_permit
1119    stun_acl
1120
1121    These options have their obvious meanings as used elsewhere.
1122
1123    Backwards compatibility was maintained by adding {stun,ice}_blacklist as
1124    aliases for {stun,ice}_deny.
1125
1126 res_sorcery_memory_cache
1127 ------------------
1128  * The SorceryMemoryCacheExpireObject AMI action and CLI
1129    command allow expiring of a specific object within the
1130    sorcery memory cache. This is done by removing the
1131    object from the cache with the expectation that the
1132    cache will then re-populate the object when it is next
1133    needed.
1134
1135    For full backend caching this does not occur. The cache
1136    won't repopulate until an entire refresh is done resulting
1137    in the possibility that objects are missing until that
1138    time.
1139
1140    The AMI action and CLI command will now not allow
1141    expiring of an object if the cache is configured as a
1142    full backend cache. Instead you must use either the
1143    SorceryMemoryCacheExpire or SorceryMemoryCachePopulate
1144    AMI actions or their associated CLI commands.
1145
1146 taskprocessor.c
1147 ------------------
1148  * Added two new CLI commands to reset stats for taskprocessors. You can
1149    reset stats for a single, specific taskprocessor ('core reset
1150    taskprocessor <taskprocessor>'), or you can reset all taskprocessors
1151    ('core reset taskprocessors'). These commands will reset the counter for
1152    the number of tasks processed as well as the max queue size.
1153
1154  * Added "like" support for 'core show taskprocessors'. Now you
1155    can specify a specific set of taskprocessors (or just one) by
1156    adding the keyword "like" to the above command, followed by
1157    your search criteria.
1158
1159 ------------------------------------------------------------------------------
1160 --- New functionality introduced in Asterisk 17.0.0 --------------------------
1161 ------------------------------------------------------------------------------
1162
1163 Bridging
1164 ------------------
1165  * The bridging core no longer uses the stasis cache for bridge
1166    snapshots.  The latest bridge snapshot is now stored on the
1167    ast_bridge structure itself.
1168
1169    The following APIs are no longer available since the stasis cache
1170    is no longer used:
1171      ast_bridge_topic_cached()
1172      ast_bridge_topic_all_cached()
1173
1174    A topic pool is now used for individual bridge topics.
1175
1176    The ast_bridge_cache() function was removed since there's no
1177    longer a separate container of snapshots.
1178
1179    A new function "ast_bridges()" was created to retrieve the
1180    container of all bridges.  Users formerly calling
1181    ast_bridge_cache() can use the new function to iterate over
1182    bridges and retrieve the latest snapshot directly from the
1183    bridge.
1184
1185    The ast_bridge_snapshot_get_latest() function was renamed to
1186    ast_bridge_get_snapshot_by_uniqueid().
1187
1188    A new function "ast_bridge_get_snapshot()" was created to retrieve
1189    the bridge snapshot directly from the bridge structure.
1190
1191    The ast_bridge_topic_all() function now returns a normal topic
1192    not a cached one so you can't use stasis cache functions on it
1193    either.
1194
1195    The ast_bridge_snapshot_type() stasis message now has the
1196    ast_bridge_snapshot_update structure as it's data.  It contains
1197    the last snapshot and the new one.
1198
1199 Channels
1200 ------------------
1201  * The core no longer uses the stasis cache for channels snapshots.
1202    The following APIs are no longer available:
1203        ast_channel_topic_cached()
1204        ast_channel_topic_all_cached()
1205    The ast_channel_cache_all() and ast_channel_cache_by_name() functions
1206    now returns an ao2_container of ast_channel_snapshots rather than a
1207    container of stasis_messages therefore you can't call stasis_cache
1208    functions on it.
1209    The ast_channel_topic_all() function now returns a normal topic,
1210    not a cached one so you can't use stasis cache functions on it either.
1211    The ast_channel_snapshot_type() stasis message now has the
1212    ast_channel_snapshot_update structure as it's data.
1213    ast_channel_snapshot_get_latest() still returns the latest snapshot.
1214
1215 chan_sip
1216 ------------------
1217  * The chan_sip module is now deprecated, users should migrate to the
1218    replacement module chan_pjsip.  See guides at the Asterisk Wiki:
1219      https://wiki.asterisk.org/wiki/x/tAHOAQ
1220      https://wiki.asterisk.org/wiki/x/hYCLAQ
1221
1222 ------------------------------------------------------------------------------
1223 --- Functionality changes from Asterisk 16.0.0 to Asterisk 17.0.0 ------------
1224 ------------------------------------------------------------------------------
1225
1226 AttendedTransfer
1227 ------------------
1228  * A new application, this will queue up attended transfer to the given extension.
1229
1230 BlindTransfer
1231 ------------------
1232  * A new application, this will redirect all channels currently
1233    bridged to the caller channel to the specified destination.
1234
1235 ConfBridge
1236 ------------------
1237  * Add "average_all", "highest_all", and "lowest_all" values for
1238    the remb_behavior option. These values operate on a bridge
1239    level instead of a per-source level. This means that a single
1240    REMB value is calculated and sent to every sender, instead of
1241    a REMB value that is unique for the specific sender..
1242
1243 Dial
1244 ------------------
1245  * Add RINGTIME and RINGTIME_MS variables containing respectively seconds and
1246    milliseconds between creation of the dialing channel and receiving the first
1247    RINGING signal
1248
1249    Add PROGRESSTIME and PROGRESSTIME_MS variables analogous to the above with respect to
1250    the PROGRESS signal. Shorter of these two times should be equivalent to
1251    the PDD (Post Dial Delay) value
1252
1253    Add DIALEDTIME_MS and ANSWEREDTIME_MS variables to get millisecond resolution
1254    versions of DIALEDTIME and ANSWEREDTIME
1255
1256 RTP/ICE
1257 ------------------
1258  * You can now indicate that you'd like an ice_host_candidate's local address
1259    to be published as well as the mapped address.  See the sample rtp.conf
1260    for more information.
1261
1262 ReadExten
1263 ------------------
1264  * Add 'p' option to stop reading extension if user presses '#' key.
1265
1266 pbx_dundi
1267 ------------------
1268  * The DUNDi PBX module now supports IPv4/IPv6 dual binding.
1269
1270 res_pjsip
1271 ------------------
1272  * Added a new PJSIP global setting called norefersub.
1273    Default is true to keep support working as before.
1274
1275    res_pjsip_refer configures PJSIP norefersub capability accordingly.
1276
1277    Checks the PJSIP global setting value.
1278    If it is true (default) it adds the norefersub capability to PJSIP.
1279    If it is false (disabled) it does not add the norefersub capability
1280    to PJSIP.
1281
1282    This is useful for Cisco switches that do not follow RFC4488.
1283
1284 res_rtp_asterisk
1285 ------------------
1286  * DTLS packets will now be fragmented according to the MTU as set in rtp.conf. This
1287    allows larger certificates to be used for the DTLS negotiation. By default this value
1288    is 1200.
1289
1290 ------------------------------------------------------------------------------
1291 --- Functionality changes from Asterisk 16.2.0 to Asterisk 16.3.0 ----------
1292 ------------------------------------------------------------------------------
1293
1294 ARI
1295 ------------------
1296  * Application event filtering is now supported. An application can now specify
1297    an "allowed" and/or "disallowed" list(s) of event types. Only those types
1298    indicated in the "allowed" list are sent to the application. Conversely, any
1299    types defined in the "disallowed" list are not sent to the application. Note
1300    that if a type is specified in both lists "disallowed" takes precedence.
1301
1302  * A new REST API call has been added: 'move'. It follows the format
1303    'channels/{channelId}/move' and can be used to move channels from one application
1304    to another without needing to exit back into the dialplan. An application must be
1305    specified, but the passing a list of arguments to the new application is optional.
1306    An example call would look like this:
1307
1308    client.channels.move(channelId=chan.id, app='ari-example', appArgs='a,b,c')
1309
1310    If the channel was inside of a bridge when switching applications, it will
1311    remain there. If the application specified cannot be moved to, then the channel
1312    will remain in the current application and an event will be triggered named
1313    "ApplicationMoveFailed", which will provide the destination application's name
1314    and the channel information.
1315
1316 res_pjsip
1317 ------------------
1318  * A new configuration parameter "taskprocessor_overload_trigger" has been
1319    added to the pjsip.conf "globals" section.  The distributor currently stops
1320    accepting new requests when any taskprocessor overload is triggered.  The
1321    new option allows you to completely disable overload detection (NOT
1322    RECOMMENDED), keep the current behavior, or trigger only on pjsip
1323    taskprocessor overloads.
1324
1325 chan_pjsip
1326 ------------------
1327  * A new configuration parameter 'ignore_183_without_sdp' has been added
1328    to the pjsip.conf "endpoints" section.  If enabled, will make chan_pjsip
1329    discard 183s that do not contain an SDP body, which can resolve no
1330    ringback tone issues as well as making the behavior match chan_sip.
1331
1332 MWI
1333 ------------------
1334  * A new module "res_mwi_devstate" has been added that allows subscriptions
1335    to voicemail boxes using "presence" events.  This allows common BLF keys
1336    to act as voicemail waiting indicators.
1337
1338 app_queue
1339 ------------------
1340  * Added the ability to set the wrapuptime per-member using the AddQueueMember
1341    application.
1342
1343 ------------------------------------------------------------------------------
1344 --- Functionality changes from Asterisk 16.1.0 to Asterisk 16.2.0 ------------
1345 ------------------------------------------------------------------------------
1346
1347 ARI
1348 ------------------
1349  * Whenever an ARI application is started, a context will be created for it
1350    automatically as long as one does not already exist, following the format
1351    'stasis-<app_name>'. Two extensions are also added to this context: a match-all
1352    extension, and the 'h' extension. Any phone that registers under this context
1353    will place all calls to the corresponding Stasis application.
1354
1355 res_pjsip
1356 ------------------
1357  * Added "send_contact_status_on_update_registration" global configuration option
1358    to enable sending AMI ContactStatus event when a device refreshes its registration.
1359
1360 Core
1361 ------------------
1362  * Reworked the media indexer so it doesn't cache the index.  Testing revealed
1363    that the cache added no benefit but that it could consume excessive memory.
1364    Two new index related functions were created: ast_sounds_get_index_for_file()
1365    and ast_media_index_update_for_file() which restrict index updating to
1366    specific sound files.  The original ast_sounds_get_index() and
1367    ast_media_index_update() calls are still available but since they no longer
1368    cache the results internally, developers should re-use an index they may
1369    already have instead of calling ast_sounds_get_index() repeatedly.  If
1370    information for only a single file is needed, ast_sounds_get_index_for_file()
1371    should be called instead of ast_sounds_get_index().
1372
1373 Features
1374 ------------------
1375  * Before Asterisk 12, when using the automon or automixmon features defined
1376    in features.conf, a channel variable (TOUCH_MIXMONITOR_OUTPUT) was set on
1377    both channels, indicating the filename of the recording.
1378
1379    When bridging was overhauled in Asterisk 12, the behavior was changed such
1380    that the variable was only set on the peer channel and not on the channel
1381    that initiated the automon or automixmon.
1382
1383    The previous behavior has been restored so both channels receive the
1384    channel variable when one of these features is invoked.
1385
1386 app_voicemail
1387 ------------------
1388  * You can now specify a special context with the "aliasescontext" parameter
1389    in voicemail.conf which will allow you to create aliases for physical
1390    mailboxes.
1391
1392 ------------------------------------------------------------------------------
1393 --- Functionality changes from Asterisk 16.0.0 to Asterisk 16.1.0 ------------
1394 ------------------------------------------------------------------------------
1395
1396 pbx_config
1397 ------------------
1398  * pbx_config will now find and process multiple 'globals' sections from
1399    extensions.conf.  Variables are processed in the order they are found
1400    and duplicate variables overwrite the previous value.
1401
1402 chan_pjsip
1403 ------------------
1404  * New dialplan function PJSIP_PARSE_URI added to parse an URI and return
1405    a specified part of the URI.
1406
1407 Core
1408 ------------------
1409  * ast_bt_get_symbols() now returns a vector of strings instead of an
1410    array of strings.  This must be freed with ast_bt_free_symbols.
1411
1412 res_pjsip
1413 ------------------
1414  * New options 'trust_connected_line' and 'send_connected_line' have been
1415    added to the endpoint. The option 'trust_connected_line' is to control
1416    if connected line updates are accepted from this endpoint.
1417    The option 'send_connected_line' is to control if connected line updates
1418    can be sent to this endpoint.
1419    The default value is 'yes' for both options.
1420
1421 res_rtp_asterisk
1422 ------------------
1423  * The existing strictrtp option in rtp.conf has a new choice availabe, called
1424    'seqno', which behaves the same way as setting strictrtp to 'yes', but will
1425    ignore the time interval during learning so that bursts of packets can still
1426    trigger learning our source.
1427
1428 ------------------------------------------------------------------------------
1429 --- Functionality changes from Asterisk 15 to Asterisk 16 --------------------
1430 ------------------------------------------------------------------------------
1431
1432 app_fax
1433 ------------------
1434  * The app_fax module is now deprecated, users should migrate to the
1435    replacement module res_fax.
1436
1437 app_originate
1438 ------------------
1439  * An 'a' option has been added to the Originate dialplan application which
1440    will execute the originate in an asynchronous fashion. If set then the
1441    application will return immediately without waiting for the originated
1442    channel to answer.
1443
1444 Build System
1445 ------------------
1446  * MALLOC_DEBUG no longer has an effect on Asterisk's ABI.  Asterisk built
1447    with MALLOC_DEBUG can now successfully load binary modules built without
1448    MALLOC_DEBUG and vice versa.  Third-party pre-compiled modules no longer
1449    need to have a special build with it enabled.
1450
1451  * Asterisk now depends on libjansson >= 2.11.  If this version is not
1452    available on your distro you can use `./configure --with-jansson-bundled`.
1453
1454 app_macro
1455 ------------------
1456  * The app_macro module is now deprecated and by default it is no longer
1457    built.  Users should migrate to app_stack (Gosub).  A warning is logged
1458    the first time any Macro is used.
1459
1460 app_setcallerid
1461 ------------------
1462  * The app_setcallerid module has been removed. The CALLERID dialplan function
1463    should be used instead.
1464
1465 chan_sip
1466 ------------------
1467  * New function SIP_HEADERS() enumerates all headers in the incoming INVITE.
1468
1469  * The variable GET_TRANSFERRER_DATA set in the peer channel causes matching
1470    headers be retrieved from the REFER message and made accessible to the
1471    dialplan in the hash TRANSFER_DATA.
1472
1473 chan_dahdi
1474 ------------------
1475  * Timeouts for reading digits from analog phones are now configurable in
1476    chan_dahdi.conf: firstdigit_timeout, interdigit_timeout, matchdigit_timeout.
1477
1478 AMI
1479 ------------------
1480  * The ContactStatus and Status fields for the manager events ContactStatus
1481    and ContactStatusDetail are now set to "NonQualified" when a contact exists
1482    but has not been qualified.
1483
1484  * The "Newexten" event is now part of the "dialplan" class. The documentation
1485    for Asterisk 15 already specified this, but the implementation was actually
1486    using the "call" class instead.
1487
1488 ARI
1489 ------------------
1490  * The ContactInfo event's contact_status field is now set to "NonQualified"
1491    when a contact exists but has not been qualified.
1492
1493 app_queue
1494 ------------------
1495  * Added the ability to set the wrapuptime in the configuration of member.
1496    When set the wrapuptime on the member is used instead of the wrapuptime
1497    defined for the queue itself.
1498
1499  * Added predial handler support for caller and callee channels with the
1500    B and b options respectively.  This is similar to the predial support
1501    in app_dial.
1502
1503 res_config_sqlite
1504 ------------------
1505  * The res_config_sqlite module is now deprecated, users should migrate to the
1506    replacement module res_config_sqlite3.
1507
1508 res_monitor
1509 ------------------
1510  * The res_monitor module is now deprecated, users should migrate to the
1511    replacement module app_mixmonitor.
1512
1513 res_pjsip
1514 ------------------
1515  * A new AMI action, PJSIPShowAors, has been added which displays information
1516    about all configured PJSIP AORs.
1517
1518  * A new AMI action, PJSIPShowAuths, has been added which displays information
1519    about all configured PJSIP Auths.
1520
1521  * A new AMI action, PJSIPShowContacts, has been added which displays information
1522    about all configured PJSIP Contacts.
1523
1524 res_pjsip_registrar_expire
1525 ------------------
1526  * The res_pjsip_registrar_expire module has been removed.  The functionality has
1527    been moved into res_pjsip_registrar.
1528
1529 func_audiohookinherit
1530 ------------------
1531  * The func_audiohookinherit module has been removed. Due to architectural changes
1532    in Asterisk 12, audiohook inheritance is performed automatically and this
1533    function now lacks function.
1534
1535 cdr_syslog
1536 ------------------
1537  * The cdr_syslog module is now deprecated and by default it is no longer
1538    built.
1539
1540 cdr_sqlite
1541 ------------------
1542  * The cdr_sqlite module has been removed. Users should move to using the
1543    cdr_sqlite3_custom module instead.
1544
1545 format_jpeg
1546 ------------------
1547  * The format_jpeg module has been removed.
1548
1549 pbx_dundi
1550 ------------------
1551  * DUNDi now supports IPv6
1552
1553 Core:
1554 ------------------
1555  * libedit is no longer available as an embedded library and must be provided
1556    by the system.
1557  * The STATIC_BUILD functionality has been removed as it has not been maintained
1558    and has not worked in quite some time.
1559  * The module loader now enforces inter-module dependencies.  This ensures that
1560    a module is not started before another it depends on, even if preload is used.
1561    If a dependency is not available or fails to startup this will block any
1562    dependants from startup.
1563  * Parts of the Asterisk core which can load configuration from realtime are now
1564    built-in modules.  It is no longer necessary to preload realtime drivers as
1565    they are always initialized before the built-in modules.
1566
1567 ------------------------------------------------------------------------------
1568 --- Functionality changes from Asterisk 15.5.0 to Asterisk 15.6.0 ------------
1569 ------------------------------------------------------------------------------
1570
1571 res_pjsip
1572 ------------------
1573  * A new option 'suppress_q850_reason_headers' has been added to the endpoint
1574    object. Some devices can't accept multiple Reason headers and get confused
1575    when both 'SIP' and 'Q.850' Reason headers are received.  This option allows
1576    the 'Q.850' Reason header to be suppressed.  The default value is 'no'.
1577
1578 res_pjsip_endpoint_identifier_ip
1579 ------------------
1580  * Added regex support to the identify section match_header option.  You
1581    specify a regex instead of an explicit string by surrounding the header
1582    value with slashes:
1583    match_header = SIPHeader: /regex/
1584
1585 ------------------------------------------------------------------------------
1586 --- Functionality changes from Asterisk 15.4.0 to Asterisk 15.5.0 ------------
1587 ------------------------------------------------------------------------------
1588
1589 Core
1590 ------------------
1591  * Core bridging and, more specifically, bridge_softmix have been enhanced to
1592    relay received frames of type TEXT or TEXT_DATA to all participants in a
1593    softmix bridge.  res_pjsip_messaging and chan_pjsip have been enhanced to
1594    take advantage of this so when res_pjsip_messaging receives an in-dialog
1595    MESSAGE message from a user in a conference call, it's relayed to all
1596    other participants in the call.
1597
1598 app_sendtext
1599 ------------------
1600  * Support Enhanced Messaging.  SendText now accepts new channel variables
1601    that can be used to override the To and From display names and set the
1602    Content-Type of a message.  Since you can now set Content-Type, other
1603    text/* content types are now valid.
1604
1605 app_confbridge
1606 ------------------
1607  * ConfbridgeList now shows talking status. This utilizes the same voice
1608    detection as the ConfbridgeTalking event, so bridges must be configured
1609    with "talk_detection_events=yes" for this flag to have meaning.
1610
1611  * ConfBridge can now send events to participants via in-dialog MESSAGEs.
1612    All current Confbridge events are supported, such as ConfbridgeJoin,
1613    ConfbridgeLeave, etc.  In addition to those events, a new event
1614    ConfbridgeWelcome has been added that will send a list of all
1615    current participants to a new participant.
1616
1617 res_pjsip
1618 ------------------
1619   * Two new options have been added to the system and endpoint objects to
1620     control whether, on outbound calls, Asterisk will accept updated SDP answers
1621     during the initial INVITE transaction when 100rel is not in effect.
1622     This usually happens when the INVITE is forked to multiple UASs and more
1623     than one sends an SDP answer or when a single UAS needs to change a media
1624     port to switch from custom ringback to the actual media destination.
1625
1626     The 'follow_early_media_forked' option sets whether Asterisk will accept
1627     the updated SDP when the To tag on the subsequent response is different than
1628     that on the the previous response.  This usually occurs in the forked INVITE
1629     scenario. The default value is "yes" which is the current behavior.
1630
1631     The 'accept_multiple_sdp_answers' flag sets whether Asterisk will accept the
1632     updated SDP when the To tag on the subsequent response is the same as that
1633     on the previous response. This can occur when a UAS needs to switch media
1634     ports from custom ringback to the final media path.  The default value is
1635     "no" which is the current behavior.
1636
1637     These options have to be enabled system-wide in the system config section
1638     of pjsip.conf as well as on individual endpoints that require the
1639     functionality.
1640
1641 ------------------------------------------------------------------------------
1642 --- Functionality changes from Asterisk 15.3.0 to Asterisk 15.4.0 ------------
1643 ------------------------------------------------------------------------------
1644
1645 Core
1646 ------------------
1647  * A new configuration option "genericplc_on_equal_codecs" was added to the
1648    "plc" section of codecs.conf to allow generic packet loss concealment even
1649    if no transcoding was originally needed.  Transcoding via SLIN is forced
1650    in this case.
1651
1652 res_pjproject
1653 ------------------
1654  * Added the "cache_pools" option to pjproject.conf.  Disabling the option
1655    helps track down pool content mismanagement when using valgrind or
1656    MALLOC_DEBUG.  The cache gets in the way of determining if the pool contents
1657    are used after free and who freed it.
1658
1659 res_pjsip_notify
1660 ------------------
1661  * Extend the PJSIPNotify AMI command to send an in-dialog notify on a
1662    channel.
1663
1664 ------------------------------------------------------------------------------
1665 --- Functionality changes from Asterisk 15.2.0 to Asterisk 15.3.0 ------------
1666 ------------------------------------------------------------------------------
1667
1668 Core
1669 ------------------
1670  * During dialplan reload log messages are produced for each context,
1671    extension and include.  These messages are no longer printed by the
1672    verbose loggers, they are now only logged as debug messages.
1673
1674 app_confbridge
1675 ------------------
1676  * Added the Muted header to the ConfbridgeJoin AMI event to indicate the
1677    participant's starting mute status.
1678
1679  * Made the AMI ConfbridgeList action's ConfbridgeList events output all
1680    the standard channel snapshot headers instead of a few hand-coded channel
1681    snapshot headers.  The benefit is that the CallerIDName gets disruptive
1682    characters like CR, LF, Tab, and a few others escaped.  However, an empty
1683    CallerIDName is now output as "<unknown>" instead of "<no name>".
1684
1685 app_followme
1686 ------------------
1687  * Added a new prompt, connecting-prompt, which will be played
1688    (if configured) to the "winner" callee before connecting the call.
1689
1690 res_pjsip
1691 ------------------
1692  * Users who are matching endpoints by SIP header need to reevaluate their
1693    global "endpoint_identifier_order" option in light of the "ip" endpoint
1694    identifier method split into the "ip" and "header" endpoint identifier
1695    methods.
1696
1697  * The pjsip_transport_event feature introduced in 15.1.0 has been refactored.
1698    Any external modules that may have used that feature (highly unlikely) will
1699    need to be changed as the API has been altered slightly.
1700
1701 res_pjsip_endpoint_identifier_ip
1702 ------------------
1703  * The endpoint identifier "ip" method previously recognized endpoints either
1704    by IP address or a matching SIP header.  The "ip" endpoint identifier method
1705    is now split into the "ip" and "header" endpoint identifier methods.  The
1706    "ip" endpoint identifier method only matches by IP address and the "header"
1707    endpoint identifier method only matches by SIP header.  The split allows the
1708    user to control the relative priority of the IP address and the SIP header
1709    identification methods in the global "endpoint_identifier_order" option.
1710    e.g., If you have two type=identify sections where one matches by IP address
1711    for endpoint alice and the other matches by SIP header for endpoint bob then
1712    you can now predict which endpoint is matched when a request comes in that
1713    matches both.
1714
1715 res_pjsip_pubsub
1716 ------------------
1717  * In an earlier release, inbound registrations on a reliable transport
1718    were pruned on Asterisk restart since the TCP connection would have
1719    been torn down and become unusable when Asterisk stopped.  This same
1720    process is now also applied to inbound subscriptions.  Since this
1721    required the addition of a new column to the ps_subscription_persistence
1722    realtime table, users who store their subscriptions in a database will
1723    need to run the "alembic upgrade head" process to add the column to
1724    the schema.
1725
1726 res_pjsip_transport_management
1727 ------------------
1728  * Since res_pjsip_transport_management provides several attack
1729    mitigation features, its functionality moved to res_pjsip and
1730    this module has been removed.  This way the features will always
1731    be available if res_pjsip is loaded.
1732
1733 ------------------------------------------------------------------------------
1734 --- Functionality changes from Asterisk 15.1.0 to Asterisk 15.2.0 ------------
1735 ------------------------------------------------------------------------------
1736
1737 Core
1738 ------------------
1739  * Added the "cache_media_frames" option to asterisk.conf.  Disabling the option
1740    helps track down media frame mismanagement when using valgrind or
1741    MALLOC_DEBUG.  The cache gets in the way of determining if the frame is
1742    used after free and who freed it.  NOTE: This option has no effect when
1743    Asterisk is compiled with the LOW_MEMORY compile time option enabled because
1744    the cache code does not exist.
1745
1746 chan_sip
1747 ------------------
1748  * Calls to invalid extensions are now reported as an ACL failure security event
1749    "no_extension_match".
1750
1751 res_rtp_asterisk
1752 ------------------
1753  * The X.509 certificate used for DTLS negotiation can now be automatically
1754    generated. This is supported by res_pjsip by specifying
1755    "dtls_auto_generate_cert = yes" on a PJSIP endpoint. For chan_sip, you
1756    would set "dtlsautogeneratecert = yes" either in the [general] section of
1757    sip.conf or on a specific peer.
1758
1759 res_pjsip
1760 ------------------
1761  * The "identify_by" on endpoints can now be set to "ip" to restrict an endpoint
1762    being matched based only on IP address. To ensure no behavior change the
1763    default has been changed to "username,ip".
1764
1765 ------------------------------------------------------------------------------
1766 --- Functionality changes from Asterisk 15.0.0 to Asterisk 15.1.0 ------------
1767 ------------------------------------------------------------------------------
1768
1769 res_pjsip
1770 ------------------
1771  * The "remove_existing" option now allows a registration to succeed by
1772    displacing any existing contacts that now exceed the "max_contacts" count.
1773    Any removed contacts are the next to expire.  The behaviour change is
1774    beneficial when "rewrite_contact" is enabled and "max_contacts" is greater
1775    than one.  The removed contact is likely the old contact created by
1776    "rewrite_contact" that the device is refreshing.
1777
1778 AMI
1779 ------------------
1780  * Added a new CancelAtxfer action that cancels an attended transfer.
1781
1782 ------------------------------------------------------------------------------
1783 --- Functionality changes from Asterisk 14 to Asterisk 15 --------------------
1784 ------------------------------------------------------------------------------
1785
1786 app_queue
1787 ------------------
1788  * PAUSEALL/UNPAUSEALL now sets the pause reason in the queue_log if it has
1789    been defined.
1790
1791  * A new option, "announce-position-only-up," has been added that, when set to
1792    yes, causes position announcements to only be played when the caller's
1793    queue position has improved since the last time that we announced their
1794    position. This default is no.
1795
1796 Build System
1797 ------------------
1798  * '--with-pjproject-bundled' is now the default when running ./configure
1799    It can be disabled with '--without-pjproject-bundled'.
1800
1801  * A '--with-download-cache' option is now available which is equivalent to
1802    setting '--with-sounds-cache' and '--with-externals-cache' to the same
1803    value.  The download cache can also be set via the AST_DOWNLOAD_CACHE
1804    environment variable.
1805
1806 ------------------------------------------------------------------------------
1807 --- Functionality changes from Asterisk 14.6.0 to Asterisk 14.7.0 ------------
1808 ------------------------------------------------------------------------------
1809
1810 res_pjsip
1811 ------------------
1812  * The "external_media_address" on transports is now resolved using dnsmgr and
1813    when dnsmgr refreshes are enabled will be automatically updated with the new
1814    IP address of a given hostname.
1815
1816  * A new endpoint parameter "incoming_mwi_mailbox" allows Asterisk to receive
1817    unsolicited MWI NOTIFY requests and make them available to other modules via
1818    the stasis message bus.
1819
1820 res_musiconhold
1821 ------------------
1822  * By default, when res_musiconhold reloads or unloads, it sends a HUP signal
1823    to custom applications (and all descendants), waits 100ms, then sends a
1824    TERM signal, waits 100ms, then finally sends a KILL signal.  An application
1825    which is interacting with an external device and/or spawns children of its
1826    own may not be able to exit cleanly in the default times, expecially if sent
1827    a KILL signal, or if it's children are getting signals directly from
1828    res_musiconhoild.  To allow extra time, the 'kill_escalation_delay'
1829    class option can be used to set the number of milliseconds res_musiconhold
1830    waits before escalating kill signals, with the default being the current
1831    100ms.  To control to whom the signals are sent, the "kill_method"
1832    class option can be set to "process_group" (the default, existing behavior),
1833    which sends signals to the application and its descendants directly, or
1834    "process" which sends signals only to the application itself.
1835
1836  * New dialplan function PJSIP_DTMF_MODE added to get or change the DTMF mode
1837    of a channel on a per-call basis.
1838
1839 res_xmpp
1840 -----------------
1841  * OAuth 2.0 authentication is now supported when contacting Google. Follow the
1842    instructions in xmpp.conf.sample to retrieve and configure the necessary
1843    tokens.
1844
1845 ------------------------------------------------------------------------------
1846 --- Functionality changes from Asterisk 14.5.0 to Asterisk 14.6.0 ------------
1847 ------------------------------------------------------------------------------
1848
1849 app_voicemail
1850 ------------------
1851  * A new global option "imap_poll_logout" was added to specify whether need to
1852    disconnect from the IMAP server after polling of mailboxes.
1853    Default: no
1854
1855 res_pjsip
1856 ------------------
1857  * A new endpoint option "refer_blind_progress" was added to turn off notifying
1858    the progress details on Blind Transfer. If this option is not set then
1859    the chan_pjsip will send NOTIFY "200 OK" immediately after "202 Accepted".
1860    On default is enabled.
1861    Some SIP phones like Mitel/Aastra or Snom keep the line busy until
1862    receive "200 OK".
1863
1864  * A new endpoint option "notify_early_inuse_ringing" was added to control
1865    whether to notify dialog-info state 'early' or 'confirmed' on Ringing
1866    when already INUSE.
1867
1868  * The endpoint option 'dtmf_mode' has a new option 'auto_dtmf' added. This
1869    mode works similar to 'auto' except uses DTMF INFO as fallback instead of
1870    INBAND.
1871
1872 res_agi
1873 ------------------
1874  * The EAGI() application will now look for a dialplan variable named
1875    EAGI_AUDIO_FORMAT and use that format with the 'enhanced' audio pipe that
1876    EAGI provides. If not specified, it will continue to use the default signed
1877    linear (slin).
1878
1879 chan_pjsip
1880 ------------------
1881  * When dialing an endpoint directly or using the PJSIP_DIAL_CONTACTS dialplan
1882    function any contact which is considered unreachable due to qualify being
1883    enabled will no longer be called.
1884
1885  * The asymmetric_rtp_codec option now also controls whether chan_pjsip will
1886    send media as-is without transcoding if the codec has been negotiated in the
1887    SDP. If set to "no" then Asterisk will only ever send the preferred codec
1888    from the SDP, unless the remote side sends a different codec and we will
1889    switch to match.
1890
1891 Build System
1892 ------------------
1893  * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which can be used
1894    to pass arbitrary options to the bundled pjproject configure.
1895
1896  * Automatically set the bundled pjproject configure --host and --build
1897    options to match those supplied for the asterisk configure.
1898
1899 ------------------------------------------------------------------------------
1900 --- Functionality changes from Asterisk 14.4.0 to Asterisk 14.5.0 ------------
1901 ------------------------------------------------------------------------------
1902
1903 res_rtp_asterisk
1904 ------------------
1905  * Added the stun_blacklist option to rtp.conf.  Some multihomed servers have
1906    IP interfaces that cannot reach the STUN server specified by stunaddr.
1907    Blacklist those interface subnets from trying to send a STUN packet to find
1908    the external IP address.  Attempting to send the STUN packet needlessly
1909    delays processing incoming and outgoing SIP INVITEs because we will wait
1910    for a response that can never come until we give up on the response.
1911    Multiple subnets may be listed.
1912
1913 Logging
1914 -------------------
1915  * Added logger_queue_limit to the configuration options.
1916    All log messages go to a queue serviced by a single thread
1917    which does all the IO.  This setting controls how big that
1918    queue can get (and therefore how much memory is allocated)
1919    before new messages are discarded.
1920    The default is 1000.
1921
1922 res_pjsip_config_wizard
1923 ------------------
1924  * Two new parameters have been added to the pjsip config wizard.
1925    Setting 'sends_line_with_registrations' to true will cause the wizard
1926    to skip the creation of an identify object to match incoming requests
1927    to the endpoint and instead add the line and endpoint parameters to
1928    the outbound registration object.
1929    Setting 'outbound_proxy' is a shortcut for adding individual
1930    endpoint/outbound_proxy, aor/outbound_proxy and registration/outbound_proxy
1931    parameters.
1932
1933 res_hep_rtcp
1934 ------------------
1935  * If the 'call-id' value is specified for the uuid_type option and a
1936    chan_sip channel is used the resulting HEP traffic will now contain the
1937    SIP Call-ID instead of the Asterisk channel name.
1938
1939 ------------------------------------------------------------------------------
1940 --- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------
1941 ------------------------------------------------------------------------------
1942
1943 Build System
1944 ------------------
1945  * LOW_MEMORY no longer has an effect on Asterisk ABI.  Symbols that were
1946    previously suppressed by LOW_MEMORY are now replaced by stub functions.
1947    Asterisk built with LOW_MEMORY can now successfully load binary modules
1948    built without LOW_MEMORY and vice versa.
1949
1950  * RADIUS backends for CEL and CDR can now also be built using the radcli
1951    client library, in addition to the existing support for building them
1952    using either freeradius or radiusclient-ng.
1953
1954 Core
1955 ------------------
1956  * ASTERISK_REGISTER_FILE was no longer useful and has been removed.  Sources
1957    which use mtx_prof must now manually declare and initialize the variable.
1958
1959 chan_sip
1960 ------------------
1961  * If an offer is received with optional SRTP (a media stream with RTP/AVP but
1962    which contains a crypto line) chan_sip will now accept it and enable SRTP.
1963    If you would like to do optional SRTP on outbound you will need to create
1964    a dialplan that dials with it enabled initially and if it fails fall back to
1965    without.
1966
1967 res_pjsip
1968 ------------------
1969  * Added endpoint configuration parameter "preferred_codec_only".
1970    This allow asterisk response to a SIP invite with the single most
1971    preferred codec rather than advertising all joint codec capabilities.
1972    This limits the other side's codec choice to exactly what we prefer.
1973
1974 cdr_radius
1975 ------------------
1976  * To fix a memory leak the syslog channel is now empty if it has not been set
1977    and used by a syslog channel in the logger.
1978
1979 cel_radius
1980 ------------------
1981  * To fix a memory leak the syslog channel is now empty if it has not been set
1982    and used by a syslog channel in the logger.
1983
1984 RTP
1985 ------------------
1986  * New setting "rtp_pt_dynamic = 35" in asterisk.conf:
1987    Normally the Dynamic RTP Payload Type numbers are 96-127, which allow just 32
1988    formats. To avoid the message "No Dynamic RTP mapping available", the range
1989    was changed to 35-63,96-127. This is allowed by RFC 3551 section 3. However,
1990    when you use more than 32 formats and calls are not accepted by a remote
1991    implementation, please report this and go back to rtp_pt_dynamic = 96.
1992
1993  * A new setting, "rtp_use_dynamic", has been added in asterisk.conf". When set
1994    to "yes" RTP dynamic payload types are assigned dynamically per RTP instance.
1995    When set to "no" RTP dynamic payload types are globally initialized to pre-
1996    designated numbers and function similar to static payload types.
1997
1998 app_originate
1999 ------------------
2000  * Added support to gosub predial routines on both original channel and on the
2001    created channel using options parameter (like app_dial) B() and b().  This
2002    allows for adding variables to newly created channel or, e.g. setting callerid.
2003
2004 CLI Commands
2005 ------------------
2006  * 'dialplan show' output will now show [config_file:line_number] instead of
2007    [registrar] when that information is available. Currently only extensions
2008    registered by pbx_config when loading/reloading will use this format.
2009
2010 app_queue
2011 ------------------
2012  * Add 'QueueUpdate' application which can be used to track outbound calls
2013    using app_queue.
2014
2015 pbx_spool
2016 ------------------
2017  * Asterisk will now set the AST_OUTGOING_ATTEMPT channel variable so that
2018    attempt-specific behavior is possible. This is a 1-based number that
2019    simply increases by 1 for each attempt.
2020
2021 ------------------------------------------------------------------------------
2022 --- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------
2023 ------------------------------------------------------------------------------
2024
2025 AMI
2026 ------------------
2027  * The 'PJSIPShowEndpoint' command's respone event of 'IdentifyDetail' now
2028    contains a new optional parameter, 'MatchHeader', mapping to the new
2029    configuration option 'match_header' for the corresponding 'identify' object.
2030    It should be noted that since 'match_header' takes in a key: value pair, the
2031    event parameter will contain a ':' as well.
2032
2033 app_record
2034 ------------------
2035  * Added new 'u' option to Record() application which prevents Asterisk from
2036    truncating silence from the end of recorded files.
2037
2038 res_pjsip_outbound_registration
2039 ------------------
2040  * Outbound registrations are now refreshed when res_stun_monitor detects
2041    a network change event has happened.
2042    The 'pjsip send (un)register' CLI commands were updated to accept '*all'
2043    as an argument to operate on all registrations.
2044    The 'PJSIP(Un)Register' AMI commands were updated to also accept '*all'.
2045
2046 app_voicemail
2047 ------------------
2048  * The 'Comedian Mail' prompts can now be overriden using the 'vm-login' and
2049    'vm-newuser' configuration options in voicemail.conf.
2050
2051  * Added 'fromstring' field to the voicemail boxes. If set, it will override
2052    the global 'fromstring' field on a per-mailbox basis.
2053
2054 func_channel
2055 ------------------
2056  * Added CHANNEL(callid) to retrieve the call log tag associated with the
2057    channel.  e.g., [C-00000000]  Dialplan now has access to the call log
2058    search key associated with the channel so it can be saved in case there
2059    is a problem with the call.
2060
2061 res_pjsip
2062 ------------------
2063  * A new transport parameter 'symmetric_transport' has been added.
2064    When a request from a dynamic contact comes in on a transport with this
2065    option set to 'yes', the transport name will be saved and used for
2066    subsequent outgoing requests like OPTIONS, NOTIFY and INVITE.  It's
2067    saved as a contact uri parameter named 'x-ast-txp' and will display with
2068    the contact uri in CLI, AMI, and ARI output.  On the outgoing request,
2069    if a transport wasn't explicitly set on the endpoint AND the request URI
2070    is not a hostname, the saved transport will be used and the 'x-ast-txp'
2071    parameter stripped from the outgoing packet.  To facilitate recreation of
2072    subscriptions on asterisk restart, a new column 'contact_uri' needed to be
2073    added to the ps_subcsription_persistence table.  Since new columns were
2074    added to both transport and subscription_persistence, an alembic upgrade
2075    should be run to bring the database tables up to date.
2076
2077  * A new option, allow_overlap, has been added to endpoints which allows
2078    overlap dialing functionality to be enabled or disabled. The option defaults
2079    to enabled.
2080
2081 res_pjsip_transport_websocket
2082 ------------------
2083  * Removed non-secure websocket support.  Firefox and Chrome have not allowed
2084    non-secure websockets for quite some time so this shouldn't be an issue
2085    for people.  Attempting to use a non-secure websocket may or may not work
2086    when Asterisk attempts to send SIP requests to do something like initiate
2087    call hangup.
2088
2089 res_pjsip_endpoint_identifier_ip
2090 ------------------
2091  * A new option has been added to the 'identify' configuration object,
2092    'match_header'. The 'match_header' attribute should contain a SIP
2093    header: value pair that, When set, will cause inbound requests that contain
2094    the matching SIP header/value pair to be associated with the corresponding
2095    endpoint. This option is cumulative with the 'match' option, so that if
2096    either option matches the request, the request is associated with the
2097    endpoint.
2098
2099    In a future release, this module will be renamed to something more
2100    appropriate, as it now matches inbound requests on more than just IP
2101    address.
2102
2103 res_rtp_asterisk
2104 -----------------
2105  * The RTP layer of Asterisk now has support for RFC 5761: "Multiplexing RTP
2106    Data and Control Packets on a Single Port." So far, the only channel driver
2107    that supports this feature is chan_pjsip. You can set "rtcp_mux = yes" on
2108    a PJSIP endpoint in pjsip.conf to enable the feature.
2109
2110 ------------------------------------------------------------------------------
2111 --- Functionality changes from Asterisk 14.2.0 to Asterisk 14.3.0 ------------
2112 ------------------------------------------------------------------------------
2113
2114 res_pjproject
2115 ------------------
2116  * Added new CLI command "pjproject set log level".  The new command allows
2117    the maximum PJPROJECT log levels to be adjusted dynamically and
2118    independently from the set debug logging level like many other similar
2119    module debug logging commands.
2120
2121  * Added new companion CLI command "pjproject show log level" to allow the
2122    user to see the current maximum pjproject logging level.
2123
2124  * Added new pjproject.conf startup section "log_level' option to set the
2125    initial maximum PJPROJECT logging level.
2126
2127 res_pjsip_outbound_registration
2128 ------------------
2129  * Statsd no longer logs redundant status PJSIP.registrations.state changes
2130    for internal state transitions that don't change the reported public status
2131    state.
2132
2133 res_pjsip_registrar
2134 ------------------
2135  * The PJSIPShowRegistrationInboundContactStatuses AMI command has been added
2136    to return ContactStatusDetail events as opposed to
2137    PJSIPShowRegistrationsInbound which just a dumps every defined AOR.
2138
2139 res_pjsip
2140 ------------------
2141  * Six existing contact fields have been added to the end of the
2142    ContactStatusDetail AMI event:
2143    ID, AuthenticateQualify, OutboundProxy, Path, QualifyFrequency and
2144    QualifyTimeout.  Existing fields have not been disturbed.
2145
2146 res_pjsip_endpoint_identifier_ip
2147 ------------------
2148  * SRV lookups can now be done on provided hostnames to determine additional
2149    source IP addresses for requests. This is configurable using the
2150    "srv_lookups" option on the identify and defaults to "yes".
2151
2152 ARI
2153 ------------------
2154  * The 'ari set debug' command has been enhanced to accept 'all' as an
2155    application name.  This allows dumping of all apps even if an app
2156    hasn't registered yet.
2157
2158  * 'ari set debug' now displays requests and responses as well as events.
2159
2160 ------------------------------------------------------------------------------
2161 --- Functionality changes from Asterisk 14.1.0 to Asterisk 14.2.0 ------------
2162 ------------------------------------------------------------------------------
2163
2164 AMI
2165 ------------------
2166  * Events that reference a bridge may now contain two new optional fields:
2167    - 'BridgeVideoSourceMode': the video source mode for the bridge.
2168      Can be one of 'none', 'talker', or 'single'.
2169    - 'BridgeVideoSource': the unique ID of the channel that is the video
2170      source in this bridge, if one exists.
2171
2172  * A new event, BridgeVideoSourceUpdate, has been added with a class
2173    authorization of CALL. The event is raised when the video source changes
2174    in a multi-party mixing bridge.
2175
2176 ARI
2177 ------------------
2178  * The bridges resource now exposes two new operations:
2179    - POST /bridges/{bridgeId}/videoSource/{channelId}: Set a video source in a
2180      multi-party mixing bridge
2181    - DELETE /bridges/{bridgeId}/videoSource: Remove the set video source,
2182      reverting to talk detection for the video source
2183
2184  * The bridge model in any returned response or event now contains the following
2185    optional fields:
2186    - video_mode: the video source mode for the bridge. Can be one of 'none',
2187      'talker', or 'single'.
2188    - video_source_id: the unique ID of the channel that is the video source
2189      in this bridge, if one exists.
2190
2191  * A new event, BridgeVideoSourceChanged, has been added for bridges.
2192    Applications subscribed to a bridge will receive this event when the source
2193    of video changes in a mixing bridge.
2194
2195  * The ARI major version has been bumped. There are not any known breaking changes
2196    in ARI. The major version has been bumped because otherwise we can end up with
2197    overlapping version numbers between different Asterisk versions. Now each major
2198    version of Asterisk will bring with it a change in the major version of ARI.
2199    The ARI version in Asterisk 14 is now 2.0.0.
2200
2201 res_pjsip
2202 ------------------
2203  * Automatic dual stack support is now implemented. Depending on DNS resolution
2204    and the transport used for sending a message the SIP signaling and SDP will
2205    be updated with the correct IP address and protocol version. This means that
2206    the rtp_ipv6 and t38_udptl_ipv6 options no longer have any effect. The
2207    res_pjsip_multihomed module has also been moved into core res_pjsip to ensure
2208    that messages are updated with the correct address information in all cases.
2209
2210 chan_pjsip
2211 ------------------
2212  * The default behavior for RTP codecs has been changed. The sending codec will
2213    now match the receiving codec. This can be turned off and behavior reverted
2214    to asymmetric using the "asymmetric_rtp_codec" endpoint option. If this
2215    option is set then the sending and received codec are allowed to differ.
2216
2217 CLI Commands
2218 ------------------
2219  * Three new CLI commands have been added for ARI:
2220    - ari show apps:
2221       Displays a listing of all registered ARI applications.
2222    - ari show app <name>:
2223       Display detailed information about a registered ARI application.
2224    - ari set debug <name> <on|off>:
2225       Enable/disable debugging of an ARI application. When debugged, verbose
2226       information will be sent to the Asterisk CLI.
2227
2228
2229 Queue
2230 ------------------
2231  * A new dialplan variable, ABANDONED, is set when the call is not answered
2232    by an agent.
2233
2234 res_ari
2235 ------------------
2236  * The configuration file ari.conf now supports a channelvars option, which
2237    specifies a list of channel variables to include in each channel-oriented
2238    ARI event.
2239
2240 ------------------------------------------------------------------------------
2241 --- Functionality changes from Asterisk 14.0.0 to Asterisk 14.1.0 ------------
2242 ------------------------------------------------------------------------------
2243
2244 Build System
2245 ------------------
2246  * The res_digium_phone, codec_g729a, codec_silk, codec_siren7 and
2247    codec_siren14 binary modules hosted at downloads.digium.com can now be
2248    automatically downloaded and installed during the Asterisk install
2249    process.  If selected in menuselect, when 'make install' is run, the
2250    script will check the downloads site for a new version and download
2251    and install it if needed.  The '--with-externals-cache' option to
2252    ./configure can be used to specify a location to cache the latest
2253    tarballs so they don't have to be re-downloaded for every install.
2254
2255 app_voicemail
2256 ------------------
2257  * Added "tps_queue_high" and "tps_queue_low" options.
2258    The options can modify the taskprocessor alert levels for this module.
2259    Additional information can be found in the sample configuration file at
2260    config/samples/voicemail.conf.sample.
2261
2262 res_pjsip_mwi
2263 ------------------
2264  * Added "mwi_tps_queue_high" and "mwi_tps_queue_low" global configuration
2265    options to tune taskprocessor alert levels.
2266
2267  * Added "mwi_disable_initial_unsolicited" global configuration option
2268    to disable sending unsolicited MWI to all endpoints on startup.
2269    Additional information can be found in the sample configuration file at
2270    config/samples/pjsip.conf.sample.
2271
2272 chan_pjsip
2273 ------------------
2274  * A new dialplan function, PJSIP_SEND_SESSION_REFRESH, has been added. When
2275    invoked, a re-INVITE or UPDATE request will be sent immediately to the
2276    endpoint underlying the channel. When used in combination with the existing
2277    dialplan function PJSIP_MEDIA_OFFER, this allows the formats on a PJSIP
2278    channel to be re-negotiated and updated after session set up.
2279
2280 res_pjsip
2281 ------------------
2282  * A new endpoint configuration parameter 'contact_user' has been added which
2283    when set will override the default user set on Contact headers in outgoing
2284    requests.
2285
2286  * If you are using a sorcery realtime backend to store global res_pjsip
2287    options (ps_globals table) then you now have to do a res_pjsip reload for
2288    changes to these options to take effect.  If you are using pjsip.conf to
2289    configure these options then you already had to do a reload after making
2290    changes.
2291
2292  * Added "ignore_uri_user_options" global configuration option for
2293    compatibility with an ITSP that sends URI user field options.  When enabled
2294    the user field is truncated at the first semicolon.
2295    Example:
2296    URI: "sip:1235557890;phone-context=national@x.x.x.x;user=phone"
2297    The user field is "1235557890;phone-context=national"
2298    Which is truncated to this: "1235557890"
2299
2300    Note: The caller-id and redirecting number strings obtained from incoming
2301    SIP URI user fields are now always truncated at the first semicolon.
2302
2303 res_rtp_asterisk
2304 ------------------
2305   * An option, ice_blacklist, has been added which allows certain subnets to be
2306     excluded from local ICE candidates.
2307
2308 app_confbridge
2309 ------------------
2310   * Some sounds played into the bridge are played asynchronously. This, for
2311     instance, allows a channel to immediately exit the ConfBridge without having
2312     to wait for a leave announcement to play.
2313
2314 app_dial
2315 ------------------
2316  * Added the "Q" option which sets the Q.850/Q.931 cause on unanswered channels
2317    when another channel answers the call.  The default of ANSWERED_ELSEWHERE
2318    is unchanged.
2319
2320 res_ari
2321 ------------------
2322  * ARI events will all now include a new field in the root of the JSON message,
2323    'asterisk_id'.  This will be the unique ID for the Asterisk system
2324    transmitting the event.  The value can be overridden using the 'entityid'
2325    setting in asterisk.conf.
2326
2327 ------------------------------------------------------------------------------
2328 --- Functionality changes from Asterisk 13 to Asterisk 14 --------------------
2329 ------------------------------------------------------------------------------
2330
2331 AMI
2332 -----------------
2333  * A new event, "DialState" has been added. This is similar to "DialBegin" and
2334  "DialEnd" in that it tracks the state of a dialed call. The difference is that
2335  this indicates some intermediate state change in the dial attempt, such as
2336  "RINGING", "PROGRESS", or "PROCEEDING".
2337
2338 ARI
2339 -----------------
2340  * A new ARI method has been added to the channels resource. "create" allows for
2341    you to create a new channel and place that channel into a Stasis application.
2342    This is similar to origination except that the specified channel is not
2343    dialed. This allows for an application writer to create a channel, perform
2344    manipulations on it, and then delay dialing the channel until later.
2345
2346  * To complement the "create" method, a "dial" method has been added to the
2347    channels resource in order to place a call to a created channel.
2348
2349  * All operations that initiate playback of media on a resource now support
2350    a list of media URIs. The list of URIs are played in the order they are
2351    presented to the resource. A new event, "PlaybackContinuing", is raised when
2352    a media URI finishes but before the next media URI starts. When a list is
2353    played, the "Playback" model will contain the optional attribute
2354    "next_media_uri", which specifies the next media URI in the list to be played
2355    back to the resource. The "PlaybackFinished" event is raised when all media
2356    URIs are done.
2357
2358  * Stored recordings now allow for the media associated with a stored recording
2359    to be retrieved. The new route, GET /recordings/stored/{name}/file, will
2360    transmit the raw media file to the requester as binary.
2361
2362
2363  * "Dial" events have been modified to not only be sent when dialing begins and ends.
2364  They now are also sent for intermediate states, such as "RINGING", "PROGRESS", and
2365  "PROCEEDING".
2366
2367 Applications
2368 ------------------
2369
2370 BridgeAdd
2371 ------------------
2372  * A new application in Asterisk, this will join the calling channel
2373    to an existing bridge containing the named channel prefix.
2374
2375 ChanSpy
2376 ------------------
2377  * Added the 'l' option, which forces ChanSpy's audiohook to use a long queue
2378    to store the audio frames. This option is useful if audio loss is
2379    experienced when using ChanSpy, but may introduce some delay in the audio
2380    feed on the listening channel.
2381
2382 Codecs
2383 ------------------
2384  * Added format attribute negotiation for the iLBC audio codec. Format attribute
2385    negotiation is provided by the res_format_attr_ilbc module. iLBC 20 is the
2386    default now. Falls back to iLBC 30, when the remote party requests this.
2387
2388 ConfBridge
2389 ------------------
2390  * Added the ability to pass options to MixMonitor when recording is used with
2391    ConfBridge. This includes the addition of the following configuration
2392    parameters for the 'bridge' object:
2393    - record_file_timestamp: whether or not to append the start time to the
2394      recorded file name
2395    - record_options: the options to pass to the MixMonitor application
2396    - record_command: a command to execute when recording is finished
2397    Note that these options may also be with the CONFBRIDGE function.
2398
2399 ControlPlayback
2400 ------------------
2401  * Remote files can now be retrieved and played back. See the Playback
2402    dialplan application for more details.
2403
2404 FollowMe
2405 ------------------
2406  * It is now possible to disable the prompt from a callee by setting
2407    'enable_callee_prompt = no' in followme.conf.
2408
2409 Playback
2410 ------------------
2411  * Remote files can now be retrieved and played back via the Playback and other
2412    media playback dialplan applications. This is done by directly providing
2413    the URL to play to the dialplan application:
2414      same => n,Playback(http://1.1.1.1/howler-monkeys-fl.wav)
2415    Note that unlike 'normal' media files, the entire URI to the file must be
2416    provided, including the file extension. Currently, on HTTP and HTTPS URI
2417    schemes are supported.
2418
2419 Queue
2420 -------------------
2421  * Added field ReasonPause on QueueMemberStatus if set when paused, the reason
2422    the queue member was paused.
2423
2424  * Added field LastPause on QueueMemberStatus for time when started the last
2425    pause for a queue member.
2426
2427  * Show the time when started the last pause for queue member on CLI for command
2428    'queue show'.
2429
2430 SMS
2431 ------------------
2432  * Added the 'n' option, which prevents the SMS from being written to the log
2433    file. This is needed for those countries with privacy laws that require
2434    providers to not log SMS content.
2435
2436
2437 Channel Drivers
2438 ------------------
2439
2440 chan_dahdi
2441 ------------------
2442  * The CALLERID(ani2) value for incoming calls is now populated in featdmf
2443    signaling mode.  The information was previously discarded.
2444
2445  * Added the force_restart_unavailable_chans compatibility option.  When
2446    enabled it causes Asterisk to restart the ISDN B channel if an outgoing
2447    call receives cause 44 (Requested channel not available).
2448
2449 chan_iax2
2450 ------------------
2451  * The iax.conf forcejitterbuffer option has been removed.  It is now always
2452    forced if you set iax.conf jitterbuffer=yes.  If you put a jitter buffer
2453    on a channel it will be on the channel.
2454
2455  * A new configuration parameters, 'calltokenexpiration', has been added that
2456    controls the duration before a call token expires. Default duration is 10
2457    seconds. Setting this to a higher value may help in lagged networks or those
2458    experiencing high packet loss.
2459
2460  * Plaintext auth mode is deprecated and removed from possible default modes.
2461
2462 chan_rtp (was chan_multicast_rtp)
2463 ------------------
2464  * Added unicast RTP support and renamed chan_multicast_rtp to chan_rtp.
2465
2466  * The format for dialing a unicast RTP channel is:
2467    UnicastRTP/<destination-addr>[/[<options>]]
2468    Where <destination-addr> is something like '127.0.0.1:5060'.
2469    Where <options> are in standard Asterisk flag options format:
2470    c(<codec>) - Specify which codec/format to use such as 'ulaw'.
2471    e(<engine>) - Specify which RTP engine to use such as 'asterisk'.
2472
2473  * New options were added for a multicast RTP channel.  The format for
2474    dialing a multicast RTP channel is:
2475    MulticastRTP/<type>/<destination-addr>[/[<control-addr>][/[<options>]]]
2476    Where <type> can be either 'basic' or 'linksys'.
2477    Where <destination-addr> is something like '224.0.0.3:5060'.
2478    Where <control-addr> is something like '127.0.0.1:5060'.
2479    Where <options> are in standard Asterisk flag options format:
2480    c(<codec>) - Specify which codec/format to use such as 'ulaw'.
2481    i(<address>) - Specify the interface address from which multicast RTP
2482      is sent.
2483    l(<enable>) - Set whether packets are looped back to the sender.  The
2484      enable value can be 0 to set looping to off and non-zero to set
2485      looping on.
2486    t(<ttl>) - Set the time-to-live (TTL) value for multicast packets.
2487
2488 chan_sip
2489 ------------------
2490  * New 'rtpbindaddr' global setting. This allows a user to define which
2491    ipaddress to bind the rtpengine to. For example, chan_sip might bind
2492    to eth0 (10.0.0.2) but rtpengine to eth1 (192.168.1.10).
2493
2494  * DTLS related configuration options can now be set at a general level.
2495    Enabling DTLS support, though, requires enabling it at the user
2496    or peer level.
2497
2498  * Added the possibility to set the From: header through the the SIP dial
2499    string (populating the fromuser/fromdomain fields), complementing the
2500    [!dnid] option for the To: header that has existed since 1.6.0 (1d6b192).
2501    NOTE: This is again separated by an exclamation mark, so the To: header may
2502    not contain one of those.
2503
2504  * Session-Timers (RFC 4028) work for TCP (and TLS) transports as well now.
2505    Previously Asterisk dropped calls only with UDP transports. However with
2506    longer international calls via TCP, the SIP channel might break, because
2507    all hops on the Internet route must stay online (have not a single power
2508    outage, for example). Therefore with Session-Timers enabled (which are
2509    enabled at default), you might see additional dropped calls. Consequently
2510    please, consider to go for session-timers=refuse in your sip.conf.
2511
2512 chan_pjsip
2513 ------------------
2514  * New 'user_eq_phone' endpoint setting. This adds a 'user=phone' parameter
2515    to the request URI and From URI if the user is determined to be a phone
2516    number.
2517
2518  * New 'moh_passthrough' endpoint setting. This will pass hold and unhold
2519    requests through using SIP re-invites with sendonly and sendrecv accordingly.
2520
2521  * Added the pjsip.conf system type disable_tcp_switch option.  The option
2522    allows the user to disable switching from UDP to TCP transports described
2523    by RFC 3261 section 18.1.1.
2524
2525  * New 'line' and 'endpoint' options added on outbound registrations. This
2526    allows some identifying information to be added to the Contact of the
2527    outbound registration. If this information is present on messages received
2528    from the remote server the message will automatically be associated with the
2529    configured endpoint on the outbound registration.
2530
2531
2532 Core
2533 ------------------
2534  * The core of Asterisk uses a message bus called "Stasis" to distribute
2535    information to internal components. For performance reasons, the message
2536    distribution was modified to make use of a thread pool instead of a
2537    dedicated thread per consumer in certain cases. The initial settings for
2538    the thread pool can now be configured in 'stasis.conf'.
2539
2540  * A new core DNS API has been implemented which provides a common interface
2541    for DNS functionality. Modules that use this functionality will require that
2542    a DNS resolver module is loaded and available.
2543
2544  * Modified processing of command-line options to first parse only what
2545    is necessary to read asterisk.conf. Once asterisk.conf is fully loaded,
2546    the remaining options are processed.  The -X option now applies to
2547    asterisk.conf only.  To enable #exec for other config files you must
2548    set execincludes=yes in asterisk.conf.  Any other option set on the
2549    command-line will now override the equivalent setting from asterisk.conf.
2550
2551  * The TLS core in Asterisk now supports X.509 certificate subject alternative
2552    names. This way one X.509 certificate can be used for hosts that can be
2553    reached under multiple DNS names or for multiple hosts.
2554
2555  * The Asterisk logging system now supports JSON structured logging. Log
2556    channels specified in logger.conf or added dynamically via CLI commands now
2557    support an optional specifier prior to their levels that determines their
2558    formatting. To set a log channel to format its entries as JSON, a formatter
2559    of '[json]' can be set, e.g.,
2560       full => [json]debug,verbose,notice,warning,error
2561
2562  * The core now supports a 'media cache', which stores temporary media files
2563    retrieved from external sources. CLI commands have been added to manipulate
2564    and display the cached files, including:
2565    - 'media cache show <all>' - show all cached media files, or details about
2566      one particular cached media file
2567    - 'media cache refresh <item>' - force a refresh of a particular media file
2568      in the cache
2569    - 'media cache delete <item>' - remove an item from the cache
2570    - 'media cache create <uri>' - retrieve a URI and store it in the cache
2571
2572  * The ability for device state hints to be automatically created as a result of
2573    device state changes now exists in the PBX. This functionality is referred to
2574    as "autohints" and is configurable in extensions.conf by placing "autohints=yes"
2575    in the context. If enabled a device state hint will be automatically created
2576    with the name of the device.
2577
2578 * If Asterisk is built with systemd support, and run under systemd, it will
2579   notify systemd of its state using sd_notify. Use 'Type=notify' in
2580   asterisk.service.
2581
2582 Functions
2583 ------------------
2584  * The func_odbc global option "single_db_connection" default value has been
2585    changed to 'no'.
2586
2587
2588 Formats
2589 ------------------
2590  * New module format_ogg_speex added which supports Speex codec inside
2591    Ogg containers (filename extension .spx).
2592
2593
2594 CHANNEL
2595 ------------------
2596  * Added CHANNEL(onhold) item that returns 1 (onhold) and 0 (not-onhold) for
2597    the hold status of a channel.
2598
2599 CURL
2600 ------------------
2601  * The CURL function now supports a write option, which will save the retrieved
2602    file to a location on disk. As an example:
2603      same => n,Set(CURL(https://1.1.1.1/foo.wav)=/tmp/foo.wav)
2604    will save 'foo.wav' to /tmp.
2605
2606 DTMF Features
2607 ------------------
2608  * The transferdialattempts default value has been changed from 1 to 3. The
2609    transferinvalidsound has been changed from "pbx-invalid" to
2610    "privacy-incorrect". These were changed to make DTMF transfers be more
2611    user-friendly by default.
2612
2613
2614 Resources
2615 ------------------
2616
2617 res_http_media_cache
2618 ------------------
2619  * A backend for the core media cache, this module retrieves media files from
2620    a remote HTTP(S) server and stores them in the core media cache for later
2621    playback.
2622
2623 res_musiconhold
2624 ------------------
2625  * Added sort=randstart to the sort options. It sorts the files by name and
2626    then chooses the first file to play at random.
2627  * Added preferchannelclass=no option to prefer the application-passed class
2628    over the channel-set musicclass. This allows separate hold-music from
2629    application (e.g. Queue or Dial) specified music.
2630
2631 res_resolver_unbound
2632 ------------------
2633  * Added a res_resolver_unbound module which uses the libunbound resolver library
2634    to perform DNS resolution. This module requires the libunbound library to be
2635    installed in order to be used.
2636
2637 res_pjsip
2638 ------------------
2639  * A new SIP resolver using the core DNS API has been implemented. This relies on
2640    external SIP resolver support in PJSIP which is only available as of PJSIP
2641    2.4. If this support is unavailable the existing built-in PJSIP SIP resolver
2642    will be used instead. The new SIP resolver provides NAPTR support, improved
2643    SRV support, and AAAA record support.
2644
2645 res_pjsip_info_empty
2646 --------------------
2647  * A new module that can respond to empty Content-Type INFO packets during call.
2648    Some SBCs will terminate a call if their empty INFO packets are not responded
2649    to within a predefined time.
2650
2651 res_pjsip_outbound_registration
2652 -------------------------------
2653 * A new 'fatal_retry_interval' option has been added to outbound registration.
2654   When set (default is zero), and upon receiving a failure response to an
2655   outbound registration, registration is retried at the given interval up to
2656   'max_retries'.
2657
2658 res_pjsip_outbound_publish
2659 ------------------
2660  * Added a new multi_user option that when set to 'yes' allows a given configuration
2661    to be used for multiple users.
2662
2663
2664 CEL Backends
2665 ------------------
2666
2667 cel_pgsql
2668 ------------------
2669  * Added a new option, 'usegmtime', which causes timestamps in CEL events
2670    to be logged in GMT.
2671
2672  * Added support to set schema where located the table cel. This settings is
2673    configurable for cel_pgsql via the 'schema' in configuration file
2674    cel_pgsql.conf.
2675
2676
2677 CDR Backends
2678 ------------------
2679
2680 cdr_adaptive_odbc
2681 ------------------
2682  * Added the ability to set the character to quote identifiers. This
2683    allows adding the character at the start and end of table and column
2684    names. This setting is configurable for cdr_adaptive_odbc via the
2685    quoted_identifiers in configuration file cdr_adaptive_odbc.conf.
2686
2687 cdr_odbc
2688 ------------------
2689  * Added a new configuration option, "newcdrcolumns", which enables use of the
2690    post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'.
2691
2692 cdr_csv
2693 ------------------
2694  * Added a new configuration option, "newcdrcolumns", which enables use of the
2695    post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'.
2696
2697 ------------------------------------------------------------------------------
2698 --- Functionality changes from Asterisk 13.10.0 to Asterisk 13.11.0 ----------
2699 ------------------------------------------------------------------------------
2700
2701 chan_dahdi
2702 ------------------
2703  * Added "faxdetect_timeout" option.
2704    The option determines how many seconds into a call before faxdetect
2705    is disabled for the call.  Setting the value to zero disables the timeout.
2706
2707 res_pjsip
2708 ------------------
2709  * Added "fax_detect_timeout" to endpoint.
2710    The option determines how many seconds into a call before fax_detect
2711    is disabled for the call.  Setting the value to zero disables the timeout.
2712
2713  * Added "subscribe_context" to endpoint.
2714    If specified, incoming SUBSCRIBE requests will be searched for the matching
2715    extension in the indicated context. If no "subscribe_context" is specified,
2716    then the "context" setting is used.
2717
2718 res_rtp_asterisk
2719 ------------------
2720  * The DTLS part in Asterisk now supports Perfect Forward Secrecy (PFS).
2721    Enabling PFS is attempted by default, and is dependent on the configuration
2722    of the module using TLS.
2723    - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not
2724      specify a ECDHE cipher suite in sip.conf, for example:
2725        dtlscipher=AES128-SHA
2726    - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters
2727      into the private key file, e.g., sip.conf dtlsprivatekey. For example:
2728        openssl dhparam -out ./dh.pem 2048
2729    - Because clients expect the server to prefer PFS, and because OpenSSL sorts
2730      its cipher suites by bit strength, see "openssl ciphers -v DEFAULT".
2731      Consider re-ordering your cipher suites in the respective configuration
2732      file. For example:
2733        dtlscipher=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
2734      which forces PFS and requires at least DTLS 1.2.
2735
2736 ------------------------------------------------------------------------------
2737 --- Functionality changes from Asterisk 13.9.0 to Asterisk 13.10.0 -----------
2738 ------------------------------------------------------------------------------
2739
2740 Core
2741 ------------------
2742  * A channel variable FORWARDERNAME is now set which indicates which channel
2743    was responsible for a forwarding requests received on dial attempt.
2744
2745 func_odbc
2746 ------------------
2747  * Added new global option "single_db_connection".
2748    Enabling this option func_odbc will use a single database connection per DSN.
2749    This option is enabled by default.
2750
2751 res_fax
2752 ------------------
2753  * Added FAXMODE variable to let dialplan know what fax transport was used.
2754    FAXMODE variable is set to either "audio" or "T38".
2755
2756 res_pjsip
2757 ------------------
2758  * Added "via_addr", "via_port", "call_id" to contacts.
2759    As res_pjsip_nat rewrites contact's address, only the last Via header
2760    can contain the source address of registered endpoint.
2761    Also Call-Id header may contain the source address of registered endpoint.
2762    Added new fields ViaAddress,CallID to AMI event ContactStatus
2763
2764  * Endpoint IP Access Controls
2765    Added new configuration Endpoint options:
2766     "acl" - list of IP ACL section names in acl.conf
2767     "deny" - List of IP addresses to deny access from
2768     "permit" - List of IP addresses to permit access from
2769     "contact_acl" - List of Contact ACL section names in acl.conf
2770     "contact_deny" - List of Contact header addresses to deny
2771     "contact_permit" - List of Contact header addresses to permit
2772
2773  * Added "reg_server" to contacts.
2774    If the Asterisk system name is set in asterisk.conf, it will be stored
2775    into the "reg_server" field in the ps_contacts table to facilitate
2776    multi-server setups.
2777
2778  * When starting Asterisk, received traffic will now be ignored until Asterisk
2779    has loaded all modules and is fully booted.
2780
2781 res_hep
2782 ------------------
2783  * Added a new option, 'uuid_type', that sets the preferred source of the Homer
2784    correlation UUID. The valid options are:
2785    - call-id: Use the PJSIP SIP Call-ID header value
2786    - channel: Use the Asterisk channel name
2787    The default value is 'call-id'. In the event that a HEP module cannot find a
2788    valid value using the specified 'uuid_type', the module may fallback to a
2789    more readily available source for the correlation UUID.
2790
2791 res_odbc
2792 ------------------
2793  * A new option has been added, 'max_connections', which sets the maximum number
2794    of concurrent connections to the database. This option defaults to 1 which
2795    returns the behavior to that of Asterisk 13.7 and prior.
2796
2797 app_confbridge
2798 ------------------
2799  * Added a bridge profile option called regcontext that allows you to
2800    dynamically register the conference bridge name as an extension into
2801    the specified context.  This allows tracking down conferences on multi-
2802    server installations via alternate means (DUNDI for example). By default
2803    this feature is not used.
2804
2805 Codecs
2806 ------------------
2807  * Added the associated format name to 'core show codecs'.
2808
2809 res_ari_channels
2810 ------------------
2811  * Added 'formats' to channel create/originate to allow setting the allowed
2812    formats for a channel when no originator channel is available.  Especially
2813    useful for Local channel creation where no other format information is
2814    available.  'core show codecs' can now be used to look up suitable format
2815    names.
2816
2817 ------------------------------------------------------------------------------
2818 --- Functionality changes from Asterisk 13.8.0 to Asterisk 13.9.0 ------------
2819 ------------------------------------------------------------------------------
2820
2821 res_parking:
2822  - The dynamic parking lot creation channel variables PARKINGDYNAMIC,
2823    PARKINGDYNCONTEXT, PARKINGDYNEXTEN, and PARKINGDYNPOS are now looked
2824    for in the parker's channel instead of the parked channel.  This is only
2825    of significance if the parker uses blind transfer or the DTMF one-step
2826    parking feature.  You need to use the double underscore '__' inheritance
2827    for these variables.  The indefinite inheritance is also recommended
2828    for the PARKINGEXTEN variable.
2829
2830 res_pjsip
2831 ------------------
2832  * Added new global option (disable_multi_domain) to pjsip.
2833    Disabling Multi Domain can improve realtime performace by reducing
2834    number of database requsts.
2835
2836 chan_pjsip
2837 ------------------
2838  * Added 'pjsip show channelstats' CLI command.
2839
2840 res_pjsip_outbound_publish
2841 ------------------
2842  * Added support for setting the transport used on outbound publish
2843    using the transport configuration option.
2844
2845 ------------------------------------------------------------------------------
2846 --- Functionality changes from Asterisk 13.7.0 to Asterisk 13.8.0 ------------
2847 ------------------------------------------------------------------------------
2848
2849 res_pjsip_caller_id
2850 ------------------
2851  * Per RFC3325, the 'From' header is now anonymized on outgoing calls when
2852    caller id presentation is prohibited.
2853
2854 res_pjsip_config_wizard
2855 ------------------
2856  * A new command (pjsip export config_wizard primitives) has been added that
2857    will export all the pjsip objects it created to the console or a file
2858    suitable for reuse in a pjsip.conf file.
2859
2860 Build System
2861 ------------------
2862  * To help insure that Asterisk is compiled and run with the same known
2863    version of pjproject, a new option (--with-pjproject-bundled) has been
2864    added to ./configure.  When specified, the version of pjproject specified
2865    in third-party/versions.mak will be downloaded and configured.  When you
2866    make Asterisk, the build process will also automatically build pjproject
2867    and Asterisk will be statically linked to it.  Once a particular version
2868    of pjproject is configured and built, it won't be configured or built
2869    again unless you run a 'make distclean'.
2870
2871    To facilitate testing, when 'make install' is run, the pjsua and pjsystest
2872    utilities and the pjproject python bindings will be installed in
2873    ASTDATADIR/third-party/pjproject.
2874
2875    The default behavior remains building with the shared pjproject
2876    installation, if any.
2877
2878 app_confbridge
2879 ------------------
2880  * Added CONFBRIDGE_INFO(muted,) for querying the muted conference state.
2881
2882  * Added Muted header to AMI ConfbridgeListRooms action response list events
2883    to indicate the muted conference state.
2884
2885  * Added Muted column to CLI "confbridge list" output to indicate the muted
2886    conference state and made the locked column a yes/no value instead of a
2887    locked/unlocked value.
2888
2889 REDIRECTING(reason)
2890 ------------------
2891  * The REDIRECTING(reason) value is now treated consistently between
2892    chan_sip and chan_pjsip.
2893
2894    Both channel drivers match incoming reason values with values documented
2895    by REDIRECTING(reason) and values documented by RFC5806 regardless of
2896    whether they are quoted or not.  RFC5806 values are mapped to the
2897    equivalent REDIRECTING(reason) documented value and is set in
2898    REDIRECTING(reason).  e.g., an incoming RFC5806 'unconditional' value or a
2899    quoted string version ('"unconditional"') is converted to
2900    REDIRECTING(reason)'s 'cfu' value.  The user's dialplan only needs to deal
2901    with 'cfu' instead of any of the aliases.
2902
2903    The incoming 480 response reason text supported by chan_sip checks for
2904    known reason values and if not matched then puts quotes around the reason
2905    string and assigns that to REDIRECTING(reason).
2906
2907    Both channel drivers send outgoing known REDIRECTING(reason) values as the
2908    unquoted RFC5806 equivalent.  User custom values are either sent as is or
2909    with added quotes if SIP doesn't allow a character within the value as
2910    part of a RFC3261 Section 25.1 token.  Note that there are still
2911    limitations on what characters can be put in a custom user value.  e.g.,
2912    embedding quotes in the middle of the reason string is just going to cause
2913    you grief.
2914
2915  * Setting a REDIRECTING(reason) value now recognizes RFC5806 aliases.
2916    e.g., Setting REDIRECTING(reason) to 'unconditional' is converted to the
2917    'cfu' value.
2918
2919 res_pjproject
2920 ------------------
2921  * This module is the successor of res_pjsip_log_forwarder.  As well as
2922    handling the log forwarding (which now displays as 'pjproject:0' instead
2923    of 'pjsip:0'), it also adds a 'pjproject show buildopts' command to the CLI.
2924    This displays the compiled-in options of the pjproject installation
2925    Asterisk is currently running against.
2926
2927  * Another feature of this module is the ability to map pjproject log levels
2928    to Asterisk log levels, or to suppress the pjproject log messages
2929    altogether.  Many of the messages emitted by pjproject itself are the result
2930    of errors which Asterisk will ultimately handle so the messages can be
2931    misleading or just noise.  A new config file (pjproject.conf) has been added
2932    to configure the mapping and a new CLI command (pjproject show log mappings)
2933    has been added to display the mappings currently in use.
2934
2935 res_pjsip
2936 ------------------
2937  * Transports are now reloadable.  In testing, no in-progress calls were
2938    disrupted if the ip address or port weren't changed, but the possibility
2939    still exists.  To make sure there are no unintentional drops, a new option
2940    'allow_reload', which defaults to 'no' has been added to transport.  If
2941    left at the default, changes to the particular transport will be ignored.
2942    If set to 'yes', changes (if any) will be applied.
2943
2944  * Added new global option (regcontext) to pjsip. When set, Asterisk will
2945    dynamically create and destroy a NoOp priority 1 extension
2946    for a given endpoint who registers or unregisters with us.
2947
2948  * Endpoints and aors can now be identified by the username and realm in an
2949    incoming Authorization header.  To use this feature, add "auth_username"
2950    to your endpoint's "identify_by" list.  You can combine "auth_username"
2951    and the original "username" to test both the From/To and Authorization
2952    headers.  For endpoints, the order is controlled by the global
2953    "endpoint_identifier_order" setting.  For matching aors to an endpoint
2954    for inbound registration, the order is controlled by this option.
2955
2956  * In conjunction with the "auth_username" change, 3 new options have been
2957    added to the global configuration object that control how many unidentified
2958    requests over a certain period from the same IP address can be received
2959    before a security alert is generated.  A new CLI command
2960    "pjsip show unidentified_requests" will list the current candidates.
2961
2962 res_pjsip_history
2963 ------------------
2964  * A new module, res_pjsip_history, has been added that provides SIP history
2965    viewing/filtering from the CLI. The module is intended to be used on systems
2966    with busy SIP traffic, where existing forms of viewing SIP messages - such
2967    as the res_pjsip_logger - may be inadequate. The module provides two new
2968    CLI commands:
2969    - 'pjsip set history {on|off|clear}' - this enables/disables SIP history
2970      capturing, as well as clears an existing history capture. Note that SIP
2971      packets captured are stored in memory until cleared. As a result, the
2972      history capture should only be used for debugging/viewing purposes, and
2973      should *NOT* be left permanently enabled on a system.
2974    - 'pjsip show history' - displays the captured SIP history. When invoked
2975      with no options, the entire captured history is displayed. Two options
2976      are available:
2977      -- 'entry <num>' - display a detailed view of a single SIP message in
2978         the history
2979      -- 'where ...' - filter the history based on some expression. For more
2980         information on filtering, view the current CLI help for the
2981         'pjsip show history' command.
2982
2983 Voicemail
2984 ------------------
2985  * app_voicemail and res_mwi_external can now be built together.  The default
2986    remains to build app_voicemail and not res_mwi_external but if they are
2987    both built, the load order will cause res_mwi_external to load first and
2988    app_voicemail will be skipped.  Use 'preload=app_voicemail.so' in
2989    modules.conf to force app_voicemail to be the voicemail provider.
2990
2991 res_pjsip_sdp_rtp
2992 ------------------
2993  * A new option (bind_rtp_to_media_address) has been added to endpoint which
2994    will cause res_pjsip_sdp_rtp to actually bind the RTP instance to the
2995    media_address as well as using it in the SDP.  If set, RTP packets will now
2996    originate from the media address instead of the operating system's "primary"
2997    ip address.
2998
2999 res_rtp_asterisk
3000 ------------------
3001  * A new configuration section - ice_host_candidates - has been added to
3002    rtp.conf, allowing automatically discovered ICE host candidates to be
3003    overriden. This allows an Asterisk server behind a 1:1 NAT to send its
3004    external IP as a host candidate rather than relying on STUN to discover it.
3005
3006 ------------------------------------------------------------------------------
3007 --- Functionality changes from Asterisk 13.6.0 to Asterisk 13.7.0 ------------
3008 ------------------------------------------------------------------------------
3009
3010 Codecs
3011 ------------------
3012  * Added format attribute negotiation for the VP8 video codec. Format attribute
3013    negotiation is provided by the res_format_attr_vp8 module.
3014
3015 ConfBridge
3016 ------------------
3017  * A new "timeout" user profile option has been added. This configures the number
3018    of seconds that a participant may stay in the ConfBridge after joining. When
3019    the time expires, the user is ejected from the conference and CONFBRIDGE_RESULT
3020    is set to "TIMEOUT" on the channel.
3021
3022 chan_sip
3023 ------------------
3024  * The websockets_enabled option has been added to the general section of
3025    sip.conf.  The option is enabled by default to match the previous behavior.
3026    The option should be disabled when using res_pjsip_transport_websockets to
3027    ensure chan_sip will not conflict with PJSIP websockets.
3028
3029 Dialplan Functions
3030 ------------------
3031  * The HOLD_INTERCEPT dialplan function now actually exists in the source tree.
3032    While support for the events was added in Asterisk 13.4.0, the function
3033    accidentally never made it in. That function is now present, and will cause
3034    the 'hold' raised by a channel to be intercepted and converted into an
3035    event instead.
3036
3037 res_pjsip_outbound_registration
3038 -------------------------------
3039  * If res_statsd is loaded and a StatsD server is configured, basic statistics
3040    regarding the state of outbound registrations will now be emitted. This
3041    includes:
3042    - A GAUGE statistic for the overall number of outbound registrations, i.e.:
3043        PJSIP.registrations.count
3044    - A GAUGE statistic for the overall number of outbound registrations in a
3045      particular state, e.g.:
3046        PJSIP.registrations.state.Registered
3047
3048 res_pjsip
3049 ------------------
3050  * The ability to use "like" has been added to the pjsip list and show
3051    CLI commands.  For instance: CLI> pjsip list endpoints like abc
3052
3053  * If res_statsd is loaded and a StatsD server is configured, basic statistics
3054    regarding the state of PJSIP contacts will now be emitted. This includes:
3055    - A GAUGE statistic for the overall number of contacts in a particular
3056      state, e.g.:
3057        PJSIP.contacts.states.Reachable
3058    - A TIMER statistic for the RTT time for each qualified contact, e.g.:
3059        PJSIP.contacts.alice@@127.0.0.1:5061.rtt
3060
3061 res_sorcery_memory_cache
3062 ------------------------
3063  * A new caching strategy, full_backend_cache, has been added which caches
3064    all stored objects in the backend. When enabled all objects will be
3065    expired or go stale according to the configuration. As well when enabled
3066    all retrieval operations will be performed against the cache instead of
3067    the backend.
3068
3069 func_callerid
3070 -------------------
3071  * CALLERID(pres) is now documented as a valid alternative to setting both
3072    CALLERID(name-pres) and CALLERID(num-pres) at once.  Some channel drivers,
3073    like chan_sip, don't make a distinction between the two: they take the
3074    least public value from name-pres and num-pres.  By using CALLERID(pres)
3075    for reading and writing, you touch the same combined value in the dialplan.
3076    The same applies to CONNECTEDLINE(pres), REDIRECTING(orig-pres),
3077    REDIRECTING(to-pres) and REDIRECTING(from-pres).
3078
3079 res_endpoint_stats
3080 -------------------
3081  * A new module that emits StatsD statistics regarding Asterisk endpoints.
3082    This includes a total count of the number of endpoints, the count of the
3083    number of endpoints in the technology agnostic state of the endpoint -
3084    online or offline - as well as the number of channels associated with each
3085    endpoint. These are recorded as three different GAUGE statistics:
3086     - endpoints.count
3087     - endpoints.state.{unknown|offline|online}
3088     - endpoints.{tech}.{resource}.channels
3089
3090
3091 ------------------------------------------------------------------------------
3092 --- Functionality changes from Asterisk 13.5.0 to Asterisk 13.6.0 ------------
3093 ------------------------------------------------------------------------------
3094
3095 Dialplan Functions
3096 ------------------
3097  * The CHANNEL function, when used on a PJSIP channel, now exposes a 'call-id'
3098    extraction option when using with the 'pjsip' signalling option. It will
3099    return the SIP Call-ID associated with the INVITE request that established
3100    the PJSIP channel.
3101
3102 ARI
3103 ------------------
3104  * Two new endpoint related events are now available: PeerStatusChange and
3105    ContactStatusChange. In particular, these events are useful when subscribing
3106    to all event sources, as they provide additional endpoint related
3107    information beyond the addition/removal of channels from an endpoint.
3108
3109  * Added the ability to subscribe to all ARI events in Asterisk, regardless
3110    of whether the application 'controls' the resource. This is useful for
3111    scenarios where an ARI application merely wants to observe the system,
3112    as opposed to control it. There are two ways to accomplish this:
3113    (1) Via the WebSocket connection URI. A new query paramter, 'subscribeAll',
3114        has been added that, when present and True, will subscribe all
3115        specified applications to all ARI event sources in Asterisk.
3116    (2) Via the applications resource. An ARI client can, at any time, subscribe
3117        to all resources in an event source merely by not providing an explicit
3118        resource. For example, subscribing to an event source of 'channels:'
3119        as opposed to 'channels:12345' will subscribe the application to all
3120        channels.
3121
3122 ------------------------------------------------------------------------------
3123 --- Functionality changes from Asterisk 13.4.0 to Asterisk 13.5.0 ------------
3124 ------------------------------------------------------------------------------
3125
3126 AMI
3127 ------------------
3128  * A new ContactStatus event has been added that reflects res_pjsip contact
3129    lifecycle changes:  Created, Removed, Reachable, Unreachable, Unknown.
3130
3131  * Added the Linkedid header to the common channel headers listed for each
3132    channel in AMI events.
3133
3134 ARI
3135 ------------------
3136  * A new feature has been added that enables the retrieval of modules and
3137    module information through an HTTP request. Information on a single module
3138    can be also be retrieved. Individual modules can be loaded to Asterisk, as
3139    well as unloaded and reloaded.
3140
3141 * A new resource has been added to the 'asterisk' resource, 'config/dynamic'.
3142    This resource allows for push configuration of sorcery derived objects
3143    within Asterisk. The resource supports creation, retrieval, updating, and
3144    deletion. Sorcery derived objects that are manipulated by this resource
3145    must have a sorcery wizard that supports the desired operations.
3146
3147  * A new feature has been added that allows for the rotation of log channels
3148    through HTTP requests.
3149
3150
3151 res_pjsip
3152 ------------------
3153 * A new 'g726_non_standard' endpoint option has been added that, when set to
3154   'yes' and g.726 audio is negotiated, forces the codec to be treated as if it
3155   is AAL2 packed on the channel.
3156
3157 * A new 'rtp_keepalive' endpoint option has been added. This option specifies
3158   an interval, in seconds, at which we will send RTP comfort noise packets to
3159   the endpoint. This functions identically to chan_sip's "rtpkeepalive" option.
3160
3161 * New 'rtp_timeout' and 'rtp_timeout_hold' endpoint options have been added.
3162   These options specify the amount of time, in seconds, that Asterisk will wait
3163   before terminating the call due to lack of received RTP. These are identical
3164   to chan_sip's rtptimeout and rtpholdtimeout options.
3165
3166 ------------------------------------------------------------------------------
3167 --- Functionality changes from Asterisk 13.3.0 to Asterisk 13.4.0 ------------
3168 ------------------------------------------------------------------------------
3169
3170 chan_pjsip
3171 ------------------
3172  * New 'rpid_immediate' option to control if connected line update information
3173    goes to the caller immediately or waits for another reason to send the
3174    connected line information update.  See the online option documentation for
3175    more information.  Defaults to 'no' as setting it to 'yes' can result in
3176    many unnecessary messages being sent to the caller.
3177
3178  * The configuration setting 'progressinband' now defaults to 'no', which
3179    matches the actual behavior of previous versions.
3180
3181 res_pjsip
3182 ------------------
3183  * A new CLI command has been added: "pjsip show settings", which shows
3184    both the global and system configuration settings.
3185
3186  * A new aor option has been added: "qualify_timeout", which sets the timeout
3187    in seconds for a qualify.  The default is 3 seconds.  This overrides the
3188    hard coded 32 seconds in pjproject.
3189
3190  * Endpoint status will now change to "Unreachable" when all contacts are
3191    unavailable.  When any contact becomes available, the endpoint will status
3192    will change back to "Reachable".
3193
3194  * A new global option has been added: "max_initial_qualify_time", which
3195    sets the maximum amount of time from startup that qualifies should be
3196    attempted on all contacts.
3197
3198 res_ari_channels
3199 ------------------
3200  * Two new events, 'ChannelHold' and 'ChannelUnhold', have been added to the
3201    events data model. These events are raised when a channel indicates a hold
3202    or unhold, respectively.
3203
3204 func_holdintercept
3205 ------------------
3206  * A new dialplan function, HOLD_INTERCEPT, has been added. This function, when
3207    placed on a channel, intercepts hold/unhold indications signalled by the
3208    channel and prevents them from moving on to other channels in a bridge with
3209    the hold initiator. Instead, AMI or ARI events are raised indicating that
3210    the channel wanted to place someone on hold. This allows external
3211    applications to implement their own custom hold/unhold logic.
3212
3213 ------------------------------------------------------------------------------
3214 --- Functionality changes from Asterisk 13.2.0 to Asterisk 13.3.0 ------------
3215 ------------------------------------------------------------------------------
3216
3217 chan_pjsip/app_transfer
3218 ------------------
3219  * The Transfer application, when used with chan_pjsip, now supports using
3220    a PJSIP endpoint as the transfer destination. This is in addition to
3221    explicitly specifying a SIP URI to transfer to.
3222
3223 res_ari_channels
3224 ------------------
3225  * The ARI /channels resource now supports a new operation, 'redirect'. The
3226    redirect operation will perform a technology and state specific redirection
3227    on the channel to a specified endpoint or destination. In the case of SIP
3228    technologies, this is either a 302 Redirect response to an on-going INVITE
3229    dialog or a SIP REFER request.
3230
3231 res_pjsip
3232 ------------------
3233  * A new 'endpoint_identifier_order' option has been added that allows one to
3234    set the order by which endpoint identifiers are processed and checked. This
3235    option is specified under the 'global' type configuration section.
3236
3237 ------------------------------------------------------------------------------
3238 --- Functionality changes from Asterisk 13.1.0 to Asterisk 13.2.0 ------------
3239 ------------------------------------------------------------------------------
3240
3241  * New 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions have been added which
3242    allow examining PJSIP AORs or contacts from the dialplan.
3243
3244 res_pjsip_outbound_registration
3245 ------------------
3246  * The 'pjsip send unregister' command now stops further registrations.
3247
3248  * A new command 'pjsip send register' has been added which allows you to
3249    start or restart periodic registration.  It can be used after a
3250    'send unregister' or after a 401 permanent error.
3251
3252 res_pjsip_config_wizard
3253 ------------------
3254  * This is a new module that adds streamlined configuration capability for
3255    chan_pjsip.  It's targeted at users who have lots of basic configuration
3256    scenarios like 'phone' or 'agent' or 'trunk'.  Additional information
3257    can be found in the sample configuration file at
3258    config/samples/pjsip_wizard.conf.sample.
3259
3260 res_fax
3261 -----------
3262  * The T.38 negotiation timeout was previously hard coded at 5000 milliseconds
3263    and is now configurable via the 't38timeout' configuration option in
3264    res_fax.conf and via the fax options dialplan function 'FAXOPT(t38timeout)'.
3265    The default remains at 5000 milliseconds.
3266
3267 PJSIP Transports
3268 ----------
3269  * The ca_list_path transport parameter has been added for TLS transports. This
3270    option behaves similarly to the old sip.conf option "tlscapath". In order to
3271    use this, you must be using PJProject version 2.4 or higher.
3272
3273 ARI
3274 ------------------
3275  * The Originate operation now takes in an originator channel. The linked ID of
3276    this originator channel is applied to the newly originated outgoing channel.
3277    If using CEL this allows an association to be established between the two so
3278    it can be recognized that the originator is dialing the originated channel.
3279
3280  * "language" (the default spoken language for the channel) is now included in
3281    the standard channel state output for suitable events.
3282
3283  * The POST channels/{id} operation and the POST channels/{id}/continue operation
3284    now have a new "label" parameter. This allows for origination or continuation
3285    to a labeled priority in the dialplan instead of requiring a specific priority
3286    number. The ARI version has been bumped to 1.7.0 as a result.
3287
3288 AMI
3289 ------------------
3290  * "Language" (the default spoken language for the channel) is now included in
3291    the standard channel state output for suitable events.
3292
3293  * AMI actions that return a list of events have been made to return consistent
3294    headers for the action response event starting the list and the list complete
3295    event.  The AMI version has been bumped to 2.7.0 as a result.
3296
3297 ------------------------------------------------------------------------------
3298 --- Functionality changes from Asterisk 13.0.0 to Asterisk 13.1.0 ------------
3299 ------------------------------------------------------------------------------
3300
3301 AMI
3302 ------------------
3303  * Event NewConnectedLine is emitted when the connected line information on
3304    a channel changes.
3305
3306 ARI
3307 ------------------
3308  * Event ChannelConnectedLine is emitted when the connected line information
3309    on a channel changes.
3310
3311 Core Transfers
3312 -----------------
3313
3314 The features.conf general section has three new configurable options:
3315     * transferdialattempts
3316     * transferretrysound
3317     * transferinvalidsound
3318 For more information on what these options do, see the Asterisk wiki:
3319  https://wiki.asterisk.org/wiki/x/W4fAAQ
3320
3321 Channel Drivers
3322 ------------------
3323
3324 chan_pjsip
3325 ------------------
3326  * New 'media_encryption_optimistic' endpoint setting. This will use SRTP
3327    when possible but does not consider lack of it a failure.
3328
3329 res_pjsip_endpoint_identifer_ip
3330 ------------------
3331  * New CLI commands have been added: "pjsip show identif(y|ies)", which lists
3332    all configured PJSIP identify objects
3333
3334 ------------------------------------------------------------------------------
3335 --- Functionality changes from Asterisk 12 to Asterisk 13 --------------------
3336 ------------------------------------------------------------------------------
3337
3338 Overview
3339 ------------------
3340
3341 Asterisk 13 is the next Long Term Support (LTS) release of Asterisk. As such,
3342 the focus of development for this release of Asterisk was on improving the
3343 usability and features developed in the previous Standard release, Asterisk 12.
3344 Beyond a general refinement of end user features, development focussed heavily
3345 on the Asterisk APIs - the Asterisk Manager Interface (AMI) and the Asterisk
3346 REST Interface (ARI) - and the PJSIP stack in Asterisk. Some highlights of the
3347 new features include:
3348
3349 * Asterisk security events are now provided via AMI, allowing end users to
3350   monitor their Asterisk system in real time for security related issues.
3351 * External control of Message Waiting Indicators (MWI) through both AMI and ARI.
3352 * Reception/transmission of out of call text messages using any supported
3353   channel driver/protocol stack through ARI.
3354 * Resource List Server support in the PJSIP stack, providing subscriptions to
3355   lists of resources and batched delivery of NOTIFY requests.
3356 * Inter-Asterisk distributed device state and mailbox state using the PJSIP
3357   stack.
3358
3359 It is important to note that Asterisk 13 is built on the architecture developed
3360 during the previous Standard release, Asterisk 12. Users upgrading to
3361 Asterisk 13 should read about the new features in Asterisk 12 later in this file
3362 (see Functionality changes from Asterisk 11 to Asterisk 12), as well as the
3363 UPGRADE-12.txt delivered with this release. In particular, users upgrading to
3364 Asterisk 13 from a release prior to Asterisk 12 should read the specifications
3365 on AMI, CDRs, and CEL on the Asterisk wiki:
3366  * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ
3367  * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ
3368  * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ
3369
3370 Many new featuers in Asterisk 13 were introduced in point releases of
3371 Asterisk 12. Following this section - which documents the changes from all
3372 versions of Asterisk 12 to Asterisk 13 - users should examine the new features
3373 that were introduced in the point releases of Asterisk 12, as they are also
3374 included in Asterisk 13.
3375
3376 Finally, all users upgrading to Asterisk 13 should read the UPGRADE.txt file
3377 delivered with this release.
3378
3379
3380 Build System
3381 ------------------
3382  * Sample config files have been moved from configs/ to a sub-folder of that
3383    directory, samples.
3384
3385  * The menuselect utility has been pulled into the Asterisk repository. As a
3386    result, the libxml2 development library is now a required dependency for
3387    Asterisk.
3388
3389  * A new Compiler Flag, REF_DEBUG, has been added. When enabled, reference
3390    counted objects will emit additional debug information to the refs log file
3391    located in the standard Asterisk log file directory. This log file is useful
3392    in tracking down object leaks and other reference counting issues. Prior to
3393    this version, this option was only available by modifying the source code
3394    directly. This change also includes a new script, refcounter.py, in the
3395    contrib folder that will process the refs log file. Note that this replaces
3396    the refcounter utility that could be built from the utils directory.
3397
3398
3399 Applications
3400 ------------------
3401
3402 DahdiBarge
3403 ------------------
3404  * This module was deprecated and has been removed. Users of app_dahdibarge
3405    should use ChanSpy instead.
3406
3407 MixMonitor
3408 ------------------
3409  * New options to play a beep when starting a recording and stopping a recording
3410    have been added.  The option "p" will play a beep to the channel that starts
3411    the recording.  The option "P" will play a beep to the channel that stops the
3412    recording.
3413
3414 Queue
3415 ------------------
3416  * Queue rules can now be stored in a database table, queue_rules. Unlike other
3417    RealTime tables, the queue_rules table is only examined on module load or
3418    module reload. A new general setting has been added to queuerules.conf,
3419    'realtime_rules', which, when set to 'yes', will cause app_queue to look in
3420    RealTime for additional queue rules to parse. Note that both the file and
3421    the database can be used as a provide of queue rules when 'realtime_rules'
3422    is set to 'yes'.
3423
3424    When app_queue is reloaded, all rules are re-parsed and loaded into memory.
3425    There is no caching of RealTime queue rules.
3426
3427 ReadFile
3428 ------------------
3429  * This module was deprecated and has been removed. Users of app_readfile
3430    should use func_env's FILE function instead.
3431
3432 Say
3433 ------------------
3434  * The 'say' family of dialplan applications now support the Japanese
3435    language. The 'language' parameter in say.conf now recognizes a setting of
3436    'ja', which will enable Japanese language specific mechanisms for playing
3437    back numbers, dates, and other items.
3438  * Counting, enumeration and dates now supports Icelandic grammar with the
3439    'language' parameter set to 'is'.
3440
3441 SayCountPL
3442 ------------------
3443  * This module was deprecated and has been removed. Users of app_saycountpl
3444    should use the Say family of applications.
3445
3446 SetMusicOnHold
3447 ------------------
3448  * The SetMusicOnHold dialplan application was deprecated and has been removed.
3449    Users of the application should use the CHANNEL function's musicclass
3450    setting instead.
3451
3452 WaitMusicOnHold
3453 ------------------
3454  * The WaitMusicOnHold dialplan application was deprecated and has been
3455    removed. Users of the application should use MusicOnHold with a duration
3456    parameter instead.
3457
3458 VoiceMail
3459 ------------------
3460  * VoiceMail and VoiceMailMain now support the Japanese language. The
3461    'language' parameter in voicemail.conf now recognizes a setting of 'ja',
3462    which will enable prompts to be played back using a Japanese grammatical
3463    structure. Additional prompts are necessary for this functionality,
3464    including:
3465    - jb-arimasu: there is
3466    - jb-arimasen: there is not
3467    - jb-oshitekudasai: please press
3468    - jb-ni: article ni
3469    - jb-ga: article ga
3470    - jb-wa: article wa
3471    - jb-wo: article wo
3472
3473  * Add the ability to specify multiple email addresses in configuration,
3474    separated by a |.
3475
3476
3477 CDR Backends
3478 ------------------
3479
3480 cdr_sqlite
3481 -----------------
3482  * This module was deprecated and has been removed. Users of cdr_sqlite
3483    should use cdr_sqlite3_custom.
3484
3485 cdr_pgsql
3486 ------------------
3487  * Added the ability to support PostgreSQL application_name on connections.
3488    This allows PostgreSQL to display the configured name in the
3489    pg_stat_activity view and CSV log entries. This setting is configurable
3490    for cdr_pgsql via the appname configuration setting in cdr_pgsql.conf.
3491
3492
3493 CEL Backends
3494 ------------------
3495
3496 cel_pgsql
3497 ------------------
3498  * Added the ability to support PostgreSQL application_name on connections.
3499    This allows PostgreSQL to display the configured name in the
3500    pg_stat_activity view and CSV log entries. This setting is configurable
3501    for cel_pgsql via the appname configuration setting in cel_pgsql.conf.
3502
3503
3504 Channel Drivers
3505 ------------------
3506
3507 chan_dahdi
3508 ------------------
3509  * SS7 support now requires libss7 v2.0 or later.
3510
3511  * Added SS7 support for connected line and redirecting.
3512
3513  * Most SS7 CLI commands are reworked as well as new SS7 commands added.
3514    See online CLI help.
3515
3516  * Added several SS7 config option parameters described in
3517    chan_dahdi.conf.sample.
3518
3519 chan_gtalk
3520 ------------------
3521  * This module was deprecated and has been removed. Users of chan_gtalk
3522    should use chan_motif.
3523
3524 chan_h323
3525 ------------------
3526  * This module was deprecated and has been removed. Users of chan_h323
3527    should use chan_ooh323.
3528
3529 chan_jingle
3530 ------------------
3531  * This module was deprecated and has been removed. Users of chan_jingle
3532    should use chan_motif.
3533
3534 chan_pjsip
3535 ------------------
3536  * Added the CLI command 'pjsip list ciphers' so a user can know what
3537    OpenSSL names are available on their system for the pjsip.conf cipher
3538    option.
3539
3540 chan_sip
3541 ------------------
3542  * The SIPPEER dialplan function no longer supports using a colon as a
3543    delimiter for parameters. The parameters for the function should be
3544    delimited using a comma.
3545
3546  * The SIPCHANINFO dialplan function was deprecated and has been removed. Users
3547    of the function should use the CHANNEL function instead.
3548
3549
3550 Core
3551 ------------------
3552
3553 Account Codes
3554 ------------------
3555  * Added functional peeraccount support.  Except for Queue, the
3556    accountcode propagation is now consistently propagated to outgoing
3557    channels before dialing.  The channel accountcode can change from its
3558    original non-empty value on channel creation for the following specific
3559    reasons.  One, dialplan sets it using CHANNEL(accountcode).  Two, an
3560    originate method that can specify an accountcode value.  Three, the
3561    calling channel propagates its peeraccount or accountcode to the
3562    outgoing channel's accountcode before dialing.  The change has two
3563    visible effects.  One, local channels now cross accountcode and
3564    peeraccount across the special bridge between the ;1 and ;2 channels
3565    just like channels between normal bridges.  Two, the
3566    CHANNEL(peeraccount) value can now be set before Dial and FollowMe to
3567    set the accountcode on the outgoing channel(s).
3568
3569    For Queue, an outgoing channel's non-empty accountcode will not change
3570    unless explicitly set by CHANNEL(accountcode).  The change has three
3571    visible effects.  One, local channels now cross accountcode and
3572    peeraccount across the special bridge between the ;1 and ;2 channels
3573    just like channels between normal bridges.  Two, the queue member will
3574    get an accountcode if it doesn't have one and one is available from the
3575    calling channel's peeraccount.  Three, accountcode propagation includes
3576    local channel members where the accountcodes are propagated early
3577    enough to be available on the ;2 channel.
3578
3579 AMI
3580 ------------------
3581  * New DeviceStateChanged and PresenceStateChanged AMI events have been added.
3582    These events are emitted whenever a device state or presence state change
3583    occurs. The events are controlled by res_manager_device_state.so and
3584    res_manager_presence_state.so. If the high frequency of these events is
3585    problematic for you, do not load these modules.
3586
3587  * Added DialplanExtensionAdd and DialplanExtensionRemove AMI commands. They
3588    work in basically the same way as the 'dialplan add extension' and
3589    'dialplan remove extension' CLI commands respectively.
3590
3591  * New AMI action LoggerRotate reloads and rotates logger in the same manner
3592    as CLI command 'logger rotate'
3593
3594  * New AMI Actions FAXSessions, FAXSession, and FAXStats replicate the
3595    functionality of CLI commands 'fax show sessions', 'fax show session',
3596    and fax show stats' respectively.
3597
3598  * New AMI actions PRIDebugSet, PRIDebugFileSet, and PRIDebugFileUnset
3599    enable manager control over PRI debugging levels and file output.
3600
3601  * AMI action PJSIPNotify may now send to a URI instead of only to a PJSIP
3602    endpoint as long as a default outbound endpoint is set. This also applies
3603    to the equivalent CLI command (pjsip send notify)
3604
3605  * The AMI action PJSIPShowEndpoint now includes ContactStatusDetail sections
3606    that give information on Asterisk's attempts to qualify the endpoint.
3607
3608  * The DialEnd event will now contain a Forward header if the dial is ending
3609    due to the call being forwarded. The contents of the Forward header is the
3610    extension in the number to which the call is being forwarded.
3611
3612 CEL
3613 ------------------
3614  * The "bridge_technology" extra field key has been added to BRIDGE_ENTER
3615    and BRIDGE_EXIT events.
3616
3617 Features
3618 ------------------
3619  * Channel variables are now substituted in arguments passed to applications
3620    run by using dynamic features.
3621
3622 TLS
3623 ------------------
3624  * The TLS core in Asterisk now supports Perfect Forward Secrecy (PFS).
3625    Enabling PFS is attempted by default, and is dependent on the configuration
3626    of the module using TLS.
3627    - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not
3628      specify a ECDHE cipher suite in sip.conf, for example:
3629        tlscipher=AES128-SHA:DES-CBC3-SHA
3630    - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters
3631      into the private key file, e.g., sip.conf tlsprivatekey. For example, the
3632      default dh2048.pem - see
3633      http://www.opensource.apple.com/source/OpenSSL098/OpenSSL098-35.1/src/apps/dh2048.pem?txt
3634    - Because clients expect the server to prefer PFS, and because OpenSSL sorts
3635      its cipher suites by bit strength, see "openssl ciphers -v DEFAULT".
3636      Consider re-ordering your cipher suites in the respective configuration
3637      file. For example:
3638        tlscipher=AES128+kEECDH:AES128+kEDH:3DES+kEDH:AES128-SHA:DES-CBC3-SHA:-ADH:-AECDH
3639      will use PFS when offered by the client. Clients which do not offer PFS
3640      fall-back to AES-128 (or even 3DES, as recommended by RFC 3261).
3641
3642
3643 Functions
3644 ------------------
3645
3646 JACK_HOOK
3647 ------------------
3648  * The JACK_HOOK function now supports audio with a sample rate higher than
3649    8kHz.
3650
3651
3652 Resources
3653 ------------------
3654
3655 res_config_pgsql
3656 ------------------
3657  * Added the ability to support PostgreSQL application_name on connections.
3658    This allows PostgreSQL to display the configured name in the
3659    pg_stat_activity view and CSV log entries. This setting is configurable
3660    for res_config_pgsql via the dbappname configuration setting in
3661    res_pgsql.conf.
3662
3663 res_pjsip_outbound_publish
3664 ------------------
3665  * A new module, res_pjsip_outbound_publish provides the mechanisms for sending
3666    PUBLISH requests for specific event packages to another SIP User Agent.
3667
3668 res_pjsip_pubsub
3669 ------------------
3670  * The publish/subscribe core module has been updated to support RFC 4662
3671    Resource Lists, allowing Asterisk to act as a Resource List Server (RLS).
3672    Resource lists are configured in pjsip.conf under a new object type,
3673    resource_list. Resource lists can contain either message-summary or presence
3674    events, and can be composed of specific resources that provide the event or
3675    other resource lists.
3676
3677  * Inbound publication support is provided by a new object, inbound-publication.
3678    This configures res_pjsip_pubsub to accept PUBLISH requests from a particular
3679    resource. Which events are accepted is constructed dynamically; see
3680    res_pjsip_publish_asterisk for more information.
3681
3682 res_pjsip_publish_asterisk
3683 ------------------
3684  * A new module, res_pjsip_publish_asterisk adds support for PUBLISH requests of
3685    Asterisk information to other Asterisk servers. This module is intended only
3686    for Asterisk to Asterisk exchanges of information. Currently, this includes
3687    both mailbox state and device state information.
3688
3689 ------------------------------------------------------------------------------
3690 --- Functionality changes from Asterisk 12.4.0 to Asterisk 12.5.0 ------------
3691 ------------------------------------------------------------------------------
3692
3693 ARI
3694 ------------------
3695  * Stored recordings now support a new operation, copy. This will take an
3696    existing stored recording and copy it to a new location in the recordings
3697    directory.
3698
3699  * LiveRecording objects now have three additional fields that can be reported
3700    in a RecordingFinished ARI event:
3701    - total_duration: the duration of the recording
3702    - talking_duration: optional. The duration of talking detected in the
3703      recording. This is only available if max_silence_seconds was specified
3704      when the recording was started.
3705    - silence_duration: optional. The duration of silence detected in the
3706      recording. This is only available if max_silence_seconds was specified
3707      when the recording was started.
3708    Note that all duration values are reported in seconds.
3709
3710  * Users of ARI can now send and receive out of call text messages. Messages
3711    can be sent directly to a particular endpoint, or can be sent to the
3712    endpoints resource directly and inferred from the URI scheme. Text
3713    messages are passed to ARI clients as TextMessageReceived events. ARI
3714    clients can choose to receive text messages by subscribing to the particular
3715    endpoint technology or endpoints that they are interested in.
3716
3717  * The applications resource now supports subscriptions to all endpoints of
3718    a particular channel technology. For example, subscribing to an eventSource
3719    of 'endpoint:PJSIP' will subscribe to all PJSIP endpoints.
3720
3721 res_pjsip
3722 ------------------
3723  * The endpoint configuration object now supports 'accountcode'. Any channel
3724    created for an endpoint with this setting will have its accountcode set
3725    to the specified value.
3726
3727 res_hep_rtcp
3728 ------------------
3729  * A new module, res_hep_rtcp, has been added that will forward RTCP call
3730    statistics to a HEP capture server. See res_hep for more information.
3731
3732 Functions
3733 ------------------
3734  * Function AUDIOHOOK_INHERIT has been deprecated. Audiohooks are now
3735    unconditionally inherited through masquerades. As a side benefit, more
3736    than one audiohook of a given type may persist through a masquerade now.
3737
3738 ------------------------------------------------------------------------------
3739 --- Functionality changes from Asterisk 12.3.0 to Asterisk 12.4.0 ------------
3740 ------------------------------------------------------------------------------
3741
3742 AgentRequest
3743 ------------------
3744  * Returns new AGENT_STATUS value "NOT_CONNECTED" if the agent fails to
3745    connect with an incoming caller after being alerted to the presence
3746    of the incoming caller.  The most likely reason this would happen is
3747    the agent did not acknowledge the call in time.
3748
3749 AMI
3750 ------------------
3751  * New events have been added for the TALK_DETECT function. When the function
3752    is used on a channel, ChannelTalkingStart/ChannelTalkingStop events will be
3753    emitted to connected AMI clients indicating the start/stop of talking on
3754    the channel.
3755
3756 ARI
3757 ------------------
3758  * New event models have been aded for the TALK_DETECT function. When the
3759    function is used on a channel, ChannelTalkingStarted/ChannelTalkingFinished
3760    events will be emitted to connected WebSockets subscribed to the channel,
3761    indicating the start/stop of talking on the channel.
3762
3763 Functions
3764 ------------------
3765  * A new function, TALK_DETECT, has been added. When set on a channel, this
3766    fucntion causes events indicating the starting/stoping of talking on said
3767    channel to be emitted to both AMI and ARI clients.
3768
3769 ------------------------------------------------------------------------------
3770 --- Functionality changes from Asterisk 12.2.0 to Asterisk 12.3.0 ------------
3771 ------------------------------------------------------------------------------
3772
3773 ARI
3774 ------------------
3775  * A new Playback URI 'tone' has been added. Tones are specified either as
3776    an indication name (e.g. 'tone:busy') from indications.conf or as a tone
3777    pattern (e.g. 'tone:240/250,0/250'). Tones differ from normal playback
3778    URIs in that they must be stopped manually and will continue to occupy
3779    a channel's ARI control queue until they are stopped. They also can not
3780    be rewound or fastforwarded.
3781
3782  * User events can now be generated from ARI.  Events can be signalled with
3783    arbitrary json variables, and include one or more of channel, bridge, or
3784    endpoint snapshots.  An application must be specified which will receive
3785    the event message (other applications can subscribe to it).  The message
3786    will also be delivered via AMI provided a channel is attached.  Dialplan
3787    generated user event messages are still transmitted via the channel, and
3788    will only be received by a stasis application they are attached to or if
3789    the channel is subscribed to.
3790
3791 chan_sip
3792 -----------
3793  * SIP peers can now specify 'trust_id_outbound' which affects RPID/PAI
3794    fields for prohibited callingpres information. Values are legacy, no, and
3795    yes. By default, legacy is used.
3796    trust_id_outbound=legacy - behavior remains the same as 1.8.26.1. When
3797      dealing with prohibited callingpres and sendrpid=pai/rpid, RPID/PAI
3798      headers are appended to outbound SIP messages just as they are with
3799      allowed callingpres values, but data about the remote party's identity is
3800      anonymized.
3801      When sendrpid=rpid, only the remote party's domain is anonymized.
3802    trust_id_outbound=no - when dealing with prohibited callingpres, RPID/PAI
3803      headers are not sent.
3804    trust_id_outbound=yes - RPID/PAI headers are applied with the full remote
3805      party information in tact even for prohibited callingpres information.
3806      In the case of PAI, a Privacy: id header will be appended for prohibited
3807      calling information to communicate that the private information should
3808      not be relayed to untrusted parties.
3809
3810 res_parking
3811 ------------------
3812  * Manager action 'Park' now takes an additional argument 'AnnounceChannel'
3813    which can be used to announce the parked call's location to an arbitrary
3814    channel in a bridge. If 'Channel' and 'TimeoutChannel' are now the two
3815    parties in a one to one bridge, 'TimeoutChannel' is treated as having
3816    parked 'Channel' like with the Park Call DTMF feature and will receive
3817    announcements prior to being hung up.
3818
3819 ------------------------------------------------------------------------------
3820 --- Functionality changes from Asterisk 12.1.0 to Asterisk 12.2.0 ------------
3821 ------------------------------------------------------------------------------
3822
3823 Record
3824 ------------------
3825  * Record application now has an option 'o' which allows 0 to act as an exit
3826    key setting the RECORD_STATUS variable to 'OPERATOR' instead of 'DTMF'
3827
3828 ChanSpy
3829 --------------------------
3830  * ChanSpy now accepts a channel uniqueid or a fully specified channel name
3831    as the chanprefix parameter if the 'u' option is specified.
3832
3833 ConfBridge
3834 --------------------------
3835  * CONFBRIDGE dialplan function is now capable of creating/modifying dynamic
3836    conference user menus.
3837
3838  * CONFBRIDGE dialplan function is now capable of removing dynamic conference
3839    menus, bridge settings, and user settings that have been applied by the
3840    CONFBRIDGE dialplan function.
3841
3842  * The ConfBridge dialplan application now sets a channel variable,
3843    CONFBRIDGE_RESULT, upon exiting. This variable can be used to determine
3844    how a channel exited the conference.
3845
3846  * Added conference user option 'announce_join_leave_review'. This option
3847    implies 'announce_join_leave' with the added effect that the user will
3848    be asked if they want to confirm or re-record the recording of their
3849    name when entering the conference
3850
3851 Directory
3852 --------------------------
3853  * At exit, the Directory application now sets a channel variable
3854    DIRECTORY_RESULT to one of the following based on the reason for exiting:
3855      OPERATOR    user requested operator by pressing '0' for operator
3856      ASSISTANT   user requested assistant by pressing '*' for assistant
3857      TIMEOUT     user pressed nothing and Directory stopped waiting
3858      HANGUP      user's channel hung up
3859      SELECTED    user selected a user from the directory and is routed
3860      USEREXIT    user pressed '#' from the selection prompt to exit
3861      FAILED      directory failed in a way that wasn't accounted for. Dang.
3862
3863 Monitor
3864 ------------------
3865  * Monitor() - A new option, B(), has been added that will turn on a periodic
3866    beep while the call is being recorded.
3867
3868 MusicOnHold
3869 --------------------------
3870  * MusicOnHold streams (all modes other than "files") now support wide band
3871    audio too.
3872
3873 Page
3874 --------------------------
3875  * Added options 'b' and 'B' to apply predial handlers for outgoing calls
3876    and for the channel executing Page respectively.
3877
3878 PickupChan
3879 --------------------------
3880  * PickupChan now accepts channel uniqueids of channels to pickup.
3881
3882 Say
3883 --------------------------
3884  * If a channel variable SAY_DTMF_INTERRUPT is present on a channel and set
3885    to 'true' (case insensitive), then any Say application (SayNumber,
3886    SayDigits, SayAlpha, SayAlphaCase, SayUnixTime, and SayCounted) will
3887    anticipate DTMF. If DTMF is received, these applications will behave like
3888    the background application and jump to the received extension once a match
3889    is established or after a short period of inactivity.
3890
3891 MixMonitor
3892 -------------------------
3893  * A new function, MIXMONITOR, has been added to allow access to individual
3894    instances of MixMonitor on a channel.
3895
3896  * A new option, B(), has been added that will turn on a periodic beep while the
3897    call is being recorded.
3898
3899
3900 Channel Drivers
3901 -------------------------
3902
3903 chan_sip
3904 -------------------------
3905  * TEL URI support for inbound INVITE requests has been added. chan_sip will
3906    now handle TEL schemes in the Request and From URIs. The phone-context in
3907    the Request URI will be stored in the SIPURIPHONECONTEXT channel variable on
3908    the inbound channel.
3909
3910 Core
3911 ------------------
3912  * Exposed sorcery-based configuration files like pjsip.conf to dialplans via
3913    the new AST_SORCERY diaplan function.
3914
3915  * Core Show Locks output now includes Thread/LWP ID if the platform
3916    supports this feature.
3917
3918  * New "logger add channel" and "logger remove channel" CLI commands have
3919    been added to allow creation and deletion of dynamic logger channels
3920    without configuration changes. These dynamic logger channels will only
3921    exist until the next restart of asterisk.
3922
3923 ARI
3924 ------------------
3925  * The live recording object on recording events now contains a target_uri
3926    field which contains the URI of what is being recorded.
3927
3928  * The bridge type used when creating a bridge is now a comma separated list of
3929    bridge properties. Valid options are: mixing, holding, dtmf_events, and
3930    proxy_media.
3931
3932  * A channelId can now be provided when creating a channel, either in the
3933    uri (POST channels/my-channel-id) or as query parameter.  A local channel
3934    will suffix the second channel id with ';2' unless provided as query
3935    parameter otherChannelId.
3936
3937  * A bridgeId can now be provided when creating a bridge, either in the uri
3938    (POST bridges/my-bridge-id) or as a query parameter.
3939
3940  * A playbackId can be provided when starting a playback, either in the uri
3941    (POST channels/my-channel-id/play/my-playback-id /
3942     POST bridges/my-bridge-id/play/my-playback-id)  or as a query parameter.
3943
3944  * A snoop channel can be started with a snoopId, in the uri or query.
3945
3946 AMI
3947 ------------------
3948  * Originate now takes optional parameters ChannelId and OtherChannelId,
3949    used to set the UniqueId on creation.  The other id is assigned to the
3950    second channel when dialing LOCAL, or defaults to appending ;2 if only
3951    the single Id is given.
3952
3953  * The Mixmonitor action now has a "Command" header that can be used to
3954    indicate a post-process command to run once recording finishes.
3955
3956 RealTime
3957 ------------------
3958  * A new set of Alembic scripts has been added for CDR tables. This will create
3959    a 'cdr' table with the default schema that Asterisk expects.
3960
3961
3962 Functions
3963 ------------------
3964  * A new function was added: PERIODIC_HOOK.  This allows running a periodic
3965    dialplan hook on a channel.  Any audio generated by this hook will be
3966    injected into the call.
3967
3968
3969 Resources
3970 ------------------
3971
3972 res_hep
3973 ------------------
3974  * A new module, res_hep, has been added, that acts as a generic packet
3975    capture agent for the Homer Encapsulation Protocol (HEP) version 3.
3976    It can be configured via hep.conf. Other modules can use res_hep to send
3977    message traffic to a HEP capture server.
3978
3979 res_hep_pjsip
3980 ------------------
3981  * A new module, res_hep_pjsip, has been added that will forward PJSIP
3982    message traffic to a HEP capture server. See res_hep for more
3983    information.
3984
3985 res_pjsip
3986 ------------------
3987  * transport and endpoint ToS options (tos, tos_audio, and tos_video) may now
3988    be set as the named set of ToS values (cs0-cs7, af11-af43, ef).
3989
3990  * Added the following new CLI commands:
3991    - "pjsip show contacts" - list all current PJSIP contacts.
3992    - "pjsip show contact" - show specific information about a current PJSIP
3993      contact.
3994    - "pjsip show channel" - show detailed information about a PJSIP channel.
3995
3996 res_pjsip_multihomed
3997 ------------------
3998  * A new module, res_pjsip_multihomed handles situations where the system
3999    Asterisk is running out has multiple interfaces. res_pjsip_multihomed
4000    determines which interface should be used during message sending.
4001
4002 res_pjsip_pidf_digium_body_supplement
4003 ------------------
4004  * A new module, res_pjsip_pidf_digium_body_supplement provides NOTIFY
4005    request body formatting for presence support in Digium phones.
4006
4007 res_pjsip_send_to_voicemail
4008 ------------------
4009  * A new module, res_pjsip_send_to_voicemail allows for REFER requests with
4010    particular headers to transfer a PJSIP channel directly to a particular
4011    extension that has VoiceMail. This is intended to be used with Digium
4012    phones that support this feature.
4013
4014 res_pjsip_outbound_registration
4015 ------------------
4016  * A new CLI command has been added: "pjsip show registrations", which lists
4017    all configured PJSIP registrations
4018
4019
4020 ------------------------------------------------------------------------------
4021 --- Functionality changes from Asterisk 12.0.0 to Asterisk 12.1.0 ------------
4022 ------------------------------------------------------------------------------
4023
4024 AMI
4025 ------------------
4026  * Added a new module that provides AMI control over MWI within Asterisk,
4027    res_mwi_external_ami. Note that this module depends on res_mwi_external;
4028    for more information on enabling this module, see res_mwi_external.
4029    This module provides the MWIGet/MWIUpdate/MWIDelete actions, as well as
4030    the MWIGet/MWIGetComplete events.
4031
4032  * The DialStatus field in the DialEnd event can now contain additional
4033    statuses that convey how the dial operation terminated. This includes
4034    ABORT, CONTINUE, and GOTO.
4035
4036  * AMI will now emit security events. A new class authorization has been
4037    added in manager.conf for the security events, 'security'. The new events
4038    are:
4039     - FailedACL - raised when a request violates an ACL check
4040     - InvalidAccountID - raised when a request fails an authentication
4041       check due to an invalid account ID
4042     - SessionLimit - raised when a request fails due to exceeding the
4043       number of allowed concurrent sessions for a service
4044     - MemoryLimit - raised when a request fails due to an internal memory
4045       allocation failure
4046     - LoadAverageLimit - raised when a request fails because a configured
4047       load average limit has been reached
4048     - RequestNotAllowed - raised when a request is not allowed by
4049       the service
4050     - AuthMethodNotAllowed - raised when a request used an authentication
4051       method not allowed by the service
4052     - RequestBadFormat - raised when a request is received with bad formatting
4053     - SuccessfulAuth - raised when a request successfully authenticates
4054     - UnexpectedAddress - raised when a request has a different source address
4055       then what is expected for a session already in progress with a service
4056     - ChallengeResponseFailed - raised when a request's attempt to authenticate
4057       has been challenged, and the request failed the authentication challenge
4058     - InvalidPassword - raised when a request provides an invalid password
4059       during an authentication attempt
4060     - ChallengeSent - raised when an Asterisk service send an authentication
4061       challenge to a request
4062     - InvalidTransport - raised when a request attempts to use a transport not
4063       allowed by the Asterisk service
4064
4065  * Bridge related events now have two additional fields: BridgeName and
4066    BridgeCreator. BridgeName is a descriptive name for the bridge;
4067    BridgeCreator is the name of the entity that created the bridge. This
4068    affects the following events: ConfbridgeStart, ConfbridgeEnd,
4069    ConfbridgeJoin, ConfbridgeLeave, ConfbridgeRecord, ConfbridgeStopRecord,
4070    ConfbridgeMute, ConfbridgeUnmute, ConfbridgeTalking, BlindTransfer,
4071    AttendedTransfer, BridgeCreate, BridgeDestroy, BridgeEnter, BridgeLeave
4072
4073 ARI
4074 ------------------
4075  * The Bridge data model now contains the additional fields 'name' and
4076    'creator'. The 'name' field conveys a descriptive name for the bridge;
4077    the 'creator' field conveys the name of the entity that created the bridge.
4078    This affects all responses to HTTP requests that return a Bridge data model
4079    as well as all event derived data models that contain a Bridge data model.
4080    The POST /bridges operation may now optionally specify a name to give to
4081    the bridge being created.
4082
4083  * Added a new ARI resource 'mailboxes' which allows the creation and
4084    modification of mailboxes managed by external MWI. Modules res_mwi_external
4085    and res_stasis_mailbox must be enabled to use this resource. For more
4086    information on external MWI control, see res_mwi_external.
4087
4088  * Added new events for externally initiated transfers. The event
4089    BridgeBlindTransfer is now raised when a channel initiates a blind transfer
4090    of a bridge in the ARI controlled application to the dialplan; the
4091    BridgeAttendedTransfer event is raised when a channel initiates an
4092    attended transfer of a bridge in the ARI controlled application to the
4093    dialplan.
4094
4095  * Channel variables may now be specified as a body parameter to the
4096    POST /channels operation. The 'variables' key in the JSON is interpreted
4097    as a sequence of key/value pairs that will be added to the created channel
4098    as channel variables. Other parameters in the JSON body are treated as
4099    query parameters of the same name.
4100
4101 HTTP
4102 ------------------
4103  * Asterisk's HTTP server now supports chunked Transfer-Encoding. This will be
4104    automatically handled by the HTTP server if a request is received with a
4105    Transfer-Encoding type of "chunked".
4106
4107 res_pjsip
4108 ------------------
4109  * Path support has been added with the 'support_path' option in registration
4110    and aor sections.
4111
4112  * A 'debug' option has been added to the globals section that will allow
4113    sip messages to be logged.
4114
4115  * A 'set_var' option has been added to endpoints that will automatically
4116    set the desired variable(s) on a channel created for that endpoint.
4117
4118  * Several new tables and columns have been added to the realtime schema for
4119    the res_pjsip related modules. See the UPGRADE.txt notes for updating
4120    the database schema.
4121
4122 res_mwi_external
4123 ------------------
4124  * A new module, res_mwi_external, has been added to Asterisk. This module
4125    acts as a base framework that other modules can build on top of to allow
4126    an external system to control MWI within Asterisk. For implementations
4127    that make use of res_mwi_external, see res_mwi_external_ami and
4128    res_ari_mailboxes. Note that res_mwi_external conflicts with other modules
4129    that may produce MWI themselves, such as app_voicemail. res_mwi_external
4130    and other modules that depend on it cannot be built or loaded with
4131    app_voicemail present.
4132
4133 res_pjsip
4134 ------------------
4135  * DNS functionality will now automatically be enabled if the system configured
4136    nameservers can be retrieved. If the system configured nameservers can not be
4137    retrieved the functionality will resort to using system resolution. Functionality
4138    such as SRV records and failover will not be available if system resolution
4139    is in use.
4140
4141 ------------------------------------------------------------------------------
4142 --- Functionality changes from Asterisk 11 to Asterisk 12 --------------------
4143 ------------------------------------------------------------------------------
4144
4145 Overview
4146 ------------------
4147
4148 Asterisk 12 is a standard release of the Asterisk project. As such, the
4149 focus of development for this release was on core architectural changes and
4150 major new features. This includes:
4151  * A more flexible bridging core based on the Bridging API
4152  * A new internal message bus, Stasis
4153  * Major standardization and consistency improvements to AMI
4154  * Addition of the Asterisk RESTful Interface (ARI)
4155  * A new SIP channel driver, chan_pjsip
4156 In addition, as the vast majority of bridging in Asterisk was migrated to the
4157 Bridging API used by ConfBridge, major changes were made to most of the
4158 interfaces in Asterisk. This includes not only AMI, but also CDRs and CEL.
4159
4160 Specifications have been written for the affected interfaces. These
4161 specifications are available on the Asterisk wiki:
4162  * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ
4163  * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ
4164  * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ
4165
4166 It is *highly* recommended that anyone migrating to Asterisk 12 read the
4167 information regarding its release both in this file and in the accompanying
4168 UPGRADE.txt file. More detailed information on the major changes can be found
4169 on the Asterisk wiki at https://wiki.asterisk.org/wiki/x/0YCLAQ.
4170
4171
4172 Build System
4173 ------------------
4174  * Added build option DISABLE_INLINE. This option can be used to work around a
4175    bug in gcc. For more information, see
4176    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47816
4177
4178  * Removed the CHANNEL_TRACE development mode build option. Certain aspects of
4179    the CHANNEL_TRACE build option were incompatible with the new bridging
4180    architecture.
4181
4182  * Asterisk now optionally uses libxslt to improve XML documentation generation
4183    and maintainability. If libxslt is not available on the system, some XML
4184    documentation will be incomplete.
4185
4186  * Asterisk now depends on libjansson. If a package of libjansson is not
4187    available on your distro, please see http://www.digip.org/jansson/.
4188
4189  * Asterisk now depends on libuuid and, optionally, uriparser. It is
4190    recommended that you install uriparser, even if it is optional.
4191
4192  * The new SIP stack and channel driver uses a particular version of PJSIP.
4193    Please see https://wiki.asterisk.org/wiki/x/J4GLAQ for more information on
4194    configuring and installing PJSIP for usage with Asterisk.
4195
4196  * Optional API was re-implemented to be more portable, and no longer requires
4197    weak reference support from the compiler. The build option OPTIONAL_API may
4198    be disabled to disable Optional API support.
4199
4200 Applications
4201 ------------------
4202
4203 AgentLogin
4204 ------------------
4205  * Along with AgentRequest, this application has been modified to be a
4206    replacement for chan_agent. The act of a channel calling the AgentLogin
4207    application places the channel into a pool of agents that can be
4208    requested by the AgentRequest application. Note that this application, as
4209    well as all other agent related functionality, is now provided by the
4210    app_agent_pool module. See chan_agent and AgentRequest for more information.
4211
4212  * This application no longer performs agent authentication. If authentication
4213    is desired, the dialplan needs to perform this function using the
4214    Authenticate or VMAuthenticate application or through an AGI script before
4215    running AgentLogin.
4216
4217  * If this application is called and the agent is already logged in, the
4218    dialplan will continue execution with the AGENT_STATUS channel variable set
4219    to ALREADY_LOGGED_IN.
4220
4221  * The agents.conf schema has changed. Rather than specifying agents on a
4222    single line in comma delineated fashion, each agent is defined in a separate
4223    context. This allows agents to use the power of context templates in their
4224    definition.
4225
4226  * A number of parameters from agents.conf have been removed. This includes
4227    maxloginretries, autologoffunavail, updatecdr, goodbye, group, recordformat,
4228    urlprefix, and savecallsin. These options were obsoleted by the move from
4229    a channel driver model to the bridging/application model provided by
4230    app_agent_pool.
4231
4232 AgentRequest
4233 ------------------
4234  * A new application, this will request a logged in agent from the pool and
4235    bridge the requested channel with the channel calling this application.
4236    Logged in agents are those channels that called the AgentLogin application.
4237    If an agent cannot be requested from the pool, the AGENT_STATUS dialplan
4238    application will be set with an appropriate error value.
4239
4240 AgentMonitorOutgoing
4241 ------------------
4242  * This application has been removed. It was a holdover from when
4243    AgentCallbackLogin was removed.
4244
4245 AlarmReceiver
4246 ------------------
4247  * Added support for additional Ademco DTMF signalling formats, including
4248    Express 4+1, Express 4+2, High Speed and Super Fast.
4249
4250  * Added channel variable ALARMRECEIVER_CALL_LIMIT. This sets the maximum
4251    call time, in milliseconds, to run the application.
4252
4253  * Added channel variable ALARMRECEIVER_RETRIES_LIMIT. This sets the
4254    maximum number of times to retry the call.
4255
4256  * Added a new configuration option answait. If set, the AlarmReceiver
4257    application will wait the number of milliseconds specified by answait
4258    after the channel has answered. Valid values range between 500
4259    milliseconds and 10000 milliseconds.
4260
4261  * Added configuration option no_group_meta. If enabled, grouping of metadata
4262    information in the AlarmReceiver log file will be skipped.
4263
4264 Answer
4265 ------------------
4266  * It is now no longer possible to bypass updating the CDR on the channel
4267    when answering. CDRs reflect the state of the channel and will always
4268    reflect the time they were Answered.
4269
4270 BridgeWait
4271 ------------------
4272  * A new application in Asterisk, this will place the calling channel
4273    into a holding bridge, optionally entertaining them with some form of
4274    media. Channels participating in a holding bridge do not interact with
4275    other channels in the same holding bridge. Optionally, however, a channel
4276    may join as an announcer. Any media passed from an announcer channel is
4277    played to all channels in the holding bridge. Channels leave a holding
4278    bridge either when an optional timer expires, or via the ChannelRedirect
4279    application or AMI Redirect action.
4280
4281 ConfBridge
4282 ------------------
4283  * All participants in a bridge can now be kicked out of a conference room
4284    by specifying the channel parameter as 'all' in the ConfBridge kick CLI
4285    command, i.e., 'confbridge kick <conference> all'
4286
4287  * CLI output for the 'confbridge list' command has been improved. When
4288    displaying information about a particular bridge, flags will now be shown
4289    for the participating users indicating properties of that user.
4290
4291  * The ConfbridgeList event now contains the following fields: WaitMarked,
4292    EndMarked, and Waiting. This displays additional properties about the
4293    user's profile, as well as whether or not the user is waiting for a
4294    Marked user to enter the conference.
4295
4296  * Added a new option for conference recording, record_file_append. If enabled,
4297    when the recording is stopped and then re-started, the existing recording
4298    will be used and appended to.
4299
4300  * ConfBridge now has the ability to set the language of announcements to the
4301    conference.  The language can be set on a bridge profile in confbridge.conf
4302    or by the dialplan function CONFBRIDGE(bridge,language)=en.
4303
4304 ControlPlayback
4305 ------------------
4306  * The channel variable CPLAYBACKSTATUS may now return the value
4307    'REMOTESTOPPED'. This occurs when playback is stopped by a remote interface,
4308    such as AMI. See the AMI action ControlPlayback for more information.
4309
4310 Directory
4311 ------------------
4312  * Added the 'a' option, which allows the caller to enter in an additional
4313    alias for the user in the directory. This option must be used in conjunction
4314    with the 'f', 'l', or 'b' options. Note that the alias for a user can be
4315    specified in voicemail.conf.
4316
4317 DumpChan
4318 ------------------
4319  * The output of DumpChan no longer includes the DirectBridge or IndirectBridge
4320    fields. Instead, if a channel is in a bridge, it includes a BridgeID field
4321    containing the unique ID of the bridge that the channel happens to be in.
4322
4323 ForkCDR
4324 ------------------
4325  * ForkCDR no longer automatically resets the forked CDR. See the 'r' option
4326    for more information.
4327
4328  * Variables are no longer purged from the original CDR. See the 'v' option for
4329    more information.
4330
4331  * The 'A' option has been removed. The Answer time on a CDR is never updated
4332    once set.
4333
4334  * The 'd' option has been removed. The disposition on a CDR is a function of
4335    the state of the channel and cannot be altered.
4336
4337  * The 'D' option has been removed. Who the Party B is on a CDR is a function
4338    of the state of the respective channels involved in the CDR and cannot be
4339    altered.
4340
4341  * The 'r' option has been changed. Previously, ForkCDR always reset the CDR
4342    such that the start time and, if applicable, the answer time was updated.
4343    Now, by default, ForkCDR simply forks the CDR, maintaining any times. The
4344    'r' option now triggers the Reset, setting the start time (and answer time
4345    if applicable) to the current time. Note that the 'a' option still sets
4346    the answer time to the current time if the channel was already answered.
4347
4348  * The 's' option has been removed. A variable can be set on the original CDR
4349    if desired using the CDR function, and removed from a forked CDR using the
4350    same function.
4351
4352  * The 'T' option has been removed. The concept of DONT_TOUCH and LOCKED no
4353    longer applies in the CDR engine.
4354
4355  * The 'v' option now prevents the copy of the variables from the original CDR
4356    to the forked CDR. Previously the variables were always copied but were
4357    removed from the original. This was changed as removing variables from a CDR
4358    can have unintended side effects - this option allows the user to prevent
4359    propagation of variables from the original to the forked without modifying
4360    the original.
4361
4362 MeetMe
4363 -------------------
4364  * Added the 'n' option to MeetMe to prevent application of the DENOISE
4365    function to a channel joining a conference. Some channel drivers that vary
4366    the number of audio samples in a voice frame will experience significant
4367    quality problems if a denoiser is attached to the channel; this option gives
4368    them the ability to remove the denoiser without having to unload func_speex.
4369
4370 MixMonitor
4371 ------------------
4372  * The 'b' option now includes conferences as well as sounds played to the
4373    participants.
4374
4375  * The AUDIOHOOK_INHERIT function is no longer needed to keep a MixMonitor
4376    running during a transfer. If a MixMonitor is started on a channel,
4377    the MixMonitor will continue to record the audio passing through the
4378    channel even in the presence of transfers.
4379
4380 NoCDR
4381 ------------------
4382  * The NoCDR application is deprecated. Please use the CDR_PROP function to
4383    disable CDRs.
4384
4385  * While the NoCDR application will prevent CDRs for a channel from being
4386    propagated to registered CDR backends, it will not prevent that data from
4387    being collected. Hence, a subsequent call to ResetCDR or the CDR_PROP
4388    function that enables CDRs on a channel will restore those records that have
4389    not yet been finalized.
4390
4391 ParkAndAnnounce
4392 -------------------
4393  * The app_parkandannounce module has been removed. The application
4394    ParkAndAnnounce is now provided by the res_parking module. See the
4395    res_parking changes for more information.
4396
4397 Queue
4398 -------------------
4399  * Added queue available hint. The hint can be added to the dialplan using the
4400    following syntax: exten,hint,Queue:{queue_name}_avail
4401    For example, if the name of the queue is 'markq':
4402         exten => 8501,hint,Queue:markq_avail
4403    This will report 'InUse' if there are no logged in agents or no free agents.
4404    It will report 'Idle' when an agent is free.
4405
4406  * Queues now support a hint for member paused state. The hint uses the form
4407    'Queue:{queue_name}_pause_{member_name}', where {queue_name} and {member_name}
4408    are the name of the queue and the name of the member to subscribe to,
4409    respectively. For example: exten => 8501,hint,Queue:sales_pause_mark.
4410    Members will show as In Use when paused.
4411
4412  * The configuration options eventwhencalled and eventmemberstatus have been
4413    removed.  As a result, the AMI events QueueMemberStatus, AgentCalled,
4414    AgentConnect, AgentComplete, AgentDump, and AgentRingNoAnswer will always be
4415    sent.  The "Variable" fields will also no longer exist on the Agent* events.
4416    These events can be filtered out from a connected AMI client using the
4417    eventfilter setting in manager.conf.
4418
4419  * The queue log now differentiates between blind and attended transfers. A
4420    blind transfer will result in a BLINDTRANSFER message with the destination
4421    context and extension. An attended transfer will result in an
4422    ATTENDEDTRANSFER message. This message will indicate the method by which
4423    the attended transfer was completed: "BRIDGE" for a bridge merge, "APP"
4424    for running an application on a bridge or channel, or "LINK" for linking
4425    two bridges together with local channels. The queue log will also now detect
4426    externally initiated blind and attended transfers and record the transfer
4427    status accordingly.
4428
4429  * When performing queue pause/unpause on an interface without specifying an
4430    individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at
4431    least one member of any queue exists for that interface.
4432
4433  * Added the 'queue_log_realtime_use_gmt' option to have timestamps in GMT
4434    for realtime queue log entries.
4435
4436 ResetCDR
4437 ------------------
4438  * The 'e' option has been deprecated. Use the CDR_PROP function to re-enable
4439    CDRs when they were previously disabled on a channel.
4440
4441  * The 'w' and 'a' options have been removed. Dispatching CDRs to registered
4442    backends occurs on an as-needed basis in order to preserve linkedid
4443    propagation and other needed behavior.
4444
4445 SayAlphaCase
4446 ------------------
4447  * A new application, this is similar to SayAlpha except that it supports
4448    case sensitive playback of the specified characters. For example,
4449    SayAlphaCase(u,aBc) will result in 'a uppercase b c'.
4450
4451 SetAMAFlags
4452 ------------------
4453  * This application is deprecated in favor of CHANNEL(amaflags).
4454
4455 SendDTMF
4456 ------------------
4457  * The SendDTMF application will now accept 'W' as valid input. This will cause
4458    the application to delay one second while streaming DTMF.
4459
4460 Stasis
4461 ------------------
4462  * A new application in Asterisk 12, this hands control of the channel calling
4463    the application over to an external system. Currently, external systems
4464    manipulate channels in Stasis through the Asterisk RESTful Interface (ARI).
4465
4466 UserEvent
4467 ------------------
4468  * UserEvent will now handle duplicate keys by overwriting the previous value
4469    assigned to the key.
4470
4471  * In addition to AMI, UserEvent invocations will now be distributed to any
4472    interested Stasis applications.
4473
4474 VoiceMail
4475 ------------------
4476  * Mailboxes defined by app_voicemail MUST be referenced by the rest of the
4477    system as mailbox@context.  The rest of the system cannot add @default
4478    to mailbox identifiers for app_voicemail that do not specify a context
4479    any longer.  It is a mailbox identifier format that should only be
4480    interpreted by app_voicemail.
4481
4482  * The voicemail.conf configuration file now has an 'alias' configuration
4483    parameter for use with the Directory application. The voicemail realtime
4484    database table schema has also been updated with an 'alias' column.
4485
4486
4487 Codecs
4488 ------------------
4489  * Pass through support has been added for both VP8 and Opus.
4490
4491  * Added format attribute negotiation for the Opus codec. Format attribute
4492    negotiation is provided by the res_format_attr_opus module.
4493
4494
4495 Core
4496 ------------------
4497  * Masquerades as an operation inside Asterisk have been effectively hidden
4498    by the migration to the Bridging API. As such, many 'quirks' of Asterisk
4499    no longer occur. This includes renaming of channels, "<ZOMBIE>" channels,
4500    dropping of frame/audio hooks, and other internal implementation details
4501    that users had to deal with. This fundamental change has large implications
4502    throughout the changes documented for this version. For more information
4503    about the new core architecture of Asterisk, please see the Asterisk wiki.
4504
4505  * Multiple parties in a bridge may now be transferred. If a participant in a
4506    multi-party bridge initiates a blind transfer, a Local channel will be used
4507    to execute the dialplan location that the transferer sent the parties to. If
4508    a participant in a multi-party bridge initiates an attended transfer,
4509    several options are possible. If the attended transfer results in a transfer
4510    to an application, a Local channel is used. If the attended transfer results
4511    in a transfer to another channel, the resulting channels will be merged into
4512    a single bridge.
4513
4514  * The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND is no longer channel
4515    driver specific.  If the channel variable is set on the transferrer channel,
4516    the sound will be played to the target of an attended transfer.
4517
4518  * The channel variable BRIDGEPEER becomes a comma separated list of peers in
4519    a multi-party bridge.  The BRIDGEPEER value can have a maximum of 10 peers
4520    listed.  Any more peers in the bridge will not be included in the list.
4521    BRIDGEPEER is not valid in holding bridges like parking since those channels
4522    do not talk to each other even though they are in a bridge.
4523
4524  * The channel variable BRIDGEPVTCALLID is only valid for two party bridges
4525    and will contain a value if the BRIDGEPEER's channel driver supports it.
4526
4527  * A channel variable ATTENDEDTRANSFER is now set which indicates which channel
4528    was responsible for an attended transfer in a similar fashion to
4529    BLINDTRANSFER.
4530
4531  * Modules using the Configuration Framework or Sorcery must have XML
4532    configuration documentation. This configuration documentation is included
4533    with the rest of Asterisk's XML documentation, and is accessible via CLI
4534    commands. See the CLI changes for more information.
4535
4536 AMI (Asterisk Manager Interface)
4537 ------------------
4538  * Major changes were made to both the syntax as well as the semantics of the
4539    AMI protocol. In particular, AMI events have been substantially improved
4540    in this version of Asterisk. For more information, please see the AMI
4541    specification at https://wiki.asterisk.org/wiki/x/dAFRAQ
4542
4543  * AMI events that reference a particular channel or bridge will now always
4544    contain a standard set of fields. When multiple channels or bridges are
4545    referenced in an event, fields for at least some subset of the channels
4546    and bridges in the event will be prefixed with a descriptive name to avoid
4547    name collisions. See the AMI event documentation on the Asterisk wiki for
4548    more information.
4549
4550  * The CLI command 'manager show commands' no longer truncates command names
4551    longer than 15 characters and no longer shows authorization requirement
4552    for commands. 'manager show command' now displays the privileges needed
4553    for using a given manager command instead.
4554
4555  * The SIPshowpeer action will now include a 'SubscribeContext' field for a
4556    peer in its response if the peer has a subscribe context set.
4557
4558  * The SIPqualifypeer action now acknowledges the request once it has
4559    established that the request is against a known peer. It also issues a new
4560    event, 'SIPQualifyPeerDone', once the qualify action has been completed.
4561
4562  * The PlayDTMF action now supports an optional 'Duration' parameter.  This
4563    specifies the duration of the digit to be played, in milliseconds.
4564
4565  * Added VoicemailRefresh action to allow an external entity to trigger mailbox
4566    updates when changes occur instead of requiring the use of pollmailboxes.
4567
4568  * Added a new action 'ControlPlayback'. The ControlPlayback action allows an
4569    AMI client to manipulate audio currently being played back on a channel. The
4570    supported operations depend on the application being used to send audio to
4571    the channel. When the audio playback was initiated using the ControlPlayback
4572    application or CONTROL STREAM FILE AGI command, the audio can be paused,
4573    stopped, restarted, reversed, or skipped forward. When initiated by other
4574    mechanisms (such as the Playback application), the audio can be stopped,
4575    reversed, or skipped forward.
4576
4577  * Channel related events now contain a snapshot of channel state, adding new
4578    fields to many of these events.
4579
4580  * The AMI event 'Newexten' field 'Extension' is deprecated, and may be removed
4581    in a future release. Please use the common 'Exten' field instead.
4582
4583  * The AMI event 'UserEvent' from app_userevent now contains the channel state
4584    fields. The channel state fields will come before the body fields.
4585
4586  * The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and
4587    'UnParkedCall' have changed significantly in the new res_parking module.
4588
4589    The 'Channel' and 'From' headers are gone. For the channel that was parked
4590    or is coming out of parking, a 'Parkee' channel snapshot is issued and it
4591    has a number of fields associated with it. The old 'Channel' header relayed
4592    the same data as the new 'ParkeeChannel' header.
4593
4594    The 'From' field was ambiguous and changed meaning depending on the event.
4595    for most of these, it was the name of the channel that parked the call
4596    (the 'Parker'). There is no longer a header that provides this channel name,
4597    however the 'ParkerDialString' will contain a dialstring to redial the
4598    device that parked the call.
4599
4600    On UnParkedCall events, the 'From' header would instead represent the
4601    channel responsible for retrieving the parkee. It receives a channel
4602    snapshot labeled 'Retriever'. The 'from' field is is replaced with
4603    'RetrieverChannel'.
4604
4605    Lastly, the 'Exten' field has been replaced with 'ParkingSpace'.
4606
4607  * The AMI event 'Parkinglot' (response to 'Parkinglots' command) in a similar
4608    fashion has changed the field names 'StartExten' and 'StopExten' to
4609    'StartSpace' and 'StopSpace' respectively.
4610
4611  * The deprecated use of | (pipe) as a separator in the channelvars setting in
4612    manager.conf has been removed.
4613
4614  * Channel Variables conveyed with a channel no longer contain the name of the
4615    channel as part of the key field, i.e., ChanVariable(SIP/foo): bar=baz is now
4616    ChanVariable: bar=baz. When multiple channels are present in a single AMI
4617    event, the various ChanVariable fields will contain a suffix that specifies
4618    which channel they correspond to.
4619
4620  * The NewPeerAccount AMI event is no longer raised. The NewAccountCode AMI
4621    event always conveys the AMI event for a particular channel.
4622
4623  * All 'Reload' events have been consolidated into a single event type. This
4624    event will always contain a Module field specifying the name of the module
4625    and a Status field denoting the result of the reload. All modules now issue
4626    this event when being reloaded.
4627
4628  * The 'ModuleLoadReport' event has been removed. Most AMI connections would
4629    fail to receive this event due to being connected after modules have loaded.
4630    AMI connections that want to know when Asterisk is ready should listen for
4631    the 'FullyBooted' event.
4632
4633  * app_fax now sends the same send fax/receive fax events as res_fax. The
4634    'FaxSent' event is now the 'SendFAX' event, and the 'FaxReceived' event is
4635    now the 'ReceiveFAX' event.
4636
4637  * The 'MusicOnHold' event is now two events: 'MusicOnHoldStart' and
4638    'MusicOnHoldStop'. The sub type field has been removed.
4639
4640  * The 'JabberEvent' event has been removed. It is not AMI's purpose to be a
4641    carrier for another protocol.
4642
4643  * The Bridge Manager action's 'Playtone' header now accepts more fine-grained
4644    options. 'Channel1' and 'Channel2' may be specified in order to play a tone
4645    to the specific channel. 'Both' may be specified to play a tone to both
4646    channels. The old 'yes' option is still accepted as a way of playing the
4647    tone to Channel2 only.
4648
4649  * The AMI 'Status' response event to the AMI Status action replaces the
4650    'BridgedChannel' and 'BridgedUniqueid' headers with the 'BridgeID' header to
4651    indicate what bridge the channel is currently in.
4652
4653  * The AMI 'Hold' event has been moved out of individual channel drivers, into
4654    core, and is now two events: 'Hold' and 'Unhold'.  The status field has been
4655    removed.
4656
4657  * The AMI events in app_queue have been made more consistent with each other.
4658    Events that reference channels (QueueCaller* and Agent*) will show
4659    information about each channel.  The (infamous) 'Join' and 'Leave' AMI
4660    events have been changed to 'QueueCallerJoin' and 'QueueCallerLeave'.
4661
4662  * The 'MCID' AMI event now publishes a channel snapshot when available and
4663    its non-channel-snapshot parameters now use either the "MCallerID" or
4664    'MConnectedID' prefixes with Subaddr*, Name*, and Num* suffixes instead
4665    of 'CallerID' and 'ConnectedID' to avoid confusion with similarly named
4666    parameters in the channel snapshot.
4667
4668  * The AMI events 'Agentlogin' and 'Agentlogoff' have been renamed
4669    'AgentLogin' and 'AgentLogoff' respectively.
4670
4671  * The 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been
4672    renamed "DAHDIChannel" since it does not convey an Asterisk channel name.
4673
4674  * 'ChannelUpdate' events have been removed.
4675
4676  * All AMI events now contain a 'SystemName' field, if available.
4677
4678  * Local channel optimization is now conveyed in two events:
4679    'LocalOptimizationBegin' and 'LocalOptimizationEnd'. The Begin event is sent
4680    when the Local channel driver begins attempting to optimize itself out of
4681    the media path; the End event is sent after the channel halves have
4682    successfully optimized themselves out of the media path.
4683
4684  * Local channel information in events is now prefixed with 'LocalOne' and
4685    'LocalTwo'. This replaces the suffix of '1' and '2' for the two halves of
4686    the Local channel. This affects the 'LocalBridge', 'LocalOptimizationBegin',
4687    and 'LocalOptimizationEnd' events.
4688
4689  * The option 'allowmultiplelogin' can now be set or overriden in a particular
4690    account. When set in the general context, it will act as the default
4691    setting for defined accounts.
4692
4693  * The 'BridgeAction' event was removed. It technically added no value, as the
4694    Bridge Action already receives confirmation of the bridge through a
4695    successful completion Event.
4696
4697  * The 'BridgeExec' events were removed. These events duplicated the events that
4698    occur in the Bridging API, and are conveyed now through BridgeCreate,
4699    BridgeEnter, and BridgeLeave events.
4700
4701  * The 'RTCPSent'/'RTCPReceived' events have been significantly modified from
4702    previous versions. They now report all SR/RR packets sent/received, and
4703    have been restructured to better reflect the data sent in a SR/RR. In
4704    particular, the event structure now supports multiple report blocks.
4705
4706  * Added 'BlindTransfer' and 'AttendedTransfer' events. These events are
4707    raised when a blind transfer/attended transfer completes successfully.
4708    They contain information about the transfer that just completed, including
4709    the location of the transfered channel.
4710
4711  * Added a 'security' class to AMI which outputs the required fields for
4712    security messages similar to the log messages from res_security_log
4713
4714  * The AMI event 'ExtensionStatus' now contains a 'StatusText' field
4715    that describes the status value in a human readable string.
4716
4717 CDR (Call Detail Records)
4718 ------------------
4719  * Significant changes have been made to the behavior of CDRs. The CDR engine
4720    was effectively rewritten and built on the Stasis message bus. For a full
4721    definition of CDR behavior in Asterisk 12, please read the specification
4722    on the Asterisk wiki (wiki.asterisk.org).
4723
4724  * CDRs will now be created between all participants in a bridge. For each
4725    pair of channels in a bridge, a CDR is created to represent the path of
4726    communication between those two endpoints. This lets an end user choose who
4727    to bill for what during bridge operations with multiple parties.
4728
4729  * The duration, billsec, start, answer, and end times now reflect the times
4730    associated with the current CDR for the channel, as opposed to a cumulative
4731    measurement of all CDRs for that channel.
4732
4733  * When a CDR is dispatched, user defined CDR variables from both parties are
4734    included in the resulting CDR. If both parties have the same variable, only
4735    the Party A value is provided.
4736
4737  * Added a new option to cdr.conf, 'debug'. When enabled, significantly more
4738    information regarding the CDR engine is logged as verbose messages. This
4739    option should only be used if the behavior of the CDR engine needs to be
4740    debugged.
4741
4742  * Added CLI command 'cdr set debug {on|off}'. This toggles the 'debug' setting
4743    normally configured in cdr.conf.
4744
4745  * Added CLI command 'cdr show active {channel}'. When {channel} is not
4746    specified, this command provides a summary of the channels with CDR
4747    information and their statistics. When {channel} is specified, it shows
4748    detailed information about all records associated with {channel}.
4749
4750 CEL (Channel Event Logging)
4751 ------------------
4752  * CEL has undergone significant rework in Asterisk 12, and is now built on the
4753    Stasis message bus. Please see the specification for CEL on the Asterisk
4754    wiki at https://wiki.asterisk.org/wiki/x/4ICLAQ for more detailed
4755    information.
4756
4757  * The 'extra' field of all CEL events that use it now consists of a JSON blob
4758    with key/value pairs which are defined in the Asterisk 12 CEL documentation.
4759
4760  * BLINDTRANSFER events now report the transferee bridge unique
4761    identifier, extension, and context in a JSON blob as the extra string
4762    instead of the transferee channel name as the peer.
4763
4764  * ATTENDEDTRANSFER events now report the peer as NULL and additional
4765    information in the 'extra' string as a JSON blob. For transfers that occur
4766    between two bridged channels, the 'extra' JSON blob contains the primary
4767    bridge unique identifier, the secondary channel name, and the secondary
4768    bridge unique identifier. For transfers that occur between a bridged channel
4769    and a channel running an app, the 'extra' JSON blob contains the primary
4770    bridge unique identifier, the secondary channel name, and the app name.
4771
4772  * LOCAL_OPTIMIZE events have been added to convey local channel
4773    optimizations with the record occurring for the semi-one channel and
4774    the semi-two channel name in the peer field.
4775
4776  * BRIDGE_START, BRIDGE_END, BRIDGE_UPDATE, 3WAY_START, 3WAY_END, CONF_ENTER,
4777    CONF_EXIT, CONF_START, and CONF_END events have all been removed. These
4778    events have been replaced by BRIDGE_ENTER/BRIDGE_EXIT. The BRIDGE_ENTER
4779    and BRIDGE_EXIT events are raised when a channel enters/exits any bridge,
4780    regardless of whether or not that bridge happens to contain multiple
4781    parties.
4782
4783 CLI
4784 -------------------
4785  * When compiled with '--enable-dev-mode', the astobj2 library will now add
4786    several CLI commands that allow for inspection of ao2 containers that
4787    register themselves with astobj2. The CLI commands are 'astobj2 container
4788    dump', 'astobj2 container stats', and 'astobj2 container check'.
4789
4790  * Added specific CLI commands for bridge inspection. This includes 'bridge
4791    show all', which lists all bridges in the system, and 'bridge show {id}',
4792    which provides specific information about a bridge.
4793
4794  * Added CLI command 'bridge destroy'. This will destroy the specified bridge,
4795    ejecting the channels currently in the bridge. If the channels cannot
4796    continue in the dialplan or application that put them in the bridge, they
4797    will be hung up.
4798
4799  * Added command 'bridge kick'. This will eject a single channel from a bridge.
4800
4801  * Added commands to inspect and manipulate the registered bridge technologies.
4802    This include 'bridge technology show', which lists the registered bridge
4803    technologies, as well as 'bridge technology {suspend|unsuspend} {tech}',
4804    which controls whether or not a registered bridge technology can be used
4805    during smart bridge operations. If a technology is suspended, it will not
4806    be used when a bridge technology is picked for channels; when unsuspended,
4807    it can be used again.
4808
4809  * The command 'config show help {module} {type} {option}' will show
4810    configuration documentation for modules with XML configuration
4811    documentation. When {module}, {type}, and {option} are omitted, a listing
4812    of all modules with registered documentation is displayed. When {module}
4813    is specified, a listing of all configuration types for that module is
4814    displayed, along with their synopsis. When {module} and {type} are
4815    specified, a listing of all configuration options for that type are
4816    displayed along with their synopsis. When {module}, {type}, and {option}
4817    are specified, detailed information for that configuration option is
4818    displayed.
4819
4820  * Added 'core show sounds' and 'core show sound' CLI commands. These display
4821    a listing of all installed media sounds available on the system and
4822    detailed information about a sound, respectively.
4823
4824  * 'xmldoc dump' has been added. This CLI command will dump the XML
4825    documentation DOM as a string to the specified file. The Asterisk core
4826    will populate certain XML elements pulled from the source files with
4827    additional run-time information; this command lets a user produce the
4828    XML documentation with all information.
4829
4830 Features
4831 -------------------
4832  * Parking has been pulled from core and placed into a separate module called
4833    res_parking. See Parking changes below for more details. Configuration for
4834    parking should now be performed in res_parking.conf. Configuration for
4835    parking in features.conf is now unsupported.
4836
4837  * Core attended transfers now have several new options. While performing an
4838    attended transfer, the transferer now has the following options:
4839    - *1 - cancel the attended transfer (configurable via atxferabort)
4840    - *2 - complete the attended transfer, dropping out of the call
4841           (configurable via atxfercomplete)
4842    - *3 - complete the attended transfer, but stay in the call. This will turn
4843           the call into a multi-party bridge (configurable via atxferthreeway)
4844    - *4 - swap to the other party. Once an attended transfer has begun, this
4845           options may be used multiple times (configurable via atxferswap)
4846
4847  * For DTMF blind and attended transfers, the channel variable TRANSFER_CONTEXT
4848    must be on the channel initiating the transfer to have any effect.
4849
4850  * The BRIDGE_FEATURES channel variable would previously only set features for
4851    the calling party and would set this feature regardless of whether the
4852    feature was in caps or in lowercase. Use of a caps feature for a letter
4853    will now apply the feature to the calling party while use of a lowercase
4854    letter will apply that feature to the called party.
4855
4856  * Add support for automixmon to the BRIDGE_FEATURES channel variable.
4857
4858  * The channel variable DYNAMIC_PEERNAME is redundant with BRIDGEPEER and is
4859    removed.  The more useful DYNAMIC_WHO_ACTIVATED gives the channel name that
4860    activated the dynamic feature.
4861
4862  * The channel variables DYNAMIC_FEATURENAME and DYNAMIC_WHO_ACTIVATED are set
4863    only on the channel executing the dynamic feature.  Executing a dynamic
4864    feature on the bridge peer in a multi-party bridge will execute it on all
4865    peers of the activating channel.
4866
4867  * You can now have the settings for a channel updated using the FEATURE()
4868    and FEATUREMAP() functions inherited to child channels by setting
4869    FEATURE(inherit)=yes.
4870
4871  * automixmon now supports additional channel variables from automon including:
4872    TOUCH_MIXMONITOR_PREFIX, TOUCH_MIXMONITOR_MESSAGE_START,
4873    and TOUCH_MIXMONITOR_MESSAGE_STOP
4874
4875  * A new general features.conf option 'recordingfailsound' has been added which
4876    allowssetting a failure sound for a user tries to invoke a recording feature
4877    such as automon or automixmon and it fails.
4878
4879  * It is no longer necessary (or possible) to define the ATXFER_NULL_TECH in
4880    features.c for atxferdropcall=no to work properly. This option now just
4881    works.
4882
4883 Logging
4884 -------------------
4885  * Added log rotation strategy 'none'. If set, no log rotation strategy will
4886    be used. Given that this can cause the Asterisk log files to grow quickly,
4887    this option should only be used if an external mechanism for log management
4888    is preferred.
4889
4890 Realtime
4891 ------------------
4892  * Dynamic realtime tables for SIP Users can now include a 'path' field. This
4893    will store the path information for that peer when it registers. Realtime
4894    tables can also use the 'supportpath' field to enable Path header support.
4895
4896  * LDAP realtime configurations for SIP Users now have the AstAccountPathSupport
4897    objectIdentifier. This maps to the supportpath option in sip.conf.
4898
4899 Sorcery
4900 ------------------
4901  * Sorcery is a new data abstraction and object persistence API in Asterisk. It
4902    provides modules a useful abstraction on top of the many storage mechanisms
4903    in Asterisk, including the Asterisk Database, static configuration files,
4904    static Realtime, and dynamic Realtime. It also provides a caching service.
4905    Users can configure a hierarchy of data storage layers for specific modules
4906    in sorcery.conf.
4907
4908  * All future modules which utilize Sorcery for object persistence must have a
4909    column named "id" within their schema when using the Sorcery realtime module.
4910    This column must be able to contain a string of up to 128 characters in length.
4911
4912 Security Events Framework
4913 ------------------
4914  * Security Event timestamps now use ISO 8601 formatted date/time instead of
4915    the "seconds-microseconds" format that it was using previously.
4916
4917 Stasis Message Bus
4918 ------------------
4919  * The Stasis message bus is a publish/subscribe message bus internal to
4920    Asterisk. Many services in Asterisk are built on the Stasis message bus,
4921    including AMI, ARI, CDRs, and CEL. Parameters controlling the operation of
4922    Stasis can be configured in stasis.conf. Note that these parameters operate
4923    at a very low level in Asterisk, and generally will not require changes.
4924
4925 Channel Drivers
4926 ------------------
4927  * When a channel driver is configured to enable jiterbuffers, they are now
4928    applied unconditionally when a channel joins a bridge. If a jitterbuffer
4929    is already set for that channel when it enters, such as by the JITTERBUFFER
4930    function, then the existing jitterbuffer will be used and the one set by
4931    the channel driver will not be applied.
4932
4933 chan_agent
4934 ------------------
4935  * chan_agent has been removed and replaced with AgentLogin and AgentRequest
4936    dialplan applications provided by the app_agent_pool module. Agents are
4937    connected with callers using the new AgentRequest dialplan application.
4938    The Agents:<agent-id> device state is available to monitor the status of an
4939    agent. See agents.conf.sample for valid configuration options.
4940
4941  * The updatecdr option has been removed. Altering the names of channels on a
4942    CDR is not supported - the name of the channel is the name of the channel,
4943    and pretending otherwise helps no one. The AGENTUPDATECDR channel variable
4944    has also been removed, for the same reason.
4945
4946  * The endcall and enddtmf configuration options are removed.  Use the
4947    dialplan function CHANNEL(dtmf_features) to set DTMF features on the agent
4948    channel before calling AgentLogin.
4949
4950 chan_bridge
4951 ------------------
4952  * chan_bridge has been removed. Its functionality has been incorporated
4953    directly into the ConfBridge application itself.
4954
4955 chan_dahdi
4956 ------------------
4957  * Added the CLI command 'pri destroy span'. This will destroy the D-channel
4958    of the specified span and its B-channels. Note that this command should
4959    only be used if you understand the risks it entails.
4960
4961  * The CLI command 'dahdi destroy channel' is now 'dahdi destroy channels'.
4962    A range of channels can be specified to be destroyed. Note that this command
4963    should only be used if you understand the risks it entails.
4964
4965  * Added the CLI command 'dahdi create channels'. A range of channels can be
4966    specified to be created, or the keyword 'new' can be used to add channels
4967    not yet created.
4968
4969  * The script specified by the chan_dahdi.conf mwimonitornotify option now gets
4970    the exact configured mailbox name.  For app_voicemail mailboxes this is
4971    mailbox@context.
4972
4973  * Added mwi_vm_boxes that also must be configured for ISDN MWI to be enabled.
4974
4975 chan_iax2
4976 ------------------
4977  * IPv6 support has been added.  We are now able to bind to and
4978    communicate using IPv6 addresses.
4979
4980 chan_local
4981 ------------------
4982  * The /b option has been removed.
4983
4984  * chan_local moved into the system core and is no longer a loadable module.
4985
4986 chan_mobile
4987 ------------------
4988  * Added general support for busy detection.
4989
4990  * Added ECAM command support for Sony Ericsson phones.
4991
4992 chan_pjsip
4993 ------------------
4994  * A new SIP channel