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