res_stasis: Add ability to switch applications.
[asterisk/asterisk.git] / CHANGES
1 ==============================================================================
2 ===
3 === This file documents the new and/or enhanced functionality added in
4 === the Asterisk versions listed below. This file does NOT include
5 === changes in behavior that would not be backwards compatible with
6 === previous versions; for that information see the UPGRADE.txt file
7 === and the other UPGRADE files for older releases.
8 ===
9 ==============================================================================
10
11 ------------------------------------------------------------------------------
12 --- Functionality changes from Asterisk 16 to Asterisk 17 --------------------
13 ------------------------------------------------------------------------------
14
15 chan_sip
16 ------------------
17  * The chan_sip module is now deprecated, users should migrate to the
18    replacement module chan_pjsip.  See guides at the Asterisk Wiki:
19      https://wiki.asterisk.org/wiki/x/tAHOAQ
20      https://wiki.asterisk.org/wiki/x/hYCLAQ
21
22 Channels
23 ------------------
24  * The core no longer uses the stasis cache for channels snapshots.
25    The following APIs are no longer available:
26        ast_channel_topic_cached()
27        ast_channel_topic_all_cached()
28    The ast_channel_cache_all() and ast_channel_cache_by_name() functions
29    now returns an ao2_container of ast_channel_snapshots rather than a
30    container of stasis_messages therefore you can't call stasis_cache
31    functions on it.
32    The ast_channel_topic_all() function now returns a normal topic,
33    not a cached one so you can't use stasis cache functions on it either.
34    The ast_channel_snapshot_type() stasis message now has the
35    ast_channel_snapshot_update structure as it's data.
36    ast_channel_snapshot_get_latest() still returns the latest snapshot.
37
38 Bridging
39 ------------------
40  * The bridging core no longer uses the stasis cache for bridge
41    snapshots.  The latest bridge snapshot is now stored on the
42    ast_bridge structure itself.
43
44  * The following APIs are no longer available since the stasis cache
45    is no longer used:
46      ast_bridge_topic_cached()
47      ast_bridge_topic_all_cached()
48
49  * A topic pool is now used for individual bridge topics.
50
51  * The ast_bridge_cache() function was removed since there's no
52    longer a separate container of snapshots.
53
54  * A new function "ast_bridges()" was created to retrieve the
55    container of all bridges.  Users formerly calling
56    ast_bridge_cache() can use the new function to iterate over
57    bridges and retrieve the latest snapshot directly from the
58    bridge.
59
60  * The ast_bridge_snapshot_get_latest() function was renamed to
61    ast_bridge_get_snapshot_by_uniqueid().
62
63  * A new function "ast_bridge_get_snapshot()" was created to retrieve
64    the bridge snapshot directly from the bridge structure.
65
66  * The ast_bridge_topic_all() function now returns a normal topic
67    not a cached one so you can't use stasis cache functions on it
68    either.
69
70  * The ast_bridge_snapshot_type() stasis message now has the
71    ast_bridge_snapshot_update structure as it's data.  It contains
72    the last snapshot and the new one.
73
74 ------------------------------------------------------------------------------
75 --- Functionality changes from Asterisk 16.2.0 to Asterisk 16.3.0 ----------
76 ------------------------------------------------------------------------------
77
78 ARI
79 ------------------
80  * Application event filtering is now supported. An application can now specify
81    an "allowed" and/or "disallowed" list(s) of event types. Only those types
82    indicated in the "allowed" list are sent to the application. Conversely, any
83    types defined in the "disallowed" list are not sent to the application. Note
84    that if a type is specified in both lists "disallowed" takes precedence.
85
86  * A new REST API call has been added: 'move'. It follows the format
87    'channels/{channelId}/move' and can be used to move channels from one application
88    to another without needing to exit back into the dialplan. An application must be
89    specified, but the passing a list of arguments to the new application is optional.
90    An example call would look like this:
91
92    client.channels.move(channelId=chan.id, app='ari-example', appArgs='a,b,c')
93
94    If the channel was inside of a bridge when switching applications, it will
95    remain there. If the application specified cannot be moved to, then the channel
96    will remain in the current application and an event will be triggered named
97    "ApplicationMoveFailed", which will provide the destination application's name
98    and the channel information.
99
100 res_pjsip
101 ------------------
102  * A new configuration parameter "taskprocessor_overload_trigger" has been
103    added to the pjsip.conf "globals" section.  The distributor currently stops
104    accepting new requests when any taskprocessor overload is triggered.  The
105    new option allows you to completely disable overload detection (NOT
106    RECOMMENDED), keep the current behavior, or trigger only on pjsip
107    taskprocessor overloads.
108
109 MWI
110 ------------------
111  * A new module "res_mwi_devstate" has been added that allows subscriptions
112    to voicemail boxes using "presence" events.  This allows common BLF keys
113    to act as voicemail waiting indicators.
114
115 app_queue
116 ------------------
117  * Added the ability to set the wrapuptime per-member using the AddQueueMember
118    application.
119
120 ------------------------------------------------------------------------------
121 --- Functionality changes from Asterisk 16.1.0 to Asterisk 16.2.0 ------------
122 ------------------------------------------------------------------------------
123
124 ARI
125 ------------------
126  * Whenever an ARI application is started, a context will be created for it
127    automatically as long as one does not already exist, following the format
128    'stasis-<app_name>'. Two extensions are also added to this context: a match-all
129    extension, and the 'h' extension. Any phone that registers under this context
130    will place all calls to the corresponding Stasis application.
131
132 res_pjsip
133 ------------------
134  * Added "send_contact_status_on_update_registration" global configuration option
135    to enable sending AMI ContactStatus event when a device refreshes its registration.
136
137 Core
138 ------------------
139  * Reworked the media indexer so it doesn't cache the index.  Testing revealed
140    that the cache added no benefit but that it could consume excessive memory.
141    Two new index related functions were created: ast_sounds_get_index_for_file()
142    and ast_media_index_update_for_file() which restrict index updating to
143    specific sound files.  The original ast_sounds_get_index() and
144    ast_media_index_update() calls are still available but since they no longer
145    cache the results internally, developers should re-use an index they may
146    already have instead of calling ast_sounds_get_index() repeatedly.  If
147    information for only a single file is needed, ast_sounds_get_index_for_file()
148    should be called instead of ast_sounds_get_index().
149
150 Features
151 ------------------
152  * Before Asterisk 12, when using the automon or automixmon features defined
153    in features.conf, a channel variable (TOUCH_MIXMONITOR_OUTPUT) was set on
154    both channels, indicating the filename of the recording.
155
156    When bridging was overhauled in Asterisk 12, the behavior was changed such
157    that the variable was only set on the peer channel and not on the channel
158    that initiated the automon or automixmon.
159
160    The previous behavior has been restored so both channels receive the
161    channel variable when one of these features is invoked.
162
163 app_voicemail
164 ------------------
165  * You can now specify a special context with the "aliasescontext" parameter
166    in voicemail.conf which will allow you to create aliases for physical
167    mailboxes.
168
169 ------------------------------------------------------------------------------
170 --- Functionality changes from Asterisk 16.0.0 to Asterisk 16.1.0 ------------
171 ------------------------------------------------------------------------------
172
173 pbx_config
174 ------------------
175  * pbx_config will now find and process multiple 'globals' sections from
176    extensions.conf.  Variables are processed in the order they are found
177    and duplicate variables overwrite the previous value.
178
179 chan_pjsip
180 ------------------
181  * New dialplan function PJSIP_PARSE_URI added to parse an URI and return
182    a specified part of the URI.
183
184 Core
185 ------------------
186  * ast_bt_get_symbols() now returns a vector of strings instead of an
187    array of strings.  This must be freed with ast_bt_free_symbols.
188
189 res_pjsip
190 ------------------
191  * New options 'trust_connected_line' and 'send_connected_line' have been
192    added to the endpoint. The option 'trust_connected_line' is to control
193    if connected line updates are accepted from this endpoint.
194    The option 'send_connected_line' is to control if connected line updates
195    can be sent to this endpoint.
196    The default value is 'yes' for both options.
197
198 res_rtp_asterisk
199 ------------------
200  * The existing strictrtp option in rtp.conf has a new choice availabe, called
201    'seqno', which behaves the same way as setting strictrtp to 'yes', but will
202    ignore the time interval during learning so that bursts of packets can still
203    trigger learning our source.
204
205 ------------------------------------------------------------------------------
206 --- Functionality changes from Asterisk 15 to Asterisk 16 --------------------
207 ------------------------------------------------------------------------------
208
209 app_fax
210 ------------------
211  * The app_fax module is now deprecated, users should migrate to the
212    replacement module res_fax.
213
214 app_originate
215 ------------------
216  * An 'a' option has been added to the Originate dialplan application which
217    will execute the originate in an asynchronous fashion. If set then the
218    application will return immediately without waiting for the originated
219    channel to answer.
220
221 Build System
222 ------------------
223  * MALLOC_DEBUG no longer has an effect on Asterisk's ABI.  Asterisk built
224    with MALLOC_DEBUG can now successfully load binary modules built without
225    MALLOC_DEBUG and vice versa.  Third-party pre-compiled modules no longer
226    need to have a special build with it enabled.
227
228  * Asterisk now depends on libjansson >= 2.11.  If this version is not
229    available on your distro you can use `./configure --with-jansson-bundled`.
230
231 app_macro
232 ------------------
233  * The app_macro module is now deprecated and by default it is no longer
234    built.  Users should migrate to app_stack (Gosub).  A warning is logged
235    the first time any Macro is used.
236
237 app_setcallerid
238 ------------------
239  * The app_setcallerid module has been removed. The CALLERID dialplan function
240    should be used instead.
241
242 chan_sip
243 ------------------
244  * New function SIP_HEADERS() enumerates all headers in the incoming INVITE.
245
246  * The variable GET_TRANSFERRER_DATA set in the peer channel causes matching
247    headers be retrieved from the REFER message and made accessible to the
248    dialplan in the hash TRANSFER_DATA.
249
250 chan_dahdi
251 ------------------
252  * Timeouts for reading digits from analog phones are now configurable in
253    chan_dahdi.conf: firstdigit_timeout, interdigit_timeout, matchdigit_timeout.
254
255 AMI
256 ------------------
257  * The ContactStatus and Status fields for the manager events ContactStatus
258    and ContactStatusDetail are now set to "NonQualified" when a contact exists
259    but has not been qualified.
260
261  * The "Newexten" event is now part of the "dialplan" class. The documentation
262    for Asterisk 15 already specified this, but the implementation was actually
263    using the "call" class instead.
264
265 ARI
266 ------------------
267  * The ContactInfo event's contact_status field is now set to "NonQualified"
268    when a contact exists but has not been qualified.
269
270 app_queue
271 ------------------
272  * Added the ability to set the wrapuptime in the configuration of member.
273    When set the wrapuptime on the member is used instead of the wrapuptime
274    defined for the queue itself.
275
276  * Added predial handler support for caller and callee channels with the
277    B and b options respectively.  This is similar to the predial support
278    in app_dial.
279
280 res_config_sqlite
281 ------------------
282  * The res_config_sqlite module is now deprecated, users should migrate to the
283    replacement module res_config_sqlite3.
284
285 res_monitor
286 ------------------
287  * The res_monitor module is now deprecated, users should migrate to the
288    replacement module app_mixmonitor.
289
290 res_pjsip
291 ------------------
292  * A new AMI action, PJSIPShowAors, has been added which displays information
293    about all configured PJSIP AORs.
294
295  * A new AMI action, PJSIPShowAuths, has been added which displays information
296    about all configured PJSIP Auths.
297
298  * A new AMI action, PJSIPShowContacts, has been added which displays information
299    about all configured PJSIP Contacts.
300
301 res_pjsip_registrar_expire
302 ------------------
303  * The res_pjsip_registrar_expire module has been removed.  The functionality has
304    been moved into res_pjsip_registrar.
305
306 func_audiohookinherit
307 ------------------
308  * The func_audiohookinherit module has been removed. Due to architectural changes
309    in Asterisk 12, audiohook inheritance is performed automatically and this
310    function now lacks function.
311
312 cdr_syslog
313 ------------------
314  * The cdr_syslog module is now deprecated and by default it is no longer
315    built.
316
317 cdr_sqlite
318 ------------------
319  * The cdr_sqlite module has been removed. Users should move to using the
320    cdr_sqlite3_custom module instead.
321
322 format_jpeg
323 ------------------
324  * The format_jpeg module has been removed.
325
326 pbx_dundi
327 ------------------
328  * DUNDi now supports IPv6
329
330 Core:
331 ------------------
332  * libedit is no longer available as an embedded library and must be provided
333    by the system.
334  * The STATIC_BUILD functionality has been removed as it has not been maintained
335    and has not worked in quite some time.
336  * The module loader now enforces inter-module dependencies.  This ensures that
337    a module is not started before another it depends on, even if preload is used.
338    If a dependency is not available or fails to startup this will block any
339    dependants from startup.
340  * Parts of the Asterisk core which can load configuration from realtime are now
341    built-in modules.  It is no longer necessary to preload realtime drivers as
342    they are always initialized before the built-in modules.
343
344 ------------------------------------------------------------------------------
345 --- Functionality changes from Asterisk 15.5.0 to Asterisk 15.6.0 ------------
346 ------------------------------------------------------------------------------
347
348 res_pjsip
349 ------------------
350  * A new option 'suppress_q850_reason_headers' has been added to the endpoint
351    object. Some devices can't accept multiple Reason headers and get confused
352    when both 'SIP' and 'Q.850' Reason headers are received.  This option allows
353    the 'Q.850' Reason header to be suppressed.  The default value is 'no'.
354
355 res_pjsip_endpoint_identifier_ip
356 ------------------
357  * Added regex support to the identify section match_header option.  You
358    specify a regex instead of an explicit string by surrounding the header
359    value with slashes:
360    match_header = SIPHeader: /regex/
361
362 ------------------------------------------------------------------------------
363 --- Functionality changes from Asterisk 15.4.0 to Asterisk 15.5.0 ------------
364 ------------------------------------------------------------------------------
365
366 Core
367 ------------------
368  * Core bridging and, more specifically, bridge_softmix have been enhanced to
369    relay received frames of type TEXT or TEXT_DATA to all participants in a
370    softmix bridge.  res_pjsip_messaging and chan_pjsip have been enhanced to
371    take advantage of this so when res_pjsip_messaging receives an in-dialog
372    MESSAGE message from a user in a conference call, it's relayed to all
373    other participants in the call.
374
375 app_sendtext
376 ------------------
377  * Support Enhanced Messaging.  SendText now accepts new channel variables
378    that can be used to override the To and From display names and set the
379    Content-Type of a message.  Since you can now set Content-Type, other
380    text/* content types are now valid.
381
382 app_confbridge
383 ------------------
384  * ConfbridgeList now shows talking status. This utilizes the same voice
385    detection as the ConfbridgeTalking event, so bridges must be configured
386    with "talk_detection_events=yes" for this flag to have meaning.
387
388  * ConfBridge can now send events to participants via in-dialog MESSAGEs.
389    All current Confbridge events are supported, such as ConfbridgeJoin,
390    ConfbridgeLeave, etc.  In addition to those events, a new event
391    ConfbridgeWelcome has been added that will send a list of all
392    current participants to a new participant.
393
394 res_pjsip
395 ------------------
396   * Two new options have been added to the system and endpoint objects to
397     control whether, on outbound calls, Asterisk will accept updated SDP answers
398     during the initial INVITE transaction when 100rel is not in effect.
399     This usually happens when the INVITE is forked to multiple UASs and more
400     than one sends an SDP answer or when a single UAS needs to change a media
401     port to switch from custom ringback to the actual media destination.
402
403     The 'follow_early_media_forked' option sets whether Asterisk will accept
404     the updated SDP when the To tag on the subsequent response is different than
405     that on the the previous response.  This usually occurs in the forked INVITE
406     scenario. The default value is "yes" which is the current behavior.
407
408     The 'accept_multiple_sdp_answers' flag sets whether Asterisk will accept the
409     updated SDP when the To tag on the subsequent response is the same as that
410     on the previous response. This can occur when a UAS needs to switch media
411     ports from custom ringback to the final media path.  The default value is
412     "no" which is the current behavior.
413
414     These options have to be enabled system-wide in the system config section
415     of pjsip.conf as well as on individual endpoints that require the
416     functionality.
417
418 ------------------------------------------------------------------------------
419 --- Functionality changes from Asterisk 15.3.0 to Asterisk 15.4.0 ------------
420 ------------------------------------------------------------------------------
421
422 Core
423 ------------------
424  * A new configuration option "genericplc_on_equal_codecs" was added to the
425    "plc" section of codecs.conf to allow generic packet loss concealment even
426    if no transcoding was originally needed.  Transcoding via SLIN is forced
427    in this case.
428
429 res_pjproject
430 ------------------
431  * Added the "cache_pools" option to pjproject.conf.  Disabling the option
432    helps track down pool content mismanagement when using valgrind or
433    MALLOC_DEBUG.  The cache gets in the way of determining if the pool contents
434    are used after free and who freed it.
435
436 res_pjsip_notify
437 ------------------
438  * Extend the PJSIPNotify AMI command to send an in-dialog notify on a
439    channel.
440
441 ------------------------------------------------------------------------------
442 --- Functionality changes from Asterisk 15.2.0 to Asterisk 15.3.0 ------------
443 ------------------------------------------------------------------------------
444
445 Core
446 ------------------
447  * During dialplan reload log messages are produced for each context,
448    extension and include.  These messages are no longer printed by the
449    verbose loggers, they are now only logged as debug messages.
450
451 app_confbridge
452 ------------------
453  * Added the Muted header to the ConfbridgeJoin AMI event to indicate the
454    participant's starting mute status.
455
456  * Made the AMI ConfbridgeList action's ConfbridgeList events output all
457    the standard channel snapshot headers instead of a few hand-coded channel
458    snapshot headers.  The benefit is that the CallerIDName gets disruptive
459    characters like CR, LF, Tab, and a few others escaped.  However, an empty
460    CallerIDName is now output as "<unknown>" instead of "<no name>".
461
462 app_followme
463 ------------------
464  * Added a new prompt, connecting-prompt, which will be played
465    (if configured) to the "winner" callee before connecting the call.
466
467 res_pjsip
468 ------------------
469  * Users who are matching endpoints by SIP header need to reevaluate their
470    global "endpoint_identifier_order" option in light of the "ip" endpoint
471    identifier method split into the "ip" and "header" endpoint identifier
472    methods.
473
474  * The pjsip_transport_event feature introduced in 15.1.0 has been refactored.
475    Any external modules that may have used that feature (highly unlikey) will
476    need to be changed as the API has been altered slightly.
477
478 res_pjsip_endpoint_identifier_ip
479 ------------------
480  * The endpoint identifier "ip" method previously recognized endpoints either
481    by IP address or a matching SIP header.  The "ip" endpoint identifier method
482    is now split into the "ip" and "header" endpoint identifier methods.  The
483    "ip" endpoint identifier method only matches by IP address and the "header"
484    endpoint identifier method only matches by SIP header.  The split allows the
485    user to control the relative priority of the IP address and the SIP header
486    identification methods in the global "endpoint_identifier_order" option.
487    e.g., If you have two type=identify sections where one matches by IP address
488    for endpoint alice and the other matches by SIP header for endpoint bob then
489    you can now predict which endpoint is matched when a request comes in that
490    matches both.
491
492 res_pjsip_pubsub
493 ------------------
494  * In an earlier release, inbound registrations on a reliable transport
495    were pruned on Asterisk restart since the TCP connection would have
496    been torn down and become unusable when Asterisk stopped.  This same
497    process is now also applied to inbound subscriptions.  Since this
498    required the addition of a new column to the ps_subscription_persistence
499    realtime table, users who store their subscriptions in a database will
500    need to run the "alembic upgrade head" process to add the column to
501    the schema.
502
503 res_pjsip_transport_management
504 ------------------
505  * Since res_pjsip_transport_management provides several attack
506    mitigation features, its functionality moved to res_pjsip and
507    this module has been removed.  This way the features will always
508    be available if res_pjsip is loaded.
509
510 ------------------------------------------------------------------------------
511 --- Functionality changes from Asterisk 15.1.0 to Asterisk 15.2.0 ------------
512 ------------------------------------------------------------------------------
513
514 Core
515 ------------------
516  * Added the "cache_media_frames" option to asterisk.conf.  Disabling the option
517    helps track down media frame mismanagement when using valgrind or
518    MALLOC_DEBUG.  The cache gets in the way of determining if the frame is
519    used after free and who freed it.  NOTE: This option has no effect when
520    Asterisk is compiled with the LOW_MEMORY compile time option enabled because
521    the cache code does not exist.
522
523 chan_sip
524 ------------------
525  * Calls to invalid extensions are now reported as an ACL failure security event
526    "no_extension_match".
527
528 res_rtp_asterisk
529 ------------------
530  * The X.509 certificate used for DTLS negotation can now be automatically
531    generated. This is supported by res_pjsip by specifying
532    "dtls_auto_generate_cert = yes" on a PJSIP endpoint. For chan_sip, you
533    would set "dtlsautogeneratecert = yes" either in the [general] section of
534    sip.conf or on a specific peer.
535
536 res_pjsip
537 ------------------
538  * The "identify_by" on endpoints can now be set to "ip" to restrict an endpoint
539    being matched based only on IP address. To ensure no behavior change the
540    default has been changed to "username,ip".
541
542 ------------------------------------------------------------------------------
543 --- Functionality changes from Asterisk 15.0.0 to Asterisk 15.1.0 ------------
544 ------------------------------------------------------------------------------
545
546 res_pjsip
547 ------------------
548  * The "remove_existing" option now allows a registration to succeed by
549    displacing any existing contacts that now exceed the "max_contacts" count.
550    Any removed contacts are the next to expire.  The behaviour change is
551    beneficial when "rewrite_contact" is enabled and "max_contacts" is greater
552    than one.  The removed contact is likely the old contact created by
553    "rewrite_contact" that the device is refreshing.
554
555 AMI
556 ------------------
557  * Added a new CancelAtxfer action that cancels an attended transfer.
558
559 ------------------------------------------------------------------------------
560 --- Functionality changes from Asterisk 14 to Asterisk 15 --------------------
561 ------------------------------------------------------------------------------
562
563 app_queue
564 ------------------
565  * PAUSEALL/UNPAUSEALL now sets the pause reason in the queue_log if it has
566    been defined.
567
568  * A new option, "announce-position-only-up," has been added that, when set to
569    yes, causes position announcements to only be played when the caller's
570    queue position has improved since the last time that we annouced their
571    position. This default is no.
572
573 Build System
574 ------------------
575  * '--with-pjproject-bundled' is now the default when running ./configure
576    It can be disabled with '--without-pjproject-bundled'.
577
578  * A '--with-download-cache' option is now available which is equivalent to
579    setting '--with-sounds-cache' and '--with-externals-cache' to the same
580    value.  The download cache can also be set via the AST_DOWNLOAD_CACHE
581    environment variable.
582
583 ------------------------------------------------------------------------------
584 --- Functionality changes from Asterisk 14.6.0 to Asterisk 14.7.0 ------------
585 ------------------------------------------------------------------------------
586
587 res_pjsip
588 ------------------
589  * The "external_media_address" on transports is now resolved using dnsmgr and
590    when dnsmgr refreshes are enabled will be automatically updated with the new
591    IP address of a given hostname.
592
593  * A new endpoint parameter "incoming_mwi_mailbox" allows Asterisk to receive
594    unsolicited MWI NOTIFY requests and make them available to other modules via
595    the stasis message bus.
596
597 res_musiconhold
598 ------------------
599  * By default, when res_musiconhold reloads or unloads, it sends a HUP signal
600    to custom applications (and all descendants), waits 100ms, then sends a
601    TERM signal, waits 100ms, then finally sends a KILL signal.  An application
602    which is interacting with an external device and/or spawns children of its
603    own may not be able to exit cleanly in the default times, expecially if sent
604    a KILL signal, or if it's children are getting signals directly from
605    res_musiconhoild.  To allow extra time, the 'kill_escalation_delay'
606    class option can be used to set the number of milliseconds res_musiconhold
607    waits before escalating kill signals, with the default being the current
608    100ms.  To control to whom the signals are sent, the "kill_method"
609    class option can be set to "process_group" (the default, existing behavior),
610    which sends signals to the application and its descendants directly, or
611    "process" which sends signals only to the application itself.
612
613  * New dialplan function PJSIP_DTMF_MODE added to get or change the DTMF mode
614    of a channel on a per-call basis.
615
616 res_xmpp
617 -----------------
618  * OAuth 2.0 authentication is now supported when contacting Google. Follow the
619    instructions in xmpp.conf.sample to retrieve and configure the necessary
620    tokens.
621
622 ------------------------------------------------------------------------------
623 --- Functionality changes from Asterisk 14.5.0 to Asterisk 14.6.0 ------------
624 ------------------------------------------------------------------------------
625
626 app_voicemail
627 ------------------
628  * A new global option "imap_poll_logout" was added to specify whether need to
629    disconnect from the IMAP server after polling of mailboxes.
630    Default: no
631
632 res_pjsip
633 ------------------
634  * A new endpoint option "refer_blind_progress" was added to turn off notifying
635    the progress details on Blind Transfer. If this option is not set then
636    the chan_pjsip will send NOTIFY "200 OK" immediately after "202 Accepted".
637    On default is enabled.
638    Some SIP phones like Mitel/Aastra or Snom keep the line busy until
639    receive "200 OK".
640
641  * A new endpoint option "notify_early_inuse_ringing" was added to control
642    whether to notify dialog-info state 'early' or 'confirmed' on Ringing
643    when already INUSE.
644
645  * The endpoint option 'dtmf_mode' has a new option 'auto_dtmf' added. This
646    mode works similar to 'auto' except uses DTMF INFO as fallback instead of
647    INBAND.
648
649 res_agi
650 ------------------
651  * The EAGI() application will now look for a dialplan variable named
652    EAGI_AUDIO_FORMAT and use that format with the 'enhanced' audio pipe that
653    EAGI provides. If not specified, it will continue to use the default signed
654    linear (slin).
655
656 chan_pjsip
657 ------------------
658  * When dialing an endpoint directly or using the PJSIP_DIAL_CONTACTS dialplan
659    function any contact which is considered unreachable due to qualify being
660    enabled will no longer be called.
661
662  * The asymmetric_rtp_codec option now also controls whether chan_pjsip will
663    send media as-is without transcoding if the codec has been negotiated in the
664    SDP. If set to "no" then Asterisk will only ever send the preferred codec
665    from the SDP, unless the remote side sends a different codec and we will
666    switch to match.
667
668 Build System
669 ------------------
670  * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which can be used
671    to pass arbitrary options to the bundled pjproject configure.
672
673  * Automatically set the bundled pjproject configure --host and --build
674    options to match those supplied for the asterisk configure.
675
676 ------------------------------------------------------------------------------
677 --- Functionality changes from Asterisk 14.4.0 to Asterisk 14.5.0 ------------
678 ------------------------------------------------------------------------------
679
680 res_rtp_asterisk
681 ------------------
682  * Added the stun_blacklist option to rtp.conf.  Some multihomed servers have
683    IP interfaces that cannot reach the STUN server specified by stunaddr.
684    Blacklist those interface subnets from trying to send a STUN packet to find
685    the external IP address.  Attempting to send the STUN packet needlessly
686    delays processing incoming and outgoing SIP INVITEs because we will wait
687    for a response that can never come until we give up on the response.
688    Multiple subnets may be listed.
689
690 Logging
691 -------------------
692  * Added logger_queue_limit to the configuration options.
693    All log messages go to a queue serviced by a single thread
694    which does all the IO.  This setting controls how big that
695    queue can get (and therefore how much memory is allocated)
696    before new messages are discarded.
697    The default is 1000.
698
699 res_pjsip_config_wizard
700 ------------------
701  * Two new parameters have been added to the pjsip config wizard.
702    Setting 'sends_line_with_registrations' to true will cause the wizard
703    to skip the creation of an identify object to match incoming requests
704    to the endpoint and instead add the line and endpoint parameters to
705    the outbound registration object.
706    Setting 'outbound_proxy' is a shortcut for adding individual
707    endpoint/outbound_proxy, aor/outbound_proxy and registration/outbound_proxy
708    parameters.
709
710 res_hep_rtcp
711 ------------------
712  * If the 'call-id' value is specified for the uuid_type option and a
713    chan_sip channel is used the resulting HEP traffic will now contain the
714    SIP Call-ID instead of the Asterisk channel name.
715
716 ------------------------------------------------------------------------------
717 --- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------
718 ------------------------------------------------------------------------------
719
720 Build System
721 ------------------
722  * LOW_MEMORY no longer has an effect on Asterisk ABI.  Symbols that were
723    previously suppressed by LOW_MEMORY are now replaced by stub functions.
724    Asterisk built with LOW_MEMORY can now successfully load binary modules
725    built without LOW_MEMORY and vice versa.
726
727  * RADIUS backends for CEL and CDR can now also be built using the radcli
728    client library, in addition to the existing support for building them
729    using either freeradius or radiusclient-ng.
730
731 Core
732 ------------------
733  * ASTERISK_REGISTER_FILE was no longer useful and has been removed.  Sources
734    which use mtx_prof must now manually declare and initialize the variable.
735
736 chan_sip
737 ------------------
738  * If an offer is received with optional SRTP (a media stream with RTP/AVP but
739    which contains a crypto line) chan_sip will now accept it and enable SRTP.
740    If you would like to do optional SRTP on outbound you will need to create
741    a dialplan that dials with it enabled initially and if it fails fall back to
742    without.
743
744 res_pjsip
745 ------------------
746  * Added endpoint configuration parameter "preferred_codec_only".
747    This allow asterisk response to a SIP invite with the single most
748    preferred codec rather than advertising all joint codec capabilities.
749    This limits the other side's codec choice to exactly what we prefer.
750
751 cdr_radius
752 ------------------
753  * To fix a memory leak the syslog channel is now empty if it has not been set
754    and used by a syslog channel in the logger.
755
756 cel_radius
757 ------------------
758  * To fix a memory leak the syslog channel is now empty if it has not been set
759    and used by a syslog channel in the logger.
760
761 RTP
762 ------------------
763  * New setting "rtp_pt_dynamic = 35" in asterisk.conf:
764    Normally the Dynamic RTP Payload Type numbers are 96-127, which allow just 32
765    formats. To avoid the message "No Dynamic RTP mapping available", the range
766    was changed to 35-63,96-127. This is allowed by RFC 3551 section 3. However,
767    when you use more than 32 formats and calls are not accepted by a remote
768    implementation, please report this and go back to rtp_pt_dynamic = 96.
769
770  * A new setting, "rtp_use_dynamic", has been added in asterisk.conf". When set
771    to "yes" RTP dynamic payload types are assigned dynamically per RTP instance.
772    When set to "no" RTP dynamic payload types are globally initialized to pre-
773    designated numbers and function similar to static payload types.
774
775 app_originate
776 ------------------
777  * Added support to gosub predial routines on both original channel and on the
778    created channel using options parameter (like app_dial) B() and b().  This
779    allows for adding variables to newly created channel or, e.g. setting callerid.
780
781 CLI Commands
782 ------------------
783  * 'dialplan show' output will now show [config_file:line_number] instead of
784    [registrar] when that information is available. Currently only extensions
785    registered by pbx_config when loading/reloading will use this format.
786
787 app_queue
788 ------------------
789  * Add 'QueueUpdate' application which can be used to track outbound calls
790    using app_queue.
791
792 pbx_spool
793 ------------------
794  * Asterisk will now set the AST_OUTGOING_ATTEMPT channel variable so that
795    attempt-specific behavior is possible. This is a 1-based number that
796    simply increases by 1 for each attempt.
797
798 ------------------------------------------------------------------------------
799 --- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------
800 ------------------------------------------------------------------------------
801
802 AMI
803 ------------------
804  * The 'PJSIPShowEndpoint' command's respone event of 'IdentifyDetail' now
805    contains a new optional parameter, 'MatchHeader', mapping to the new
806    configuration option 'match_header' for the corresponding 'identify' object.
807    It should be noted that since 'match_header' takes in a key: value pair, the
808    event parameter will contain a ':' as well.
809
810 app_record
811 ------------------
812  * Added new 'u' option to Record() application which prevents Asterisk from
813    truncating silence from the end of recorded files.
814
815 res_pjsip_outbound_registration
816 ------------------
817  * Outbound registrations are now refreshed when res_stun_monitor detects
818    a network change event has happened.
819    The 'pjsip send (un)register' CLI commands were updated to accept '*all'
820    as an argument to operate on all registrations.
821    The 'PJSIP(Un)Register' AMI commands were updated to also accept '*all'.
822
823 app_voicemail
824 ------------------
825  * The 'Comedian Mail' prompts can now be overriden using the 'vm-login' and
826    'vm-newuser' configuration options in voicemail.conf.
827
828  * Added 'fromstring' field to the voicemail boxes. If set, it will override
829    the global 'fromstring' field on a per-mailbox basis.
830
831 func_channel
832 ------------------
833  * Added CHANNEL(callid) to retrieve the call log tag associated with the
834    channel.  e.g., [C-00000000]  Dialplan now has access to the call log
835    search key associated with the channel so it can be saved in case there
836    is a problem with the call.
837
838 res_pjsip
839 ------------------
840  * A new transport parameter 'symmetric_transport' has been added.
841    When a request from a dynamic contact comes in on a transport with this
842    option set to 'yes', the transport name will be saved and used for
843    subsequent outgoing requests like OPTIONS, NOTIFY and INVITE.  It's
844    saved as a contact uri parameter named 'x-ast-txp' and will display with
845    the contact uri in CLI, AMI, and ARI output.  On the outgoing request,
846    if a transport wasn't explicitly set on the endpoint AND the request URI
847    is not a hostname, the saved transport will be used and the 'x-ast-txp'
848    parameter stripped from the outgoing packet.  To facilitate recreation of
849    subscriptions on asterisk restart, a new column 'contact_uri' needed to be
850    added to the ps_subcsription_persistence table.  Since new columns were
851    added to both transport and subscription_persistence, an alembic upgrade
852    should be run to bring the database tables up to date.
853
854  * A new option, allow_overlap, has been added to endpoints which allows
855    overlap dialing functionality to be enabled or disabled. The option defaults
856    to enabled.
857
858 res_pjsip_transport_websocket
859 ------------------
860  * Removed non-secure websocket support.  Firefox and Chrome have not allowed
861    non-secure websockets for quite some time so this shouldn't be an issue
862    for people.  Attempting to use a non-secure websocket may or may not work
863    when Asterisk attempts to send SIP requests to do something like initiate
864    call hangup.
865
866 res_pjsip_endpoint_identifier_ip
867 ------------------
868  * A new option has been added to the 'identify' configuration object,
869    'match_header'. The 'match_header' attribute should contain a SIP
870    header: value pair that, When set, will cause inbound requests that contain
871    the matching SIP header/value pair to be associated with the corresponding
872    endpoint. This option is cumulative with the 'match' option, so that if
873    either option matches the request, the request is associated with the
874    endpoint.
875
876    In a future release, this module will be renamed to something more
877    appropriate, as it now matches inbound requests on more than just IP
878    address.
879
880 res_rtp_asterisk
881 -----------------
882  * The RTP layer of Asterisk now has support for RFC 5761: "Multiplexing RTP
883    Data and Control Packets on a Single Port." So far, the only channel driver
884    that supports this feature is chan_pjsip. You can set "rtcp_mux = yes" on
885    a PJSIP endpoint in pjsip.conf to enable the feature.
886
887 ------------------------------------------------------------------------------
888 --- Functionality changes from Asterisk 14.2.0 to Asterisk 14.3.0 ------------
889 ------------------------------------------------------------------------------
890
891 res_pjproject
892 ------------------
893  * Added new CLI command "pjproject set log level".  The new command allows
894    the maximum PJPROJECT log levels to be adjusted dynamically and
895    independently from the set debug logging level like many other similar
896    module debug logging commands.
897
898  * Added new companion CLI command "pjproject show log level" to allow the
899    user to see the current maximum pjproject logging level.
900
901  * Added new pjproject.conf startup section "log_level' option to set the
902    initial maximum PJPROJECT logging level.
903
904 res_pjsip_outbound_registration
905 ------------------
906  * Statsd no longer logs redundant status PJSIP.registrations.state changes
907    for internal state transitions that don't change the reported public status
908    state.
909
910 res_pjsip_registrar
911 ------------------
912  * The PJSIPShowRegistrationInboundContactStatuses AMI command has been added
913    to return ContactStatusDetail events as opposed to
914    PJSIPShowRegistrationsInbound which just a dumps every defined AOR.
915
916 res_pjsip
917 ------------------
918  * Six existing contact fields have been added to the end of the
919    ContactStatusDetail AMI event:
920    ID, AuthenticateQualify, OutboundProxy, Path, QualifyFrequency and
921    QualifyTimeout.  Existing fields have not been disturbed.
922
923 res_pjsip_endpoint_identifier_ip
924 ------------------
925  * SRV lookups can now be done on provided hostnames to determine additional
926    source IP addresses for requests. This is configurable using the
927    "srv_lookups" option on the identify and defaults to "yes".
928
929 ARI
930 ------------------
931  * The 'ari set debug' command has been enhanced to accept 'all' as an
932    application name.  This allows dumping of all apps even if an app
933    hasn't registered yet.
934
935  * 'ari set debug' now displays requests and responses as well as events.
936
937 ------------------------------------------------------------------------------
938 --- Functionality changes from Asterisk 14.1.0 to Asterisk 14.2.0 ------------
939 ------------------------------------------------------------------------------
940
941 AMI
942 ------------------
943  * Events that reference a bridge may now contain two new optional fields:
944    - 'BridgeVideoSourceMode': the video source mode for the bridge.
945      Can be one of 'none', 'talker', or 'single'.
946    - 'BridgeVideoSource': the unique ID of the channel that is the video
947      source in this bridge, if one exists.
948
949  * A new event, BridgeVideoSourceUpdate, has been added with a class
950    authorization of CALL. The event is raised when the video source changes
951    in a multi-party mixing bridge.
952
953 ARI
954 ------------------
955  * The bridges resource now exposes two new operations:
956    - POST /bridges/{bridgeId}/videoSource/{channelId}: Set a video source in a
957      multi-party mixing bridge
958    - DELETE /bridges/{bridgeId}/videoSource: Remove the set video source,
959      reverting to talk detection for the video source
960
961  * The bridge model in any returned response or event now contains the following
962    optional fields:
963    - video_mode: the video source mode for the bridge. Can be one of 'none',
964      'talker', or 'single'.
965    - video_source_id: the unique ID of the channel that is the video source
966      in this bridge, if one exists.
967
968  * A new event, BridgeVideoSourceChanged, has been added for bridges.
969    Applications subscribed to a bridge will receive this event when the source
970    of video changes in a mixing bridge.
971
972  * The ARI major version has been bumped. There are not any known breaking changes
973    in ARI. The major version has been bumped because otherwise we can end up with
974    overlapping version numbers between different Asterisk versions. Now each major
975    version of Asterisk will bring with it a change in the major version of ARI.
976    The ARI version in Asterisk 14 is now 2.0.0.
977
978 res_pjsip
979 ------------------
980  * Automatic dual stack support is now implemented. Depending on DNS resolution
981    and the transport used for sending a message the SIP signaling and SDP will
982    be updated with the correct IP address and protocol version. This means that
983    the rtp_ipv6 and t38_udptl_ipv6 options no longer have any effect. The
984    res_pjsip_multihomed module has also been moved into core res_pjsip to ensure
985    that messages are updated with the correct address information in all cases.
986
987 chan_pjsip
988 ------------------
989  * The default behavior for RTP codecs has been changed. The sending codec will
990    now match the receiving codec. This can be turned off and behavior reverted
991    to asymmetric using the "asymmetric_rtp_codec" endpoint option. If this
992    option is set then the sending and received codec are allowed to differ.
993
994 CLI Commands
995 ------------------
996  * Three new CLI commands have been added for ARI:
997    - ari show apps:
998       Displays a listing of all registered ARI applications.
999    - ari show app <name>:
1000       Display detailed information about a registered ARI application.
1001    - ari set debug <name> <on|off>:
1002       Enable/disable debugging of an ARI application. When debugged, verbose
1003       information will be sent to the Asterisk CLI.
1004
1005
1006 Queue
1007 ------------------
1008  * A new dialplan variable, ABANDONED, is set when the call is not answered
1009    by an agent.
1010
1011 res_ari
1012 ------------------
1013  * The configuration file ari.conf now supports a channelvars option, which
1014    specifies a list of channel variables to include in each channel-oriented
1015    ARI event.
1016
1017 ------------------------------------------------------------------------------
1018 --- Functionality changes from Asterisk 14.0.0 to Asterisk 14.1.0 ------------
1019 ------------------------------------------------------------------------------
1020
1021 Build System
1022 ------------------
1023  * The res_digium_phone, codec_g729a, codec_silk, codec_siren7 and
1024    codec_siren14 binary modules hosted at downloads.digium.com can now be
1025    automatically downloaded and installed during the Asterisk install
1026    process.  If selected in menuselect, when 'make install' is run, the
1027    script will check the downloads site for a new version and download
1028    and install it if needed.  The '--with-externals-cache' option to
1029    ./configure can be used to specify a location to cache the latest
1030    tarballs so they don't have to be re-downloaded for every install.
1031
1032 app_voicemail
1033 ------------------
1034  * Added "tps_queue_high" and "tps_queue_low" options.
1035    The options can modify the taskprocessor alert levels for this module.
1036    Additional information can be found in the sample configuration file at
1037    config/samples/voicemail.conf.sample.
1038
1039 res_pjsip_mwi
1040 ------------------
1041  * Added "mwi_tps_queue_high" and "mwi_tps_queue_low" global configuration
1042    options to tune taskprocessor alert levels.
1043
1044  * Added "mwi_disable_initial_unsolicited" global configuration option
1045    to disable sending unsolicited MWI to all endpoints on startup.
1046    Additional information can be found in the sample configuration file at
1047    config/samples/pjsip.conf.sample.
1048
1049 chan_pjsip
1050 ------------------
1051  * A new dialplan function, PJSIP_SEND_SESSION_REFRESH, has been added. When
1052    invoked, a re-INVITE or UPDATE request will be sent immediately to the
1053    endpoint underlying the channel. When used in combination with the existing
1054    dialplan function PJSIP_MEDIA_OFFER, this allows the formats on a PJSIP
1055    channel to be re-negotiated and updated after session set up.
1056
1057 res_pjsip
1058 ------------------
1059  * A new endpoint configuration parameter 'contact_user' has been added which
1060    when set will override the default user set on Contact headers in outgoing
1061    requests.
1062
1063  * If you are using a sorcery realtime backend to store global res_pjsip
1064    options (ps_globals table) then you now have to do a res_pjsip reload for
1065    changes to these options to take effect.  If you are using pjsip.conf to
1066    configure these options then you already had to do a reload after making
1067    changes.
1068
1069  * Added "ignore_uri_user_options" global configuration option for
1070    compatibility with an ITSP that sends URI user field options.  When enabled
1071    the user field is truncated at the first semicolon.
1072    Example:
1073    URI: "sip:1235557890;phone-context=national@x.x.x.x;user=phone"
1074    The user field is "1235557890;phone-context=national"
1075    Which is truncated to this: "1235557890"
1076
1077    Note: The caller-id and redirecting number strings obtained from incoming
1078    SIP URI user fields are now always truncated at the first semicolon.
1079
1080 res_rtp_asterisk
1081 ------------------
1082   * An option, ice_blacklist, has been added which allows certain subnets to be
1083     excluded from local ICE candidates.
1084
1085 app_confbridge
1086 ------------------
1087   * Some sounds played into the bridge are played asynchronously. This, for
1088     instance, allows a channel to immediately exit the ConfBridge without having
1089     to wait for a leave announcement to play.
1090
1091 app_dial
1092 ------------------
1093  * Added the "Q" option which sets the Q.850/Q.931 cause on unanswered channels
1094    when another channel answers the call.  The default of ANSWERED_ELSEWHERE
1095    is unchanged.
1096
1097 res_ari
1098 ------------------
1099  * ARI events will all now include a new field in the root of the JSON message,
1100    'asterisk_id'.  This will be the unique ID for the Asterisk system
1101    transmitting the event.  The value can be overridden using the 'entityid'
1102    setting in asterisk.conf.
1103
1104 ------------------------------------------------------------------------------
1105 --- Functionality changes from Asterisk 13 to Asterisk 14 --------------------
1106 ------------------------------------------------------------------------------
1107
1108 AMI
1109 -----------------
1110  * A new event, "DialState" has been added. This is similar to "DialBegin" and
1111  "DialEnd" in that it tracks the state of a dialed call. The difference is that
1112  this indicates some intermediate state change in the dial attempt, such as
1113  "RINGING", "PROGRESS", or "PROCEEDING".
1114
1115 ARI
1116 -----------------
1117  * A new ARI method has been added to the channels resource. "create" allows for
1118    you to create a new channel and place that channel into a Stasis application.
1119    This is similar to origination except that the specified channel is not
1120    dialed. This allows for an application writer to create a channel, perform
1121    manipulations on it, and then delay dialing the channel until later.
1122
1123  * To complement the "create" method, a "dial" method has been added to the
1124    channels resource in order to place a call to a created channel.
1125
1126  * All operations that initiate playback of media on a resource now support
1127    a list of media URIs. The list of URIs are played in the order they are
1128    presented to the resource. A new event, "PlaybackContinuing", is raised when
1129    a media URI finishes but before the next media URI starts. When a list is
1130    played, the "Playback" model will contain the optional attribute
1131    "next_media_uri", which specifies the next media URI in the list to be played
1132    back to the resource. The "PlaybackFinished" event is raised when all media
1133    URIs are done.
1134
1135  * Stored recordings now allow for the media associated with a stored recording
1136    to be retrieved. The new route, GET /recordings/stored/{name}/file, will
1137    transmit the raw media file to the requester as binary.
1138
1139
1140  * "Dial" events have been modified to not only be sent when dialing begins and ends.
1141  They now are also sent for intermediate states, such as "RINGING", "PROGRESS", and
1142  "PROCEEDING".
1143
1144 Applications
1145 ------------------
1146
1147 BridgeAdd
1148 ------------------
1149  * A new application in Asterisk, this will join the calling channel
1150    to an existing bridge containing the named channel prefix.
1151
1152 ChanSpy
1153 ------------------
1154  * Added the 'l' option, which forces ChanSpy's audiohook to use a long queue
1155    to store the audio frames. This option is useful if audio loss is
1156    experienced when using ChanSpy, but may introduce some delay in the audio
1157    feed on the listening channel.
1158
1159 Codecs
1160 ------------------
1161  * Added format attribute negotiation for the iLBC audio codec. Format attribute
1162    negotiation is provided by the res_format_attr_ilbc module. iLBC 20 is the
1163    default now. Falls back to iLBC 30, when the remote party requests this.
1164
1165 ConfBridge
1166 ------------------
1167  * Added the ability to pass options to MixMonitor when recording is used with
1168    ConfBridge. This includes the addition of the following configuration
1169    parameters for the 'bridge' object:
1170    - record_file_timestamp: whether or not to append the start time to the
1171      recorded file name
1172    - record_options: the options to pass to the MixMonitor application
1173    - record_command: a command to execute when recording is finished
1174    Note that these options may also be with the CONFBRIDGE function.
1175
1176 ControlPlayback
1177 ------------------
1178  * Remote files can now be retrieved and played back. See the Playback
1179    dialplan application for more details.
1180
1181 FollowMe
1182 ------------------
1183  * It is now possible to disable the prompt from a callee by setting
1184    'enable_callee_prompt = no' in followme.conf.
1185
1186 Playback
1187 ------------------
1188  * Remote files can now be retrieved and played back via the Playback and other
1189    media playback dialplan applications. This is done by directly providing
1190    the URL to play to the dialplan application:
1191      same => n,Playback(http://1.1.1.1/howler-monkeys-fl.wav)
1192    Note that unlike 'normal' media files, the entire URI to the file must be
1193    provided, including the file extension. Currently, on HTTP and HTTPS URI
1194    schemes are supported.
1195
1196 Queue
1197 -------------------
1198  * Added field ReasonPause on QueueMemberStatus if set when paused, the reason
1199    the queue member was paused.
1200
1201  * Added field LastPause on QueueMemberStatus for time when started the last
1202    pause for a queue member.
1203
1204  * Show the time when started the last pause for queue member on CLI for command
1205    'queue show'.
1206
1207 SMS
1208 ------------------
1209  * Added the 'n' option, which prevents the SMS from being written to the log
1210    file. This is needed for those countries with privacy laws that require
1211    providers to not log SMS content.
1212
1213
1214 Channel Drivers
1215 ------------------
1216
1217 chan_dahdi
1218 ------------------
1219  * The CALLERID(ani2) value for incoming calls is now populated in featdmf
1220    signaling mode.  The information was previously discarded.
1221
1222  * Added the force_restart_unavailable_chans compatibility option.  When
1223    enabled it causes Asterisk to restart the ISDN B channel if an outgoing
1224    call receives cause 44 (Requested channel not available).
1225
1226 chan_iax2
1227 ------------------
1228  * The iax.conf forcejitterbuffer option has been removed.  It is now always
1229    forced if you set iax.conf jitterbuffer=yes.  If you put a jitter buffer
1230    on a channel it will be on the channel.
1231
1232  * A new configuration parameters, 'calltokenexpiration', has been added that
1233    controls the duration before a call token expires. Default duration is 10
1234    seconds. Setting this to a higher value may help in lagged networks or those
1235    experiencing high packet loss.
1236
1237  * Plaintext auth mode is deprecated and removed from possible default modes.
1238
1239 chan_rtp (was chan_multicast_rtp)
1240 ------------------
1241  * Added unicast RTP support and renamed chan_multicast_rtp to chan_rtp.
1242
1243  * The format for dialing a unicast RTP channel is:
1244    UnicastRTP/<destination-addr>[/[<options>]]
1245    Where <destination-addr> is something like '127.0.0.1:5060'.
1246    Where <options> are in standard Asterisk flag options format:
1247    c(<codec>) - Specify which codec/format to use such as 'ulaw'.
1248    e(<engine>) - Specify which RTP engine to use such as 'asterisk'.
1249
1250  * New options were added for a multicast RTP channel.  The format for
1251    dialing a multicast RTP channel is:
1252    MulticastRTP/<type>/<destination-addr>[/[<control-addr>][/[<options>]]]
1253    Where <type> can be either 'basic' or 'linksys'.
1254    Where <destination-addr> is something like '224.0.0.3:5060'.
1255    Where <control-addr> is something like '127.0.0.1:5060'.
1256    Where <options> are in standard Asterisk flag options format:
1257    c(<codec>) - Specify which codec/format to use such as 'ulaw'.
1258    i(<address>) - Specify the interface address from which multicast RTP
1259      is sent.
1260    l(<enable>) - Set whether packets are looped back to the sender.  The
1261      enable value can be 0 to set looping to off and non-zero to set
1262      looping on.
1263    t(<ttl>) - Set the time-to-live (TTL) value for multicast packets.
1264
1265 chan_sip
1266 ------------------
1267  * New 'rtpbindaddr' global setting. This allows a user to define which
1268    ipaddress to bind the rtpengine to. For example, chan_sip might bind
1269    to eth0 (10.0.0.2) but rtpengine to eth1 (192.168.1.10).
1270
1271  * DTLS related configuration options can now be set at a general level.
1272    Enabling DTLS support, though, requires enabling it at the user
1273    or peer level.
1274
1275  * Added the possibility to set the From: header through the the SIP dial
1276    string (populating the fromuser/fromdomain fields), complementing the
1277    [!dnid] option for the To: header that has existed since 1.6.0 (1d6b192).
1278    NOTE: This is again separated by an exclamation mark, so the To: header may
1279    not contain one of those.
1280
1281  * Session-Timers (RFC 4028) work for TCP (and TLS) transports as well now.
1282    Previously Asterisk dropped calls only with UDP transports. However with
1283    longer international calls via TCP, the SIP channel might break, because
1284    all hops on the Internet route must stay online (have not a single power
1285    outage, for example). Therefore with Session-Timers enabled (which are
1286    enabled at default), you might see additional dropped calls. Consequently
1287    please, consider to go for session-timers=refuse in your sip.conf.
1288
1289 chan_pjsip
1290 ------------------
1291  * New 'user_eq_phone' endpoint setting. This adds a 'user=phone' parameter
1292    to the request URI and From URI if the user is determined to be a phone
1293    number.
1294
1295  * New 'moh_passthrough' endpoint setting. This will pass hold and unhold
1296    requests through using SIP re-invites with sendonly and sendrecv accordingly.
1297
1298  * Added the pjsip.conf system type disable_tcp_switch option.  The option
1299    allows the user to disable switching from UDP to TCP transports described
1300    by RFC 3261 section 18.1.1.
1301
1302  * New 'line' and 'endpoint' options added on outbound registrations. This
1303    allows some identifying information to be added to the Contact of the
1304    outbound registration. If this information is present on messages received
1305    from the remote server the message will automatically be associated with the
1306    configured endpoint on the outbound registration.
1307
1308
1309 Core
1310 ------------------
1311  * The core of Asterisk uses a message bus called "Stasis" to distribute
1312    information to internal components. For performance reasons, the message
1313    distribution was modified to make use of a thread pool instead of a
1314    dedicated thread per consumer in certain cases. The initial settings for
1315    the thread pool can now be configured in 'stasis.conf'.
1316
1317  * A new core DNS API has been implemented which provides a common interface
1318    for DNS functionality. Modules that use this functionality will require that
1319    a DNS resolver module is loaded and available.
1320
1321  * Modified processing of command-line options to first parse only what
1322    is necessary to read asterisk.conf. Once asterisk.conf is fully loaded,
1323    the remaining options are processed.  The -X option now applies to
1324    asterisk.conf only.  To enable #exec for other config files you must
1325    set execincludes=yes in asterisk.conf.  Any other option set on the
1326    command-line will now override the equivalent setting from asterisk.conf.
1327
1328  * The TLS core in Asterisk now supports X.509 certificate subject alternative
1329    names. This way one X.509 certificate can be used for hosts that can be
1330    reached under multiple DNS names or for multiple hosts.
1331
1332  * The Asterisk logging system now supports JSON structured logging. Log
1333    channels specified in logger.conf or added dynamically via CLI commands now
1334    support an optional specifier prior to their levels that determines their
1335    formatting. To set a log channel to format its entries as JSON, a formatter
1336    of '[json]' can be set, e.g.,
1337       full => [json]debug,verbose,notice,warning,error
1338
1339  * The core now supports a 'media cache', which stores temporary media files
1340    retrieved from external sources. CLI commands have been added to manipulate
1341    and display the cached files, including:
1342    - 'media cache show <all>' - show all cached media files, or details about
1343      one particular cached media file
1344    - 'media cache refresh <item>' - force a refresh of a particular media file
1345      in the cache
1346    - 'media cache delete <item>' - remove an item from the cache
1347    - 'media cache create <uri>' - retrieve a URI and store it in the cache
1348
1349  * The ability for device state hints to be automatically created as a result of
1350    device state changes now exists in the PBX. This functionality is referred to
1351    as "autohints" and is configurable in extensions.conf by placing "autohints=yes"
1352    in the context. If enabled a device state hint will be automatically created
1353    with the name of the device.
1354
1355 * If Asterisk is built with systemd support, and run under systemd, it will
1356   notify systemd of its state using sd_notify. Use 'Type=notify' in
1357   asterisk.service.
1358
1359 Functions
1360 ------------------
1361  * The func_odbc global option "single_db_connection" default value has been
1362    changed to 'no'.
1363
1364
1365 Formats
1366 ------------------
1367  * New module format_ogg_speex added which supports Speex codec inside
1368    Ogg containers (filename extension .spx).
1369
1370
1371 CHANNEL
1372 ------------------
1373  * Added CHANNEL(onhold) item that returns 1 (onhold) and 0 (not-onhold) for
1374    the hold status of a channel.
1375
1376 CURL
1377 ------------------
1378  * The CURL function now supports a write option, which will save the retrieved
1379    file to a location on disk. As an example:
1380      same => n,Set(CURL(https://1.1.1.1/foo.wav)=/tmp/foo.wav)
1381    will save 'foo.wav' to /tmp.
1382
1383 DTMF Features
1384 ------------------
1385  * The transferdialattempts default value has been changed from 1 to 3. The
1386    transferinvalidsound has been changed from "pbx-invalid" to
1387    "privacy-incorrect". These were changed to make DTMF transfers be more
1388    user-friendly by default.
1389
1390
1391 Resources
1392 ------------------
1393
1394 res_http_media_cache
1395 ------------------
1396  * A backend for the core media cache, this module retrieves media files from
1397    a remote HTTP(S) server and stores them in the core media cache for later
1398    playback.
1399
1400 res_musiconhold
1401 ------------------
1402  * Added sort=randstart to the sort options. It sorts the files by name and
1403    then chooses the first file to play at random.
1404  * Added preferchannelclass=no option to prefer the application-passed class
1405    over the channel-set musicclass. This allows separate hold-music from
1406    application (e.g. Queue or Dial) specified music.
1407
1408 res_resolver_unbound
1409 ------------------
1410  * Added a res_resolver_unbound module which uses the libunbound resolver library
1411    to perform DNS resolution. This module requires the libunbound library to be
1412    installed in order to be used.
1413
1414 res_pjsip
1415 ------------------
1416  * A new SIP resolver using the core DNS API has been implemented. This relies on
1417    external SIP resolver support in PJSIP which is only available as of PJSIP
1418    2.4. If this support is unavailable the existing built-in PJSIP SIP resolver
1419    will be used instead. The new SIP resolver provides NAPTR support, improved
1420    SRV support, and AAAA record support.
1421
1422 res_pjsip_info_empty
1423 --------------------
1424  * A new module that can respond to empty Content-Type INFO packets during call.
1425    Some SBCs will terminate a call if their empty INFO packets are not responded
1426    to within a predefined time.
1427
1428 res_pjsip_outbound_registration
1429 -------------------------------
1430 * A new 'fatal_retry_interval' option has been added to outbound registration.
1431   When set (default is zero), and upon receiving a failure response to an
1432   outbound registration, registration is retried at the given interval up to
1433   'max_retries'.
1434
1435 res_pjsip_outbound_publish
1436 ------------------
1437  * Added a new multi_user option that when set to 'yes' allows a given configuration
1438    to be used for multiple users.
1439
1440
1441 CEL Backends
1442 ------------------
1443
1444 cel_pgsql
1445 ------------------
1446  * Added a new option, 'usegmtime', which causes timestamps in CEL events
1447    to be logged in GMT.
1448
1449  * Added support to set schema where located the table cel. This settings is
1450    configurable for cel_pgsql via the 'schema' in configuration file
1451    cel_pgsql.conf.
1452
1453
1454 CDR Backends
1455 ------------------
1456
1457 cdr_adaptive_odbc
1458 ------------------
1459  * Added the ability to set the character to quote identifiers. This
1460    allows adding the character at the start and end of table and column
1461    names. This setting is configurable for cdr_adaptive_odbc via the
1462    quoted_identifiers in configuration file cdr_adaptive_odbc.conf.
1463
1464 cdr_odbc
1465 ------------------
1466  * Added a new configuration option, "newcdrcolumns", which enables use of the
1467    post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'.
1468
1469 cdr_csv
1470 ------------------
1471  * Added a new configuration option, "newcdrcolumns", which enables use of the
1472    post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'.
1473
1474 ------------------------------------------------------------------------------
1475 --- Functionality changes from Asterisk 13.10.0 to Asterisk 13.11.0 ----------
1476 ------------------------------------------------------------------------------
1477
1478 chan_dahdi
1479 ------------------
1480  * Added "faxdetect_timeout" option.
1481    The option determines how many seconds into a call before faxdetect
1482    is disabled for the call.  Setting the value to zero disables the timeout.
1483
1484 res_pjsip
1485 ------------------
1486  * Added "fax_detect_timeout" to endpoint.
1487    The option determines how many seconds into a call before fax_detect
1488    is disabled for the call.  Setting the value to zero disables the timeout.
1489
1490  * Added "subscribe_context" to endpoint.
1491    If specified, incoming SUBSCRIBE requests will be searched for the matching
1492    extension in the indicated context. If no "subscribe_context" is specified,
1493    then the "context" setting is used.
1494
1495 res_rtp_asterisk
1496 ------------------
1497  * The DTLS part in Asterisk now supports Perfect Forward Secrecy (PFS).
1498    Enabling PFS is attempted by default, and is dependent on the configuration
1499    of the module using TLS.
1500    - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not
1501      specify a ECDHE cipher suite in sip.conf, for example:
1502        dtlscipher=AES128-SHA
1503    - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters
1504      into the private key file, e.g., sip.conf dtlsprivatekey. For example:
1505        openssl dhparam -out ./dh.pem 2048
1506    - Because clients expect the server to prefer PFS, and because OpenSSL sorts
1507      its cipher suites by bit strength, see "openssl ciphers -v DEFAULT".
1508      Consider re-ordering your cipher suites in the respective configuration
1509      file. For example:
1510        dtlscipher=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
1511      which forces PFS and requires at least DTLS 1.2.
1512
1513 ------------------------------------------------------------------------------
1514 --- Functionality changes from Asterisk 13.9.0 to Asterisk 13.10.0 -----------
1515 ------------------------------------------------------------------------------
1516
1517 Core
1518 ------------------
1519  * A channel variable FORWARDERNAME is now set which indicates which channel
1520    was responsible for a forwarding requests received on dial attempt.
1521
1522 func_odbc
1523 ------------------
1524  * Added new global option "single_db_connection".
1525    Enabling this option func_odbc will use a single database connection per DSN.
1526    This option is enabled by default.
1527
1528 res_fax
1529 ------------------
1530  * Added FAXMODE variable to let dialplan know what fax transport was used.
1531    FAXMODE variable is set to either "audio" or "T38".
1532
1533 res_pjsip
1534 ------------------
1535  * Added "via_addr", "via_port", "call_id" to contacts.
1536    As res_pjsip_nat rewrites contact's address, only the last Via header
1537    can contain the source address of registered endpoint.
1538    Also Call-Id header may contain the source address of registered endpoint.
1539    Added new fields ViaAddress,CallID to AMI event ContactStatus
1540
1541  * Endpoint IP Access Controls
1542    Added new configuration Endpoint options:
1543     "acl" - list of IP ACL section names in acl.conf
1544     "deny" - List of IP addresses to deny access from
1545     "permit" - List of IP addresses to permit access from
1546     "contact_acl" - List of Contact ACL section names in acl.conf
1547     "contact_deny" - List of Contact header addresses to deny
1548     "contact_permit" - List of Contact header addresses to permit
1549
1550  * Added "reg_server" to contacts.
1551    If the Asterisk system name is set in asterisk.conf, it will be stored
1552    into the "reg_server" field in the ps_contacts table to facilitate
1553    multi-server setups.
1554
1555  * When starting Asterisk, received traffic will now be ignored until Asterisk
1556    has loaded all modules and is fully booted.
1557
1558 res_hep
1559 ------------------
1560  * Added a new option, 'uuid_type', that sets the preferred source of the Homer
1561    correlation UUID. The valid options are:
1562    - call-id: Use the PJSIP SIP Call-ID header value
1563    - channel: Use the Asterisk channel name
1564    The default value is 'call-id'. In the event that a HEP module cannot find a
1565    valid value using the specified 'uuid_type', the module may fallback to a
1566    more readily available source for the correlation UUID.
1567
1568 res_odbc
1569 ------------------
1570  * A new option has been added, 'max_connections', which sets the maximum number
1571    of concurrent connections to the database. This option defaults to 1 which
1572    returns the behavior to that of Asterisk 13.7 and prior.
1573
1574 app_confbridge
1575 ------------------
1576  * Added a bridge profile option called regcontext that allows you to
1577    dynamically register the conference bridge name as an extension into
1578    the specified context.  This allows tracking down conferences on multi-
1579    server installations via alternate means (DUNDI for example). By default
1580    this feature is not used.
1581
1582 Codecs
1583 ------------------
1584  * Added the associated format name to 'core show codecs'.
1585
1586 res_ari_channels
1587 ------------------
1588  * Added 'formats' to channel create/originate to allow setting the allowed
1589    formats for a channel when no originator channel is available.  Especially
1590    useful for Local channel creation where no other format information is
1591    available.  'core show codecs' can now be used to look up suitable format
1592    names.
1593
1594 ------------------------------------------------------------------------------
1595 --- Functionality changes from Asterisk 13.8.0 to Asterisk 13.9.0 ------------
1596 ------------------------------------------------------------------------------
1597
1598 res_parking:
1599  - The dynamic parking lot creation channel variables PARKINGDYNAMIC,
1600    PARKINGDYNCONTEXT, PARKINGDYNEXTEN, and PARKINGDYNPOS are now looked
1601    for in the parker's channel instead of the parked channel.  This is only
1602    of significance if the parker uses blind transfer or the DTMF one-step
1603    parking feature.  You need to use the double underscore '__' inheritance
1604    for these variables.  The indefinite inheritance is also recommended
1605    for the PARKINGEXTEN variable.
1606
1607 res_pjsip
1608 ------------------
1609  * Added new global option (disable_multi_domain) to pjsip.
1610    Disabling Multi Domain can improve realtime performace by reducing
1611    number of database requsts.
1612
1613 chan_pjsip
1614 ------------------
1615  * Added 'pjsip show channelstats' CLI command.
1616
1617 res_pjsip_outbound_publish
1618 ------------------
1619  * Added support for setting the transport used on outbound publish
1620    using the transport configuration option.
1621
1622 ------------------------------------------------------------------------------
1623 --- Functionality changes from Asterisk 13.7.0 to Asterisk 13.8.0 ------------
1624 ------------------------------------------------------------------------------
1625
1626 res_pjsip_caller_id
1627 ------------------
1628  * Per RFC3325, the 'From' header is now anonymized on outgoing calls when
1629    caller id presentation is prohibited.
1630
1631 res_pjsip_config_wizard
1632 ------------------
1633  * A new command (pjsip export config_wizard primitives) has been added that
1634    will export all the pjsip objects it created to the console or a file
1635    suitable for reuse in a pjsip.conf file.
1636
1637 Build System
1638 ------------------
1639  * To help insure that Asterisk is compiled and run with the same known
1640    version of pjproject, a new option (--with-pjproject-bundled) has been
1641    added to ./configure.  When specified, the version of pjproject specified
1642    in third-party/versions.mak will be downloaded and configured.  When you
1643    make Asterisk, the build process will also automatically build pjproject
1644    and Asterisk will be statically linked to it.  Once a particular version
1645    of pjproject is configured and built, it won't be configured or built
1646    again unless you run a 'make distclean'.
1647
1648    To facilitate testing, when 'make install' is run, the pjsua and pjsystest
1649    utilities and the pjproject python bindings will be installed in
1650    ASTDATADIR/third-party/pjproject.
1651
1652    The default behavior remains building with the shared pjproject
1653    installation, if any.
1654
1655 app_confbridge
1656 ------------------
1657  * Added CONFBRIDGE_INFO(muted,) for querying the muted conference state.
1658
1659  * Added Muted header to AMI ConfbridgeListRooms action response list events
1660    to indicate the muted conference state.
1661
1662  * Added Muted column to CLI "confbridge list" output to indicate the muted
1663    conference state and made the locked column a yes/no value instead of a
1664    locked/unlocked value.
1665
1666 REDIRECTING(reason)
1667 ------------------
1668  * The REDIRECTING(reason) value is now treated consistently between
1669    chan_sip and chan_pjsip.
1670
1671    Both channel drivers match incoming reason values with values documented
1672    by REDIRECTING(reason) and values documented by RFC5806 regardless of
1673    whether they are quoted or not.  RFC5806 values are mapped to the
1674    equivalent REDIRECTING(reason) documented value and is set in
1675    REDIRECTING(reason).  e.g., an incoming RFC5806 'unconditional' value or a
1676    quoted string version ('"unconditional"') is converted to
1677    REDIRECTING(reason)'s 'cfu' value.  The user's dialplan only needs to deal
1678    with 'cfu' instead of any of the aliases.
1679
1680    The incoming 480 response reason text supported by chan_sip checks for
1681    known reason values and if not matched then puts quotes around the reason
1682    string and assigns that to REDIRECTING(reason).
1683
1684    Both channel drivers send outgoing known REDIRECTING(reason) values as the
1685    unquoted RFC5806 equivalent.  User custom values are either sent as is or
1686    with added quotes if SIP doesn't allow a character within the value as
1687    part of a RFC3261 Section 25.1 token.  Note that there are still
1688    limitations on what characters can be put in a custom user value.  e.g.,
1689    embedding quotes in the middle of the reason string is just going to cause
1690    you grief.
1691
1692  * Setting a REDIRECTING(reason) value now recognizes RFC5806 aliases.
1693    e.g., Setting REDIRECTING(reason) to 'unconditional' is converted to the
1694    'cfu' value.
1695
1696 res_pjproject
1697 ------------------
1698  * This module is the successor of res_pjsip_log_forwarder.  As well as
1699    handling the log forwarding (which now displays as 'pjproject:0' instead
1700    of 'pjsip:0'), it also adds a 'pjproject show buildopts' command to the CLI.
1701    This displays the compiled-in options of the pjproject installation
1702    Asterisk is currently running against.
1703
1704  * Another feature of this module is the ability to map pjproject log levels
1705    to Asterisk log levels, or to suppress the pjproject log messages
1706    altogether.  Many of the messages emitted by pjproject itself are the result
1707    of errors which Asterisk will ultimately handle so the messages can be
1708    misleading or just noise.  A new config file (pjproject.conf) has been added
1709    to configure the mapping and a new CLI command (pjproject show log mappings)
1710    has been added to display the mappings currently in use.
1711
1712 res_pjsip
1713 ------------------
1714  * Transports are now reloadable.  In testing, no in-progress calls were
1715    disrupted if the ip address or port weren't changed, but the possibility
1716    still exists.  To make sure there are no unintentional drops, a new option
1717    'allow_reload', which defaults to 'no' has been added to transport.  If
1718    left at the default, changes to the particular transport will be ignored.
1719    If set to 'yes', changes (if any) will be applied.
1720
1721  * Added new global option (regcontext) to pjsip. When set, Asterisk will
1722    dynamically create and destroy a NoOp priority 1 extension
1723    for a given endpoint who registers or unregisters with us.
1724
1725  * Endpoints and aors can now be identified by the username and realm in an
1726    incoming Authorization header.  To use this feature, add "auth_username"
1727    to your endpoint's "identify_by" list.  You can combine "auth_username"
1728    and the original "username" to test both the From/To and Authorization
1729    headers.  For endpoints, the order is controlled by the global
1730    "endpoint_identifier_order" setting.  For matching aors to an endpoint
1731    for inbound registration, the order is controlled by this option.
1732
1733  * In conjunction with the "auth_username" change, 3 new options have been
1734    added to the global configuration object that control how many unidentified
1735    requests over a certain period from the same IP address can be received
1736    before a security altert is generated.  A new CLI command
1737    "pjsip show unidentified_requests" will list the current candidates.
1738
1739 res_pjsip_history
1740 ------------------
1741  * A new module, res_pjsip_history, has been added that provides SIP history
1742    viewing/filtering from the CLI. The module is intended to be used on systems
1743    with busy SIP traffic, where existing forms of viewing SIP messages - such
1744    as the res_pjsip_logger - may be inadequate. The module provides two new
1745    CLI commands:
1746    - 'pjsip set history {on|off|clear}' - this enables/disables SIP history
1747      capturing, as well as clears an existing history capture. Note that SIP
1748      packets captured are stored in memory until cleared. As a result, the
1749      history capture should only be used for debugging/viewing purposes, and
1750      should *NOT* be left permanently enabled on a system.
1751    - 'pjsip show history' - displays the captured SIP history. When invoked
1752      with no options, the entire captured history is displayed. Two options
1753      are available:
1754      -- 'entry <num>' - display a detailed view of a single SIP message in
1755         the history
1756      -- 'where ...' - filter the history based on some expression. For more
1757         information on filtering, view the current CLI help for the
1758         'pjsip show history' command.
1759
1760 Voicemail
1761 ------------------
1762  * app_voicemail and res_mwi_external can now be built together.  The default
1763    remains to build app_voicemail and not res_mwi_external but if they are
1764    both built, the load order will cause res_mwi_external to load first and
1765    app_voicemail will be skipped.  Use 'preload=app_voicemail.so' in
1766    modules.conf to force app_voicemail to be the voicemail provider.
1767
1768 res_pjsip_sdp_rtp
1769 ------------------
1770  * A new option (bind_rtp_to_media_address) has been added to endpoint which
1771    will cause res_pjsip_sdp_rtp to actually bind the RTP instance to the
1772    media_address as well as using it in the SDP.  If set, RTP packets will now
1773    originate from the media address instead of the operating system's "primary"
1774    ip address.
1775
1776 res_rtp_asterisk
1777 ------------------
1778  * A new configuration section - ice_host_candidates - has been added to
1779    rtp.conf, allowing automatically discovered ICE host candidates to be
1780    overriden. This allows an Asterisk server behind a 1:1 NAT to send its
1781    external IP as a host candidate rather than relying on STUN to discover it.
1782
1783 ------------------------------------------------------------------------------
1784 --- Functionality changes from Asterisk 13.6.0 to Asterisk 13.7.0 ------------
1785 ------------------------------------------------------------------------------
1786
1787 Codecs
1788 ------------------
1789  * Added format attribute negotiation for the VP8 video codec. Format attribute
1790    negotiation is provided by the res_format_attr_vp8 module.
1791
1792 ConfBridge
1793 ------------------
1794  * A new "timeout" user profile option has been added. This configures the number
1795    of seconds that a participant may stay in the ConfBridge after joining. When
1796    the time expires, the user is ejected from the conference and CONFBRIDGE_RESULT
1797    is set to "TIMEOUT" on the channel.
1798
1799 chan_sip
1800 ------------------
1801  * The websockets_enabled option has been added to the general section of
1802    sip.conf.  The option is enabled by default to match the previous behavior.
1803    The option should be disabled when using res_pjsip_transport_websockets to
1804    ensure chan_sip will not conflict with PJSIP websockets.
1805
1806 Dialplan Functions
1807 ------------------
1808  * The HOLD_INTERCEPT dialplan function now actually exists in the source tree.
1809    While support for the events was added in Asterisk 13.4.0, the function
1810    accidentally never made it in. That function is now present, and will cause
1811    the 'hold' raised by a channel to be intercepted and converted into an
1812    event instead.
1813
1814 res_pjsip_outbound_registration
1815 -------------------------------
1816  * If res_statsd is loaded and a StatsD server is configured, basic statistics
1817    regarding the state of outbound registrations will now be emitted. This
1818    includes:
1819    - A GAUGE statistic for the overall number of outbound registrations, i.e.:
1820        PJSIP.registrations.count
1821    - A GAUGE statistic for the overall number of outbound registrations in a
1822      particular state, e.g.:
1823        PJSIP.registrations.state.Registered
1824
1825 res_pjsip
1826 ------------------
1827  * The ability to use "like" has been added to the pjsip list and show
1828    CLI commands.  For instance: CLI> pjsip list endpoints like abc
1829
1830  * If res_statsd is loaded and a StatsD server is configured, basic statistics
1831    regarding the state of PJSIP contacts will now be emitted. This includes:
1832    - A GAUGE statistic for the overall number of contacts in a particular
1833      state, e.g.:
1834        PJSIP.contacts.states.Reachable
1835    - A TIMER statistic for the RTT time for each qualified contact, e.g.:
1836        PJSIP.contacts.alice@@127.0.0.1:5061.rtt
1837
1838 res_sorcery_memory_cache
1839 ------------------------
1840  * A new caching strategy, full_backend_cache, has been added which caches
1841    all stored objects in the backend. When enabled all objects will be
1842    expired or go stale according to the configuration. As well when enabled
1843    all retrieval operations will be performed against the cache instead of
1844    the backend.
1845
1846 func_callerid
1847 -------------------
1848  * CALLERID(pres) is now documented as a valid alternative to setting both
1849    CALLERID(name-pres) and CALLERID(num-pres) at once.  Some channel drivers,
1850    like chan_sip, don't make a distinction between the two: they take the
1851    least public value from name-pres and num-pres.  By using CALLERID(pres)
1852    for reading and writing, you touch the same combined value in the dialplan.
1853    The same applies to CONNECTEDLINE(pres), REDIRECTING(orig-pres),
1854    REDIRECTING(to-pres) and REDIRECTING(from-pres).
1855
1856 res_endpoint_stats
1857 -------------------
1858  * A new module that emits StatsD statistics regarding Asterisk endpoints.
1859    This includes a total count of the number of endpoints, the count of the
1860    number of endpoints in the technology agnostic state of the endpoint -
1861    online or offline - as well as the number of channels associated with each
1862    endpoint. These are recorded as three different GAUGE statistics:
1863     - endpoints.count
1864     - endpoints.state.{unknown|offline|online}
1865     - endpoints.{tech}.{resource}.channels
1866
1867
1868 ------------------------------------------------------------------------------
1869 --- Functionality changes from Asterisk 13.5.0 to Asterisk 13.6.0 ------------
1870 ------------------------------------------------------------------------------
1871
1872 Dialplan Functions
1873 ------------------
1874  * The CHANNEL function, when used on a PJSIP channel, now exposes a 'call-id'
1875    extraction option when using with the 'pjsip' signalling option. It will
1876    return the SIP Call-ID associated with the INVITE request that established
1877    the PJSIP channel.
1878
1879 ARI
1880 ------------------
1881  * Two new endpoint related events are now available: PeerStatusChange and
1882    ContactStatusChange. In particular, these events are useful when subscribing
1883    to all event sources, as they provide additional endpoint related
1884    information beyond the addition/removal of channels from an endpoint.
1885
1886  * Added the ability to subscribe to all ARI events in Asterisk, regardless
1887    of whether the application 'controls' the resource. This is useful for
1888    scenarios where an ARI application merely wants to observe the system,
1889    as opposed to control it. There are two ways to accomplish this:
1890    (1) Via the WebSocket connection URI. A new query paramter, 'subscribeAll',
1891        has been added that, when present and True, will subscribe all
1892        specified applications to all ARI event sources in Asterisk.
1893    (2) Via the applications resource. An ARI client can, at any time, subscribe
1894        to all resources in an event source merely by not providing an explicit
1895        resource. For example, subscribing to an event source of 'channels:'
1896        as opposed to 'channels:12345' will subscribe the application to all
1897        channels.
1898
1899 ------------------------------------------------------------------------------
1900 --- Functionality changes from Asterisk 13.4.0 to Asterisk 13.5.0 ------------
1901 ------------------------------------------------------------------------------
1902
1903 AMI
1904 ------------------
1905  * A new ContactStatus event has been added that reflects res_pjsip contact
1906    lifecycle changes:  Created, Removed, Reachable, Unreachable, Unknown.
1907
1908  * Added the Linkedid header to the common channel headers listed for each
1909    channel in AMI events.
1910
1911 ARI
1912 ------------------
1913  * A new feature has been added that enables the retrieval of modules and
1914    module information through an HTTP request. Information on a single module
1915    can be also be retrieved. Individual modules can be loaded to Asterisk, as
1916    well as unloaded and reloaded.
1917
1918 * A new resource has been added to the 'asterisk' resource, 'config/dynamic'.
1919    This resource allows for push configuration of sorcery derived objects
1920    within Asterisk. The resource supports creation, retrieval, updating, and
1921    deletion. Sorcery derived objects that are manipulated by this resource
1922    must have a sorcery wizard that supports the desired operations.
1923
1924  * A new feature has been added that allows for the rotation of log channels
1925    through HTTP requests.
1926
1927
1928 res_pjsip
1929 ------------------
1930 * A new 'g726_non_standard' endpoint option has been added that, when set to
1931   'yes' and g.726 audio is negotiated, forces the codec to be treated as if it
1932   is AAL2 packed on the channel.
1933
1934 * A new 'rtp_keepalive' endpoint option has been added. This option specifies
1935   an interval, in seconds, at which we will send RTP comfort noise packets to
1936   the endpoint. This functions identically to chan_sip's "rtpkeepalive" option.
1937
1938 * New 'rtp_timeout' and 'rtp_timeout_hold' endpoint options have been added.
1939   These options specify the amount of time, in seconds, that Asterisk will wait
1940   before terminating the call due to lack of received RTP. These are identical
1941   to chan_sip's rtptimeout and rtpholdtimeout options.
1942
1943 ------------------------------------------------------------------------------
1944 --- Functionality changes from Asterisk 13.3.0 to Asterisk 13.4.0 ------------
1945 ------------------------------------------------------------------------------
1946
1947 chan_pjsip
1948 ------------------
1949  * New 'rpid_immediate' option to control if connected line update information
1950    goes to the caller immediately or waits for another reason to send the
1951    connected line information update.  See the online option documentation for
1952    more information.  Defaults to 'no' as setting it to 'yes' can result in
1953    many unnecessary messages being sent to the caller.
1954
1955  * The configuration setting 'progressinband' now defaults to 'no', which
1956    matches the actual behavior of previous versions.
1957
1958 res_pjsip
1959 ------------------
1960  * A new CLI command has been added: "pjsip show settings", which shows
1961    both the global and system configuration settings.
1962
1963  * A new aor option has been added: "qualify_timeout", which sets the timeout
1964    in seconds for a qualify.  The default is 3 seconds.  This overrides the
1965    hard coded 32 seconds in pjproject.
1966
1967  * Endpoint status will now change to "Unreachable" when all contacts are
1968    unavailable.  When any contact becomes available, the endpoint will status
1969    will change back to "Reachable".
1970
1971  * A new global option has been added: "max_initial_qualify_time", which
1972    sets the maximum amount of time from startup that qualifies should be
1973    attempted on all contacts.
1974
1975 res_ari_channels
1976 ------------------
1977  * Two new events, 'ChannelHold' and 'ChannelUnhold', have been added to the
1978    events data model. These events are raised when a channel indicates a hold
1979    or unhold, respectively.
1980
1981 func_holdintercept
1982 ------------------
1983  * A new dialplan function, HOLD_INTERCEPT, has been added. This function, when
1984    placed on a channel, intercepts hold/unhold indications signalled by the
1985    channel and prevents them from moving on to other channels in a bridge with
1986    the hold initiator. Instead, AMI or ARI events are raised indicating that
1987    the channel wanted to place someone on hold. This allows external
1988    applications to implement their own custom hold/unhold logic.
1989
1990 ------------------------------------------------------------------------------
1991 --- Functionality changes from Asterisk 13.2.0 to Asterisk 13.3.0 ------------
1992 ------------------------------------------------------------------------------
1993
1994 chan_pjsip/app_transfer
1995 ------------------
1996  * The Transfer application, when used with chan_pjsip, now supports using
1997    a PJSIP endpoint as the transfer destination. This is in addition to
1998    explicitly specifying a SIP URI to transfer to.
1999
2000 res_ari_channels
2001 ------------------
2002  * The ARI /channels resource now supports a new operation, 'redirect'. The
2003    redirect operation will perform a technology and state specific redirection
2004    on the channel to a specified endpoint or destination. In the case of SIP
2005    technologies, this is either a 302 Redirect response to an on-going INVITE
2006    dialog or a SIP REFER request.
2007
2008 res_pjsip
2009 ------------------
2010  * A new 'endpoint_identifier_order' option has been added that allows one to
2011    set the order by which endpoint identifiers are processed and checked. This
2012    option is specified under the 'global' type configuration section.
2013
2014 ------------------------------------------------------------------------------
2015 --- Functionality changes from Asterisk 13.1.0 to Asterisk 13.2.0 ------------
2016 ------------------------------------------------------------------------------
2017
2018  * New 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions have been added which
2019    allow examining PJSIP AORs or contacts from the dialplan.
2020
2021 res_pjsip_outbound_registration
2022 ------------------
2023  * The 'pjsip send unregister' command now stops further registrations.
2024
2025  * A new command 'pjsip send register' has been added which allows you to
2026    start or restart periodic registration.  It can be used after a
2027    'send unregister' or after a 401 permanent error.
2028
2029 res_pjsip_config_wizard
2030 ------------------
2031  * This is a new module that adds streamlined configuration capability for
2032    chan_pjsip.  It's targeted at users who have lots of basic configuration
2033    scenarios like 'phone' or 'agent' or 'trunk'.  Additional information
2034    can be found in the sample configuration file at
2035    config/samples/pjsip_wizard.conf.sample.
2036
2037 res_fax
2038 -----------
2039  * The T.38 negotiation timeout was previously hard coded at 5000 milliseconds
2040    and is now configurable via the 't38timeout' configuration option in
2041    res_fax.conf and via the fax options dialplan function 'FAXOPT(t38timeout)'.
2042    The default remains at 5000 milliseconds.
2043
2044 PJSIP Transports
2045 ----------
2046  * The ca_list_path transport parameter has been added for TLS transports. This
2047    option behaves similarly to the old sip.conf option "tlscapath". In order to
2048    use this, you must be using PJProject version 2.4 or higher.
2049
2050 ARI
2051 ------------------
2052  * The Originate operation now takes in an originator channel. The linked ID of
2053    this originator channel is applied to the newly originated outgoing channel.
2054    If using CEL this allows an association to be established between the two so
2055    it can be recognized that the originator is dialing the originated channel.
2056
2057  * "language" (the default spoken language for the channel) is now included in
2058    the standard channel state output for suitable events.
2059
2060  * The POST channels/{id} operation and the POST channels/{id}/continue operation
2061    now have a new "label" parameter. This allows for origination or continuation
2062    to a labeled priority in the dialplan instead of requiring a specific priority
2063    number. The ARI version has been bumped to 1.7.0 as a result.
2064
2065 AMI
2066 ------------------
2067  * "Language" (the default spoken language for the channel) is now included in
2068    the standard channel state output for suitable events.
2069
2070  * AMI actions that return a list of events have been made to return consistent
2071    headers for the action response event starting the list and the list complete
2072    event.  The AMI version has been bumped to 2.7.0 as a result.
2073
2074 ------------------------------------------------------------------------------
2075 --- Functionality changes from Asterisk 13.0.0 to Asterisk 13.1.0 ------------
2076 ------------------------------------------------------------------------------
2077
2078 AMI
2079 ------------------
2080  * Event NewConnectedLine is emitted when the connected line information on
2081    a channel changes.
2082
2083 ARI
2084 ------------------
2085  * Event ChannelConnectedLine is emitted when the connected line information
2086    on a channel changes.
2087
2088 Core Transfers
2089 -----------------
2090
2091 The features.conf general section has three new configurable options:
2092     * transferdialattempts
2093     * transferretrysound
2094     * transferinvalidsound
2095 For more information on what these options do, see the Asterisk wiki:
2096  https://wiki.asterisk.org/wiki/x/W4fAAQ
2097
2098 Channel Drivers
2099 ------------------
2100
2101 chan_pjsip
2102 ------------------
2103  * New 'media_encryption_optimistic' endpoint setting. This will use SRTP
2104    when possible but does not consider lack of it a failure.
2105
2106 res_pjsip_endpoint_identifer_ip
2107 ------------------
2108  * New CLI commands have been added: "pjsip show identif(y|ies)", which lists
2109    all configured PJSIP identify objects
2110
2111 ------------------------------------------------------------------------------
2112 --- Functionality changes from Asterisk 12 to Asterisk 13 --------------------
2113 ------------------------------------------------------------------------------
2114
2115 Overview
2116 ------------------
2117
2118 Asterisk 13 is the next Long Term Support (LTS) release of Asterisk. As such,
2119 the focus of development for this release of Asterisk was on improving the
2120 usability and features developed in the previous Standard release, Asterisk 12.
2121 Beyond a general refinement of end user features, development focussed heavily
2122 on the Asterisk APIs - the Asterisk Manager Interface (AMI) and the Asterisk
2123 REST Interface (ARI) - and the PJSIP stack in Asterisk. Some highlights of the
2124 new features include:
2125
2126 * Asterisk security events are now provided via AMI, allowing end users to
2127   monitor their Asterisk system in real time for security related issues.
2128 * External control of Message Waiting Indicators (MWI) through both AMI and ARI.
2129 * Reception/transmission of out of call text messages using any supported
2130   channel driver/protocol stack through ARI.
2131 * Resource List Server support in the PJSIP stack, providing subscriptions to
2132   lists of resources and batched delivery of NOTIFY requests.
2133 * Inter-Asterisk distributed device state and mailbox state using the PJSIP
2134   stack.
2135
2136 It is important to note that Asterisk 13 is built on the architecture developed
2137 during the previous Standard release, Asterisk 12. Users upgrading to
2138 Asterisk 13 should read about the new features in Asterisk 12 later in this file
2139 (see Functionality changes from Asterisk 11 to Asterisk 12), as well as the
2140 UPGRADE-12.txt delivered with this release. In particular, users upgrading to
2141 Asterisk 13 from a release prior to Asterisk 12 should read the specifications
2142 on AMI, CDRs, and CEL on the Asterisk wiki:
2143  * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ
2144  * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ
2145  * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ
2146
2147 Many new featuers in Asterisk 13 were introduced in point releases of
2148 Asterisk 12. Following this section - which documents the changes from all
2149 versions of Asterisk 12 to Asterisk 13 - users should examine the new features
2150 that were introduced in the point releases of Asterisk 12, as they are also
2151 included in Asterisk 13.
2152
2153 Finally, all users upgrading to Asterisk 13 should read the UPGRADE.txt file
2154 delivered with this release.
2155
2156
2157 Build System
2158 ------------------
2159  * Sample config files have been moved from configs/ to a sub-folder of that
2160    directory, samples.
2161
2162  * The menuselect utility has been pulled into the Asterisk repository. As a
2163    result, the libxml2 development library is now a required dependency for
2164    Asterisk.
2165
2166  * A new Compiler Flag, REF_DEBUG, has been added. When enabled, reference
2167    counted objects will emit additional debug information to the refs log file
2168    located in the standard Asterisk log file directory. This log file is useful
2169    in tracking down object leaks and other reference counting issues. Prior to
2170    this version, this option was only available by modifying the source code
2171    directly. This change also includes a new script, refcounter.py, in the
2172    contrib folder that will process the refs log file. Note that this replaces
2173    the refcounter utility that could be built from the utils directory.
2174
2175
2176 Applications
2177 ------------------
2178
2179 DahdiBarge
2180 ------------------
2181  * This module was deprecated and has been removed. Users of app_dahdibarge
2182    should use ChanSpy instead.
2183
2184 MixMonitor
2185 ------------------
2186  * New options to play a beep when starting a recording and stopping a recording
2187    have been added.  The option "p" will play a beep to the channel that starts
2188    the recording.  The option "P" will play a beep to the channel that stops the
2189    recording.
2190
2191 Queue
2192 ------------------
2193  * Queue rules can now be stored in a database table, queue_rules. Unlike other
2194    RealTime tables, the queue_rules table is only examined on module load or
2195    module reload. A new general setting has been added to queuerules.conf,
2196    'realtime_rules', which, when set to 'yes', will cause app_queue to look in
2197    RealTime for additional queue rules to parse. Note that both the file and
2198    the database can be used as a provide of queue rules when 'realtime_rules'
2199    is set to 'yes'.
2200
2201    When app_queue is reloaded, all rules are re-parsed and loaded into memory.
2202    There is no caching of RealTime queue rules.
2203
2204 ReadFile
2205 ------------------
2206  * This module was deprecated and has been removed. Users of app_readfile
2207    should use func_env's FILE function instead.
2208
2209 Say
2210 ------------------
2211  * The 'say' family of dialplan applications now support the Japanese
2212    language. The 'language' parameter in say.conf now recognizes a setting of
2213    'ja', which will enable Japanese language specific mechanisms for playing
2214    back numbers, dates, and other items.
2215  * Counting, enumeration and dates now supports Icelandic grammar with the
2216    'language' parameter set to 'is'.
2217
2218 SayCountPL
2219 ------------------
2220  * This module was deprecated and has been removed. Users of app_saycountpl
2221    should use the Say family of applications.
2222
2223 SetMusicOnHold
2224 ------------------
2225  * The SetMusicOnHold dialplan application was deprecated and has been removed.
2226    Users of the application should use the CHANNEL function's musicclass
2227    setting instead.
2228
2229 WaitMusicOnHold
2230 ------------------
2231  * The WaitMusicOnHold dialplan application was deprecated and has been
2232    removed. Users of the application should use MusicOnHold with a duration
2233    parameter instead.
2234
2235 VoiceMail
2236 ------------------
2237  * VoiceMail and VoiceMailMain now support the Japanese language. The
2238    'language' parameter in voicemail.conf now recognizes a setting of 'ja',
2239    which will enable prompts to be played back using a Japanese grammatical
2240    structure. Additional prompts are necessary for this functionality,
2241    including:
2242    - jb-arimasu: there is
2243    - jb-arimasen: there is not
2244    - jb-oshitekudasai: please press
2245    - jb-ni: article ni
2246    - jb-ga: article ga
2247    - jb-wa: article wa
2248    - jb-wo: article wo
2249
2250  * Add the ability to specify multiple email addresses in configuration,
2251    separated by a |.
2252
2253
2254 CDR Backends
2255 ------------------
2256
2257 cdr_sqlite
2258 -----------------
2259  * This module was deprecated and has been removed. Users of cdr_sqlite
2260    should use cdr_sqlite3_custom.
2261
2262 cdr_pgsql
2263 ------------------
2264  * Added the ability to support PostgreSQL application_name on connections.
2265    This allows PostgreSQL to display the configured name in the
2266    pg_stat_activity view and CSV log entries. This setting is configurable
2267    for cdr_pgsql via the appname configuration setting in cdr_pgsql.conf.
2268
2269
2270 CEL Backends
2271 ------------------
2272
2273 cel_pgsql
2274 ------------------
2275  * Added the ability to support PostgreSQL application_name on connections.
2276    This allows PostgreSQL to display the configured name in the
2277    pg_stat_activity view and CSV log entries. This setting is configurable
2278    for cel_pgsql via the appname configuration setting in cel_pgsql.conf.
2279
2280
2281 Channel Drivers
2282 ------------------
2283
2284 chan_dahdi
2285 ------------------
2286  * SS7 support now requires libss7 v2.0 or later.
2287
2288  * Added SS7 support for connected line and redirecting.
2289
2290  * Most SS7 CLI commands are reworked as well as new SS7 commands added.
2291    See online CLI help.
2292
2293  * Added several SS7 config option parameters described in
2294    chan_dahdi.conf.sample.
2295
2296 chan_gtalk
2297 ------------------
2298  * This module was deprecated and has been removed. Users of chan_gtalk
2299    should use chan_motif.
2300
2301 chan_h323
2302 ------------------
2303  * This module was deprecated and has been removed. Users of chan_h323
2304    should use chan_ooh323.
2305
2306 chan_jingle
2307 ------------------
2308  * This module was deprecated and has been removed. Users of chan_jingle
2309    should use chan_motif.
2310
2311 chan_pjsip
2312 ------------------
2313  * Added the CLI command 'pjsip list ciphers' so a user can know what
2314    OpenSSL names are available on their system for the pjsip.conf cipher
2315    option.
2316
2317 chan_sip
2318 ------------------
2319  * The SIPPEER dialplan function no longer supports using a colon as a
2320    delimiter for parameters. The parameters for the function should be
2321    delimited using a comma.
2322
2323  * The SIPCHANINFO dialplan function was deprecated and has been removed. Users
2324    of the function should use the CHANNEL function instead.
2325
2326
2327 Core
2328 ------------------
2329
2330 Account Codes
2331 ------------------
2332  * Added functional peeraccount support.  Except for Queue, the
2333    accountcode propagation is now consistently propagated to outgoing
2334    channels before dialing.  The channel accountcode can change from its
2335    original non-empty value on channel creation for the following specific
2336    reasons.  One, dialplan sets it using CHANNEL(accountcode).  Two, an
2337    originate method that can specify an accountcode value.  Three, the
2338    calling channel propagates its peeraccount or accountcode to the
2339    outgoing channel's accountcode before dialing.  The change has two
2340    visible effects.  One, local channels now cross accountcode and
2341    peeraccount across the special bridge between the ;1 and ;2 channels
2342    just like channels between normal bridges.  Two, the
2343    CHANNEL(peeraccount) value can now be set before Dial and FollowMe to
2344    set the accountcode on the outgoing channel(s).
2345
2346    For Queue, an outgoing channel's non-empty accountcode will not change
2347    unless explicitly set by CHANNEL(accountcode).  The change has three
2348    visible effects.  One, local channels now cross accountcode and
2349    peeraccount across the special bridge between the ;1 and ;2 channels
2350    just like channels between normal bridges.  Two, the queue member will
2351    get an accountcode if it doesn't have one and one is available from the
2352    calling channel's peeraccount.  Three, accountcode propagation includes
2353    local channel members where the accountcodes are propagated early
2354    enough to be available on the ;2 channel.
2355
2356 AMI
2357 ------------------
2358  * New DeviceStateChanged and PresenceStateChanged AMI events have been added.
2359    These events are emitted whenever a device state or presence state change
2360    occurs. The events are controlled by res_manager_device_state.so and
2361    res_manager_presence_state.so. If the high frequency of these events is
2362    problematic for you, do not load these modules.
2363
2364  * Added DialplanExtensionAdd and DialplanExtensionRemove AMI commands. They
2365    work in basically the same way as the 'dialplan add extension' and
2366    'dialplan remove extension' CLI commands respectively.
2367
2368  * New AMI action LoggerRotate reloads and rotates logger in the same manner
2369    as CLI command 'logger rotate'
2370
2371  * New AMI Actions FAXSessions, FAXSession, and FAXStats replicate the
2372    functionality of CLI commands 'fax show sessions', 'fax show session',
2373    and fax show stats' respectively.
2374
2375  * New AMI actions PRIDebugSet, PRIDebugFileSet, and PRIDebugFileUnset
2376    enable manager control over PRI debugging levels and file output.
2377
2378  * AMI action PJSIPNotify may now send to a URI instead of only to a PJSIP
2379    endpoint as long as a default outbound endpoint is set. This also applies
2380    to the equivalent CLI command (pjsip send notify)
2381
2382  * The AMI action PJSIPShowEndpoint now includes ContactStatusDetail sections
2383    that give information on Asterisk's attempts to qualify the endpoint.
2384
2385  * The DialEnd event will now contain a Forward header if the dial is ending
2386    due to the call being forwarded. The contents of the Forward header is the
2387    extension in the number to which the call is being forwarded.
2388
2389 CEL
2390 ------------------
2391  * The "bridge_technology" extra field key has been added to BRIDGE_ENTER
2392    and BRIDGE_EXIT events.
2393
2394 Features
2395 ------------------
2396  * Channel variables are now substituted in arguments passed to applications
2397    run by using dynamic features.
2398
2399 TLS
2400 ------------------
2401  * The TLS core in Asterisk now supports Perfect Forward Secrecy (PFS).
2402    Enabling PFS is attempted by default, and is dependent on the configuration
2403    of the module using TLS.
2404    - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not
2405      specify a ECDHE cipher suite in sip.conf, for example:
2406        tlscipher=AES128-SHA:DES-CBC3-SHA
2407    - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters
2408      into the private key file, e.g., sip.conf tlsprivatekey. For example, the
2409      default dh2048.pem - see
2410      http://www.opensource.apple.com/source/OpenSSL098/OpenSSL098-35.1/src/apps/dh2048.pem?txt
2411    - Because clients expect the server to prefer PFS, and because OpenSSL sorts
2412      its cipher suites by bit strength, see "openssl ciphers -v DEFAULT".
2413      Consider re-ordering your cipher suites in the respective configuration
2414      file. For example:
2415        tlscipher=AES128+kEECDH:AES128+kEDH:3DES+kEDH:AES128-SHA:DES-CBC3-SHA:-ADH:-AECDH
2416      will use PFS when offered by the client. Clients which do not offer PFS
2417      fall-back to AES-128 (or even 3DES, as recommended by RFC 3261).
2418
2419
2420 Functions
2421 ------------------
2422
2423 JACK_HOOK
2424 ------------------
2425  * The JACK_HOOK function now supports audio with a sample rate higher than
2426    8kHz.
2427
2428
2429 Resources
2430 ------------------
2431
2432 res_config_pgsql
2433 ------------------
2434  * Added the ability to support PostgreSQL application_name on connections.
2435    This allows PostgreSQL to display the configured name in the
2436    pg_stat_activity view and CSV log entries. This setting is configurable
2437    for res_config_pgsql via the dbappname configuration setting in
2438    res_pgsql.conf.
2439
2440 res_pjsip_outbound_publish
2441 ------------------
2442  * A new module, res_pjsip_outbound_publish provides the mechanisms for sending
2443    PUBLISH requests for specific event packages to another SIP User Agent.
2444
2445 res_pjsip_pubsub
2446 ------------------
2447  * The publish/subscribe core module has been updated to support RFC 4662
2448    Resource Lists, allowing Asterisk to act as a Resource List Server (RLS).
2449    Resource lists are configured in pjsip.conf under a new object type,
2450    resource_list. Resource lists can contain either message-summary or presence
2451    events, and can be composed of specific resources that provide the event or
2452    other resource lists.
2453
2454  * Inbound publication support is provided by a new object, inbound-publication.
2455    This configures res_pjsip_pubsub to accept PUBLISH requests from a particular
2456    resource. Which events are accepted is constructed dynamically; see
2457    res_pjsip_publish_asterisk for more information.
2458
2459 res_pjsip_publish_asterisk
2460 ------------------
2461  * A new module, res_pjsip_publish_asterisk adds support for PUBLISH requests of
2462    Asterisk information to other Asterisk servers. This module is intended only
2463    for Asterisk to Asterisk exchanges of information. Currently, this includes
2464    both mailbox state and device state information.
2465
2466 ------------------------------------------------------------------------------
2467 --- Functionality changes from Asterisk 12.4.0 to Asterisk 12.5.0 ------------
2468 ------------------------------------------------------------------------------
2469
2470 ARI
2471 ------------------
2472  * Stored recordings now support a new operation, copy. This will take an
2473    existing stored recording and copy it to a new location in the recordings
2474    directory.
2475
2476  * LiveRecording objects now have three additional fields that can be reported
2477    in a RecordingFinished ARI event:
2478    - total_duration: the duration of the recording
2479    - talking_duration: optional. The duration of talking detected in the
2480      recording. This is only available if max_silence_seconds was specified
2481      when the recording was started.
2482    - silence_duration: optional. The duration of silence detected in the
2483      recording. This is only available if max_silence_seconds was specified
2484      when the recording was started.
2485    Note that all duration values are reported in seconds.
2486
2487  * Users of ARI can now send and receive out of call text messages. Messages
2488    can be sent directly to a particular endpoint, or can be sent to the
2489    endpoints resource directly and inferred from the URI scheme. Text
2490    messages are passed to ARI clients as TextMessageReceived events. ARI
2491    clients can choose to receive text messages by subscribing to the particular
2492    endpoint technology or endpoints that they are interested in.
2493
2494  * The applications resource now supports subscriptions to all endpoints of
2495    a particular channel technology. For example, subscribing to an eventSource
2496    of 'endpoint:PJSIP' will subscribe to all PJSIP endpoints.
2497
2498 res_pjsip
2499 ------------------
2500  * The endpoint configuration object now supports 'accountcode'. Any channel
2501    created for an endpoint with this setting will have its accountcode set
2502    to the specified value.
2503
2504 res_hep_rtcp
2505 ------------------
2506  * A new module, res_hep_rtcp, has been added that will forward RTCP call
2507    statistics to a HEP capture server. See res_hep for more information.
2508
2509 Functions
2510 ------------------
2511  * Function AUDIOHOOK_INHERIT has been deprecated. Audiohooks are now
2512    unconditionally inhereted through masquerades. As a side benefit, more
2513    than one audiohook of a given type may persist through a masquerade now.
2514
2515 ------------------------------------------------------------------------------
2516 --- Functionality changes from Asterisk 12.3.0 to Asterisk 12.4.0 ------------
2517 ------------------------------------------------------------------------------
2518
2519 AgentRequest
2520 ------------------
2521  * Returns new AGENT_STATUS value "NOT_CONNECTED" if the agent fails to
2522    connect with an incoming caller after being alerted to the presence
2523    of the incoming caller.  The most likely reason this would happen is
2524    the agent did not acknowledge the call in time.
2525
2526 AMI
2527 ------------------
2528  * New events have been added for the TALK_DETECT function. When the function
2529    is used on a channel, ChannelTalkingStart/ChannelTalkingStop events will be
2530    emitted to connected AMI clients indicating the start/stop of talking on
2531    the channel.
2532
2533 ARI
2534 ------------------
2535  * New event models have been aded for the TALK_DETECT function. When the
2536    function is used on a channel, ChannelTalkingStarted/ChannelTalkingFinished
2537    events will be emitted to connected WebSockets subscribed to the channel,
2538    indicating the start/stop of talking on the channel.
2539
2540 Functions
2541 ------------------
2542  * A new function, TALK_DETECT, has been added. When set on a channel, this
2543    fucntion causes events indicating the starting/stoping of talking on said
2544    channel to be emitted to both AMI and ARI clients.
2545
2546 ------------------------------------------------------------------------------
2547 --- Functionality changes from Asterisk 12.2.0 to Asterisk 12.3.0 ------------
2548 ------------------------------------------------------------------------------
2549
2550 ARI
2551 ------------------
2552  * A new Playback URI 'tone' has been added. Tones are specified either as
2553    an indication name (e.g. 'tone:busy') from indications.conf or as a tone
2554    pattern (e.g. 'tone:240/250,0/250'). Tones differ from normal playback
2555    URIs in that they must be stopped manually and will continue to occupy
2556    a channel's ARI control queue until they are stopped. They also can not
2557    be rewound or fastforwarded.
2558
2559  * User events can now be generated from ARI.  Events can be signalled with
2560    arbitrary json variables, and include one or more of channel, bridge, or
2561    endpoint snapshots.  An application must be specified which will receive
2562    the event message (other applications can subscribe to it).  The message
2563    will also be delivered via AMI provided a channel is attached.  Dialplan
2564    generated user event messages are still transmitted via the channel, and
2565    will only be received by a stasis application they are attached to or if
2566    the channel is subscribed to.
2567
2568 chan_sip
2569 -----------
2570  * SIP peers can now specify 'trust_id_outbound' which affects RPID/PAI
2571    fields for prohibited callingpres information. Values are legacy, no, and
2572    yes. By default, legacy is used.
2573    trust_id_outbound=legacy - behavior remains the same as 1.8.26.1. When
2574      dealing with prohibited callingpres and sendrpid=pai/rpid, RPID/PAI
2575      headers are appended to outbound SIP messages just as they are with
2576      allowed callingpres values, but data about the remote party's identity is
2577      anonymized.
2578      When sendrpid=rpid, only the remote party's domain is anonymized.
2579    trust_id_outbound=no - when dealing with prohibited callingpres, RPID/PAI
2580      headers are not sent.
2581    trust_id_outbound=yes - RPID/PAI headers are applied with the full remote
2582      party information in tact even for prohibited callingpres information.
2583      In the case of PAI, a Privacy: id header will be appended for prohibited
2584      calling information to communicate that the private information should
2585      not be relayed to untrusted parties.
2586
2587 res_parking
2588 ------------------
2589  * Manager action 'Park' now takes an additional argument 'AnnounceChannel'
2590    which can be used to announce the parked call's location to an arbitrary
2591    channel in a bridge. If 'Channel' and 'TimeoutChannel' are now the two
2592    parties in a one to one bridge, 'TimeoutChannel' is treated as having
2593    parked 'Channel' like with the Park Call DTMF feature and will receive
2594    announcements prior to being hung up.
2595
2596 ------------------------------------------------------------------------------
2597 --- Functionality changes from Asterisk 12.1.0 to Asterisk 12.2.0 ------------
2598 ------------------------------------------------------------------------------
2599
2600 Record
2601 ------------------
2602  * Record application now has an option 'o' which allows 0 to act as an exit
2603    key setting the RECORD_STATUS variable to 'OPERATOR' instead of 'DTMF'
2604
2605 ChanSpy
2606 --------------------------
2607  * ChanSpy now accepts a channel uniqueid or a fully specified channel name
2608    as the chanprefix parameter if the 'u' option is specified.
2609
2610 ConfBridge
2611 --------------------------
2612  * CONFBRIDGE dialplan function is now capable of creating/modifying dynamic
2613    conference user menus.
2614
2615  * CONFBRIDGE dialplan function is now capable of removing dynamic conference
2616    menus, bridge settings, and user settings that have been applied by the
2617    CONFBRIDGE dialplan function.
2618
2619  * The ConfBridge dialplan application now sets a channel variable,
2620    CONFBRIGE_RESULT, upon exiting. This variable can be used to determine
2621    how a channel exited the conference.
2622
2623  * Added conference user option 'announce_join_leave_review'. This option
2624    implies 'announce_join_leave' with the added effect that the user will
2625    be asked if they want to confirm or re-record the recording of their
2626    name when entering the conference
2627
2628 Directory
2629 --------------------------
2630  * At exit, the Directory application now sets a channel variable
2631    DIRECTORY_RESULT to one of the following based on the reason for exiting:
2632      OPERATOR    user requested operator by pressing '0' for operator
2633      ASSISTANT   user requested assistant by pressing '*' for assistant
2634      TIMEOUT     user pressed nothing and Directory stopped waiting
2635      HANGUP      user's channel hung up
2636      SELECTED    user selected a user from the directory and is routed
2637      USEREXIT    user pressed '#' from the selection prompt to exit
2638      FAILED      directory failed in a way that wasn't accounted for. Dang.
2639
2640 Monitor
2641 ------------------
2642  * Monitor() - A new option, B(), has been added that will turn on a periodic
2643    beep while the call is being recorded.
2644
2645 MusicOnHold
2646 --------------------------
2647  * MusicOnHold streams (all modes other than "files") now support wide band
2648    audio too.
2649
2650 Page
2651 --------------------------
2652  * Added options 'b' and 'B' to apply predial handlers for outgoing calls
2653    and for the channel executing Page respectively.
2654
2655 PickupChan
2656 --------------------------
2657  * PickupChan now accepts channel uniqueids of channels to pickup.
2658
2659 Say
2660 --------------------------
2661  * If a channel variable SAY_DTMF_INTERRUPT is present on a channel and set
2662    to 'true' (case insensitive), then any Say application (SayNumber,
2663    SayDigits, SayAlpha, SayAlphaCase, SayUnixTime, and SayCounted) will
2664    anticipate DTMF. If DTMF is received, these applications will behave like
2665    the background application and jump to the received extension once a match
2666    is established or after a short period of inactivity.
2667
2668 MixMonitor
2669 -------------------------
2670  * A new function, MIXMONITOR, has been added to allow access to individual
2671    instances of MixMonitor on a channel.
2672
2673  * A new option, B(), has been added that will turn on a periodic beep while the
2674    call is being recorded.
2675
2676
2677 Channel Drivers
2678 -------------------------
2679
2680 chan_sip
2681 -------------------------
2682  * TEL URI support for inbound INVITE requests has been added. chan_sip will
2683    now handle TEL schemes in the Request and From URIs. The phone-context in
2684    the Request URI will be stored in the SIPURIPHONECONTEXT channel variable on
2685    the inbound channel.
2686
2687 Core
2688 ------------------
2689  * Exposed sorcery-based configuration files like pjsip.conf to dialplans via
2690    the new AST_SORCERY diaplan function.
2691
2692  * Core Show Locks output now includes Thread/LWP ID if the platform
2693    supports this feature.
2694
2695  * New "logger add channel" and "logger remove channel" CLI commands have
2696    been added to allow creation and deletion of dynamic logger channels
2697    without configuration changes. These dynamic logger channels will only
2698    exist until the next restart of asterisk.
2699
2700 ARI
2701 ------------------
2702  * The live recording object on recording events now contains a target_uri
2703    field which contains the URI of what is being recorded.
2704
2705  * The bridge type used when creating a bridge is now a comma separated list of
2706    bridge properties. Valid options are: mixing, holding, dtmf_events, and
2707    proxy_media.
2708
2709  * A channelId can now be provided when creating a channel, either in the
2710    uri (POST channels/my-channel-id) or as query parameter.  A local channel
2711    will suffix the second channel id with ';2' unless provided as query
2712    parameter otherChannelId.
2713
2714  * A bridgeId can now be provided when creating a bridge, either in the uri
2715    (POST bridges/my-bridge-id) or as a query parameter.
2716
2717  * A playbackId can be provided when starting a playback, either in the uri
2718    (POST channels/my-channel-id/play/my-playback-id /
2719     POST bridges/my-bridge-id/play/my-playback-id)  or as a query parameter.
2720
2721  * A snoop channel can be started with a snoopId, in the uri or query.
2722
2723 AMI
2724 ------------------
2725  * Originate now takes optional parameters ChannelId and OtherChannelId,
2726    used to set the UniqueId on creation.  The other id is assigned to the
2727    second channel when dialing LOCAL, or defaults to appending ;2 if only
2728    the single Id is given.
2729
2730  * The Mixmonitor action now has a "Command" header that can be used to
2731    indicate a post-process command to run once recording finishes.
2732
2733 RealTime
2734 ------------------
2735  * A new set of Alembic scripts has been added for CDR tables. This will create
2736    a 'cdr' table with the default schema that Asterisk expects.
2737
2738
2739 Functions
2740 ------------------
2741  * A new function was added: PERIODIC_HOOK.  This allows running a periodic
2742    dialplan hook on a channel.  Any audio generated by this hook will be
2743    injected into the call.
2744
2745
2746 Resources
2747 ------------------
2748
2749 res_hep
2750 ------------------
2751  * A new module, res_hep, has been added, that acts as a generic packet
2752    capture agent for the Homer Encapsulation Protocol (HEP) version 3.
2753    It can be configured via hep.conf. Other modules can use res_hep to send
2754    message traffic to a HEP capture server.
2755
2756 res_hep_pjsip
2757 ------------------
2758  * A new module, res_hep_pjsip, has been added that will forward PJSIP
2759    message traffic to a HEP capture server. See res_hep for more
2760    information.
2761
2762 res_pjsip
2763 ------------------
2764  * transport and endpoint ToS options (tos, tos_audio, and tos_video) may now
2765    be set as the named set of ToS values (cs0-cs7, af11-af43, ef).
2766
2767  * Added the following new CLI commands:
2768    - "pjsip show contacts" - list all current PJSIP contacts.
2769    - "pjsip show contact" - show specific information about a current PJSIP
2770      contact.
2771    - "pjsip show channel" - show detailed information about a PJSIP channel.
2772
2773 res_pjsip_multihomed
2774 ------------------
2775  * A new module, res_pjsip_multihomed handles situations where the system
2776    Asterisk is running out has multiple interfaces. res_pjsip_multihomed
2777    determines which interface should be used during message sending.
2778
2779 res_pjsip_pidf_digium_body_supplement
2780 ------------------
2781  * A new module, res_pjsip_pidf_digium_body_supplement provides NOTIFY
2782    request body formatting for presence support in Digium phones.
2783
2784 res_pjsip_send_to_voicemail
2785 ------------------
2786  * A new module, res_pjsip_send_to_voicemail allows for REFER requests with
2787    particular headers to transfer a PJSIP channel directly to a particular
2788    extension that has VoiceMail. This is intended to be used with Digium
2789    phones that support this feature.
2790
2791 res_pjsip_outbound_registration
2792 ------------------
2793  * A new CLI command has been added: "pjsip show registrations", which lists
2794    all configured PJSIP registrations
2795
2796
2797 ------------------------------------------------------------------------------
2798 --- Functionality changes from Asterisk 12.0.0 to Asterisk 12.1.0 ------------
2799 ------------------------------------------------------------------------------
2800
2801 AMI
2802 ------------------
2803  * Added a new module that provides AMI control over MWI within Asterisk,
2804    res_mwi_external_ami. Note that this module depends on res_mwi_external;
2805    for more information on enabling this module, see res_mwi_external.
2806    This module provides the MWIGet/MWIUpdate/MWIDelete actions, as well as
2807    the MWIGet/MWIGetComplete events.
2808
2809  * The DialStatus field in the DialEnd event can now contain additional
2810    statuses that convey how the dial operation terminated. This includes
2811    ABORT, CONTINUE, and GOTO.
2812
2813  * AMI will now emit security events. A new class authorization has been
2814    added in manager.conf for the security events, 'security'. The new events
2815    are:
2816     - FailedACL - raised when a request violates an ACL check
2817     - InvalidAccountID - raised when a request fails an authentication
2818       check due to an invalid account ID
2819     - SessionLimit - raised when a request fails due to exceeding the
2820       number of allowed concurrent sessions for a service
2821     - MemoryLimit - raised when a request fails due to an internal memory
2822       allocation failure
2823     - LoadAverageLimit - raised when a request fails because a configured
2824       load average limit has been reached
2825     - RequestNotAllowed - raised when a request is not allowed by
2826       the service
2827     - AuthMethodNotAllowed - raised when a request used an authentication
2828       method not allowed by the service
2829     - RequestBadFormat - raised when a request is received with bad formatting
2830     - SuccessfulAuth - raised when a request successfully authenticates
2831     - UnexpectedAddress - raised when a request has a different source address
2832       then what is expected for a session already in progress with a service
2833     - ChallengeResponseFailed - raised when a request's attempt to authenticate
2834       has been challenged, and the request failed the authentication challenge
2835     - InvalidPassword - raised when a request provides an invalid password
2836       during an authentication attempt
2837     - ChallengeSent - raised when an Asterisk service send an authentication
2838       challenge to a request
2839     - InvalidTransport - raised when a request attempts to use a transport not
2840       allowed by the Asterisk service
2841
2842  * Bridge related events now have two additional fields: BridgeName and
2843    BridgeCreator. BridgeName is a descriptive name for the bridge;
2844    BridgeCreator is the name of the entity that created the bridge. This
2845    affects the following events: ConfbridgeStart, ConfbridgeEnd,
2846    ConfbridgeJoin, ConfbridgeLeave, ConfbridgeRecord, ConfbridgeStopRecord,
2847    ConfbridgeMute, ConfbridgeUnmute, ConfbridgeTalking, BlindTransfer,
2848    AttendedTransfer, BridgeCreate, BridgeDestroy, BridgeEnter, BridgeLeave
2849
2850 ARI
2851 ------------------
2852  * The Bridge data model now contains the additional fields 'name' and
2853    'creator'. The 'name' field conveys a descriptive name for the bridge;
2854    the 'creator' field conveys the name of the entity that created the bridge.
2855    This affects all responses to HTTP requests that return a Bridge data model
2856    as well as all event derived data models that contain a Bridge data model.
2857    The POST /bridges operation may now optionally specify a name to give to
2858    the bridge being created.
2859
2860  * Added a new ARI resource 'mailboxes' which allows the creation and
2861    modification of mailboxes managed by external MWI. Modules res_mwi_external
2862    and res_stasis_mailbox must be enabled to use this resource. For more
2863    information on external MWI control, see res_mwi_external.
2864
2865  * Added new events for externally initiated transfers. The event
2866    BridgeBlindTransfer is now raised when a channel initiates a blind transfer
2867    of a bridge in the ARI controlled application to the dialplan; the
2868    BridgeAttendedTransfer event is raised when a channel initiates an
2869    attended transfer of a bridge in the ARI controlled application to the
2870    dialplan.
2871
2872  * Channel variables may now be specified as a body parameter to the
2873    POST /channels operation. The 'variables' key in the JSON is interpreted
2874    as a sequence of key/value pairs that will be added to the created channel
2875    as channel variables. Other parameters in the JSON body are treated as
2876    query parameters of the same name.
2877
2878 HTTP
2879 ------------------
2880  * Asterisk's HTTP server now supports chunked Transfer-Encoding. This will be
2881    automatically handled by the HTTP server if a request is received with a
2882    Transfer-Encoding type of "chunked".
2883
2884 res_pjsip
2885 ------------------
2886  * Path support has been added with the 'support_path' option in registration
2887    and aor sections.
2888
2889  * A 'debug' option has been added to the globals section that will allow
2890    sip messages to be logged.
2891
2892  * A 'set_var' option has been added to endpoints that will automatically
2893    set the desired variable(s) on a channel created for that endpoint.
2894
2895  * Several new tables and columns have been added to the realtime schema for
2896    the res_pjsip related modules. See the UPGRADE.txt notes for updating
2897    the database schema.
2898
2899 res_mwi_external
2900 ------------------
2901  * A new module, res_mwi_external, has been added to Asterisk. This module
2902    acts as a base framework that other modules can build on top of to allow
2903    an external system to control MWI within Asterisk. For implementations
2904    that make use of res_mwi_external, see res_mwi_external_ami and
2905    res_ari_mailboxes. Note that res_mwi_external canflicts with other modules
2906    that may produce MWI themselves, such as app_voicemail. res_mwi_external
2907    and other modules that depend on it cannot be built or loaded with
2908    app_voicemail present.
2909
2910 res_pjsip
2911 ------------------
2912  * DNS functionality will now automatically be enabled if the system configured
2913    nameservers can be retrieved. If the system configured nameservers can not be
2914    retrieved the functionality will resort to using system resolution. Functionalty
2915    such as SRV records and failover will not be available if system resolution
2916    is in use.
2917
2918 ------------------------------------------------------------------------------
2919 --- Functionality changes from Asterisk 11 to Asterisk 12 --------------------
2920 ------------------------------------------------------------------------------
2921
2922 Overview
2923 ------------------
2924
2925 Asterisk 12 is a standard release of the Asterisk project. As such, the
2926 focus of development for this release was on core architectural changes and
2927 major new features. This includes:
2928  * A more flexible bridging core based on the Bridging API
2929  * A new internal message bus, Stasis
2930  * Major standardization and consistency improvements to AMI
2931  * Addition of the Asterisk RESTful Interface (ARI)
2932  * A new SIP channel driver, chan_pjsip
2933 In addition, as the vast majority of bridging in Asterisk was migrated to the
2934 Bridging API used by ConfBridge, major changes were made to most of the
2935 interfaces in Asterisk. This includes not only AMI, but also CDRs and CEL.
2936
2937 Specifications have been written for the affected interfaces. These
2938 specifications are available on the Asterisk wiki:
2939  * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ
2940  * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ
2941  * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ
2942
2943 It is *highly* recommended that anyone migrating to Asterisk 12 read the
2944 information regarding its release both in this file and in the accompanying
2945 UPGRADE.txt file. More detailed information on the major changes can be found
2946 on the Asterisk wiki at https://wiki.asterisk.org/wiki/x/0YCLAQ.
2947
2948
2949 Build System
2950 ------------------
2951  * Added build option DISABLE_INLINE. This option can be used to work around a
2952    bug in gcc. For more information, see
2953    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47816
2954
2955  * Removed the CHANNEL_TRACE development mode build option. Certain aspects of
2956    the CHANNEL_TRACE build option were incompatible with the new bridging
2957    architecture.
2958
2959  * Asterisk now optionally uses libxslt to improve XML documentation generation
2960    and maintainability. If libxslt is not available on the system, some XML
2961    documentation will be incomplete.
2962
2963  * Asterisk now depends on libjansson. If a package of libjansson is not
2964    available on your distro, please see http://www.digip.org/jansson/.
2965
2966  * Asterisk now depends on libuuid and, optionally, uriparser. It is
2967    recommended that you install uriparser, even if it is optional.
2968
2969  * The new SIP stack and channel driver uses a particular version of PJSIP.
2970    Please see https://wiki.asterisk.org/wiki/x/J4GLAQ for more information on
2971    configuring and installing PJSIP for usage with Asterisk.
2972
2973  * Optional API was re-implemented to be more portable, and no longer requires
2974    weak reference support from the compiler. The build option OPTIONAL_API may
2975    be disabled to disable Optional API support.
2976
2977 Applications
2978 ------------------
2979
2980 AgentLogin
2981 ------------------
2982  * Along with AgentRequest, this application has been modified to be a
2983    replacement for chan_agent. The act of a channel calling the AgentLogin
2984    application places the channel into a pool of agents that can be
2985    requested by the AgentRequest application. Note that this application, as
2986    well as all other agent related functionality, is now provided by the
2987    app_agent_pool module. See chan_agent and AgentRequest for more information.
2988
2989  * This application no longer performs agent authentication. If authentication
2990    is desired, the dialplan needs to perform this function using the
2991    Authenticate or VMAuthenticate application or through an AGI script before
2992    running AgentLogin.
2993
2994  * If this application is called and the agent is already logged in, the
2995    dialplan will continue exection with the AGENT_STATUS channel variable set
2996    to ALREADY_LOGGED_IN.
2997
2998  * The agents.conf schema has changed. Rather than specifying agents on a
2999    single line in comma delineated fashion, each agent is defined in a separate
3000    context. This allows agents to use the power of context templates in their
3001    definition.
3002
3003  * A number of parameters from agents.conf have been removed. This includes
3004    maxloginretries, autologoffunavail, updatecdr, goodbye, group, recordformat,
3005    urlprefix, and savecallsin. These options were obsoleted by the move from
3006    a channel driver model to the bridging/application model provided by
3007    app_agent_pool.
3008
3009 AgentRequest
3010 ------------------
3011  * A new application, this will request a logged in agent from the pool and
3012    bridge the requested channel with the channel calling this application.
3013    Logged in agents are those channels that called the AgentLogin application.
3014    If an agent cannot be requested from the pool, the AGENT_STATUS dialplan
3015    application will be set with an appropriate error value.
3016
3017 AgentMonitorOutgoing
3018 ------------------
3019  * This application has been removed. It was a holdover from when
3020    AgentCallbackLogin was removed.
3021
3022 AlarmReceiver
3023 ------------------
3024  * Added support for additional Ademco DTMF signalling formats, including
3025    Express 4+1, Express 4+2, High Speed and Super Fast.
3026
3027  * Added channel variable ALARMRECEIVER_CALL_LIMIT. This sets the maximum
3028    call time, in milliseconds, to run the application.
3029
3030  * Added channel variable ALARMRECEIVER_RETRIES_LIMIT. This sets the
3031    maximum number of times to retry the call.
3032
3033  * Added a new configuration option answait. If set, the AlarmReceiver
3034    application will wait the number of milliseconds specified by answait
3035    after the channel has answered. Valid values range between 500
3036    milliseconds and 10000 milliseconds.
3037
3038  * Added configuration option no_group_meta. If enabled, grouping of metadata
3039    information in the AlarmReceiver log file will be skipped.
3040
3041 Answer
3042 ------------------
3043  * It is now no longer possible to bypass updating the CDR on the channel
3044    when answering. CDRs reflect the state of the channel and will always
3045    reflect the time they were Answered.
3046
3047 BridgeWait
3048 ------------------
3049  * A new application in Asterisk, this will place the calling channel
3050    into a holding bridge, optionally entertaining them with some form of
3051    media. Channels participating in a holding bridge do not interact with
3052    other channels in the same holding bridge. Optionally, however, a channel
3053    may join as an announcer. Any media passed from an announcer channel is
3054    played to all channels in the holding bridge. Channels leave a holding
3055    bridge either when an optional timer expires, or via the ChannelRedirect
3056    application or AMI Redirect action.
3057
3058 ConfBridge
3059 ------------------
3060  * All participants in a bridge can now be kicked out of a conference room
3061    by specifying the channel parameter as 'all' in the ConfBridge kick CLI
3062    command, i.e., 'confbridge kick <conference> all'
3063
3064  * CLI output for the 'confbridge list' command has been improved. When
3065    displaying information about a particular bridge, flags will now be shown
3066    for the participating users indicating properties of that user.
3067
3068  * The ConfbridgeList event now contains the following fields: WaitMarked,
3069    EndMarked, and Waiting. This displays additional properties about the
3070    user's profile, as well as whether or not the user is waiting for a
3071    Marked user to enter the conference.
3072
3073  * Added a new option for conference recording, record_file_append. If enabled,
3074    when the recording is stopped and then re-started, the existing recording
3075    will be used and appended to.
3076
3077  * ConfBridge now has the ability to set the language of announcements to the
3078    conference.  The language can be set on a bridge profile in confbridge.conf
3079    or by the dialplan function CONFBRIDGE(bridge,language)=en.
3080
3081 ControlPlayback
3082 ------------------
3083  * The channel variable CPLAYBACKSTATUS may now return the value
3084    'REMOTESTOPPED'. This occurs when playback is stopped by a remote interface,
3085    such as AMI. See the AMI action ControlPlayback for more information.
3086
3087 Directory
3088 ------------------
3089  * Added the 'a' option, which allows the caller to enter in an additional
3090    alias for the user in the directory. This option must be used in conjunction
3091    with the 'f', 'l', or 'b' options. Note that the alias for a user can be
3092    specified in voicemail.conf.
3093
3094 DumpChan
3095 ------------------
3096  * The output of DumpChan no longer includes the DirectBridge or IndirectBridge
3097    fields. Instead, if a channel is in a bridge, it includes a BridgeID field
3098    containing the unique ID of the bridge that the channel happens to be in.
3099
3100 ForkCDR
3101 ------------------
3102  * ForkCDR no longer automatically resets the forked CDR. See the 'r' option
3103    for more information.
3104
3105  * Variables are no longer purged from the original CDR. See the 'v' option for
3106    more information.
3107
3108  * The 'A' option has been removed. The Answer time on a CDR is never updated
3109    once set.
3110
3111  * The 'd' option has been removed. The disposition on a CDR is a function of
3112    the state of the channel and cannot be altered.
3113
3114  * The 'D' option has been removed. Who the Party B is on a CDR is a function
3115    of the state of the respective channels involved in the CDR and cannot be
3116    altered.
3117
3118  * The 'r' option has been changed. Previously, ForkCDR always reset the CDR
3119    such that the start time and, if applicable, the answer time was updated.
3120    Now, by default, ForkCDR simply forks the CDR, maintaining any times. The
3121    'r' option now triggers the Reset, setting the start time (and answer time
3122    if applicable) to the current time. Note that the 'a' option still sets
3123    the answer time to the current time if the channel was already answered.
3124
3125  * The 's' option has been removed. A variable can be set on the original CDR
3126    if desired using the CDR function, and removed from a forked CDR using the
3127    same function.
3128
3129  * The 'T' option has been removed. The concept of DONT_TOUCH and LOCKED no
3130    longer applies in the CDR engine.
3131
3132  * The 'v' option now prevents the copy of the variables from the original CDR
3133    to the forked CDR. Previously the variables were always copied but were
3134    removed from the original. This was changed as removing variables from a CDR
3135    can have unintended side effects - this option allows the user to prevent
3136    propagation of variables from the original to the forked without modifying
3137    the original.
3138
3139 MeetMe
3140 -------------------
3141  * Added the 'n' option to MeetMe to prevent application of the DENOISE
3142    function to a channel joining a conference. Some channel drivers that vary
3143    the number of audio samples in a voice frame will experience significant
3144    quality problems if a denoiser is attached to the channel; this option gives
3145    them the ability to remove the denoiser without having to unload func_speex.
3146
3147 MixMonitor
3148 ------------------
3149  * The 'b' option now includes conferences as well as sounds played to the
3150    participants.
3151
3152  * The AUDIOHOOK_INHERIT function is no longer needed to keep a MixMonitor
3153    running during a transfer. If a MixMonitor is started on a channel,
3154    the MixMonitor will continue to record the audio passing through the
3155    channel even in the presence of transfers.
3156
3157 NoCDR
3158 ------------------
3159  * The NoCDR application is deprecated. Please use the CDR_PROP function to
3160    disable CDRs.
3161
3162  * While the NoCDR application will prevent CDRs for a channel from being
3163    propagated to registered CDR backends, it will not prevent that data from
3164    being collected. Hence, a subsequent call to ResetCDR or the CDR_PROP
3165    function that enables CDRs on a channel will restore those records that have
3166    not yet been finalized.
3167
3168 ParkAndAnnounce
3169 -------------------
3170  * The app_parkandannounce module has been removed. The application
3171    ParkAndAnnounce is now provided by the res_parking module. See the
3172    res_parking changes for more information.
3173
3174 Queue
3175 -------------------
3176  * Added queue available hint. The hint can be added to the dialplan using the
3177    following syntax: exten,hint,Queue:{queue_name}_avail
3178    For example, if the name of the queue is 'markq':
3179         exten => 8501,hint,Queue:markq_avail
3180    This will report 'InUse' if there are no logged in agents or no free agents.
3181    It will report 'Idle' when an agent is free.
3182
3183  * Queues now support a hint for member paused state. The hint uses the form
3184    'Queue:{queue_name}_pause_{member_name}', where {queue_name} and {member_name}
3185    are the name of the queue and the name of the member to subscribe to,
3186    respectively. For example: exten => 8501,hint,Queue:sales_pause_mark.
3187    Members will show as In Use when paused.
3188
3189  * The configuration options eventwhencalled and eventmemberstatus have been
3190    removed.  As a result, the AMI events QueueMemberStatus, AgentCalled,
3191    AgentConnect, AgentComplete, AgentDump, and AgentRingNoAnswer will always be
3192    sent.  The "Variable" fields will also no longer exist on the Agent* events.
3193    These events can be filtered out from a connected AMI client using the
3194    eventfilter setting in manager.conf.
3195
3196  * The queue log now differentiates between blind and attended transfers. A
3197    blind transfer will result in a BLINDTRANSFER message with the destination
3198    context and extension. An attended transfer will result in an
3199    ATTENDEDTRANSFER message. This message will indicate the method by which
3200    the attended transfer was completed: "BRIDGE" for a bridge merge, "APP"
3201    for running an application on a bridge or channel, or "LINK" for linking
3202    two bridges together with local channels. The queue log will also now detect
3203    externally initiated blind and attended transfers and record the transfer
3204    status accordingly.
3205
3206  * When performing queue pause/unpause on an interface without specifying an
3207    individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at
3208    least one member of any queue exists for that interface.
3209
3210  * Added the 'queue_log_realtime_use_gmt' option to have timestamps in GMT
3211    for realtime queue log entries.
3212
3213 ResetCDR
3214 ------------------
3215  * The 'e' option has been deprecated. Use the CDR_PROP function to re-enable
3216    CDRs when they were previously disabled on a channel.
3217
3218  * The 'w' and 'a' options have been removed. Dispatching CDRs to registered
3219    backends occurs on an as-needed basis in order to preserve linkedid
3220    propagation and other needed behavior.
3221
3222 SayAlphaCase
3223 ------------------
3224  * A new application, this is similar to SayAlpha except that it supports
3225    case sensitive playback of the specified characters. For example,
3226    SayAlphaCase(u,aBc) will result in 'a uppercase b c'.
3227
3228 SetAMAFlags
3229 ------------------
3230  * This application is deprecated in favor of CHANNEL(amaflags).
3231
3232 SendDTMF
3233 ------------------
3234  * The SendDTMF application will now accept 'W' as valid input. This will cause
3235    the application to delay one second while streaming DTMF.
3236
3237 Stasis
3238 ------------------
3239  * A new application in Asterisk 12, this hands control of the channel calling
3240    the application over to an external system. Currently, external systems
3241    manipulate channels in Stasis through the Asterisk RESTful Interface (ARI).
3242
3243 UserEvent
3244 ------------------
3245  * UserEvent will now handle duplicate keys by overwriting the previous value
3246    assigned to the key.
3247
3248  * In addition to AMI, UserEvent invocations will now be distributed to any
3249    interested Stasis applications.
3250
3251 VoiceMail
3252 ------------------
3253  * Mailboxes defined by app_voicemail MUST be referenced by the rest of the
3254    system as mailbox@context.  The rest of the system cannot add @default
3255    to mailbox identifiers for app_voicemail that do not specify a context
3256    any longer.  It is a mailbox identifier format that should only be
3257    interpreted by app_voicemail.
3258
3259  * The voicemail.conf configuration file now has an 'alias' configuration
3260    parameter for use with the Directory application. The voicemail realtime
3261    database table schema has also been updated with an 'alias' column.
3262
3263
3264 Codecs
3265 ------------------
3266  * Pass through support has been added for both VP8 and Opus.
3267
3268  * Added format attribute negotiation for the Opus codec. Format attribute
3269    negotiation is provided by the res_format_attr_opus module.
3270
3271
3272 Core
3273 ------------------
3274  * Masquerades as an operation inside Asterisk have been effectively hidden
3275    by the migration to the Bridging API. As such, many 'quirks' of Asterisk
3276    no longer occur. This includes renaming of channels, "<ZOMBIE>" channels,
3277    dropping of frame/audio hooks, and other internal implementation details
3278    that users had to deal with. This fundamental change has large implications
3279    throughout the changes documented for this version. For more information
3280    about the new core architecture of Asterisk, please see the Asterisk wiki.
3281
3282  * Multiple parties in a bridge may now be transferred. If a participant in a
3283    multi-party bridge initiates a blind transfer, a Local channel will be used
3284    to execute the dialplan location that the transferer sent the parties to. If
3285    a participant in a multi-party bridge initiates an attended transfer,
3286    several options are possible. If the attended transfer results in a transfer
3287    to an application, a Local channel is used. If the attended transfer results
3288    in a transfer to another channel, the resulting channels will be merged into
3289    a single bridge.
3290
3291  * The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND is no longer channel
3292    driver specific.  If the channel variable is set on the transferrer channel,
3293    the sound will be played to the target of an attended transfer.
3294
3295  * The channel variable BRIDGEPEER becomes a comma separated list of peers in
3296    a multi-party bridge.  The BRIDGEPEER value can have a maximum of 10 peers
3297    listed.  Any more peers in the bridge will not be included in the list.
3298    BRIDGEPEER is not valid in holding bridges like parking since those channels
3299    do not talk to each other even though they are in a bridge.
3300
3301  * The channel variable BRIDGEPVTCALLID is only valid for two party bridges
3302    and will contain a value if the BRIDGEPEER's channel driver supports it.
3303
3304  * A channel variable ATTENDEDTRANSFER is now set which indicates which channel
3305    was responsible for an attended transfer in a similar fashion to
3306    BLINDTRANSFER.
3307
3308  * Modules using the Configuration Framework or Sorcery must have XML
3309    configuration documentation. This configuration documentation is included
3310    with the rest of Asterisk's XML documentation, and is accessible via CLI
3311    commands. See the CLI changes for more information.
3312
3313 AMI (Asterisk Manager Interface)
3314 ------------------
3315  * Major changes were made to both the syntax as well as the semantics of the
3316    AMI protocol. In particular, AMI events have been substantially improved
3317    in this version of Asterisk. For more information, please see the AMI
3318    specification at https://wiki.asterisk.org/wiki/x/dAFRAQ
3319
3320  * AMI events that reference a particular channel or bridge will now always
3321    contain a standard set of fields. When multiple channels or bridges are
3322    referenced in an event, fields for at least some subset of the channels
3323    and bridges in the event will be prefixed with a descriptive name to avoid
3324    name collisions. See the AMI event documentation on the Asterisk wiki for
3325    more information.
3326
3327  * The CLI command 'manager show commands' no longer truncates command names
3328    longer than 15 characters and no longer shows authorization requirement
3329    for commands. 'manager show command' now displays the privileges needed
3330    for using a given manager command instead.
3331
3332  * The SIPshowpeer action will now include a 'SubscribeContext' field for a
3333    peer in its response if the peer has a subscribe context set.
3334
3335  * The SIPqualifypeer action now acknowledges the request once it has
3336    established that the request is against a known peer. It also issues a new
3337    event, 'SIPQualifyPeerDone', once the qualify action has been completed.
3338
3339  * The PlayDTMF action now supports an optional 'Duration' parameter.  This
3340    specifies the duration of the digit to be played, in milliseconds.
3341
3342  * Added VoicemailRefresh action to allow an external entity to trigger mailbox
3343    updates when changes occur instead of requiring the use of pollmailboxes.
3344
3345  * Added a new action 'ControlPlayback'. The ControlPlayback action allows an
3346    AMI client to manipulate audio currently being played back on a channel. The
3347    supported operations depend on the application being used to send audio to
3348    the channel. When the audio playback was initiated using the ControlPlayback
3349    application or CONTROL STREAM FILE AGI command, the audio can be paused,
3350    stopped, restarted, reversed, or skipped forward. When initiated by other
3351    mechanisms (such as the Playback application), the audio can be stopped,
3352    reversed, or skipped forward.
3353
3354  * Channel related events now contain a snapshot of channel state, adding new
3355    fields to many of these events.
3356
3357  * The AMI event 'Newexten' field 'Extension' is deprecated, and may be removed
3358    in a future release. Please use the common 'Exten' field instead.
3359
3360  * The AMI event 'UserEvent' from app_userevent now contains the channel state
3361    fields. The channel state fields will come before the body fields.
3362
3363  * The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and
3364    'UnParkedCall' have changed significantly in the new res_parking module.
3365
3366    The 'Channel' and 'From' headers are gone. For the channel that was parked
3367    or is coming out of parking, a 'Parkee' channel snapshot is issued and it
3368    has a number of fields associated with it. The old 'Channel' header relayed
3369    the same data as the new 'ParkeeChannel' header.
3370
3371    The 'From' field was ambiguous and changed meaning depending on the event.
3372    for most of these, it was the name of the channel that parked the call
3373    (the 'Parker'). There is no longer a header that provides this channel name,
3374    however the 'ParkerDialString' will contain a dialstring to redial the
3375    device that parked the call.
3376
3377    On UnParkedCall events, the 'From' header would instead represent the
3378    channel responsible for retrieving the parkee. It receives a channel
3379    snapshot labeled 'Retriever'. The 'from' field is is replaced with
3380    'RetrieverChannel'.
3381
3382    Lastly, the 'Exten' field has been replaced with 'ParkingSpace'.
3383
3384  * The AMI event 'Parkinglot' (response to 'Parkinglots' command) in a similar
3385    fashion has changed the field names 'StartExten' and 'StopExten' to
3386    'StartSpace' and 'StopSpace' respectively.
3387
3388  * The deprecated use of | (pipe) as a separator in the channelvars setting in
3389    manager.conf has been removed.
3390
3391  * Channel Variables conveyed with a channel no longer contain the name of the
3392    channel as part of the key field, i.e., ChanVariable(SIP/foo): bar=baz is now
3393    ChanVariable: bar=baz. When multiple channels are present in a single AMI
3394    event, the various ChanVariable fields will contain a suffix that specifies
3395    which channel they correspond to.
3396
3397  * The NewPeerAccount AMI event is no longer raised. The NewAccountCode AMI
3398    event always conveys the AMI event for a particular channel.
3399
3400  * All 'Reload' events have been consolidated into a single event type. This
3401    event will always contain a Module field specifying the name of the module
3402    and a Status field denoting the result of the reload. All modules now issue
3403    this event when being reloaded.
3404
3405  * The 'ModuleLoadReport' event has been removed. Most AMI connections would
3406    fail to receive this event due to being connected after modules have loaded.
3407    AMI connections that want to know when Asterisk is ready should listen for
3408    the 'FullyBooted' event.
3409
3410  * app_fax now sends the same send fax/receive fax events as res_fax. The
3411    'FaxSent' event is now the 'SendFAX' event, and the 'FaxReceived' event is
3412    now the 'ReceiveFAX' event.
3413
3414  * The 'MusicOnHold' event is now two events: 'MusicOnHoldStart' and
3415    'MusicOnHoldStop'. The sub type field has been removed.
3416
3417  * The 'JabberEvent' event has been removed. It is not AMI's purpose to be a
3418    carrier for another protocol.
3419
3420  * The Bridge Manager action's 'Playtone' header now accepts more fine-grained
3421    options. 'Channel1' and 'Channel2' may be specified in order to play a tone
3422    to the specific channel. 'Both' may be specified to play a tone to both
3423    channels. The old 'yes' option is still accepted as a way of playing the
3424    tone to Channel2 only.
3425
3426  * The AMI 'Status' response event to the AMI Status action replaces the
3427    'BridgedChannel' and 'BridgedUniqueid' headers with the 'BridgeID' header to
3428    indicate what bridge the channel is currently in.
3429
3430  * The AMI 'Hold' event has been moved out of individual channel drivers, into
3431    core, and is now two events: 'Hold' and 'Unhold'.  The status field has been
3432    removed.
3433
3434  * The AMI events in app_queue have been made more consistent with each other.
3435    Events that reference channels (QueueCaller* and Agent*) will show
3436    information about each channel.  The (infamous) 'Join' and 'Leave' AMI
3437    events have been changed to 'QueueCallerJoin' and 'QueueCallerLeave'.
3438
3439  * The 'MCID' AMI event now publishes a channel snapshot when available and
3440    its non-channel-snapshot parameters now use either the "MCallerID" or
3441    'MConnectedID' prefixes with Subaddr*, Name*, and Num* suffixes instead
3442    of 'CallerID' and 'ConnectedID' to avoid confusion with similarly named
3443    parameters in the channel snapshot.
3444
3445  * The AMI events 'Agentlogin' and 'Agentlogoff' have been renamed
3446    'AgentLogin' and 'AgentLogoff' respectively.
3447
3448  * The 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been
3449    renamed "DAHDIChannel" since it does not convey an Asterisk channel name.
3450
3451  * 'ChannelUpdate' events have been removed.
3452
3453  * All AMI events now contain a 'SystemName' field, if available.
3454
3455  * Local channel optimization is now conveyed in two events:
3456    'LocalOptimizationBegin' and 'LocalOptimizationEnd'. The Begin event is sent
3457    when the Local channel driver begins attempting to optimize itself out of
3458    the media path; the End event is sent after the channel halves have
3459    successfully optimized themselves out of the media path.
3460
3461  * Local channel information in events is now prefixed with 'LocalOne' and
3462    'LocalTwo'. This replaces the suffix of '1' and '2' for the two halves of
3463    the Local channel. This affects the 'LocalBridge', 'LocalOptimizationBegin',
3464    and 'LocalOptimizationEnd' events.
3465
3466  * The option 'allowmultiplelogin' can now be set or overriden in a particular
3467    account. When set in the general context, it will act as the default
3468    setting for defined accounts.
3469
3470  * The 'BridgeAction' event was removed. It technically added no value, as the
3471    Bridge Action already receives confirmation of the bridge through a
3472    successful completion Event.
3473
3474  * The 'BridgeExec' events were removed. These events duplicated the events that
3475    occur in the Briding API, and are conveyed now through BridgeCreate,
3476    BridgeEnter, and BridgeLeave events.
3477
3478  * The 'RTCPSent'/'RTCPReceived' events have been significantly modified from
3479    previous versions. They now report all SR/RR packets sent/received, and
3480    have been restructured to better reflect the data sent in a SR/RR. In
3481    particular, the event structure now supports multiple report blocks.
3482
3483  * Added 'BlindTransfer' and 'AttendedTransfer' events. These events are
3484    raised when a blind transfer/attended transfer completes successfully.
3485    They contain information about the transfer that just completed, including
3486    the location of the transfered channel.
3487
3488  * Added a 'security' class to AMI which outputs the required fields for
3489    security messages similar to the log messages from res_security_log
3490
3491  * The AMI event 'ExtensionStatus' now contains a 'StatusText' field
3492    that describes the status value in a human readable string.
3493
3494 CDR (Call Detail Records)
3495 ------------------
3496  * Significant changes have been made to the behavior of CDRs. The CDR engine
3497    was effectively rewritten and built on the Stasis message bus. For a full
3498    definition of CDR behavior in Asterisk 12, please read the specification
3499    on the Asterisk wiki (wiki.asterisk.org).
3500
3501  * CDRs will now be created between all participants in a bridge. For each
3502    pair of channels in a bridge, a CDR is created to represent the path of
3503    communication between those two endpoints. This lets an end user choose who
3504    to bill for what during bridge operations with multiple parties.
3505
3506  * The duration, billsec, start, answer, and end times now reflect the times
3507    associated with the current CDR for the channel, as opposed to a cumulative
3508    measurement of all CDRs for that channel.
3509
3510  * When a CDR is dispatched, user defined CDR variables from both parties are
3511    included in the resulting CDR. If both parties have the same variable, only
3512    the Party A value is provided.
3513
3514  * Added a new option to cdr.conf, 'debug'. When enabled, significantly more
3515    information regarding the CDR engine is logged as verbose messages. This
3516    option should only be used if the behavior of the CDR engine needs to be
3517    debugged.
3518
3519  * Added CLI command 'cdr set debug {on|off}'. This toggles the 'debug' setting
3520    normally configured in cdr.conf.
3521
3522  * Added CLI command 'cdr show active {channel}'. When {channel} is not
3523    specified, this command provides a summary of the channels with CDR
3524    information and their statistics. When {channel} is specified, it shows
3525    detailed information about all records associated with {channel}.
3526
3527 CEL (Channel Event Logging)
3528 ------------------
3529  * CEL has undergone significant rework in Asterisk 12, and is now built on the
3530    Stasis message bus. Please see the specification for CEL on the Asterisk
3531    wiki at https://wiki.asterisk.org/wiki/x/4ICLAQ for more detailed
3532    information.
3533
3534  * The 'extra' field of all CEL events that use it now consists of a JSON blob
3535    with key/value pairs which are defined in the Asterisk 12 CEL documentation.
3536
3537  * BLINDTRANSFER events now report the transferee bridge unique
3538    identifier, extension, and context in a JSON blob as the extra string
3539    instead of the transferee channel name as the peer.
3540
3541  * ATTENDEDTRANSFER events now report the peer as NULL and additional
3542    information in the 'extra' string as a JSON blob. For transfers that occur
3543    between two bridged channels, the 'extra' JSON blob contains the primary
3544    bridge unique identifier, the secondary channel name, and the secondary
3545    bridge unique identifier. For transfers that occur between a bridged channel
3546    and a channel running an app, the 'extra' JSON blob contains the primary
3547    bridge unique identifier, the secondary channel name, and the app name.
3548
3549  * LOCAL_OPTIMIZE events have been added to convey local channel
3550    optimizations with the record occurring for the semi-one channel and
3551    the semi-two channel name in the peer field.
3552
3553  * BRIDGE_START, BRIDGE_END, BRIDGE_UPDATE, 3WAY_START, 3WAY_END, CONF_ENTER,
3554    CONF_EXIT, CONF_START, and CONF_END events have all been removed. These
3555    events have been replaced by BRIDGE_ENTER/BRIDGE_EXIT. The BRIDGE_ENTER
3556    and BRIDGE_EXIT events are raised when a channel enters/exits any bridge,
3557    regardless of whether or not that bridge happens to contain multiple
3558    parties.
3559
3560 CLI
3561 -------------------
3562  * When compiled with '--enable-dev-mode', the astobj2 library will now add
3563    several CLI commands that allow for inspection of ao2 containers that
3564    register themselves with astobj2. The CLI commands are 'astobj2 container
3565    dump', 'astobj2 container stats', and 'astobj2 container check'.
3566
3567  * Added specific CLI commands for bridge inspection. This includes 'bridge
3568    show all', which lists all bridges in the system, and 'bridge show {id}',
3569    which provides specific information about a bridge.
3570
3571  * Added CLI command 'bridge destroy'. This will destroy the specified bridge,
3572    ejecting the channels currently in the bridge. If the channels cannot
3573    continue in the dialplan or application that put them in the bridge, they
3574    will be hung up.
3575
3576  * Added command 'bridge kick'. This will eject a single channel from a bridge.
3577
3578  * Added commands to inspect and manipulate the registered bridge technologies.
3579    This include 'bridge technology show', which lists the registered bridge
3580    technologies, as well as 'bridge technology {suspend|unsuspend} {tech}',
3581    which controls whether or not a registered bridge technology can be used
3582    during smart bridge operations. If a technology is suspended, it will not
3583    be used when a bridge technology is picked for channels; when unsuspended,
3584    it can be used again.
3585
3586  * The command 'config show help {module} {type} {option}' will show
3587    configuration documentation for modules with XML configuration
3588    documentation. When {module}, {type}, and {option} are omitted, a listing
3589    of all modules with registered documentation is displayed. When {module}
3590    is specified, a listing of all configuration types for that module is
3591    displayed, along with their synopsis. When {module} and {type} are
3592    specified, a listing of all configuration options for&