Merge "dns_core: Allow zero-length DNS responses."
[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 13 to Asterisk 14 --------------------
13 ------------------------------------------------------------------------------
14
15 Applications
16 ------------------
17
18 ConfBridge
19 ------------------
20  * Added the ability to pass options to MixMonitor when recording is used with
21    ConfBridge. This includes the addition of the following configuration
22    parameters for the 'bridge' object:
23    - record_file_timestamp: whether or not to append the start time to the
24      recorded file name
25    - record_options: the options to pass to the MixMonitor application
26    - record_command: a command to execute when recording is finished
27    Note that these options may also be with the CONFBRIDGE function.
28
29 SMS
30 ------------------
31  * Added the 'n' option, which prevents the SMS from being written to the log
32    file. This is needed for those countries with privacy laws that require
33    providers to not log SMS content.
34
35
36 CDRs
37 ------------------
38 cdr_odbc
39 ------------------
40  * Added a new configuration option, "newcdrcolumns", which enables use of the
41    post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'.
42
43 ------------------
44 cdr_csv
45 ------------------
46  * Added a new configuration option, "newcdrcolumns", which enables use of the
47    post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'.
48
49
50 Channel Drivers
51 ------------------
52
53 chan_dahdi
54 ------------------
55  * The CALLERID(ani2) value for incoming calls is now populated in featdmf
56    signaling mode.  The information was previously discarded.
57  * Added the force_restart_unavailable_chans compatibility option.  When
58    enabled it causes Asterisk to restart the ISDN B channel if an outgoing
59    call receives cause 44 (Requested channel not available).
60
61 chan_iax2
62 ------------------
63  * The iax.conf forcejitterbuffer option has been removed.  It is now always
64    forced if you set iax.conf jitterbuffer=yes.  If you put a jitter buffer
65    on a channel it will be on the channel.
66  * A new configuration parameters, 'calltokenexpiration', has been added that
67    controls the duration before a call token expires. Default duration is 10
68    seconds. Setting this to a higher value may help in lagged networks or those
69    experiencing high packet loss.
70
71 chan_sip
72 ------------------
73  * New 'rtpbindaddr' global setting. This allows a user to define which
74    ipaddress to bind the rtpengine to. For example, chan_sip might bind
75    to eth0 (10.0.0.2) but rtpengine to eth1 (192.168.1.10).
76  * DTLS related configuration options can now be set at a general level.
77    Enabling DTLS support, though, requires enabling it at the user
78    or peer level.
79
80 chan_pjsip
81 ------------------
82  * New 'user_eq_phone' endpoint setting. This adds a 'user=phone' parameter
83    to the request URI and From URI if the user is determined to be a phone number.
84  * New 'moh_passthrough' endpoint setting. This will pass hold and unhold requests
85    through using SIP re-invites with sendonly and sendrecv accordingly.
86  * Added the pjsip.conf system type disable_tcp_switch option.  The option
87    allows the user to disable switching from UDP to TCP transports described
88    by RFC 3261 section 18.1.1.
89  * New 'line' and 'endpoint' options added on outbound registrations. This allows some
90    identifying information to be added to the Contact of the outbound registration.
91    If this information is present on messages received from the remote server
92    the message will automatically be associated with the configured endpoint on the
93    outbound registration.
94
95 Core
96 ------------------
97  * The core of Asterisk uses a message bus called "Stasis" to distribute
98    information to internal components. For performance reasons, the message
99    distribution was modified to make use of a thread pool instead of a
100    dedicated thread per consumer in certain cases. The initial settings for
101    the thread pool can now be configured in 'stasis.conf'.
102
103  * A new core DNS API has been implemented which provides a common interface
104    for DNS functionality. Modules that use this functionality will require that
105    a DNS resolver module is loaded and available.
106
107  * Modified processing of command-line options to first parse only what
108    is necessary to read asterisk.conf. Once asterisk.conf is fully loaded,
109    the remaining options are processed.  The -X option now applies to
110    asterisk.conf only.  To enable #exec for other config files you must
111    set execincludes=yes in asterisk.conf.  Any other option set on the
112    command-line will now override the equivalent setting from asterisk.conf.
113
114  * The TLS core in Asterisk now supports X.509 certificate subject alternative
115    names. This way one X.509 certificate can be used for hosts that can be
116    reached under multiple DNS names or for multiple hosts.
117
118 Functions
119 ------------------
120
121 CHANNEL
122 ------------------
123  * Added CHANNEL(onhold) item that returns 1 (onhold) and 0 (not-onhold) for
124    the hold status of a channel.
125
126 DTMF Features
127 ------------------
128  * The transferdialattempts default value has been changed from 1 to 3. The
129    transferinvalidsound has been changed from "pbx-invalid" to "privacy-incorrect".
130    These were changed to make DTMF transfers be more user-friendly by default.
131
132
133 Resources
134 ------------------
135
136 res_musiconhold
137 ------------------
138  * Added sort=randstart to the sort options. It sorts the files by name and
139    then chooses the first file to play at random.
140  * Added preferchannelclass=no option to prefer the application-passed class
141    over the channel-set musicclass. This allows separate hold-music from
142    application (e.g. Queue or Dial) specified music.
143
144 res_resolver_unbound
145 ------------------
146  * Added a res_resolver_unbound module which uses the libunbound resolver library
147    to perform DNS resolution. This module requires the libunbound library to be
148    installed in order to be used.
149
150 res_pjsip
151 ------------------
152  * A new SIP resolver using the core DNS API has been implemented. This relies on
153    external SIP resolver support in PJSIP which is only available as of PJSIP
154    2.4. If this support is unavailable the existing built-in PJSIP SIP resolver
155    will be used instead. The new SIP resolver provides NAPTR support, improved
156    SRV support, and AAAA record support.
157
158 CEL Backends
159 ------------------
160
161 cel_pgsql
162 ------------------
163  * Added a new option, 'usegmtime', which causes timestamps in CEL events
164    to be logged in GMT.
165
166  * Added support to set schema where located the table cel. This settings is
167    configurable for cel_pgsql via the 'schema' in configuration file
168    cel_pgsql.conf.
169
170 CDR Backends
171 ------------------
172
173 cdr_adaptive_odbc
174 ------------------
175  * Added the ability to set the character to quote identifiers. This
176    allows adding the character at the start and end of table and column
177    names. This setting is configurable for cdr_adaptive_odbc via the
178    quoted_identifiers in configuration file cdr_adaptive_odbc.conf.
179
180 ------------------------------------------------------------------------------
181 --- Functionality changes from Asterisk 13.4.0 to Asterisk 13.5.0 ------------
182 ------------------------------------------------------------------------------
183
184 AMI
185 ------------------
186  * A new ContactStatus event has been added that reflects res_pjsip contact
187    lifecycle changes:  Created, Removed, Reachable, Unreachable, Unknown.
188
189  * Added the Linkedid header to the common channel headers listed for each
190    channel in AMI events.
191
192 ARI
193 ------------------
194  * A new feature has been added that enables the retrieval of modules and
195    module information through an HTTP request. Information on a single module
196    can be also be retrieved. Individual modules can be loaded to Asterisk, as
197    well as unloaded and reloaded.
198
199 * A new resource has been added to the 'asterisk' resource, 'config/dynamic'.
200    This resource allows for push configuration of sorcery derived objects
201    within Asterisk. The resource supports creation, retrieval, updating, and
202    deletion. Sorcery derived objects that are manipulated by this resource
203    must have a sorcery wizard that supports the desired operations.
204
205
206 res_pjsip
207 ------------------
208 * A new 'g726_non_standard' endpoint option has been added that, when set to
209   'yes' and g.726 audio is negotiated, forces the codec to be treated as if it
210   is AAL2 packed on the channel.
211
212 * A new 'rtp_keepalive' endpoint option has been added. This option specifies
213   an interval, in seconds, at which we will send RTP comfort noise packets to
214   the endpoint. This functions identically to chan_sip's "rtpkeepalive" option.
215
216 * New 'rtp_timeout' and 'rtp_timeout_hold' endpoint options have been added.
217   These options specify the amount of time, in seconds, that Asterisk will wait
218   before terminating the call due to lack of received RTP. These are identical
219   to chan_sip's rtptimeout and rtpholdtimeout options.
220
221 ------------------------------------------------------------------------------
222 --- Functionality changes from Asterisk 13.3.0 to Asterisk 13.4.0 ------------
223 ------------------------------------------------------------------------------
224
225 chan_pjsip
226 ------------------
227  * New 'rpid_immediate' option to control if connected line update information
228    goes to the caller immediately or waits for another reason to send the
229    connected line information update.  See the online option documentation for
230    more information.  Defaults to 'no' as setting it to 'yes' can result in
231    many unnecessary messages being sent to the caller.
232
233  * The configuration setting 'progressinband' now defaults to 'no', which
234    matches the actual behavior of previous versions.
235
236 res_pjsip
237 ------------------
238  * A new CLI command has been added: "pjsip show settings", which shows
239    both the global and system configuration settings.
240
241  * A new aor option has been added: "qualify_timeout", which sets the timeout
242    in seconds for a qualify.  The default is 3 seconds.  This overrides the
243    hard coded 32 seconds in pjproject.
244
245  * Endpoint status will now change to "Unreachable" when all contacts are
246    unavailable.  When any contact becomes available, the endpoint will status
247    will change back to "Reachable".
248
249  * A new global option has been added: "max_initial_qualify_time", which
250    sets the maximum amount of time from startup that qualifies should be
251    attempted on all contacts.
252
253 res_ari_channels
254 ------------------
255  * Two new events, 'ChannelHold' and 'ChannelUnhold', have been added to the
256    events data model. These events are raised when a channel indicates a hold
257    or unhold, respectively.
258
259 func_holdintercept
260 ------------------
261  * A new dialplan function, HOLD_INTERCEPT, has been added. This function, when
262    placed on a channel, intercepts hold/unhold indications signalled by the
263    channel and prevents them from moving on to other channels in a bridge with
264    the hold initiator. Instead, AMI or ARI events are raised indicating that
265    the channel wanted to place someone on hold. This allows external
266    applications to implement their own custom hold/unhold logic.
267
268 ------------------------------------------------------------------------------
269 --- Functionality changes from Asterisk 13.2.0 to Asterisk 13.3.0 ------------
270 ------------------------------------------------------------------------------
271
272 chan_pjsip/app_transfer
273 ------------------
274  * The Transfer application, when used with chan_pjsip, now supports using
275    a PJSIP endpoint as the transfer destination. This is in addition to
276    explicitly specifying a SIP URI to transfer to.
277
278 res_ari_channels
279 ------------------
280  * The ARI /channels resource now supports a new operation, 'redirect'. The
281    redirect operation will perform a technology and state specific redirection
282    on the channel to a specified endpoint or destination. In the case of SIP
283    technologies, this is either a 302 Redirect response to an on-going INVITE
284    dialog or a SIP REFER request.
285
286 res_pjsip
287 ------------------
288  * A new 'endpoint_identifier_order' option has been added that allows one to
289    set the order by which endpoint identifiers are processed and checked. This
290    option is specified under the 'global' type configuration section.
291
292 ------------------------------------------------------------------------------
293 --- Functionality changes from Asterisk 13.1.0 to Asterisk 13.2.0 ------------
294 ------------------------------------------------------------------------------
295
296  * New 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions have been added which
297    allow examining PJSIP AORs or contacts from the dialplan.
298
299 res_pjsip_outbound_registration
300 ------------------
301  * The 'pjsip send unregister' command now stops further registrations.
302
303  * A new command 'pjsip send register' has been added which allows you to
304    start or restart periodic registration.  It can be used after a
305    'send unregister' or after a 401 permanent error.
306
307 res_pjsip_config_wizard
308 ------------------
309  * This is a new module that adds streamlined configuration capability for
310    chan_pjsip.  It's targeted at users who have lots of basic configuration
311    scenarios like 'phone' or 'agent' or 'trunk'.  Additional information
312    can be found in the sample configuration file at
313    config/samples/pjsip_wizard.conf.sample.
314
315 res_fax
316 -----------
317  * The T.38 negotiation timeout was previously hard coded at 5000 milliseconds
318    and is now configurable via the 't38timeout' configuration option in
319    res_fax.conf and via the fax options dialplan function 'FAXOPT(t38timeout)'.
320    The default remains at 5000 milliseconds.
321
322 PJSIP Transports
323 ----------
324  * The ca_list_path transport parameter has been added for TLS transports. This
325    option behaves similarly to the old sip.conf option "tlscapath". In order to
326    use this, you must be using PJProject version 2.4 or higher.
327
328 ARI
329 ------------------
330  * The Originate operation now takes in an originator channel. The linked ID of
331    this originator channel is applied to the newly originated outgoing channel.
332    If using CEL this allows an association to be established between the two so
333    it can be recognized that the originator is dialing the originated channel.
334
335  * "language" (the default spoken language for the channel) is now included in
336    the standard channel state output for suitable events.
337
338  * The POST channels/{id} operation and the POST channels/{id}/continue operation
339    now have a new "label" parameter. This allows for origination or continuation
340    to a labeled priority in the dialplan instead of requiring a specific priority
341    number. The ARI version has been bumped to 1.7.0 as a result.
342
343 AMI
344 ------------------
345  * "Language" (the default spoken language for the channel) is now included in
346    the standard channel state output for suitable events.
347
348  * AMI actions that return a list of events have been made to return consistent
349    headers for the action response event starting the list and the list complete
350    event.  The AMI version has been bumped to 2.7.0 as a result.
351
352 ------------------------------------------------------------------------------
353 --- Functionality changes from Asterisk 13.0.0 to Asterisk 13.1.0 ------------
354 ------------------------------------------------------------------------------
355
356 AMI
357 ------------------
358  * Event NewConnectedLine is emitted when the connected line information on
359    a channel changes.
360
361 ARI
362 ------------------
363  * Event ChannelConnectedLine is emitted when the connected line information
364    on a channel changes.
365
366 Core Transfers
367 -----------------
368
369 The features.conf general section has three new configurable options:
370     * transferdialattempts
371     * transferretrysound
372     * transferinvalidsound
373 For more information on what these options do, see the Asterisk wiki:
374  https://wiki.asterisk.org/wiki/x/W4fAAQ
375
376 Channel Drivers
377 ------------------
378
379 chan_pjsip
380 ------------------
381  * New 'media_encryption_optimistic' endpoint setting. This will use SRTP
382    when possible but does not consider lack of it a failure.
383
384 res_pjsip_endpoint_identifer_ip
385 ------------------
386  * New CLI commands have been added: "pjsip show identif(y|ies)", which lists
387    all configured PJSIP identify objects
388    
389 ------------------------------------------------------------------------------
390 --- Functionality changes from Asterisk 12 to Asterisk 13 --------------------
391 ------------------------------------------------------------------------------
392
393 Overview
394 ------------------
395
396 Asterisk 13 is the next Long Term Support (LTS) release of Asterisk. As such,
397 the focus of development for this release of Asterisk was on improving the
398 usability and features developed in the previous Standard release, Asterisk 12.
399 Beyond a general refinement of end user features, development focussed heavily
400 on the Asterisk APIs - the Asterisk Manager Interface (AMI) and the Asterisk
401 REST Interface (ARI) - and the PJSIP stack in Asterisk. Some highlights of the
402 new features include:
403
404 * Asterisk security events are now provided via AMI, allowing end users to
405   monitor their Asterisk system in real time for security related issues.
406 * External control of Message Waiting Indicators (MWI) through both AMI and ARI.
407 * Reception/transmission of out of call text messages using any supported
408   channel driver/protocol stack through ARI.
409 * Resource List Server support in the PJSIP stack, providing subscriptions to
410   lists of resources and batched delivery of NOTIFY requests.
411 * Inter-Asterisk distributed device state and mailbox state using the PJSIP
412   stack.
413
414 It is important to note that Asterisk 13 is built on the architecture developed
415 during the previous Standard release, Asterisk 12. Users upgrading to
416 Asterisk 13 should read about the new features in Asterisk 12 later in this file
417 (see Functionality changes from Asterisk 11 to Asterisk 12), as well as the
418 UPGRADE-12.txt delivered with this release. In particular, users upgrading to
419 Asterisk 13 from a release prior to Asterisk 12 should read the specifications
420 on AMI, CDRs, and CEL on the Asterisk wiki:
421  * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ
422  * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ
423  * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ
424
425 Many new featuers in Asterisk 13 were introduced in point releases of
426 Asterisk 12. Following this section - which documents the changes from all
427 versions of Asterisk 12 to Asterisk 13 - users should examine the new features
428 that were introduced in the point releases of Asterisk 12, as they are also
429 included in Asterisk 13.
430
431 Finally, all users upgrading to Asterisk 13 should read the UPGRADE.txt file
432 delivered with this release.
433
434
435 Build System
436 ------------------
437  * Sample config files have been moved from configs/ to a sub-folder of that
438    directory, samples.
439
440  * The menuselect utility has been pulled into the Asterisk repository. As a
441    result, the libxml2 development library is now a required dependency for
442    Asterisk.
443
444  * A new Compiler Flag, REF_DEBUG, has been added. When enabled, reference
445    counted objects will emit additional debug information to the refs log file
446    located in the standard Asterisk log file directory. This log file is useful
447    in tracking down object leaks and other reference counting issues. Prior to
448    this version, this option was only available by modifying the source code
449    directly. This change also includes a new script, refcounter.py, in the
450    contrib folder that will process the refs log file. Note that this replaces
451    the refcounter utility that could be built from the utils directory.
452
453
454 Applications
455 ------------------
456
457 DahdiBarge
458 ------------------
459  * This module was deprecated and has been removed. Users of app_dahdibarge
460    should use ChanSpy instead.
461
462 MixMonitor
463 ------------------
464  * New options to play a beep when starting a recording and stopping a recording
465    have been added.  The option "p" will play a beep to the channel that starts
466    the recording.  The option "P" will play a beep to the channel that stops the
467    recording.
468
469 Queue
470 ------------------
471  * Queue rules can now be stored in a database table, queue_rules. Unlike other
472    RealTime tables, the queue_rules table is only examined on module load or
473    module reload. A new general setting has been added to queuerules.conf,
474    'realtime_rules', which, when set to 'yes', will cause app_queue to look in
475    RealTime for additional queue rules to parse. Note that both the file and
476    the database can be used as a provide of queue rules when 'realtime_rules'
477    is set to 'yes'.
478
479    When app_queue is reloaded, all rules are re-parsed and loaded into memory.
480    There is no caching of RealTime queue rules.
481
482 ReadFile
483 ------------------
484  * This module was deprecated and has been removed. Users of app_readfile
485    should use func_env's FILE function instead.
486
487 Say
488 ------------------
489  * The 'say' family of dialplan applications now support the Japanese
490    language. The 'language' parameter in say.conf now recognizes a setting of
491    'ja', which will enable Japanese language specific mechanisms for playing
492    back numbers, dates, and other items.
493
494 SayCountPL
495 ------------------
496  * This module was deprecated and has been removed. Users of app_saycountpl
497    should use the Say family of applications.
498
499 SetMusicOnHold
500 ------------------
501  * The SetMusicOnHold dialplan application was deprecated and has been removed.
502    Users of the application should use the CHANNEL function's musicclass
503    setting instead.
504
505 WaitMusicOnHold
506 ------------------
507  * The WaitMusicOnHold dialplan application was deprecated and has been
508    removed. Users of the application should use MusicOnHold with a duration
509    parameter instead.
510
511 VoiceMail
512 ------------------
513  * VoiceMail and VoiceMailMain now support the Japanese language. The
514    'language' parameter in voicemail.conf now recognizes a setting of 'ja',
515    which will enable prompts to be played back using a Japanese grammatical
516    structure. Additional prompts are necessary for this functionality,
517    including:
518    - jb-arimasu: there is
519    - jb-arimasen: there is not
520    - jb-oshitekudasai: please press
521    - jb-ni: article ni
522    - jb-ga: article ga
523    - jb-wa: article wa
524    - jb-wo: article wo
525
526  * Add the ability to specify multiple email addresses in configuration,
527    separated by a |.
528
529
530 CDR Backends
531 ------------------
532
533 cdr_sqlite
534 -----------------
535  * This module was deprecated and has been removed. Users of cdr_sqlite
536    should use cdr_sqlite3_custom.
537
538 cdr_pgsql
539 ------------------
540  * Added the ability to support PostgreSQL application_name on connections.
541    This allows PostgreSQL to display the configured name in the
542    pg_stat_activity view and CSV log entries. This setting is configurable
543    for cdr_pgsql via the appname configuration setting in cdr_pgsql.conf.
544
545
546 CEL Backends
547 ------------------
548
549 cel_pgsql
550 ------------------
551  * Added the ability to support PostgreSQL application_name on connections.
552    This allows PostgreSQL to display the configured name in the
553    pg_stat_activity view and CSV log entries. This setting is configurable
554    for cel_pgsql via the appname configuration setting in cel_pgsql.conf.
555
556
557 Channel Drivers
558 ------------------
559
560 chan_dahdi
561 ------------------
562  * SS7 support now requires libss7 v2.0 or later.
563
564  * Added SS7 support for connected line and redirecting.
565
566  * Most SS7 CLI commands are reworked as well as new SS7 commands added.
567    See online CLI help.
568
569  * Added several SS7 config option parameters described in
570    chan_dahdi.conf.sample.
571
572 chan_gtalk
573 ------------------
574  * This module was deprecated and has been removed. Users of chan_gtalk
575    should use chan_motif.
576
577 chan_h323
578 ------------------
579  * This module was deprecated and has been removed. Users of chan_h323
580    should use chan_ooh323.
581
582 chan_jingle
583 ------------------
584  * This module was deprecated and has been removed. Users of chan_jingle
585    should use chan_motif.
586
587 chan_pjsip
588 ------------------
589  * Added the CLI command 'pjsip list ciphers' so a user can know what
590    OpenSSL names are available on their system for the pjsip.conf cipher
591    option.
592
593 chan_sip
594 ------------------
595  * The SIPPEER dialplan function no longer supports using a colon as a
596    delimiter for parameters. The parameters for the function should be
597    delimited using a comma.
598
599  * The SIPCHANINFO dialplan function was deprecated and has been removed. Users
600    of the function should use the CHANNEL function instead.
601
602
603 Core
604 ------------------
605
606 Account Codes
607 ------------------
608  * Added functional peeraccount support.  Except for Queue, the
609    accountcode propagation is now consistently propagated to outgoing
610    channels before dialing.  The channel accountcode can change from its
611    original non-empty value on channel creation for the following specific
612    reasons.  One, dialplan sets it using CHANNEL(accountcode).  Two, an
613    originate method that can specify an accountcode value.  Three, the
614    calling channel propagates its peeraccount or accountcode to the
615    outgoing channel's accountcode before dialing.  The change has two
616    visible effects.  One, local channels now cross accountcode and
617    peeraccount across the special bridge between the ;1 and ;2 channels
618    just like channels between normal bridges.  Two, the
619    CHANNEL(peeraccount) value can now be set before Dial and FollowMe to
620    set the accountcode on the outgoing channel(s).
621
622    For Queue, an outgoing channel's non-empty accountcode will not change
623    unless explicitly set by CHANNEL(accountcode).  The change has three
624    visible effects.  One, local channels now cross accountcode and
625    peeraccount across the special bridge between the ;1 and ;2 channels
626    just like channels between normal bridges.  Two, the queue member will
627    get an accountcode if it doesn't have one and one is available from the
628    calling channel's peeraccount.  Three, accountcode propagation includes
629    local channel members where the accountcodes are propagated early
630    enough to be available on the ;2 channel.
631
632 AMI
633 ------------------
634  * New DeviceStateChanged and PresenceStateChanged AMI events have been added.
635    These events are emitted whenever a device state or presence state change
636    occurs. The events are controlled by res_manager_device_state.so and
637    res_manager_presence_state.so. If the high frequency of these events is
638    problematic for you, do not load these modules.
639
640  * Added DialplanExtensionAdd and DialplanExtensionRemove AMI commands. They
641    work in basically the same way as the 'dialplan add extension' and
642    'dialplan remove extension' CLI commands respectively.
643
644  * New AMI action LoggerRotate reloads and rotates logger in the same manner
645    as CLI command 'logger rotate'
646
647  * New AMI Actions FAXSessions, FAXSession, and FAXStats replicate the
648    functionality of CLI commands 'fax show sessions', 'fax show session',
649    and fax show stats' respectively.
650
651  * New AMI actions PRIDebugSet, PRIDebugFileSet, and PRIDebugFileUnset
652    enable manager control over PRI debugging levels and file output.
653
654  * AMI action PJSIPNotify may now send to a URI instead of only to a PJSIP
655    endpoint as long as a default outbound endpoint is set. This also applies
656    to the equivalent CLI command (pjsip send notify)
657
658  * The AMI action PJSIPShowEndpoint now includes ContactStatusDetail sections
659    that give information on Asterisk's attempts to qualify the endpoint.
660
661  * The DialEnd event will now contain a Forward header if the dial is ending
662    due to the call being forwarded. The contents of the Forward header is the
663    extension in the number to which the call is being forwarded.
664
665 CEL
666 ------------------
667  * The "bridge_technology" extra field key has been added to BRIDGE_ENTER
668    and BRIDGE_EXIT events.
669
670 Features
671 ------------------
672  * Channel variables are now substituted in arguments passed to applications
673    run by using dynamic features.
674
675 TLS
676 ------------------
677  * The TLS core in Asterisk now supports Perfect Forward Secrecy (PFS).
678    Enabling PFS is attempted by default, and is dependent on the configuration
679    of the module using TLS.
680    - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not
681      specify a ECDHE cipher suite in sip.conf, for example:
682        tlscipher=AES128-SHA:DES-CBC3-SHA
683    - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters
684      into the private key file, e.g., sip.conf tlsprivatekey. For example, the
685      default dh2048.pem - see
686      http://www.opensource.apple.com/source/OpenSSL098/OpenSSL098-35.1/src/apps/dh2048.pem?txt
687    - Because clients expect the server to prefer PFS, and because OpenSSL sorts
688      its cipher suites by bit strength, see "openssl ciphers -v DEFAULT".
689      Consider re-ordering your cipher suites in the respective configuration
690      file. For example:
691        tlscipher=AES128+kEECDH:AES128+kEDH:3DES+kEDH:AES128-SHA:DES-CBC3-SHA:-ADH:-AECDH
692      will use PFS when offered by the client. Clients which do not offer PFS
693      fall-back to AES-128 (or even 3DES, as recommended by RFC 3261).
694
695
696 Functions
697 ------------------
698
699 JACK_HOOK
700 ------------------
701  * The JACK_HOOK function now supports audio with a sample rate higher than
702    8kHz.
703
704
705 Resources
706 ------------------
707
708 res_config_pgsql
709 ------------------
710  * Added the ability to support PostgreSQL application_name on connections.
711    This allows PostgreSQL to display the configured name in the
712    pg_stat_activity view and CSV log entries. This setting is configurable
713    for res_config_pgsql via the dbappname configuration setting in
714    res_pgsql.conf.
715
716 res_pjsip_outbound_publish
717 ------------------
718  * A new module, res_pjsip_outbound_publish provides the mechanisms for sending
719    PUBLISH requests for specific event packages to another SIP User Agent.
720
721 res_pjsip_pubsub
722 ------------------
723  * The publish/subscribe core module has been updated to support RFC 4662
724    Resource Lists, allowing Asterisk to act as a Resource List Server (RLS).
725    Resource lists are configured in pjsip.conf under a new object type,
726    resource_list. Resource lists can contain either message-summary or presence
727    events, and can be composed of specific resources that provide the event or
728    other resource lists.
729
730  * Inbound publication support is provided by a new object, inbound-publication.
731    This configures res_pjsip_pubsub to accept PUBLISH requests from a particular
732    resource. Which events are accepted is constructed dynamically; see
733    res_pjsip_publish_asterisk for more information.
734
735 res_pjsip_publish_asterisk
736 ------------------
737  * A new module, res_pjsip_publish_asterisk adds support for PUBLISH requests of
738    Asterisk information to other Asterisk servers. This module is intended only
739    for Asterisk to Asterisk exchanges of information. Currently, this includes
740    both mailbox state and device state information.
741
742 ------------------------------------------------------------------------------
743 --- Functionality changes from Asterisk 12.4.0 to Asterisk 12.5.0 ------------
744 ------------------------------------------------------------------------------
745
746 ARI
747 ------------------
748  * Stored recordings now support a new operation, copy. This will take an
749    existing stored recording and copy it to a new location in the recordings
750    directory.
751
752  * LiveRecording objects now have three additional fields that can be reported
753    in a RecordingFinished ARI event:
754    - total_duration: the duration of the recording
755    - talking_duration: optional. The duration of talking detected in the
756      recording. This is only available if max_silence_seconds was specified
757      when the recording was started.
758    - silence_duration: optional. The duration of silence detected in the
759      recording. This is only available if max_silence_seconds was specified
760      when the recording was started.
761    Note that all duration values are reported in seconds.
762
763  * Users of ARI can now send and receive out of call text messages. Messages
764    can be sent directly to a particular endpoint, or can be sent to the
765    endpoints resource directly and inferred from the URI scheme. Text
766    messages are passed to ARI clients as TextMessageReceived events. ARI
767    clients can choose to receive text messages by subscribing to the particular
768    endpoint technology or endpoints that they are interested in.
769
770  * The applications resource now supports subscriptions to all endpoints of
771    a particular channel technology. For example, subscribing to an eventSource
772    of 'endpoint:PJSIP' will subscribe to all PJSIP endpoints.
773
774 res_pjsip
775 ------------------
776  * The endpoint configuration object now supports 'accountcode'. Any channel
777    created for an endpoint with this setting will have its accountcode set
778    to the specified value.
779
780 res_hep_rtcp
781 ------------------
782  * A new module, res_hep_rtcp, has been added that will forward RTCP call
783    statistics to a HEP capture server. See res_hep for more information.
784
785 Functions
786 ------------------
787  * Function AUDIOHOOK_INHERIT has been deprecated. Audiohooks are now
788    unconditionally inhereted through masquerades. As a side benefit, more
789    than one audiohook of a given type may persist through a masquerade now.
790
791 ------------------------------------------------------------------------------
792 --- Functionality changes from Asterisk 12.3.0 to Asterisk 12.4.0 ------------
793 ------------------------------------------------------------------------------
794
795 AgentRequest
796 ------------------
797  * Returns new AGENT_STATUS value "NOT_CONNECTED" if the agent fails to
798    connect with an incoming caller after being alerted to the presence
799    of the incoming caller.  The most likely reason this would happen is
800    the agent did not acknowledge the call in time.
801
802 AMI
803 ------------------
804  * New events have been added for the TALK_DETECT function. When the function
805    is used on a channel, ChannelTalkingStart/ChannelTalkingStop events will be
806    emitted to connected AMI clients indicating the start/stop of talking on
807    the channel.
808
809 ARI
810 ------------------
811  * New event models have been aded for the TALK_DETECT function. When the
812    function is used on a channel, ChannelTalkingStarted/ChannelTalkingFinished
813    events will be emitted to connected WebSockets subscribed to the channel,
814    indicating the start/stop of talking on the channel.
815
816 Functions
817 ------------------
818  * A new function, TALK_DETECT, has been added. When set on a channel, this
819    fucntion causes events indicating the starting/stoping of talking on said
820    channel to be emitted to both AMI and ARI clients.
821
822 ------------------------------------------------------------------------------
823 --- Functionality changes from Asterisk 12.2.0 to Asterisk 12.3.0 ------------
824 ------------------------------------------------------------------------------
825
826 ARI
827 ------------------
828  * A new Playback URI 'tone' has been added. Tones are specified either as
829    an indication name (e.g. 'tone:busy') from indications.conf or as a tone
830    pattern (e.g. 'tone:240/250,0/250'). Tones differ from normal playback
831    URIs in that they must be stopped manually and will continue to occupy
832    a channel's ARI control queue until they are stopped. They also can not
833    be rewound or fastforwarded.
834
835  * User events can now be generated from ARI.  Events can be signalled with
836    arbitrary json variables, and include one or more of channel, bridge, or
837    endpoint snapshots.  An application must be specified which will receive
838    the event message (other applications can subscribe to it).  The message
839    will also be delivered via AMI provided a channel is attached.  Dialplan
840    generated user event messages are still transmitted via the channel, and
841    will only be received by a stasis application they are attached to or if
842    the channel is subscribed to.
843
844 chan_sip
845 -----------
846  * SIP peers can now specify 'trust_id_outbound' which affects RPID/PAI
847    fields for prohibited callingpres information. Values are legacy, no, and
848    yes. By default, legacy is used.
849    trust_id_outbound=legacy - behavior remains the same as 1.8.26.1. When
850      dealing with prohibited callingpres and sendrpid=pai/rpid, RPID/PAI
851      headers are appended to outbound SIP messages just as they are with
852      allowed callingpres values, but data about the remote party's identity is
853      anonymized.
854      When sendrpid=rpid, only the remote party's domain is anonymized.
855    trust_id_outbound=no - when dealing with prohibited callingpres, RPID/PAI
856      headers are not sent.
857    trust_id_outbound=yes - RPID/PAI headers are applied with the full remote
858      party information in tact even for prohibited callingpres information.
859      In the case of PAI, a Privacy: id header will be appended for prohibited
860      calling information to communicate that the private information should
861      not be relayed to untrusted parties.
862
863 res_parking
864 ------------------
865  * Manager action 'Park' now takes an additional argument 'AnnounceChannel'
866    which can be used to announce the parked call's location to an arbitrary
867    channel in a bridge. If 'Channel' and 'TimeoutChannel' are now the two
868    parties in a one to one bridge, 'TimeoutChannel' is treated as having
869    parked 'Channel' like with the Park Call DTMF feature and will receive
870    announcements prior to being hung up.
871
872 ------------------------------------------------------------------------------
873 --- Functionality changes from Asterisk 12.1.0 to Asterisk 12.2.0 ------------
874 ------------------------------------------------------------------------------
875
876 Record
877 ------------------
878  * Record application now has an option 'o' which allows 0 to act as an exit
879    key setting the RECORD_STATUS variable to 'OPERATOR' instead of 'DTMF'
880
881 ChanSpy
882 --------------------------
883  * ChanSpy now accepts a channel uniqueid or a fully specified channel name
884    as the chanprefix parameter if the 'u' option is specified.
885
886 ConfBridge
887 --------------------------
888  * CONFBRIDGE dialplan function is now capable of creating/modifying dynamic
889    conference user menus.
890
891  * CONFBRIDGE dialplan function is now capable of removing dynamic conference
892    menus, bridge settings, and user settings that have been applied by the
893    CONFBRIDGE dialplan function.
894
895  * The ConfBridge dialplan application now sets a channel variable,
896    CONFBRIGE_RESULT, upon exiting. This variable can be used to determine
897    how a channel exited the conference.
898
899  * Added conference user option 'announce_join_leave_review'. This option
900    implies 'announce_join_leave' with the added effect that the user will
901    be asked if they want to confirm or re-record the recording of their
902    name when entering the conference
903
904 Directory
905 --------------------------
906  * At exit, the Directory application now sets a channel variable
907    DIRECTORY_RESULT to one of the following based on the reason for exiting:
908      OPERATOR    user requested operator by pressing '0' for operator
909      ASSISTANT   user requested assistant by pressing '*' for assistant
910      TIMEOUT     user pressed nothing and Directory stopped waiting
911      HANGUP      user's channel hung up
912      SELECTED    user selected a user from the directory and is routed
913      USEREXIT    user pressed '#' from the selection prompt to exit
914      FAILED      directory failed in a way that wasn't accounted for. Dang.
915
916 Monitor
917 ------------------
918  * Monitor() - A new option, B(), has been added that will turn on a periodic
919    beep while the call is being recorded.
920
921 MusicOnHold
922 --------------------------
923  * MusicOnHold streams (all modes other than "files") now support wide band
924    audio too.
925
926 Page
927 --------------------------
928  * Added options 'b' and 'B' to apply predial handlers for outgoing calls
929    and for the channel executing Page respectively.
930
931 PickupChan
932 --------------------------
933  * PickupChan now accepts channel uniqueids of channels to pickup.
934
935 Say
936 --------------------------
937  * If a channel variable SAY_DTMF_INTERRUPT is present on a channel and set
938    to 'true' (case insensitive), then any Say application (SayNumber,
939    SayDigits, SayAlpha, SayAlphaCase, SayUnixTime, and SayCounted) will
940    anticipate DTMF. If DTMF is received, these applications will behave like
941    the background application and jump to the received extension once a match
942    is established or after a short period of inactivity.
943
944 MixMonitor
945 -------------------------
946  * A new function, MIXMONITOR, has been added to allow access to individual
947    instances of MixMonitor on a channel.
948
949  * A new option, B(), has been added that will turn on a periodic beep while the
950    call is being recorded.
951
952
953 Channel Drivers
954 -------------------------
955
956 chan_sip
957 -------------------------
958  * TEL URI support for inbound INVITE requests has been added. chan_sip will
959    now handle TEL schemes in the Request and From URIs. The phone-context in
960    the Request URI will be stored in the SIPURIPHONECONTEXT channel variable on
961    the inbound channel.
962
963 Core
964 ------------------
965  * Exposed sorcery-based configuration files like pjsip.conf to dialplans via
966    the new AST_SORCERY diaplan function.
967
968  * Core Show Locks output now includes Thread/LWP ID if the platform
969    supports this feature.
970
971  * New "logger add channel" and "logger remove channel" CLI commands have
972    been added to allow creation and deletion of dynamic logger channels
973    without configuration changes. These dynamic logger channels will only
974    exist until the next restart of asterisk.
975
976 ARI
977 ------------------
978  * The live recording object on recording events now contains a target_uri
979    field which contains the URI of what is being recorded.
980
981  * The bridge type used when creating a bridge is now a comma separated list of
982    bridge properties. Valid options are: mixing, holding, dtmf_events, and
983    proxy_media.
984
985  * A channelId can now be provided when creating a channel, either in the
986    uri (POST channels/my-channel-id) or as query parameter.  A local channel
987    will suffix the second channel id with ';2' unless provided as query
988    parameter otherChannelId.
989
990  * A bridgeId can now be provided when creating a bridge, either in the uri
991    (POST bridges/my-bridge-id) or as a query parameter.
992
993  * A playbackId can be provided when starting a playback, either in the uri
994    (POST channels/my-channel-id/play/my-playback-id /
995     POST bridges/my-bridge-id/play/my-playback-id)  or as a query parameter.
996
997  * A snoop channel can be started with a snoopId, in the uri or query.
998
999 AMI
1000 ------------------
1001  * Originate now takes optional parameters ChannelId and OtherChannelId,
1002    used to set the UniqueId on creation.  The other id is assigned to the
1003    second channel when dialing LOCAL, or defaults to appending ;2 if only
1004    the single Id is given.
1005
1006  * The Mixmonitor action now has a "Command" header that can be used to
1007    indicate a post-process command to run once recording finishes.
1008
1009 RealTime
1010 ------------------
1011  * A new set of Alembic scripts has been added for CDR tables. This will create
1012    a 'cdr' table with the default schema that Asterisk expects.
1013
1014
1015 Functions
1016 ------------------
1017  * A new function was added: PERIODIC_HOOK.  This allows running a periodic
1018    dialplan hook on a channel.  Any audio generated by this hook will be
1019    injected into the call.
1020
1021
1022 Resources
1023 ------------------
1024
1025 res_hep
1026 ------------------
1027  * A new module, res_hep, has been added, that acts as a generic packet
1028    capture agent for the Homer Encapsulation Protocol (HEP) version 3.
1029    It can be configured via hep.conf. Other modules can use res_hep to send
1030    message traffic to a HEP capture server.
1031
1032 res_hep_pjsip
1033 ------------------
1034  * A new module, res_hep_pjsip, has been added that will forward PJSIP
1035    message traffic to a HEP capture server. See res_hep for more
1036    information.
1037
1038 res_pjsip
1039 ------------------
1040  * transport and endpoint ToS options (tos, tos_audio, and tos_video) may now
1041    be set as the named set of ToS values (cs0-cs7, af11-af43, ef).
1042
1043  * Added the following new CLI commands:
1044    - "pjsip show contacts" - list all current PJSIP contacts.
1045    - "pjsip show contact" - show specific information about a current PJSIP
1046      contact.
1047    - "pjsip show channel" - show detailed information about a PJSIP channel.
1048
1049 res_pjsip_multihomed
1050 ------------------
1051  * A new module, res_pjsip_multihomed handles situations where the system
1052    Asterisk is running out has multiple interfaces. res_pjsip_multihomed
1053    determines which interface should be used during message sending.
1054
1055 res_pjsip_pidf_digium_body_supplement
1056 ------------------
1057  * A new module, res_pjsip_pidf_digium_body_supplement provides NOTIFY
1058    request body formatting for presence support in Digium phones.
1059
1060 res_pjsip_send_to_voicemail
1061 ------------------
1062  * A new module, res_pjsip_send_to_voicemail allows for REFER requests with
1063    particular headers to transfer a PJSIP channel directly to a particular
1064    extension that has VoiceMail. This is intended to be used with Digium
1065    phones that support this feature.
1066
1067 res_pjsip_outbound_registration
1068 ------------------
1069  * A new CLI command has been added: "pjsip show registrations", which lists
1070    all configured PJSIP registrations
1071
1072
1073 ------------------------------------------------------------------------------
1074 --- Functionality changes from Asterisk 12.0.0 to Asterisk 12.1.0 ------------
1075 ------------------------------------------------------------------------------
1076
1077 AMI
1078 ------------------
1079  * Added a new module that provides AMI control over MWI within Asterisk,
1080    res_mwi_external_ami. Note that this module depends on res_mwi_external;
1081    for more information on enabling this module, see res_mwi_external.
1082    This module provides the MWIGet/MWIUpdate/MWIDelete actions, as well as
1083    the MWIGet/MWIGetComplete events.
1084
1085  * The DialStatus field in the DialEnd event can now contain additional
1086    statuses that convey how the dial operation terminated. This includes
1087    ABORT, CONTINUE, and GOTO.
1088
1089  * AMI will now emit security events. A new class authorization has been
1090    added in manager.conf for the security events, 'security'. The new events
1091    are:
1092     - FailedACL - raised when a request violates an ACL check
1093     - InvalidAccountID - raised when a request fails an authentication
1094       check due to an invalid account ID
1095     - SessionLimit - raised when a request fails due to exceeding the
1096       number of allowed concurrent sessions for a service
1097     - MemoryLimit - raised when a request fails due to an internal memory
1098       allocation failure
1099     - LoadAverageLimit - raised when a request fails because a configured
1100       load average limit has been reached
1101     - RequestNotAllowed - raised when a request is not allowed by
1102       the service
1103     - AuthMethodNotAllowed - raised when a request used an authentication
1104       method not allowed by the service
1105     - RequestBadFormat - raised when a request is received with bad formatting
1106     - SuccessfulAuth - raised when a request successfully authenticates
1107     - UnexpectedAddress - raised when a request has a different source address
1108       then what is expected for a session already in progress with a service
1109     - ChallengeResponseFailed - raised when a request's attempt to authenticate
1110       has been challenged, and the request failed the authentication challenge
1111     - InvalidPassword - raised when a request provides an invalid password
1112       during an authentication attempt
1113     - ChallengeSent - raised when an Asterisk service send an authentication
1114       challenge to a request
1115     - InvalidTransport - raised when a request attempts to use a transport not
1116       allowed by the Asterisk service
1117
1118  * Bridge related events now have two additional fields: BridgeName and
1119    BridgeCreator. BridgeName is a descriptive name for the bridge;
1120    BridgeCreator is the name of the entity that created the bridge. This
1121    affects the following events: ConfbridgeStart, ConfbridgeEnd,
1122    ConfbridgeJoin, ConfbridgeLeave, ConfbridgeRecord, ConfbridgeStopRecord,
1123    ConfbridgeMute, ConfbridgeUnmute, ConfbridgeTalking, BlindTransfer,
1124    AttendedTransfer, BridgeCreate, BridgeDestroy, BridgeEnter, BridgeLeave
1125
1126 ARI
1127 ------------------
1128  * The Bridge data model now contains the additional fields 'name' and
1129    'creator'. The 'name' field conveys a descriptive name for the bridge;
1130    the 'creator' field conveys the name of the entity that created the bridge.
1131    This affects all responses to HTTP requests that return a Bridge data model
1132    as well as all event derived data models that contain a Bridge data model.
1133    The POST /bridges operation may now optionally specify a name to give to
1134    the bridge being created.
1135
1136  * Added a new ARI resource 'mailboxes' which allows the creation and
1137    modification of mailboxes managed by external MWI. Modules res_mwi_external
1138    and res_stasis_mailbox must be enabled to use this resource. For more
1139    information on external MWI control, see res_mwi_external.
1140
1141  * Added new events for externally initiated transfers. The event
1142    BridgeBlindTransfer is now raised when a channel initiates a blind transfer
1143    of a bridge in the ARI controlled application to the dialplan; the
1144    BridgeAttendedTransfer event is raised when a channel initiates an
1145    attended transfer of a bridge in the ARI controlled application to the
1146    dialplan.
1147
1148  * Channel variables may now be specified as a body parameter to the
1149    POST /channels operation. The 'variables' key in the JSON is interpreted
1150    as a sequence of key/value pairs that will be added to the created channel
1151    as channel variables. Other parameters in the JSON body are treated as
1152    query parameters of the same name.
1153
1154 HTTP
1155 ------------------
1156  * Asterisk's HTTP server now supports chunked Transfer-Encoding. This will be
1157    automatically handled by the HTTP server if a request is received with a
1158    Transfer-Encoding type of "chunked".
1159
1160 res_pjsip
1161 ------------------
1162  * Path support has been added with the 'support_path' option in registration
1163    and aor sections.
1164
1165  * A 'debug' option has been added to the globals section that will allow
1166    sip messages to be logged.
1167
1168  * A 'set_var' option has been added to endpoints that will automatically
1169    set the desired variable(s) on a channel created for that endpoint.
1170
1171  * Several new tables and columns have been added to the realtime schema for
1172    the res_pjsip related modules. See the UPGRADE.txt notes for updating
1173    the database schema.
1174
1175 res_mwi_external
1176 ------------------
1177  * A new module, res_mwi_external, has been added to Asterisk. This module
1178    acts as a base framework that other modules can build on top of to allow
1179    an external system to control MWI within Asterisk. For implementations
1180    that make use of res_mwi_external, see res_mwi_external_ami and
1181    res_ari_mailboxes. Note that res_mwi_external canflicts with other modules
1182    that may produce MWI themselves, such as app_voicemail. res_mwi_external
1183    and other modules that depend on it cannot be built or loaded with
1184    app_voicemail present.
1185
1186 res_pjsip
1187 ------------------
1188  * DNS functionality will now automatically be enabled if the system configured
1189    nameservers can be retrieved. If the system configured nameservers can not be
1190    retrieved the functionality will resort to using system resolution. Functionalty
1191    such as SRV records and failover will not be available if system resolution
1192    is in use.
1193
1194 ------------------------------------------------------------------------------
1195 --- Functionality changes from Asterisk 11 to Asterisk 12 --------------------
1196 ------------------------------------------------------------------------------
1197
1198 Overview
1199 ------------------
1200
1201 Asterisk 12 is a standard release of the Asterisk project. As such, the
1202 focus of development for this release was on core architectural changes and
1203 major new features. This includes:
1204  * A more flexible bridging core based on the Bridging API
1205  * A new internal message bus, Stasis
1206  * Major standardization and consistency improvements to AMI
1207  * Addition of the Asterisk RESTful Interface (ARI)
1208  * A new SIP channel driver, chan_pjsip
1209 In addition, as the vast majority of bridging in Asterisk was migrated to the
1210 Bridging API used by ConfBridge, major changes were made to most of the
1211 interfaces in Asterisk. This includes not only AMI, but also CDRs and CEL.
1212
1213 Specifications have been written for the affected interfaces. These
1214 specifications are available on the Asterisk wiki:
1215  * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ
1216  * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ
1217  * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ
1218
1219 It is *highly* recommended that anyone migrating to Asterisk 12 read the
1220 information regarding its release both in this file and in the accompanying
1221 UPGRADE.txt file. More detailed information on the major changes can be found
1222 on the Asterisk wiki at https://wiki.asterisk.org/wiki/x/0YCLAQ.
1223
1224
1225 Build System
1226 ------------------
1227  * Added build option DISABLE_INLINE. This option can be used to work around a
1228    bug in gcc. For more information, see
1229    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47816
1230
1231  * Removed the CHANNEL_TRACE development mode build option. Certain aspects of
1232    the CHANNEL_TRACE build option were incompatible with the new bridging
1233    architecture.
1234
1235  * Asterisk now optionally uses libxslt to improve XML documentation generation
1236    and maintainability. If libxslt is not available on the system, some XML
1237    documentation will be incomplete.
1238
1239  * Asterisk now depends on libjansson. If a package of libjansson is not
1240    available on your distro, please see http://www.digip.org/jansson/.
1241
1242  * Asterisk now depends on libuuid and, optionally, uriparser. It is
1243    recommended that you install uriparser, even if it is optional.
1244
1245  * The new SIP stack and channel driver uses a particular version of PJSIP.
1246    Please see https://wiki.asterisk.org/wiki/x/J4GLAQ for more information on
1247    configuring and installing PJSIP for usage with Asterisk.
1248
1249  * Optional API was re-implemented to be more portable, and no longer requires
1250    weak reference support from the compiler. The build option OPTIONAL_API may
1251    be disabled to disable Optional API support.
1252
1253 Applications
1254 ------------------
1255
1256 AgentLogin
1257 ------------------
1258  * Along with AgentRequest, this application has been modified to be a
1259    replacement for chan_agent. The act of a channel calling the AgentLogin
1260    application places the channel into a pool of agents that can be
1261    requested by the AgentRequest application. Note that this application, as
1262    well as all other agent related functionality, is now provided by the
1263    app_agent_pool module. See chan_agent and AgentRequest for more information.
1264
1265  * This application no longer performs agent authentication. If authentication
1266    is desired, the dialplan needs to perform this function using the
1267    Authenticate or VMAuthenticate application or through an AGI script before
1268    running AgentLogin.
1269
1270  * If this application is called and the agent is already logged in, the
1271    dialplan will continue exection with the AGENT_STATUS channel variable set
1272    to ALREADY_LOGGED_IN.
1273
1274  * The agents.conf schema has changed. Rather than specifying agents on a
1275    single line in comma delineated fashion, each agent is defined in a separate
1276    context. This allows agents to use the power of context templates in their
1277    definition.
1278
1279  * A number of parameters from agents.conf have been removed. This includes
1280    maxloginretries, autologoffunavail, updatecdr, goodbye, group, recordformat,
1281    urlprefix, and savecallsin. These options were obsoleted by the move from
1282    a channel driver model to the bridging/application model provided by
1283    app_agent_pool.
1284
1285 AgentRequest
1286 ------------------
1287  * A new application, this will request a logged in agent from the pool and
1288    bridge the requested channel with the channel calling this application.
1289    Logged in agents are those channels that called the AgentLogin application.
1290    If an agent cannot be requested from the pool, the AGENT_STATUS dialplan
1291    application will be set with an appropriate error value.
1292
1293 AgentMonitorOutgoing
1294 ------------------
1295  * This application has been removed. It was a holdover from when
1296    AgentCallbackLogin was removed.
1297
1298 AlarmReceiver
1299 ------------------
1300  * Added support for additional Ademco DTMF signalling formats, including
1301    Express 4+1, Express 4+2, High Speed and Super Fast.
1302
1303  * Added channel variable ALARMRECEIVER_CALL_LIMIT. This sets the maximum
1304    call time, in milliseconds, to run the application.
1305
1306  * Added channel variable ALARMRECEIVER_RETRIES_LIMIT. This sets the
1307    maximum number of times to retry the call.
1308
1309  * Added a new configuration option answait. If set, the AlarmReceiver
1310    application will wait the number of milliseconds specified by answait
1311    after the channel has answered. Valid values range between 500
1312    milliseconds and 10000 milliseconds.
1313
1314  * Added configuration option no_group_meta. If enabled, grouping of metadata
1315    information in the AlarmReceiver log file will be skipped.
1316
1317 Answer
1318 ------------------
1319  * It is now no longer possible to bypass updating the CDR on the channel
1320    when answering. CDRs reflect the state of the channel and will always
1321    reflect the time they were Answered.
1322
1323 BridgeWait
1324 ------------------
1325  * A new application in Asterisk, this will place the calling channel
1326    into a holding bridge, optionally entertaining them with some form of
1327    media. Channels participating in a holding bridge do not interact with
1328    other channels in the same holding bridge. Optionally, however, a channel
1329    may join as an announcer. Any media passed from an announcer channel is
1330    played to all channels in the holding bridge. Channels leave a holding
1331    bridge either when an optional timer expires, or via the ChannelRedirect
1332    application or AMI Redirect action.
1333
1334 ConfBridge
1335 ------------------
1336  * All participants in a bridge can now be kicked out of a conference room
1337    by specifying the channel parameter as 'all' in the ConfBridge kick CLI
1338    command, i.e., 'confbridge kick <conference> all'
1339
1340  * CLI output for the 'confbridge list' command has been improved. When
1341    displaying information about a particular bridge, flags will now be shown
1342    for the participating users indicating properties of that user.
1343
1344  * The ConfbridgeList event now contains the following fields: WaitMarked,
1345    EndMarked, and Waiting. This displays additional properties about the
1346    user's profile, as well as whether or not the user is waiting for a
1347    Marked user to enter the conference.
1348
1349  * Added a new option for conference recording, record_file_append. If enabled,
1350    when the recording is stopped and then re-started, the existing recording
1351    will be used and appended to.
1352
1353  * ConfBridge now has the ability to set the language of announcements to the
1354    conference.  The language can be set on a bridge profile in confbridge.conf
1355    or by the dialplan function CONFBRIDGE(bridge,language)=en.
1356
1357 ControlPlayback
1358 ------------------
1359  * The channel variable CPLAYBACKSTATUS may now return the value
1360    'REMOTESTOPPED'. This occurs when playback is stopped by a remote interface,
1361    such as AMI. See the AMI action ControlPlayback for more information.
1362
1363 Directory
1364 ------------------
1365  * Added the 'a' option, which allows the caller to enter in an additional
1366    alias for the user in the directory. This option must be used in conjunction
1367    with the 'f', 'l', or 'b' options. Note that the alias for a user can be
1368    specified in voicemail.conf.
1369
1370 DumpChan
1371 ------------------
1372  * The output of DumpChan no longer includes the DirectBridge or IndirectBridge
1373    fields. Instead, if a channel is in a bridge, it includes a BridgeID field
1374    containing the unique ID of the bridge that the channel happens to be in.
1375
1376 ForkCDR
1377 ------------------
1378  * ForkCDR no longer automatically resets the forked CDR. See the 'r' option
1379    for more information.
1380
1381  * Variables are no longer purged from the original CDR. See the 'v' option for
1382    more information.
1383
1384  * The 'A' option has been removed. The Answer time on a CDR is never updated
1385    once set.
1386
1387  * The 'd' option has been removed. The disposition on a CDR is a function of
1388    the state of the channel and cannot be altered.
1389
1390  * The 'D' option has been removed. Who the Party B is on a CDR is a function
1391    of the state of the respective channels involved in the CDR and cannot be
1392    altered.
1393
1394  * The 'r' option has been changed. Previously, ForkCDR always reset the CDR
1395    such that the start time and, if applicable, the answer time was updated.
1396    Now, by default, ForkCDR simply forks the CDR, maintaining any times. The
1397    'r' option now triggers the Reset, setting the start time (and answer time
1398    if applicable) to the current time. Note that the 'a' option still sets
1399    the answer time to the current time if the channel was already answered.
1400
1401  * The 's' option has been removed. A variable can be set on the original CDR
1402    if desired using the CDR function, and removed from a forked CDR using the
1403    same function.
1404
1405  * The 'T' option has been removed. The concept of DONT_TOUCH and LOCKED no
1406    longer applies in the CDR engine.
1407
1408  * The 'v' option now prevents the copy of the variables from the original CDR
1409    to the forked CDR. Previously the variables were always copied but were
1410    removed from the original. This was changed as removing variables from a CDR
1411    can have unintended side effects - this option allows the user to prevent
1412    propagation of variables from the original to the forked without modifying
1413    the original.
1414
1415 MeetMe
1416 -------------------
1417  * Added the 'n' option to MeetMe to prevent application of the DENOISE
1418    function to a channel joining a conference. Some channel drivers that vary
1419    the number of audio samples in a voice frame will experience significant
1420    quality problems if a denoiser is attached to the channel; this option gives
1421    them the ability to remove the denoiser without having to unload func_speex.
1422
1423 MixMonitor
1424 ------------------
1425  * The 'b' option now includes conferences as well as sounds played to the
1426    participants.
1427
1428  * The AUDIOHOOK_INHERIT function is no longer needed to keep a MixMonitor
1429    running during a transfer. If a MixMonitor is started on a channel,
1430    the MixMonitor will continue to record the audio passing through the
1431    channel even in the presence of transfers.
1432
1433 NoCDR
1434 ------------------
1435  * The NoCDR application is deprecated. Please use the CDR_PROP function to
1436    disable CDRs.
1437
1438  * While the NoCDR application will prevent CDRs for a channel from being
1439    propagated to registered CDR backends, it will not prevent that data from
1440    being collected. Hence, a subsequent call to ResetCDR or the CDR_PROP
1441    function that enables CDRs on a channel will restore those records that have
1442    not yet been finalized.
1443
1444 ParkAndAnnounce
1445 -------------------
1446  * The app_parkandannounce module has been removed. The application
1447    ParkAndAnnounce is now provided by the res_parking module. See the
1448    res_parking changes for more information.
1449
1450 Queue
1451 -------------------
1452  * Added queue available hint. The hint can be added to the dialplan using the
1453    following syntax: exten,hint,Queue:{queue_name}_avail
1454    For example, if the name of the queue is 'markq':
1455         exten => 8501,hint,Queue:markq_avail
1456    This will report 'InUse' if there are no logged in agents or no free agents.
1457    It will report 'Idle' when an agent is free.
1458
1459  * Queues now support a hint for member paused state. The hint uses the form
1460    'Queue:{queue_name}_pause_{member_name}', where {queue_name} and {member_name}
1461    are the name of the queue and the name of the member to subscribe to,
1462    respectively. For example: exten => 8501,hint,Queue:sales_pause_mark.
1463    Members will show as In Use when paused.
1464
1465  * The configuration options eventwhencalled and eventmemberstatus have been
1466    removed.  As a result, the AMI events QueueMemberStatus, AgentCalled,
1467    AgentConnect, AgentComplete, AgentDump, and AgentRingNoAnswer will always be
1468    sent.  The "Variable" fields will also no longer exist on the Agent* events.
1469    These events can be filtered out from a connected AMI client using the
1470    eventfilter setting in manager.conf.
1471
1472  * The queue log now differentiates between blind and attended transfers. A
1473    blind transfer will result in a BLINDTRANSFER message with the destination
1474    context and extension. An attended transfer will result in an
1475    ATTENDEDTRANSFER message. This message will indicate the method by which
1476    the attended transfer was completed: "BRIDGE" for a bridge merge, "APP"
1477    for running an application on a bridge or channel, or "LINK" for linking
1478    two bridges together with local channels. The queue log will also now detect
1479    externally initiated blind and attended transfers and record the transfer
1480    status accordingly.
1481
1482  * When performing queue pause/unpause on an interface without specifying an
1483    individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at
1484    least one member of any queue exists for that interface.
1485
1486  * Added the 'queue_log_realtime_use_gmt' option to have timestamps in GMT
1487    for realtime queue log entries.
1488
1489 ResetCDR
1490 ------------------
1491  * The 'e' option has been deprecated. Use the CDR_PROP function to re-enable
1492    CDRs when they were previously disabled on a channel.
1493
1494  * The 'w' and 'a' options have been removed. Dispatching CDRs to registered
1495    backends occurs on an as-needed basis in order to preserve linkedid
1496    propagation and other needed behavior.
1497
1498 SayAlphaCase
1499 ------------------
1500  * A new application, this is similar to SayAlpha except that it supports
1501    case sensitive playback of the specified characters. For example,
1502    SayAlphaCase(u,aBc) will result in 'a uppercase b c'.
1503
1504 SetAMAFlags
1505 ------------------
1506  * This application is deprecated in favor of CHANNEL(amaflags).
1507
1508 SendDTMF
1509 ------------------
1510  * The SendDTMF application will now accept 'W' as valid input. This will cause
1511    the application to delay one second while streaming DTMF.
1512
1513 Stasis
1514 ------------------
1515  * A new application in Asterisk 12, this hands control of the channel calling
1516    the application over to an external system. Currently, external systems
1517    manipulate channels in Stasis through the Asterisk RESTful Interface (ARI).
1518
1519 UserEvent
1520 ------------------
1521  * UserEvent will now handle duplicate keys by overwriting the previous value
1522    assigned to the key.
1523
1524  * In addition to AMI, UserEvent invocations will now be distributed to any
1525    interested Stasis applications.
1526
1527 VoiceMail
1528 ------------------
1529  * Mailboxes defined by app_voicemail MUST be referenced by the rest of the
1530    system as mailbox@context.  The rest of the system cannot add @default
1531    to mailbox identifiers for app_voicemail that do not specify a context
1532    any longer.  It is a mailbox identifier format that should only be
1533    interpreted by app_voicemail.
1534
1535  * The voicemail.conf configuration file now has an 'alias' configuration
1536    parameter for use with the Directory application. The voicemail realtime
1537    database table schema has also been updated with an 'alias' column.
1538
1539
1540 Codecs
1541 ------------------
1542  * Pass through support has been added for both VP8 and Opus.
1543
1544  * Added format attribute negotiation for the Opus codec. Format attribute
1545    negotiation is provided by the res_format_attr_opus module.
1546
1547
1548 Core
1549 ------------------
1550  * Masquerades as an operation inside Asterisk have been effectively hidden
1551    by the migration to the Bridging API. As such, many 'quirks' of Asterisk
1552    no longer occur. This includes renaming of channels, "<ZOMBIE>" channels,
1553    dropping of frame/audio hooks, and other internal implementation details
1554    that users had to deal with. This fundamental change has large implications
1555    throughout the changes documented for this version. For more information
1556    about the new core architecture of Asterisk, please see the Asterisk wiki.
1557
1558  * Multiple parties in a bridge may now be transferred. If a participant in a
1559    multi-party bridge initiates a blind transfer, a Local channel will be used
1560    to execute the dialplan location that the transferer sent the parties to. If
1561    a participant in a multi-party bridge initiates an attended transfer,
1562    several options are possible. If the attended transfer results in a transfer
1563    to an application, a Local channel is used. If the attended transfer results
1564    in a transfer to another channel, the resulting channels will be merged into
1565    a single bridge.
1566
1567  * The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND is no longer channel
1568    driver specific.  If the channel variable is set on the transferrer channel,
1569    the sound will be played to the target of an attended transfer.
1570
1571  * The channel variable BRIDGEPEER becomes a comma separated list of peers in
1572    a multi-party bridge.  The BRIDGEPEER value can have a maximum of 10 peers
1573    listed.  Any more peers in the bridge will not be included in the list.
1574    BRIDGEPEER is not valid in holding bridges like parking since those channels
1575    do not talk to each other even though they are in a bridge.
1576
1577  * The channel variable BRIDGEPVTCALLID is only valid for two party bridges
1578    and will contain a value if the BRIDGEPEER's channel driver supports it.
1579
1580  * A channel variable ATTENDEDTRANSFER is now set which indicates which channel
1581    was responsible for an attended transfer in a similar fashion to
1582    BLINDTRANSFER.
1583
1584  * Modules using the Configuration Framework or Sorcery must have XML
1585    configuration documentation. This configuration documentation is included
1586    with the rest of Asterisk's XML documentation, and is accessible via CLI
1587    commands. See the CLI changes for more information.
1588
1589 AMI (Asterisk Manager Interface)
1590 ------------------
1591  * Major changes were made to both the syntax as well as the semantics of the
1592    AMI protocol. In particular, AMI events have been substantially improved
1593    in this version of Asterisk. For more information, please see the AMI
1594    specification at https://wiki.asterisk.org/wiki/x/dAFRAQ
1595
1596  * AMI events that reference a particular channel or bridge will now always
1597    contain a standard set of fields. When multiple channels or bridges are
1598    referenced in an event, fields for at least some subset of the channels
1599    and bridges in the event will be prefixed with a descriptive name to avoid
1600    name collisions. See the AMI event documentation on the Asterisk wiki for
1601    more information.
1602
1603  * The CLI command 'manager show commands' no longer truncates command names
1604    longer than 15 characters and no longer shows authorization requirement
1605    for commands. 'manager show command' now displays the privileges needed
1606    for using a given manager command instead.
1607
1608  * The SIPshowpeer action will now include a 'SubscribeContext' field for a
1609    peer in its response if the peer has a subscribe context set.
1610
1611  * The SIPqualifypeer action now acknowledges the request once it has
1612    established that the request is against a known peer. It also issues a new
1613    event, 'SIPQualifyPeerDone', once the qualify action has been completed.
1614
1615  * The PlayDTMF action now supports an optional 'Duration' parameter.  This
1616    specifies the duration of the digit to be played, in milliseconds.
1617
1618  * Added VoicemailRefresh action to allow an external entity to trigger mailbox
1619    updates when changes occur instead of requiring the use of pollmailboxes.
1620
1621  * Added a new action 'ControlPlayback'. The ControlPlayback action allows an
1622    AMI client to manipulate audio currently being played back on a channel. The
1623    supported operations depend on the application being used to send audio to
1624    the channel. When the audio playback was initiated using the ControlPlayback
1625    application or CONTROL STREAM FILE AGI command, the audio can be paused,
1626    stopped, restarted, reversed, or skipped forward. When initiated by other
1627    mechanisms (such as the Playback application), the audio can be stopped,
1628    reversed, or skipped forward.
1629
1630  * Channel related events now contain a snapshot of channel state, adding new
1631    fields to many of these events.
1632
1633  * The AMI event 'Newexten' field 'Extension' is deprecated, and may be removed
1634    in a future release. Please use the common 'Exten' field instead.
1635
1636  * The AMI event 'UserEvent' from app_userevent now contains the channel state
1637    fields. The channel state fields will come before the body fields.
1638
1639  * The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and
1640    'UnParkedCall' have changed significantly in the new res_parking module.
1641
1642    The 'Channel' and 'From' headers are gone. For the channel that was parked
1643    or is coming out of parking, a 'Parkee' channel snapshot is issued and it
1644    has a number of fields associated with it. The old 'Channel' header relayed
1645    the same data as the new 'ParkeeChannel' header.
1646
1647    The 'From' field was ambiguous and changed meaning depending on the event.
1648    for most of these, it was the name of the channel that parked the call
1649    (the 'Parker'). There is no longer a header that provides this channel name,
1650    however the 'ParkerDialString' will contain a dialstring to redial the
1651    device that parked the call.
1652
1653    On UnParkedCall events, the 'From' header would instead represent the
1654    channel responsible for retrieving the parkee. It receives a channel
1655    snapshot labeled 'Retriever'. The 'from' field is is replaced with
1656    'RetrieverChannel'.
1657
1658    Lastly, the 'Exten' field has been replaced with 'ParkingSpace'.
1659
1660  * The AMI event 'Parkinglot' (response to 'Parkinglots' command) in a similar
1661    fashion has changed the field names 'StartExten' and 'StopExten' to
1662    'StartSpace' and 'StopSpace' respectively.
1663
1664  * The deprecated use of | (pipe) as a separator in the channelvars setting in
1665    manager.conf has been removed.
1666
1667  * Channel Variables conveyed with a channel no longer contain the name of the
1668    channel as part of the key field, i.e., ChanVariable(SIP/foo): bar=baz is now
1669    ChanVariable: bar=baz. When multiple channels are present in a single AMI
1670    event, the various ChanVariable fields will contain a suffix that specifies
1671    which channel they correspond to.
1672
1673  * The NewPeerAccount AMI event is no longer raised. The NewAccountCode AMI
1674    event always conveys the AMI event for a particular channel.
1675
1676  * All 'Reload' events have been consolidated into a single event type. This
1677    event will always contain a Module field specifying the name of the module
1678    and a Status field denoting the result of the reload. All modules now issue
1679    this event when being reloaded.
1680
1681  * The 'ModuleLoadReport' event has been removed. Most AMI connections would
1682    fail to receive this event due to being connected after modules have loaded.
1683    AMI connections that want to know when Asterisk is ready should listen for
1684    the 'FullyBooted' event.
1685
1686  * app_fax now sends the same send fax/receive fax events as res_fax. The
1687    'FaxSent' event is now the 'SendFAX' event, and the 'FaxReceived' event is
1688    now the 'ReceiveFAX' event.
1689
1690  * The 'MusicOnHold' event is now two events: 'MusicOnHoldStart' and
1691    'MusicOnHoldStop'. The sub type field has been removed.
1692
1693  * The 'JabberEvent' event has been removed. It is not AMI's purpose to be a
1694    carrier for another protocol.
1695
1696  * The Bridge Manager action's 'Playtone' header now accepts more fine-grained
1697    options. 'Channel1' and 'Channel2' may be specified in order to play a tone
1698    to the specific channel. 'Both' may be specified to play a tone to both
1699    channels. The old 'yes' option is still accepted as a way of playing the
1700    tone to Channel2 only.
1701
1702  * The AMI 'Status' response event to the AMI Status action replaces the
1703    'BridgedChannel' and 'BridgedUniqueid' headers with the 'BridgeID' header to
1704    indicate what bridge the channel is currently in.
1705
1706  * The AMI 'Hold' event has been moved out of individual channel drivers, into
1707    core, and is now two events: 'Hold' and 'Unhold'.  The status field has been
1708    removed.
1709
1710  * The AMI events in app_queue have been made more consistent with each other.
1711    Events that reference channels (QueueCaller* and Agent*) will show
1712    information about each channel.  The (infamous) 'Join' and 'Leave' AMI
1713    events have been changed to 'QueueCallerJoin' and 'QueueCallerLeave'.
1714
1715  * The 'MCID' AMI event now publishes a channel snapshot when available and
1716    its non-channel-snapshot parameters now use either the "MCallerID" or
1717    'MConnectedID' prefixes with Subaddr*, Name*, and Num* suffixes instead
1718    of 'CallerID' and 'ConnectedID' to avoid confusion with similarly named
1719    parameters in the channel snapshot.
1720
1721  * The AMI events 'Agentlogin' and 'Agentlogoff' have been renamed
1722    'AgentLogin' and 'AgentLogoff' respectively.
1723
1724  * The 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been
1725    renamed "DAHDIChannel" since it does not convey an Asterisk channel name.
1726
1727  * 'ChannelUpdate' events have been removed.
1728
1729  * All AMI events now contain a 'SystemName' field, if available.
1730
1731  * Local channel optimization is now conveyed in two events:
1732    'LocalOptimizationBegin' and 'LocalOptimizationEnd'. The Begin event is sent
1733    when the Local channel driver begins attempting to optimize itself out of
1734    the media path; the End event is sent after the channel halves have
1735    successfully optimized themselves out of the media path.
1736
1737  * Local channel information in events is now prefixed with 'LocalOne' and
1738    'LocalTwo'. This replaces the suffix of '1' and '2' for the two halves of
1739    the Local channel. This affects the 'LocalBridge', 'LocalOptimizationBegin',
1740    and 'LocalOptimizationEnd' events.
1741
1742  * The option 'allowmultiplelogin' can now be set or overriden in a particular
1743    account. When set in the general context, it will act as the default
1744    setting for defined accounts.
1745
1746  * The 'BridgeAction' event was removed. It technically added no value, as the
1747    Bridge Action already receives confirmation of the bridge through a
1748    successful completion Event.
1749
1750  * The 'BridgeExec' events were removed. These events duplicated the events that
1751    occur in the Briding API, and are conveyed now through BridgeCreate,
1752    BridgeEnter, and BridgeLeave events.
1753
1754  * The 'RTCPSent'/'RTCPReceived' events have been significantly modified from
1755    previous versions. They now report all SR/RR packets sent/received, and
1756    have been restructured to better reflect the data sent in a SR/RR. In
1757    particular, the event structure now supports multiple report blocks.
1758
1759  * Added 'BlindTransfer' and 'AttendedTransfer' events. These events are
1760    raised when a blind transfer/attended transfer completes successfully.
1761    They contain information about the transfer that just completed, including
1762    the location of the transfered channel.
1763
1764  * Added a 'security' class to AMI which outputs the required fields for
1765    security messages similar to the log messages from res_security_log
1766
1767  * The AMI event 'ExtensionStatus' now contains a 'StatusText' field
1768    that describes the status value in a human readable string.
1769
1770 CDR (Call Detail Records)
1771 ------------------
1772  * Significant changes have been made to the behavior of CDRs. The CDR engine
1773    was effectively rewritten and built on the Stasis message bus. For a full
1774    definition of CDR behavior in Asterisk 12, please read the specification
1775    on the Asterisk wiki (wiki.asterisk.org).
1776
1777  * CDRs will now be created between all participants in a bridge. For each
1778    pair of channels in a bridge, a CDR is created to represent the path of
1779    communication between those two endpoints. This lets an end user choose who
1780    to bill for what during bridge operations with multiple parties.
1781
1782  * The duration, billsec, start, answer, and end times now reflect the times
1783    associated with the current CDR for the channel, as opposed to a cumulative
1784    measurement of all CDRs for that channel.
1785
1786  * When a CDR is dispatched, user defined CDR variables from both parties are
1787    included in the resulting CDR. If both parties have the same variable, only
1788    the Party A value is provided.
1789
1790  * Added a new option to cdr.conf, 'debug'. When enabled, significantly more
1791    information regarding the CDR engine is logged as verbose messages. This
1792    option should only be used if the behavior of the CDR engine needs to be
1793    debugged.
1794
1795  * Added CLI command 'cdr set debug {on|off}'. This toggles the 'debug' setting
1796    normally configured in cdr.conf.
1797
1798  * Added CLI command 'cdr show active {channel}'. When {channel} is not
1799    specified, this command provides a summary of the channels with CDR
1800    information and their statistics. When {channel} is specified, it shows
1801    detailed information about all records associated with {channel}.
1802
1803 CEL (Channel Event Logging)
1804 ------------------
1805  * CEL has undergone significant rework in Asterisk 12, and is now built on the
1806    Stasis message bus. Please see the specification for CEL on the Asterisk
1807    wiki at https://wiki.asterisk.org/wiki/x/4ICLAQ for more detailed
1808    information.
1809
1810  * The 'extra' field of all CEL events that use it now consists of a JSON blob
1811    with key/value pairs which are defined in the Asterisk 12 CEL documentation.
1812
1813  * BLINDTRANSFER events now report the transferee bridge unique
1814    identifier, extension, and context in a JSON blob as the extra string
1815    instead of the transferee channel name as the peer.
1816
1817  * ATTENDEDTRANSFER events now report the peer as NULL and additional
1818    information in the 'extra' string as a JSON blob. For transfers that occur
1819    between two bridged channels, the 'extra' JSON blob contains the primary
1820    bridge unique identifier, the secondary channel name, and the secondary
1821    bridge unique identifier. For transfers that occur between a bridged channel
1822    and a channel running an app, the 'extra' JSON blob contains the primary
1823    bridge unique identifier, the secondary channel name, and the app name.
1824
1825  * LOCAL_OPTIMIZE events have been added to convey local channel
1826    optimizations with the record occurring for the semi-one channel and
1827    the semi-two channel name in the peer field.
1828
1829  * BRIDGE_START, BRIDGE_END, BRIDGE_UPDATE, 3WAY_START, 3WAY_END, CONF_ENTER,
1830    CONF_EXIT, CONF_START, and CONF_END events have all been removed. These
1831    events have been replaced by BRIDGE_ENTER/BRIDGE_EXIT. The BRIDGE_ENTER
1832    and BRIDGE_EXIT events are raised when a channel enters/exits any bridge,
1833    regardless of whether or not that bridge happens to contain multiple
1834    parties.
1835
1836 CLI
1837 -------------------
1838  * When compiled with '--enable-dev-mode', the astobj2 library will now add
1839    several CLI commands that allow for inspection of ao2 containers that
1840    register themselves with astobj2. The CLI commands are 'astobj2 container
1841    dump', 'astobj2 container stats', and 'astobj2 container check'.
1842
1843  * Added specific CLI commands for bridge inspection. This includes 'bridge
1844    show all', which lists all bridges in the system, and 'bridge show {id}',
1845    which provides specific information about a bridge.
1846
1847  * Added CLI command 'bridge destroy'. This will destroy the specified bridge,
1848    ejecting the channels currently in the bridge. If the channels cannot
1849    continue in the dialplan or application that put them in the bridge, they
1850    will be hung up.
1851
1852  * Added command 'bridge kick'. This will eject a single channel from a bridge.
1853
1854  * Added commands to inspect and manipulate the registered bridge technologies.
1855    This include 'bridge technology show', which lists the registered bridge
1856    technologies, as well as 'bridge technology {suspend|unsuspend} {tech}',
1857    which controls whether or not a registered bridge technology can be used
1858    during smart bridge operations. If a technology is suspended, it will not
1859    be used when a bridge technology is picked for channels; when unsuspended,
1860    it can be used again.
1861
1862  * The command 'config show help {module} {type} {option}' will show
1863    configuration documentation for modules with XML configuration
1864    documentation. When {module}, {type}, and {option} are omitted, a listing
1865    of all modules with registered documentation is displayed. When {module}
1866    is specified, a listing of all configuration types for that module is
1867    displayed, along with their synopsis. When {module} and {type} are
1868    specified, a listing of all configuration options for that type are
1869    displayed along with their synopsis. When {module}, {type}, and {option}
1870    are specified, detailed information for that configuration option is
1871    displayed.
1872
1873  * Added 'core show sounds' and 'core show sound' CLI commands. These display
1874    a listing of all installed media sounds available on the system and
1875    detailed information about a sound, respectively.
1876
1877  * 'xmldoc dump' has been added. This CLI command will dump the XML
1878    documentation DOM as a string to the specified file. The Asterisk core
1879    will populate certain XML elements pulled from the source files with
1880    additional run-time information; this command lets a user produce the
1881    XML documentation with all information.
1882
1883 Features
1884 -------------------
1885  * Parking has been pulled from core and placed into a separate module called
1886    res_parking. See Parking changes below for more details. Configuration for
1887    parking should now be performed in res_parking.conf. Configuration for
1888    parking in features.conf is now unsupported.
1889
1890  * Core attended transfers now have several new options. While performing an
1891    attended transfer, the transferer now has the following options:
1892    - *1 - cancel the attended transfer (configurable via atxferabort)
1893    - *2 - complete the attended transfer, dropping out of the call
1894           (configurable via atxfercomplete)
1895    - *3 - complete the attended transfer, but stay in the call. This will turn
1896           the call into a multi-party bridge (configurable via atxferthreeway)
1897    - *4 - swap to the other party. Once an attended transfer has begun, this
1898           options may be used multiple times (configurable via atxferswap)
1899
1900  * For DTMF blind and attended transfers, the channel variable TRANSFER_CONTEXT
1901    must be on the channel initiating the transfer to have any effect.
1902
1903  * The BRIDGE_FEATURES channel variable would previously only set features for
1904    the calling party and would set this feature regardless of whether the
1905    feature was in caps or in lowercase. Use of a caps feature for a letter
1906    will now apply the feature to the calling party while use of a lowercase
1907    letter will apply that feature to the called party.
1908
1909  * Add support for automixmon to the BRIDGE_FEATURES channel variable.
1910
1911  * The channel variable DYNAMIC_PEERNAME is redundant with BRIDGEPEER and is
1912    removed.  The more useful DYNAMIC_WHO_ACTIVATED gives the channel name that
1913    activated the dynamic feature.
1914
1915  * The channel variables DYNAMIC_FEATURENAME and DYNAMIC_WHO_ACTIVATED are set
1916    only on the channel executing the dynamic feature.  Executing a dynamic
1917    feature on the bridge peer in a multi-party bridge will execute it on all
1918    peers of the activating channel.
1919
1920  * You can now have the settings for a channel updated using the FEATURE()
1921    and FEATUREMAP() functions inherited to child channels by setting
1922    FEATURE(inherit)=yes.
1923
1924  * automixmon now supports additional channel variables from automon including:
1925    TOUCH_MIXMONITOR_PREFIX, TOUCH_MIXMONITOR_MESSAGE_START,
1926    and TOUCH_MIXMONITOR_MESSAGE_STOP
1927
1928  * A new general features.conf option 'recordingfailsound' has been added which
1929    allowssetting a failure sound for a user tries to invoke a recording feature
1930    such as automon or automixmon and it fails.
1931
1932  * It is no longer necessary (or possible) to define the ATXFER_NULL_TECH in
1933    features.c for atxferdropcall=no to work properly. This option now just
1934    works.
1935
1936 Logging
1937 -------------------
1938  * Added log rotation strategy 'none'. If set, no log rotation strategy will
1939    be used. Given that this can cause the Asterisk log files to grow quickly,
1940    this option should only be used if an external mechanism for log management
1941    is preferred.
1942
1943 Realtime
1944 ------------------
1945  * Dynamic realtime tables for SIP Users can now include a 'path' field. This
1946    will store the path information for that peer when it registers. Realtime
1947    tables can also use the 'supportpath' field to enable Path header support.
1948
1949  * LDAP realtime configurations for SIP Users now have the AstAccountPathSupport
1950    objectIdentifier. This maps to the supportpath option in sip.conf.
1951
1952 Sorcery
1953 ------------------
1954  * Sorcery is a new data abstraction and object persistence API in Asterisk. It
1955    provides modules a useful abstraction on top of the many storage mechanisms
1956    in Asterisk, including the Asterisk Database, static configuration files,
1957    static Realtime, and dynamic Realtime. It also provides a caching service.
1958    Users can configure a hierarchy of data storage layers for specific modules
1959    in sorcery.conf.
1960
1961  * All future modules which utilize Sorcery for object persistence must have a
1962    column named "id" within their schema when using the Sorcery realtime module.
1963    This column must be able to contain a string of up to 128 characters in length.
1964
1965 Security Events Framework
1966 ------------------
1967  * Security Event timestamps now use ISO 8601 formatted date/time instead of
1968    the "seconds-microseconds" format that it was using previously.
1969
1970 Stasis Message Bus
1971 ------------------
1972  * The Stasis message bus is a publish/subscribe message bus internal to
1973    Asterisk. Many services in Asterisk are built on the Stasis message bus,
1974    including AMI, ARI, CDRs, and CEL. Parameters controlling the operation of
1975    Stasis can be configured in stasis.conf. Note that these parameters operate
1976    at a very low level in Asterisk, and generally will not require changes.
1977
1978 Channel Drivers
1979 ------------------
1980  * When a channel driver is configured to enable jiterbuffers, they are now
1981    applied unconditionally when a channel joins a bridge. If a jitterbuffer
1982    is already set for that channel when it enters, such as by the JITTERBUFFER
1983    function, then the existing jitterbuffer will be used and the one set by
1984    the channel driver will not be applied.
1985
1986 chan_agent
1987 ------------------
1988  * chan_agent has been removed and replaced with AgentLogin and AgentRequest
1989    dialplan applications provided by the app_agent_pool module. Agents are
1990    connected with callers using the new AgentRequest dialplan application.
1991    The Agents:<agent-id> device state is available to monitor the status of an
1992    agent. See agents.conf.sample for valid configuration options.
1993
1994  * The updatecdr option has been removed. Altering the names of channels on a
1995    CDR is not supported - the name of the channel is the name of the channel,
1996    and pretending otherwise helps no one. The AGENTUPDATECDR channel variable
1997    has also been removed, for the same reason.
1998
1999  * The endcall and enddtmf configuration options are removed.  Use the
2000    dialplan function CHANNEL(dtmf-features) to set DTMF features on the agent
2001    channel before calling AgentLogin.
2002
2003 chan_bridge
2004 ------------------
2005  * chan_bridge has been removed. Its functionality has been incorporated
2006    directly into the ConfBridge application itself.
2007
2008 chan_dahdi
2009 ------------------
2010  * Added the CLI command 'pri destroy span'. This will destroy the D-channel
2011    of the specified span and its B-channels. Note that this command should
2012    only be used if you understand the risks it entails.
2013
2014  * The CLI command 'dahdi destroy channel' is now 'dahdi destroy channels'.
2015    A range of channels can be specified to be destroyed. Note that this command
2016    should only be used if you understand the risks it entails.
2017
2018  * Added the CLI command 'dahdi create channels'. A range of channels can be
2019    specified to be created, or the keyword 'new' can be used to add channels
2020    not yet created.
2021
2022  * The script specified by the chan_dahdi.conf mwimonitornotify option now gets
2023    the exact configured mailbox name.  For app_voicemail mailboxes this is
2024    mailbox@context.
2025
2026  * Added mwi_vm_boxes that also must be configured for ISDN MWI to be enabled.
2027
2028 chan_iax2
2029 ------------------
2030  * IPv6 support has been added.  We are now able to bind to and
2031    communicate using IPv6 addresses.
2032
2033 chan_local
2034 ------------------
2035  * The /b option has been removed.
2036
2037  * chan_local moved into the system core and is no longer a loadable module.
2038
2039 chan_mobile
2040 ------------------
2041  * Added general support for busy detection.
2042
2043  * Added ECAM command support for Sony Ericsson phones.
2044
2045 chan_pjsip
2046 ------------------
2047  * A new SIP channel driver for Asterisk, chan_pjsip is built on the PJSIP
2048    SIP stack. A collection of resource modules provides the bulk of the SIP
2049    functionality. For more information on the new SIP channel driver, see
2050    https://wiki.asterisk.org/wiki/x/JYGLAQ
2051
2052 chan_sip
2053 ------------------
2054  * Added support for RFC 3327 "Path" headers. This can be enabled in sip.conf
2055    using the 'supportpath' setting, either on a global basis or on a peer basis.
2056    This setting enables Asterisk to route outgoing out-of-dialog requests via a
2057    set of proxies by using a pre-loaded route-set defined by the Path headers in
2058    the REGISTER request. See Realtime updates for more configuration information.
2059
2060  * The SIP_CODEC family of variables may now specify more than one codec. Each
2061    codec must be separated by a comma. The first codec specified is the
2062    preferred codec for the offer. This allows a dialplan writer to specify both
2063    audio and video codecs, e.g., Set(SIP_CODEC=ulaw,h264)
2064
2065  * The 'callevents' parameter has been removed. Hold AMI events are now raised
2066    in the core, and can be filtered out using the 'eventfilter' parameter
2067    in manager.conf.
2068
2069  * Added 'ignore_requested_pref'. When enabled, this will use the preferred
2070    codecs configured for a peer instead of the requested codec.
2071
2072  * The option "register_retry_403" has been added to chan_sip to work around
2073    servers that are known to erroneously send 403 in response to valid
2074    REGISTER requests and allows Asterisk to continue attepmting to connect.
2075
2076 chan_skinny
2077 ------------------
2078  * Added the 'immeddialkey' parameter. If set, when the user presses the
2079    configured key the already entered number will be immediately dialed. This
2080    is useful when the dialplan allows for variable length pattern matching.
2081    Valid options are '*' and '#'.
2082
2083  * Added the 'callfwdtimeout' parameter. This configures the amount of time (in
2084    milliseconds) before a call forward is considered to not be answered.
2085
2086  * The 'serviceurl' parameter allows Service URLs to be attached to line
2087    buttons.
2088
2089
2090 Functions
2091 ------------------
2092
2093 AGENT
2094 ------------------
2095  * The password option has been disabled, as the AgentLogin application no
2096    longer provides authentication.
2097
2098 AUDIOHOOK_INHERIT
2099 ------------------
2100  * Due to changes in the Asterisk core, this function is no longer needed to
2101    preserve a MixMonitor on a channel during transfer operations and dialplan
2102    execution. It is effectively obsolete.
2103
2104 CDR (function)
2105 ------------------
2106  * The 'amaflags' and 'accountcode' attributes for the CDR function are
2107    deprecated. Use the CHANNEL function instead to access these attributes.
2108
2109  * The 'l' option has been removed. When reading a CDR attribute, the most
2110    recent record is always used. When writing a CDR attribute, all non-finalized
2111    CDRs are updated.
2112
2113  * The 'r' option has been removed, for the same reason as the 'l' option.
2114
2115  * The 's' option has been removed, as LOCKED semantics no longer exist in the
2116    CDR engine.
2117
2118 CDR_PROP
2119 ------------------
2120  * A new function CDR_PROP has been added. This function lets you set properties
2121    on a channel's active CDRs. This function is write-only. Properties accept
2122    boolean values to set/clear them on the channel's CDRs. Valid properties
2123    include:
2124    - 'party_a' - make this channel the preferred Party A in any CDR between two
2125      channels. If two channels have this property set, the creation time of the
2126      channel is used to determine who is Party A. Note that dialed channels are
2127      never Party A in a CDR.
2128    - 'disable' - disable CDRs on this channel. This is analogous to the NoCDR
2129      application when set to True, and analogous to the 'e' option in ResetCDR
2130      when set to False.
2131
2132 CHANNEL
2133 ------------------
2134  * Added the argument 'dtmf_features'. This sets the DTMF features that will be
2135    enabled on a channel when it enters a bridge. Allowed values are 'T', 'K',
2136    'H', 'W', and 'X', and are analogous to the parameters passed to the Dial
2137    application.
2138
2139  * Added the argument 'after_bridge_goto'. This can be set to a parseable Goto
2140    string, i.e., [[context],extension],priority. If set on a channel, if a
2141    channel leaves a bridge but is not hung up it will resume dialplan execution
2142    at that location.
2143
2144 JITTERBUFFER
2145 ------------------
2146  * JITTERBUFFER now accepts an argument of 'disabled' which can be used
2147    to remove jitterbuffers previously set on a channel with JITTERBUFFER.
2148    The value of this setting is ignored when disabled is used for the argument.
2149
2150 PJSIP_DIAL_CONTACTS
2151 ------------------
2152  * A new function provided by chan_pjsip, this function can be used in
2153    conjunction with the Dial application to construct a dial string that will
2154    dial all contacts on an Address of Record associated with a chan_pjsip
2155    endpoint.
2156
2157 PJSIP_MEDIA_OFFER
2158 ------------------
2159  * Provided by chan_pjsip, this function sets the codecs to be offerred on the
2160    outbound channel prior to dialing.
2161
2162 REDIRECTING
2163 ------------------
2164  * Redirecting reasons can now be set to arbitrary strings. This means
2165    that the REDIRECTING dialplan function can be used to set the redirecting
2166    reason to any string. It also allows for custom strings to be read as the
2167    redirecting reason from SIP Diversion headers.
2168
2169 SPEECH_ENGINE
2170 ------------------
2171  * The SPEECH_ENGINE function now supports read operations. When read from, it
2172    will return the current value of the requested attribute.
2173
2174 VMCOUNT:
2175 ------------------
2176  * Mailboxes defined by app_voicemail MUST be referenced by the rest of the
2177    system as mailbox@context.  The rest of the system cannot add @default
2178    to mailbox identifiers for app_voicemail that do not specify a context
2179    any longer.  It is a mailbox identifier format that should only be
2180    interpreted by app_voicemail.
2181
2182
2183 Resources
2184 ------------------
2185
2186 res_agi (Asterisk Gateway Interface)
2187 ------------------
2188  * The manager event AGIExec has been split into AGIExecStart and AGIExecEnd.
2189
2190  * The manager event AsyncAGI has been split into AsyncAGIStart, AsyncAGIExec,
2191    and AsyncAGIEnd.
2192
2193  * The CONTROL STREAM FILE command now accepts an offsetms parameter. This
2194    will start the playback of the audio at the position specified. It will
2195    also return the final position of the file in 'endpos'.
2196
2197  * The CONTROL STREAM FILE command will now populate the CPLAYBACKSTATUS
2198    channel variable if the user stopped the file playback or if a remote
2199    entity stopped the playback. If neither stopped the playback, it will
2200    indicate the overall success/failure of the playback. If stopped early,
2201    the final offset of the file will be set in the CPLAYBACKOFFSET channel
2202    variable.
2203
2204  * The SAY ALPHA command now accepts an additional parameter to control
2205    whether it specifies the case of uppercase, lowercase, or all letters to
2206    provide functionality similar to SayAlphaCase.
2207
2208 res_ari (Asterisk RESTful Interface) (and others)
2209 ------------------
2210  * The Asterisk RESTful Interface (ARI) provides a mechanism to expose and
2211    control telephony primitives in Asterisk by remote client. This includes
2212    channels, bridges, endpoints, media, and other fundamental concepts. Users
2213    of ARI can develop their own communications applications, controlling
2214    multiple channels using an HTTP RESTful interface and receiving JSON events
2215    about the objects via a WebSocket connection. ARI can be configured in
2216    Asterisk via ari.conf. For more information on ARI, see
2217    https://wiki.asterisk.org/wiki/x/0YCLAQ
2218
2219 res_parking
2220 -------------------
2221  * Parking has been extracted from the Asterisk core as a loadable module,
2222    res_parking. Configuration for parking is now provided by res_parking.conf.
2223    Configuration through features.conf is no longer supported.
2224
2225  * res_parking uses the configuration framework. If an invalid configuration is
2226    supplied, res_parking will fail to load or fail to reload. Previously,
2227    invalid configurations would generally be accepted, with certain errors
2228    resulting in individually disabled parking lots.
2229
2230  * Parked calls are now placed in bridges. While this is largely an
2231    architectural change, it does have implications on how channels in a parking
2232    lot are viewed. For example, commands that display channels in bridges will
2233    now also display the channels in a parking lot.
2234
2235  * The order of arguments for the new parking applications have been modified.
2236    Timeout and return context/exten/priority are now implemented as options,
2237    while the name of the parking lot is now the first parameter. See the
2238    application documentation for Park, ParkedCall, and ParkAndAnnounce for more
2239    in-depth information as well as syntax.
2240
2241  * Extensions are by default no longer automatically created in the dialplan to
2242    park calls or pickup parked calls. Generation of dialplan extensions can be
2243    enabled using the 'parkext' configuration option.
2244
2245  * ADSI functionality for parking is no longer supported. The 'adsipark'
2246    configuration option has been removed as a result.
2247
2248  * The PARKINGSLOT channel variable has been deprecated in favor of
2249    PARKING_SPACE to match the naming scheme of the new system.
2250
2251  * PARKING_SPACE and PARKEDLOT channel variables will now be set for a parked
2252    channel even when the configuration option 'comebactoorigin' is enabled.
2253
2254  * A new CLI command 'parking show' has been added. This allows a user to
2255    inspect the parking lots that are currently in use.
2256    'parking show <parkinglot>' will also show the parked calls in a specific
2257    parking lot.
2258
2259  * The CLI command 'parkedcalls' is now deprecated in favor of
2260    'parking show <parkinglot>'.
2261
2262  * The AMI command 'ParkedCalls' will now accept a 'ParkingLot' argument which
2263    can be used to get a list of parked calls for a specific parking lot.
2264
2265  * The AMI command 'Park' field 'Channel2' has been deprecated and replaced
2266    with 'TimeoutChannel'. If both 'Channel2' and 'TimeoutChannel' are
2267    specified, 'TimeoutChannel' will be used. The field 'TimeoutChannel' is no
2268    longer a required argument.
2269
2270  * The ParkAndAnnounce application is now provided through res_parking instead
2271    of through the separate app_parkandannounce module.
2272
2273  * ParkAndAnnounce will no longer go to the next position in dialplan on timeout
2274    by default. Instead, it will follow the timeout rules of the parking lot. The
2275    old behavior can be reproduced by using the 'c' option.
2276
2277  * Dynamic parking lots will now fail to be created under the following
2278    conditions:
2279    - if the parking lot specified by PARKINGDYNAMIC does not exist
2280    - if they require exclusive park and parkedcall extensions which overlap
2281      with existing parking lots.
2282
2283  * Dynamic parking lots will be cleared on reload for dynamic parking lots that
2284    currently contain no calls. Dynamic parking lots containing parked calls
2285    will persist through the reloads without alteration.
2286
2287  * If 'parkext_exclusive' is set for a parking lot and that extension is
2288    already in use when that parking lot tries to register it, this is now
2289    considered a parking system configuration error. Configurations which do
2290    this will be rejected.
2291
2292  * Added channel variable PARKER_FLAT. This contains the name of the extension
2293    that would be used if 'comebacktoorigin' is enabled. This can be useful when
2294    comebacktoorigin is disabled, but the dialplan or an external control
2295    mechanism wants to use the extension in the park-dial context that was
2296    generated to re-dial the parker on timeout.
2297
2298 res_pjsip (and many others)
2299 ------------------
2300  * A large number of resource modules make up the SIP stack based on pjsip.
2301    The chan_pjsip channel driver users these resource modules to provide
2302    various SIP functionality in Asterisk. The majority of configuration for
2303    these modules is performed in pjsip.conf. Other modules may use their
2304    own configuration files.
2305
2306  * Added 'set_var' option for an endpoint. For each variable specified that
2307    variable gets set upon creation of a channel involving the endpoint.
2308
2309 res_rtp_asterisk
2310 ------------------
2311  * ICE/STUN/TURN support in res_rtp_asterisk has been made optional.  To enable
2312    them, an Asterisk-specific version of PJSIP needs to be installed.
2313    Tarballs are available from https://github.com/asterisk/pjproject/tags/.
2314
2315 res_statsd/res_chan_stats
2316 ------------------
2317  * A new resource module, res_statsd, has been added, which acts as a statsd
2318    client. This module allows Asterisk to publish statistics to a statsd
2319    server. In conjunction with res_chan_stats, it will publish statistics about
2320    channels to the statsd server. It can be configured via res_statsd.conf.
2321
2322 res_xmpp
2323 ------------------
2324  * Device state for XMPP buddies is now available using the following format:
2325    XMPP/<client name>/<buddy address>
2326    If any resource is available the device state is considered to be not in use.
2327    If no resources exist or all are unavailable the device state is considered
2328    to be unavailable.
2329
2330
2331 Scripts
2332 ------------------
2333
2334 Realtime/Database Scripts
2335 ------------------
2336  * Asterisk previously included example db schemas in the contrib/realtime/
2337    directory of the source tree.  This has been replaced by a set of database
2338    migrations using the Alembic framework.  This allows you to use alembic to
2339    initialize the database for you.  It will also serve as a database migration
2340    tool when upgrading Asterisk in the future.
2341
2342    See contrib/ast-db-manage/README.md for more details.
2343
2344 sip_to_res_pjsip.py
2345 -------------------
2346  * A new script has been added in the contrib/scripts/sip_to_res_pjsip folder.
2347    This python script will convert an existing sip.conf file to a
2348    pjsip.conf file, for use with the chan_pjsip channel driver. This script
2349    is meant to be an aid in converting an existing chan_sip configuration to
2350    a chan_pjsip configuration, but it is expected that configuration beyond
2351    what the script provides will be needed.
2352
2353 ------------------------------------------------------------------------------
2354 --- Functionality changes from Asterisk 10 to Asterisk 11 --------------------
2355 ------------------------------------------------------------------------------
2356
2357 Build System
2358 -------------------
2359  * The Asterisk build system will now build and install a shared library
2360    (libasteriskssl.so) used to wrap various initialization and shutdown functions
2361    from the libssl and libcrypto libraries provided by OpenSSL. This is done so
2362    that Asterisk can ensure that these functions do *not* get called by any
2363    modules that are loaded into Asterisk, since they should only be called once
2364    in any single process. If desired, this feature can be disabled by supplying
2365    the "--disable-asteriskssl" option to the configure script.
2366
2367  * A new make target, 'full', has been added to the Makefile.  This performs
2368    the same compilation actions as make all, but will also scan the entirety of
2369    each source file for documentation.  This option is needed to generate AMI
2370    event documentation.  Note that your system must have Python in order for
2371    this make target to succeed.
2372
2373  * The optimization portion of the build system has been reworked to avoid
2374    broken builds on certain architectures.  All architecture-specific
2375    optimization has been removed in favor of using -march=native to allow gcc
2376    to detect the environment in which it is running when possible.  This can
2377    be toggled as BUILD_NATIVE under "Compiler Flags" in menuselect.
2378
2379  * BUILD_CFLAGS and BUILD_LDFLAGS can now be passed to menuselect, e.g.,
2380    make BUILD_CFLAGS="whatever" BUILD_LDFLAGS="whatever"
2381
2382  * Remove "asterisk/version.h" in favor of "asterisk/ast_version.h".  If you
2383    previously parsed the header file to obtain the version of Asterisk, you
2384    will now have to go through Asterisk to get the version information.
2385
2386
2387 Applications
2388 -------------------
2389
2390 Bridge
2391 -------------------
2392  * Added 'F()' option. Similar to the dial option, this can be supplied with
2393    arguments indicating where the callee should go after the caller is hung up,
2394    or without options specified, the priority after the Queue will be used.
2395
2396
2397 ConfBridge
2398 -------------------
2399  * Added menu action admin_toggle_mute_participants.  This will mute / unmute
2400    all non-admin participants on a conference.  The confbridge configuration
2401    file also allows for the default sounds played to all conference users when
2402    this occurs to be overriden using sound_participants_unmuted and
2403    sound_participants_muted.
2404
2405  * Added menu action participant_count.  This will playback the number of
2406    current participants in a conference.
2407
2408  * Added announcement configuration option to user profile. If set the sound
2409    file will be played to the user, and only the user, upon joining the
2410    conference bridge.
2411
2412  * Added record_file_append option that defaults to "yes", but if set to no
2413    will create a new file between each start/stop recording.
2414
2415
2416 Dial
2417 -------------------
2418  * Added 'b' and 'B' options to Dial that execute a Gosub on callee and caller
2419    channels respectively before the callee channels are called.
2420
2421
2422 ExternalIVR
2423 -------------------
2424  * Added support for IPv6.
2425
2426  * Add interrupt ('I') command to ExternalIVR.  Sending this command from an
2427    external process will cause the current playlist to be cleared, including
2428    stopping any audio file that is currently playing.  This is useful when you
2429    want to interrupt audio playback only when specific DTMF is entered by the
2430    caller.
2431
2432
2433 FollowMe
2434 -------------------
2435  * A new option, 'I' has been added to app_followme. By setting this option,
2436    Asterisk will not update the caller with connected line changes when they
2437    occur.  This is similar to app_dial and app_queue.
2438
2439  * The 'N' option is now ignored if the call is already answered.
2440
2441  * Added 'b' and 'B' options to FollowMe that execute a Gosub on callee
2442    and caller channels respectively before the callee channels are called.
2443
2444  * The winning FollowMe outgoing call is now put on hold if the caller put it on
2445    hold.
2446
2447
2448 MixMonitor
2449 ------------------
2450  * MixMonitor hooks now have IDs associated with them which can be used to
2451    assign a target to StopMixMonitor. Use of MixMonitor's i(variable) option
2452    will allow storage of the MixMontior ID in a channel variable. StopMixmonitor
2453    now accepts that ID as an argument.
2454
2455  * Added 'm' option, which stores a copy of the recording as a voicemail in the
2456    indicated mailboxes.
2457
2458
2459 MySQL
2460 -------------------
2461  * The connect action in app_mysql now allows you to specify a port number to
2462    connect to.  This is useful if you run a MySQL server on a non-standard
2463    port number.
2464
2465
2466 OSP Applications
2467 -------------------
2468  * Increased the default number of allowed destinations from 5 to 12.
2469
2470
2471 Page
2472 -------------------
2473  * The app_page application now no longer depends on DAHDI or app_meetme.  It
2474    has been re-architected to use app_confbridge internally.
2475
2476
2477 Queue
2478 -------------------
2479  * Added queue options autopausebusy and autopauseunavail for automatically
2480    pausing a queue member when their device reports busy or congestion.
2481
2482  * The 'ignorebusy' option for queue members has been deprecated in favor of
2483    the option 'ringinuse. Also a 'queue set ringinuse' CLI command has been
2484    added as well as an AMI action 'QueueMemberRingInUse' to set this variable on a
2485    per interface basis. Individual ringinuse values can now be set in
2486    queues.conf via an argument to member definitions. Lastly, the queue
2487    'ringinuse' setting now only determines defaults for the per member
2488    'ringinuse' setting and does not override per member settings like it does
2489    in earlier versions.
2490
2491  * Added 'F()' option. Similar to the dial option, this can be supplied with
2492    arguments indicating where the callee should go after the caller is hung up,
2493    or without options specified, the priority after the Queue will be used.
2494
2495  * Added new option log_member_name_as_agent, which will cause the membername to
2496    be logged in the agent field for ADDMEMBER and REMOVEMEMBER queue events if a
2497    state_interface has been set.
2498
2499  * Add queue monitoring hints.  exten => 8501,hint,Queue:markq.
2500
2501  * App_queue will now play periodic announcements for the caller that
2502    holds the first position in the queue while waiting for answer.
2503
2504 SayUnixTime
2505 ------------------
2506  * Added 'j' option to SayUnixTime. SayUnixTime no longer auto jumps to extension
2507    when receiving DTMF.  Use the 'j' option to enable extension jumping. Also
2508    changed arguments to SayUnixTime so that every option is truly optional even
2509    when using multiple options (so that j option could be used without having to
2510    manually specify timezone and format) There are other benefits, e.g., format
2511    can now be used without specifying time zone as well.
2512
2513
2514 Voicemail
2515 ------------------
2516  * Addition of the VM_INFO function - see Function changes.
2517
2518  * The imapserver, imapport, and imapflags configuration options can now be
2519    overriden on a user by user basis.
2520
2521  * When voicemail plays a message's envelope with saycid set to yes, when
2522    reaching the caller id field it will play a recording of a file with the same
2523    base name as the sender's callerid if there is a similarly named file in
2524    <astspooldir>/recordings/callerids/
2525
2526  * Voicemails now contains a unique message identifier "msg_id", which is stored
2527    in the message envelope with the sound files.  IMAP backends will now store
2528    the message identifiers with a header of "X-Asterisk-VM-Message-ID".  ODBC
2529    backends will store the message identifier in a "msg_id" column.  See
2530    UPGRADE.txt for more information.
2531
2532  * Added VoiceMailPlayMsg application.  This application will play a single
2533    voicemail message from a mailbox.  The result of the application, SUCCESS or
2534    FAILED, is stored in the channel variable VOICEMAIL_PLAYBACKSTATUS.
2535
2536
2537 Functions
2538 ------------------
2539  * Hangup handlers can be attached to channels using the CHANNEL() function.
2540    Hangup handlers will run when the channel is hung up similar to the h
2541    extension. The hangup_handler_push option will push a GoSub compatible
2542    location in the dialplan onto the channel's hangup handler stack.  The
2543    hangup_handler_pop option will remove the last added location, and optionally
2544    replace it with a new GoSub compatible location.  The hangup_handler_wipe
2545    option will remove all locations on the stack, and optionally add a new
2546    location.
2547
2548  * The expression parser now recognizes the ABS() absolute value function,
2549    which will convert negative floating point values to positive values.
2550
2551  * FAXOPT(faxdetect) will enable a generic fax detect framehook for dialplan
2552    control of faxdetect.
2553
2554  * Addition of the VM_INFO function that can be used to retrieve voicemail
2555    user information, such as the email address and full name.
2556    The MAILBOX_EXISTS dialplan function has been deprecated in favour of
2557    VM_INFO.
2558
2559  * The REDIRECTING function now supports the redirecting original party id
2560    and reason.
2561
2562  * Two new functions have been added: FEATURE() and FEATUREMAP().  FEATURE()
2563    lets you set some of the configuration options from the [general] section
2564    of features.conf on a per-channel basis.  FEATUREMAP() lets you customize
2565    the key sequence used to activate built-in features, such as blindxfer,
2566    and automon.  See the built-in documentation for details.
2567
2568  * MESSAGE(from) for incoming SIP messages now returns "display-name" <uri>
2569    instead of simply the uri.  This is the format that MessageSend() can use
2570    in the from parameter for outgoing SIP messages.
2571
2572  * Added the PRESENCE_STATE function.  This allows retrieving presence state
2573    information from any presence state provider.  It also allows setting
2574    presence state information from a CustomPresence presence state provider.
2575    See AMI/CLI changes for related commands.
2576
2577  * Added the AMI_CLIENT function to make manager account attributes available
2578    to the dialplan. It currently supports returning the current number of
2579    active sessions for a given account.
2580
2581  * Added support for private party ID information to CALLERID, CONNECTEDLINE,
2582    and the REDIRECTING functions.
2583
2584
2585 Channel Drivers
2586 ------------------
2587
2588 chan_local
2589 ------------------
2590  * Added a manager event "LocalBridge" for local channel call bridges between
2591    the two pseudo-channels created.
2592
2593
2594 chan_dahdi
2595 ------------------
2596  * Added dialtone_detect option for analog ports to disconnect incoming
2597    calls when dialtone is detected.
2598
2599  * Added option colp_send to send ISDN connected line information.  Allowed
2600    settings are block, to not send any connected line information; connect, to
2601    send connected line information on initial connect; and update, to send
2602    information on any update during a call.  Default is update.
2603
2604  * Add options namedcallgroup and namedpickupgroup to support installations
2605    where a higher number of groups (>64) is required.
2606
2607  * Added support to use private party ID information with PRI calls.
2608
2609
2610 chan_motif
2611 ------------------
2612  * A new channel driver named chan_motif has been added which provides support for
2613    Google Talk and Jingle in a single channel driver. This new channel driver includes
2614    support for both audio and video, RFC2833 DTMF, all codecs supported by Asterisk,
2615    hold, unhold, and ringing notification. It is also compliant with the current Jingle
2616    specification, current Google Jingle specification, and the original Google Talk
2617    protocol.
2618
2619
2620 chan_ooh323
2621 ------------------
2622  * Added NAT support for RTP.  Setting in config is 'nat', which can be set
2623    globally and overriden on a peer by peer basis.
2624
2625  * Direct media functionality has been added. Options in config are:
2626    directmedia (directrtp) and directrtpsetup (earlydirect)
2627
2628  * ChannelUpdate events now contain a CallRef header.
2629
2630
2631 chan_sip
2632 ------------------
2633  * Asterisk will no longer substitute CID number for CID name in the display
2634    name field if CID number exists without a CID name. This change improves
2635    compatibility with certain device features such as Avaya IP500's directory
2636    lookup service.
2637
2638  * A new setting for autocreatepeer (autocreatepeer=persistent) allows peers
2639    created using that setting to not be removed during SIP reload.
2640
2641  * Added settings recordonfeature and recordofffeature.  When receiving an INFO
2642    request with a "Record:" header, this will turn the requested feature on/off.
2643    Allowed values are 'automon', 'automixmon', and blank to disable.  Note that
2644    dynamic features must be enabled and configured properly on the requesting
2645    channel for this to function properly.
2646
2647  * Add support to realtime for the 'callbackextension' option.
2648
2649  * When multiple peers exist with the same address, but differing
2650    callbackextension options, incoming requests that are matched by address
2651    will be matched to the peer with the matching callbackextension if it is
2652    available.
2653
2654  * Two new NAT options, auto_force_rport and auto_comedia, have been added
2655    which set the force_rport and comedia options automatically if Asterisk
2656    detects that an incoming SIP request crossed a NAT after being sent by
2657    the remote endpoint.
2658
2659  * The default global nat setting in sip.conf has been changed from force_rport
2660    to auto_force_rport.
2661
2662  * NAT settings are now a combinable list of options. The equivalent of the
2663    deprecated nat=yes is nat=force_rport,comedia. nat=no behaves as before.
2664
2665  * Adds an option send_diversion which can be disabled to prevent
2666    diversion headers from automatically being added to INVITE requests.
2667
2668  * Add support for lightweight NAT keepalive. If enabled a blank packet will
2669    be sent to the remote host at a given interval to keep the NAT mapping open.
2670    This can be enabled using the keepalive configuration option.
2671
2672  * Add option 'tonezone' to specify country code for indications.  This option
2673    can be set both globally and overridden for specific peers.
2674
2675  * The SIP Security Events Framework now supports IPv6.
2676
2677  * Add a new setting for directmedia, 'outgoing', to alleviate INVITE glares
2678    between multiple user agents. When set, for directmedia reinvites,
2679    Asterisk will not send an immediate reinvite on an incoming call leg. This
2680    option is useful when peered with another SIP user agent that is known to
2681    send immediate direct media reinvites upon call establishment.
2682
2683  * Add support for WebSocket transport. This can be configured using 'ws' or 'wss'
2684    as the transport.
2685
2686  * Add options subminexpiry and submaxexpiry to set limits of subscription
2687    timer independently from registration timer settings. The setting of the
2688    registration timer limits still is done by options minexpiry, maxexpiry
2689    and defaultexpiry. For backwards compatibility the setting of minexpiry
2690    and maxexpiry also is used to configure the subscription timer limits if
2691    subminexpiry and submaxexpiry are not set in sip.conf.
2692
2693  * Set registration timer limits to default values when reloading sip
2694    configuration and values are not set by configuration.
2695
2696  * Add options namedcallgroup and namedpickupgroup to support installations
2697    where a higher number of groups (>64) is required.
2698
2699  * When a MESSAGE request is received, the address the request was received from
2700    is now saved in the SIP_RECVADDR variable.
2701
2702  * Add ANI2/OLI parsing for SIP.  The "From" header in INVITE requests is now
2703    parsed for the presence of "isup-oli", "ss7-oli", or "oli" tags.  If present,
2704    the ANI2/OLI information is set on the channel, which can be retrieved using
2705    the CALLERID function.
2706
2707  * Peers can now be configured to support negotiation of ICE candidates using
2708    the setting icesupport.  See res_rtp_asterisk changes for more information.
2709
2710  * Added support for format attribute negotiation.  See the Codecs changes for
2711    more information.
2712
2713  * Extra headers specified with SIPAddHeader are sent with the REFER message
2714    when using Transfer application. See refer_addheaders in sip.conf.sample.
2715
2716  * Added support to use private party ID information with calls.
2717
2718  * Adds an option discard_remote_hold_retrieval that when set stops telling
2719    the peer to start music on hold.
2720
2721
2722 chan_skinny
2723 ------------------
2724  * Added skinny version 17 protocol support.
2725
2726
2727 chan_unistim
2728 --------------------
2729  * Added option 'dtmf_duration' allowing playback time of DTMF tones to be set
2730
2731  * Modified option 'date_format' to allow options to display date in 31Jan and Jan31
2732    formats as options 0 and 1. The previous options 0 and 1 now map to options 2 and 3
2733    as per the UNISTIM protocol.
2734
2735  * Fixed issues with dialtone not matching indications.conf and mute stopping rx
2736    as well as tx. Also fixed issue with call "Timer" displaying as French "Dur\E9e"
2737
2738  * Added ability to use multiple lines for a single phone.  This allows multiple
2739    calls to occur on a single phone, using callwaiting and switching between calls.
2740
2741  * Added option 'sharpdial' allowing end dialing by pressing # key
2742
2743  * Added option 'interdigit_timer' to control phone dial timeout
2744
2745  * Added options 'cwstyle', 'cwvolume' controlling callwaiting appearance
2746
2747  * Added global 'debug' option, that enables debug in channel driver
2748
2749  * Added ability to translate on-screen menu in multiple languages. Tested on
2750    Russian languages.  Supported encodings: ISO 8859-1, ISO 8859-2, ISO 8859-4,
2751    ISO 8859-5, ISO 2022-JP. Language controlled by 'language' and on-screen
2752    menu of phone
2753
2754  * In addition to English added French and Russian languages for on-screen menus
2755
2756  * Reworked dialing number input: added dialing by timeout, immediate dial on
2757    on dialplan compare, phone number length now not limited by screen size
2758
2759  * Added ability to pickup a call using features.conf defined value and
2760    on-screen key
2761
2762
2763 chan_mISDN:
2764 ------------------
2765  * Add options namedcallgroup and namedpickupgroup to support installations
2766    where a higher number of groups (>64) is required.
2767
2768  * Added support to use private party ID information with calls.
2769
2770
2771 Core
2772 ------------------
2773  * The minimum DTMF duration can now be configured in asterisk.conf
2774    as "mindtmfduration". The default value is (as before) set to 80 ms.
2775    (previously it was only available in source code)
2776
2777  * Named ACLs can now be specified in acl.conf and used in configurations that
2778    use ACLs. As a general rule, if some derivative of 'permit' or 'deny' is
2779    used to specify an ACL, a similar form of 'acl' will add a named ACL to the
2780    working ACL. In addition, some CLI commands have been added to provide
2781    show information and allow for module reloading - see CLI Changes.
2782
2783  * Rules in ACLs (specified using 'permit' and 'deny') can now contain multiple
2784    items (separated by commas), and items in the rule can be negated by prefixing
2785    them with '!'. This simplifies Asterisk Realtime configurations, since it is no
2786    longer necessray to control the order that the 'permit' and 'deny' columns are
2787    returned from queries.
2788
2789  * DUNDi now allows the built in variables ${NUMBER}, ${IPADDR} and ${SECRET} to
2790    be used within the dynamic weight attribute when specifying a mapping.
2791
2792  * CEL backends can now be configured to show "USER_DEFINED" in the EventName
2793    header, instead of putting the user defined event name there.  When enabled
2794    the UserDefType header is added for user defined events.  This feature is
2795    enabled with the setting show_user_defined.
2796
2797  * Macro has been deprecated in favor of GoSub.  For redirecting and connected
2798    line purposes use the following variables instead of their macro equivalents:
2799    REDIRECTING_SEND_SUB, REDIRECTING_SEND_SUB_ARGS, CONNECTED_LINE_SEND_SUB,
2800    CONNECTED_LINE_SEND_SUB_ARGS.  For CCSS, use cc_callback_sub instead of
2801    cc_callback_macro in channel configurations.
2802
2803  * Asterisk can now use a system-provided NetBSD editline library (libedit) if it
2804    is available.
2805
2806  * Call files now support the "early_media" option to connect with an outgoing
2807    extension when early media is received.
2808
2809  * Added support to use private party ID information with calls.
2810
2811
2812 AGI
2813 ------------------
2814  * A new channel variable, AGIEXITONHANGUP, has been added which allows
2815    Asterisk to behave like it did in Asterisk 1.4 and earlier where the
2816    AGI application would exit immediately after a channel hangup is detected.
2817
2818  * IPv6 addresses are now supported when using FastAGI (agi://).  Hostnames
2819    are resolved and each address is attempted in turn until one succeeds or
2820    all fail.
2821
2822
2823 AMI (Asterisk Manager Interface)
2824 ------------------
2825  * The originate action now has an option "EarlyMedia" that enables the
2826    call to bridge when we get early media in the call. Previously,
2827    early media was disregarded always when originating calls using AMI.
2828
2829  * Added setvar= option to manager accounts (much like sip.conf)
2830
2831  * Originate now generates an error response if the extension given is not found
2832    in the dialplan
2833
2834  * MixMonitor will now show IDs associated with the mixmonitor upon creating
2835    them if the i(variable) option is used. StopMixMonitor will accept
2836    MixMonitorID as an option to close specific MixMonitors.
2837
2838  * The SIPshowpeer manager action response field "SIP-Forcerport" has been
2839    updated to include information about peers configured with
2840    nat=auto_force_rport by returning "A" if auto_force_rport is set and nat is
2841    detected, and "a" if it is set and nat is not detected. "Y" and "N" are still
2842    returned if auto_force_rport is not enabled.
2843
2844  * Added SIPpeerstatus manager command which will generate PeerStatus events
2845    similar to the existing PeerStatus events found in chan_sip on demand.
2846
2847  * Hangup now can take a regular expression as the Channel option.  If you want
2848    to hangup multiple channels, use /regex/ as the Channel option.  Existing
2849    behavior to hanging up a single channel is unchanged, but if you pass a regex,
2850    the manager will send you a list of channels back that were hung up.
2851
2852  * Support for IPv6 addresses has been added.
2853
2854  * AMI Events can now be documented in the Asterisk source. Note that AMI event
2855    documentation is only generated when Asterisk is compiled using 'make full'.
2856    See the CLI section for commands to display AMI event information.
2857
2858  * The AMI Hangup event now includes the AccountCode header so you can easily
2859    correlate with AMI Newchannel events.
2860
2861  * The QueueMemberStatus, QueueMemberAdded, and QueueMember events now include
2862    the StateInterface of the queue member.
2863
2864  * Added AMI event SessionTimeout in the Call category that is issued when a
2865    call is terminated due to either RTP stream inactivity or SIP session timer
2866    expiration.
2867
2868  * CEL events can now contain a user defined header UserDefType.  See core
2869    changes for more information.
2870
2871  * OOH323 ChannelUpdate events now contain a CallRef header.
2872
2873  * Added PresenceState command.  This command will report the presence state for
2874    the given presence provider.
2875
2876  * Added Parkinglots command.  This will list all parking lots as a series of
2877    AMI Parkinglot events.
2878
2879  * Added MessageSend command.  This behaves in the same manner as the
2880    MessageSend application, and is a technolgoy agnostic mechanism to send out
2881    of call text messages.
2882
2883  * Added "message" class authorization.  This grants an account permission to
2884    send out of call messages.  Write-only.
2885
2886
2887 CLI
2888 -------------------
2889  * The "dialplan add include" command has been modified to create context a context
2890    if one does not already exist. For instance, "dialplan add include foo into bar"
2891    will create context "bar" if it does not already exist.
2892
2893  * A  "dialplan remove context" command has been added to remove a context from
2894    the dialplan
2895
2896  * The "mixmonitor list <channel>" command will now show MixMonitor ID, and the
2897    filenames of all running mixmonitors on a channel.
2898
2899  * The debug level of "pri set debug" is now a bitmask ranging from 0 to 15 if
2900    numeric instead of 0, 1, or 2.
2901
2902  * "stun show status" will show a table describing how the STUN client is
2903    behaving.
2904
2905  * "acl show [named acl]" will show information regarding a Named ACL.  The
2906    acl module can be reloaded with "reload acl".
2907
2908  * Added CLI command to display AMI event information - "manager show events",
2909    which shows a list of all known and documented AMI events, and "manager show
2910    event [event name]", which shows detail information about a specific AMI
2911    event.
2912
2913  * The result of the CLI command "queue show" now includes the state interface
2914    information of the queue member.
2915
2916  * The command "core set verbose" will now set a separate level of logging for
2917    each remote console without affecting any other console.
2918
2919  * Added command "cdr show pgsql status" to check connection status
2920
2921  * "sip show channel" will now display the complete route set.
2922
2923  * Added "presencestate list" command.  This command will list all custom
2924    presence states that have been set by using the PRESENCE_STATE dialplan
2925    function.
2926
2927  * Added "presencestate change <entity> <state>[,<subtype>[,message[,options]]]"
2928    command.  This changes a custom presence to a new state.
2929
2930
2931 Codecs
2932 -------------------
2933  * Codec lists may now be modified by the '!' character, to allow succinct
2934    specification of a list of codecs allowed and disallowed, without the
2935    requirement to use two different keywords.  For example, to specify all
2936    codecs except g729 and g723, one need only specify allow=all,!g729,!g723.
2937
2938  * Add support for parsing SDP attributes, generating SDP attributes, and
2939    passing it through. This support includes codecs such as H.263, H.264, SILK,
2940    and CELT. You are able to set up a call and have attribute information pass.
2941    This should help considerably with video calls.
2942
2943  * The iLBC codec can now use a system-provided iLBC library if one is installed,
2944    just like the GSM codec.
2945
2946 DUNDi changes
2947 -------------
2948  * Added CLI commands dundi show hints and dundi show cache which will list DUNDi
2949    'DONTASK' hints in the cache and list all DUNDi cache entires respectively.
2950
2951 Logging
2952 -------------------
2953  * Asterisk version and build information is now logged at the beginning of a
2954    log file.
2955
2956  * Threads belonging to a particular call are now linked with callids which get
2957    added to any log messages produced by those threads. Log messages can now be
2958    easily identified as involved with a certain call by looking at their call id.
2959    Call ids may also be attached to log messages for just about any case where
2960    it can be determined to be related to a particular call.
2961
2962  * Each logging destination and console now have an independent notion of the
2963    current verbosity level.  Logger.conf now allows an optional argument to
2964    the 'verbose' specifier, indicating the level of verbosity sent to that
2965    particular logging destination.  Additionally, remote consoles now each
2966    have their own verbosity level.  The command 'core set verbose' will now set
2967    a separate level for each remote console without affecting any other
2968    console.
2969
2970
2971 Music On Hold
2972 -------------------
2973  * Added 'announcement' option which will play at the start of MOH and between
2974    songs in modes of MOH that can detect transitions between songs (eg.
2975    files, mp3, etc).
2976
2977
2978 Parking
2979 -------------------
2980  * New per parking lot options: comebackcontext and comebackdialtime. See
2981    configs/features.conf.sample for more details.
2982
2983  * Channel variable PARKER is now set when comebacktoorigin is disabled in
2984    a parking lot.
2985
2986  * Channel variable PARKEDCALL is now set with the name of the parking lot
2987    when a timeout occurs.
2988
2989
2990 CDRs
2991 -------------------
2992
2993 CDR Postgresql Driver
2994 -------------------
2995  * Added command "cdr show pgsql status" to check connection status
2996
2997
2998 CDR Adaptive ODBC Driver
2999 -------------------
3000  * Added schema option for databases that support specifying a schema.
3001
3002
3003 Resource Modules
3004 -------------------
3005
3006 Calendars
3007 -------------------
3008  * A CALENDAR_SUCCESS=1/0 channel variable is now set to show whether or not
3009    CALENDAR_WRITE has completed successfully.
3010
3011
3012 res_rtp_asterisk
3013 -------------------
3014  * A new option, 'probation' has been added to rtp.conf
3015    RTP in strictrtp mode can now require more than 1 packet to exit learning
3016    mode with a new source (and by default requires 4). The probation option
3017    allows the user to change the required number of packets in sequence to any
3018    desired value. Use a value of 1 to essentially restore the old behavior.
3019    Also, with strictrtp on, Asterisk will now drop all packets until learning
3020    mode has successfully exited. These changes are based on how pjmedia handles
3021    media sources and source changes.
3022
3023  * Add support for ICE/STUN/TURN in res_rtp_asterisk.  This option can be
3024    enabled or disabled using the icesupport setting.  A variety of other
3025    settings have been introduced to configure STUN/TURN connections.
3026
3027
3028 res_corosync
3029 -------------------
3030  * A new module, res_corosync, has been introduced.  This module uses the
3031    Corosync cluster enginer (http://www.corosync.org) to allow a local cluster
3032    of Asterisk servers to both Message Waiting Indication (MWI) and/or
3033    Device State (presence) information.  This module is very similar to, and
3034    is a replacement for the res_ais module that was in previous releases of
3035    Asterisk.
3036
3037
3038 res_xmpp
3039 -------------------
3040  * This module adds a cleaned up, drop-in replacement for res_jabber called
3041    res_xmpp. This provides the same externally facing functionality but is
3042    implemented differently internally.  res_jabber has been deprecated in favor
3043    of res_xmpp; please see the UPGRADE.txt file for more information.
3044
3045
3046 Scripts
3047 -------------------
3048  * The safe_asterisk script has been updated to allow several of its parameters
3049    to be set from environment variables.  This also enables a custom run
3050    directory of Asterisk to be specified, instead of defaulting to /tmp.
3051
3052  * The live_ast script will now look for the LIVE_AST_BASE_DIR variable and use
3053    its value to determine the directory to assume is the top-level directory of
3054    the source tree.  If the variable is not set, it defaults to the current
3055    behavior and uses the current working directory.
3056
3057 ------------------------------------------------------------------------------
3058 --- Functionality changes from Asterisk 1.8 to Asterisk 10 -------------------
3059 ------------------------------------------------------------------------------
3060
3061 Text Messaging
3062 --------------
3063  * Asterisk now has protocol independent support for processing text messages
3064    outside of a call.  Messages are routed through the Asterisk dialplan.
3065    SIP MESSAGE and XMPP are currently supported.  There are options in
3066    jabber.conf and sip.conf to allow enabling these features.
3067      -> jabber.conf: see the "sendtodialplan" and "context" options.
3068      -> sip.conf: see the "accept_outofcall_message", "auth_message_requests"
3069         and "outofcall_message_context" options.
3070    The MESSAGE() dialplan function and MessageSend() application have been
3071    added to go along with this functionality.  More detailed usage information
3072    can be found on the Asterisk wiki (http://wiki.asterisk.org/).
3073  * If real-time text support (T.140) is negotiated, it will be preferred for
3074    sending text via the SendText application. For example, via SIP, messages
3075    that were once sent via the SIP MESSAGE request would be sent via RTP if
3076    T.140 text is negotiated for a call.
3077
3078 Parking
3079 -------
3080  * parkedmusicclass can now be set for non-default parking lots.
3081
3082 Asterisk Manager Interface
3083 --------------------------
3084  * PeerStatus now includes Address and Port.
3085  * Added Hold events for when the remote party puts the call on and off hold
3086    for chan_dahdi ISDN channels.
3087  * Added new action MeetmeListRooms to list active conferences (shows same
3088    data as "meetme list" at the CLI).
3089  * DAHDIShowChannels, SIPshowpeer, SIPpeers, and IAXpeers now contains a
3090    Description field that is set by 'description' in the channel configuration
3091    file.
3092  * Added Uniqueid header to UserEvent.
3093  * Added new action FilterAdd to control event filters for the current session.
3094    This requires the system permission and uses the same filter syntax as
3095    filters that can be defined in manager.conf
3096  * The Unlink event is now a Bridge event with Bridgestatus: Unlink. Previous
3097    versions had some instances of the event converted, but others were left
3098    as-is. All Unlink events should now be converted to Bridge events. The AMI
3099    protocol version number was incremented to 1.2 as a result of this change.
3100
3101 Asterisk HTTP Server
3102 --------------------------
3103  * The HTTP Server can bind to IPv6 addresses.
3104
3105 chan_dahdi
3106 --------------------------
3107  * Busy tone patterns featuring 2 silence and 2 tone lengths can now be used
3108    with busydetect.  usage example: busypattern=200,200,200,600
3109
3110 CLI Changes
3111 --------------------------
3112  * New 'gtalk show settings' command showing the current settings loaded from
3113    gtalk.conf.
3114  * The 'logger reload' command now supports an optional argument, specifying an
3115    alternate configuration file to use.
3116  * 'dialplan add extension' command will now automatically create a context if
3117    the specified context does not exist with a message indicated it did so.
3118  * 'sip show peers', 'iax show peers', and 'dahdi show peers' now contains a
3119    Description field which can be populated with 'description' in the channel
3120    configuration files (sip.conf, iax2.conf, and chan_dahdi.conf).
3121
3122 CDR
3123 --------------------------
3124  * The filter option in cdr_adaptive_odbc now supports negating the argument,
3125    thus allowing records which do NOT match the specified filter.
3126  * Added ability to log CONGESTION calls to CDR
3127
3128 CODECS
3129 --------------------------
3130  * Ability to define custom SILK formats in codecs.conf.
3131  * Addition of speex32 audio format with translation.
3132  * CELT codec pass-through support and ability to define
3133    custom CELT formats in codecs.conf.
3134  * Ability to read raw signed linear files with sample rates
3135    ranging from 8khz - 192khz.  The new file extensions introduced
3136    are .sln12, .sln24, .sln32, .sln44, .sln48, .sln96, .sln192.
3137  * Due to protocol limitations, channel drivers other than SIP (eg. IAX2, MGCP,
3138    Skinny, H.323, etc) can still only support the following codecs:
3139    Audio: ulaw, alaw, slin, slin16, g719, g722, g723, g726, g726aal2, g729, gsm,
3140           siren7, siren14, speex, speex16, ilbc, lpc10, adpcm
3141    Video: h261, h263, h263p, h264, mpeg4
3142    Image: jpeg, png
3143    Text:  red, t140
3144
3145 ConfBridge
3146 --------------------------
3147  * New highly optimized and customizable ConfBridge application capable of
3148    mixing audio at sample rates ranging from 8khz-96khz.
3149  * CONFBRIDGE dialplan function capable of creating dynamic ConfBridge user
3150    and bridge profiles on a channel.
3151  * CONFBRIDGE_INFO dialplan function capable of retrieving information
3152    about a conference such as locked status and number of parties, admins,
3153    and marked users.
3154  * Addition of video_mode option in confbridge.conf for adding video support
3155    into a bridge profile.
3156  * Addition of the follow_talker video_mode in confbridge.conf.  This video
3157    mode dynamically switches the video feed to always display the loudest talker
3158    supplying video in the conference.
3159
3160 Dialplan Variables
3161 ------------------
3162  * Added ASTETCDIR, ASTMODDIR, ASTVARLIBDIR, ASTDBDIR, ASTKEYDIR, ASTDATADIR,
3163    ASTAGIDIR, ASTSPOOLDIR, ASTRUNDIR, ASTLOGDIR which hold the equivalent
3164    variables from asterisk.conf.
3165
3166 Dialplan Functions
3167 ------------------
3168  * Addition of the JITTERBUFFER dialplan function. This function allows
3169    for jitterbuffering to occur on the read side of a channel.  By using
3170    this function conference applications such as ConfBridge and MeetMe can
3171    have the rx streams jitterbuffered before conference mixing occurs.
3172  * Added DB_KEYS, which lists the next set of keys in the Asterisk database
3173    hierarchy.
3174  * Added STRREPLACE function.  This function let's the user search a variable
3175    for a given string to replace with another string as many times as the
3176    user specifies or just throughout the whole string.
3177  * Added option to CHANNEL(pickupgroup) allow reading and setting the pickupgroup of channel.
3178  * Mark VALID_EXTEN() deprecated in favor of DIALPLAN_EXISTS()
3179  * Added extensions to chan_ooh323 in function CHANNEL()
3180
3181 libpri channel driver (chan_dahdi) DAHDI changes
3182 --------------------------
3183  * Added moh_signaling option to specify what to do when the channel's bridged
3184    peer puts the ISDN channel on hold.
3185  * Added display_send and display_receive options to control how the display ie
3186    is handled.  To send display text from the dialplan use the SendText()
3187    application when the option is enabled.
3188  * Added mcid_send option to allow sending a MCID request on a span.
3189
3190 Calendaring
3191 --------------------------
3192  * Added setvar option to calendar.conf to allow setting channel variables on
3193    notification channels.
3194  * Added "calendar show types" CLI command to list registered calendar
3195    connectors.
3196
3197 MixMonitor
3198 --------------------------
3199  * Added two new options, r and t with file name arguments to record
3200    single direction (unmixed) audio recording separate from the bidirectional
3201    (mixed) recording.  The mixed file name argument is optional now as long
3202    as at least one recording option is used.
3203
3204 FollowMe
3205 --------------------------
3206  * Added a new option, l, which will disable local call optimization for
3207    channels involved with the FollowMe thread.  Use this option to improve
3208    compatability for a FollowMe call with certain dialplan apps, options, and
3209    functions.
3210
3211 Meetme
3212 --------------------------
3213  * Added option "k" that will automatically close the conference when there's
3214    only one person left when a user exits the conference.
3215
3216 CEL
3217 --------------------------
3218  * cel_pgsql now supports the 'extra' column for data added using the
3219    CELGenUserEvent() application.
3220
3221 pbx_lua
3222 --------------------------
3223  * Support for defining hints has been added to pbx_lua.  See the 'hints' table
3224    in the sample extensions.lua file for syntax details.
3225  * Applications that perform jumps in the dialplan such as Goto will now
3226    execute properly.  When pbx_lua detects that the context, extension, or
3227    priority we are executing on has changed it will immediately return control
3228    to the asterisk PBX engine.  Currently the engine cannot detect a Goto to
3229    the priority after the currently executing priority.
3230  * An autoservice is now started by default for pbx_lua channels.  It can be
3231    stopped and restarted using the autoservice_stop() and autoservice_start()
3232    functions.
3233
3234 res_fax
3235 --------------------------
3236  * The ReceiveFAXStatus and SendFAXStatus manager events have been consolidated
3237    into a FAXStatus event with an 'Operation' header that will be either
3238    'send', 'receive', and 'gateway'.
3239  * T.38 gateway functionality has been added to res_fax (and res_fax_spandsp).
3240    Set FAXOPT(gateway)=yes to enable this functionality on a channel. This
3241    feature will handle converting a fax call between an audio T.30 fax terminal
3242    and an IFP T.38 fax terminal.
3243
3244 SIP Changes
3245 -----------
3246  * Add T38 support for REJECTED state where T.38 Negotiation is explicitly rejected.
3247  * Add option encryption_taglen to set auth taglen only 32 and 80 are supported currently.
3248  * SIP now generates security events using the Security Events Framework for REGISTER and INVITE.
3249
3250 Queue changes
3251 -------------
3252  * Added general option negative_penalty_invalid default off. when set
3253    members are seen as invalid/logged out when there penalty is negative.
3254    for realtime members when set remove from queue will set penalty to -1.
3255  * Added queue option autopausedelay when autopause is enabled it will be
3256    delayed for this number of seconds since last successful call if there
3257    was no prior call the agent will be autopaused immediately.
3258  * Added member option ignorebusy this when set and ringinuse is not
3259    will allow per member control of multiple calls as ringinuse does for
3260    the Queue.
3261
3262 Applications
3263 ------------
3264  * Added 'v' option to MeetMe to play voicemail greetings when a user joins/leaves
3265    a MeetMe conference
3266  * Added 'k' option to MeetMe to automatically kill the conference when there's only
3267    one participant left (much like a normal call bridge)
3268  * Added extra argument to Originate to set timeout.
3269
3270 Asterisk Database
3271 -----------------
3272  * The internal Asterisk database has been switched from Berkeley DB 1.86 to
3273    SQLite 3. An existing Berkeley astdb file can be converted with the astdb2sqlite3
3274    utility in the UTILS section of menuselect. If an existing astdb is found and no
3275    astdb.sqlite3 exists, astdb2sqlite3 will be compiled automatically. Asterisk will
3276    convert an existing astdb to the SQLite3 version automatically at runtime.
3277
3278 Asterisk Modules
3279 ----------------
3280  * Modules marked as deprecated are no longer marked as building by default. Enabling
3281    these modules is still available via menuselect.
3282
3283 IAX2 Changes
3284 ------------
3285  * authdebug is now disabled by default. To enable this functionaility again
3286    set authdebug = yes in iax.conf.
3287
3288 RTP Changes
3289 -----------
3290  * The rtp.conf setting "strictrtp" is now enabled by default. In previous
3291    releases it was disabled.
3292
3293 PBX Core
3294 --------
3295  * The PBX core previously made a call with a non-existing extension test for
3296    extension s@default and jump there if the extension existed.
3297    This was a bad default behaviour and violated the principle of least surprise.
3298    It has therefore been changed in this release. It may affect some
3299    applications and configurations that rely on this behaviour. Most channel
3300    drivers have avoided this for many releases by testing whether the extension
3301    called exists before starting the PBX and generating a local error.
3302    This behaviour still exists and works as before.
3303
3304    Extension "s" is used when no extension is given in a channel driver,
3305    like immediate answer in DAHDI or calling to a domain with no user part
3306    in a SIP uri.
3307
3308 ------------------------------------------------------------------------------
3309 --- Functionality changes from Asterisk 1.6.2 to Asterisk 1.8 ----------------
3310 ------------------------------------------------------------------------------
3311
3312 SIP Changes
3313 -----------
3314  * Due to potential username discovery vulnerabilities, the 'nat' setting in sip.conf
3315    now defaults to force_rport. It is very important that phones requiring nat=no be
3316    specifically set as such instead of relying on the default setting. If at all
3317    possible, all devices should have nat settings configured in the general section as
3318    opposed to configuring nat per-device.
3319  * Added preferred_codec_only option in sip.conf. This feature limits the joint
3320    codecs sent in response to an INVITE to the single most preferred codec.
3321  * Added SIP_CODEC_OUTBOUND dialplan variable which can be used to set the codec
3322    to be used for the outgoing call. It must be one of the codecs configured
3323    for the device.
3324  * Added tlsprivatekey option to sip.conf.  This allows a separate .pem file
3325    to be used for holding a private key.  If tlsprivatekey is not specified,
3326    tlscertfile is searched for both public and private key.
3327  * Added tlsclientmethod option to sip.conf.  This allows the protocol for
3328    outbound client connections to be specified.
3329  * The sendrpid parameter has been expanded to include the options
3330    'rpid' and 'pai'. Setting sendrpid to 'rpid' will cause Remote-Party-ID
3331    header to be sent (equivalent to setting sendrpid=yes) and setting
3332    sendrpid to 'pai' will cause P-Asserted-Identity header to be sent.
3333  * The 'ignoresdpversion' behavior has been made automatic when the SDP received
3334    is in response to a T.38 re-INVITE that Asterisk initiated. In this situation,
3335    since the call will fail if Asterisk does not process the incoming SDP, Asterisk
3336    will accept the SDP even if the SDP version number is not properly incremented,
3337    but will generate a warning in the log indicating that the SIP peer that sent
3338    the SDP should have the 'ignoresdpversion' option set.
3339  * The 'nat' option has now been been changed to have yes, no, force_rport, and
3340    comedia as valid values. Setting it to yes forces RFC 3581 behavior and enables
3341    symmetric RTP support. Setting it to no only enables RFC 3581 behavior if the
3342    remote side requests it and disables symmetric RTP support. Setting it to
3343    force_rport forces RFC 3581 behavior and disables symmetric RTP support.
3344    Setting it to comedia enables RFC 3581 behavior if the remote side requests it
3345    and enables symmetric RTP support.
3346  * Slave SIP channels now set HASH(SIP_CAUSE,<slave-channel-name>) on each
3347    response.  This permits the master channel to know how each channel dialled
3348    in a multi-channel setup resolved in an individual way. This carries a
3349    performance penalty and can be disabled in sip.conf using the
3350    'storesipcause' option.
3351  * Added 'externtcpport' and 'externtlsport' options to allow custom port
3352    configuration for the externip and externhost options when tcp or tls is used.
3353  * Added support for message body (stored in content variable) to SIP NOTIFY message
3354    accessible via AMI and CLI.
3355  * Added 'media_address' configuration option which can be used to explicitly specify
3356    the IP address to use in the SDP for media (audio, video, and text) streams.
3357  * Added 'unsolicited_mailbox' configuration option which specifies the virtual mailbox
3358    that the new/old count should be stored on if an unsolicited MWI NOTIFY message is
3359    received.
3360  * Added 'use_q850_reason' configuration option for generating and parsing
3361    if available  Reason: Q.850;cause=<cause code> header. It is implemented
3362    in some gateways for better passing PRI/SS7 cause codes via SIP.
3363  * When dialing SIP peers, a new component may be added to the end of the dialstring
3364    to indicate that a specific remote IP address or host should be used when dialing
3365    the particular peer. The dialstring format is SIP/peer/exten/host_or_IP.
3366  * SRTP SDES support for encrypting calls to/from Asterisk over SIP. The
3367    ability to selectively force bridged channels to also be encrypted is also
3368    implemented. Branching in the dialplan can be done based on whether or not
3369    a channel has secure media and/or signaling.
3370  * Added directmediapermit/directmediadeny to limit which peers can send direct media
3371    to each other
3372  * Added the 'snom_aoc_enabled' option to turn on support for sending Advice of
3373    Charge messages to snom phones.
3374  * Added support for G.719 media streams.
3375  * Added support for 16khz signed linear media streams.
3376  * SIP is now able to bind to and communicate with IPv6 addresses. In addition,
3377    RTP has been outfitted with the same abilities.
3378  * Added support for setting the Max-Forwards: header in SIP requests. Setting is
3379    available in device configurations as well as in the dial plan.
3380  * Addition of the 'subscribe_network_change' option for turning on and off
3381    res_stun_monitor module support in chan_sip.
3382  * Addition of the 'auth_options_requests' option for turning on and off
3383    authentication for OPTIONS requests in chan_sip.
3384
3385 Configuration files
3386 -------------------
3387  * Add #tryinclude statement for config files.  This provides the same
3388    functionality as the #include statement however an asterisk module will
3389    still load if the filename does not exist.  Using the #include statement
3390    Asterisk will not allow the module to load.
3391
3392 IAX2 Changes
3393 -----------
3394  * Added rtsavesysname option into iax.conf to allow the systname to be saved
3395    on realtime updates.
3396  * Added the ability for chan_iax2 to inform the dialplan whether or not
3397    encryption is being used. This interoperates with the SIP SRTP implementation
3398    so that a secure SIP call can be bridged to a secure IAX call when the
3399    dialplan requires bridged channels to be "secure".
3400  * Addition of the 'subscribe_network_change' option for turning on and off
3401    res_stun_monitor module support in chan_iax.
3402
3403
3404 MGCP Changes
3405 ------------
3406  * Added ability to preset channel variables on indicated lines with the setvar
3407    configuration option.  Also, clearvars=all resets the list of variables back
3408    to none.
3409  * PacketCable NCS 1.0 support has been added for Docsis/Eurodocsis Networks.
3410    See configs/res_pktccops.conf for more information.
3411
3412 XMPP Google Talk/Jingle changes
3413 -------------------------------
3414   * Added the externip option to gtalk.conf.
3415   * Added the stunaddr option to gtalk.conf which allows for the automatic
3416     retrieval of the external ip from a stun server.
3417
3418 Applications
3419 ------------
3420  * Added 'p' option to PickupChan() to allow for picking up channel by the first
3421    match to a partial channel name.
3422  * Added .m3u support for Mp3Player application.
3423  * Added progress option to the app_dial D() option.  When progress DTMF is
3424    present, those values are sent immediately upon receiving a PROGRESS message
3425    regardless if the call has been answered or not.
3426  * Added functionality to the app_dial F() option to continue with execution
3427    at the current location when no parameters are provided.
3428  * Added the 'a' option to app_dial to answer the calling channel before any
3429    announcements or macros are executed.
3430  * Modified app_dial to set answertime when the called channel answers even if
3431    the called channel hangs up during playback of an announcement.
3432  * Modified app_dial 'r' option to support an additional parameter to play an
3433    indication tone from indications.conf
3434  * Added c() option to app_chanspy. This option allows custom DTMF to be set
3435    to cycle through the next available channel.  By default this is still '*'.
3436  * Added x() option to app_chanspy.  This option allows DTMF to be set to
3437    exit the application.
3438  * The Voicemail application has been improved to automatically ignore messages
3439    that only contain silence.
3440  * If you set maxmsg to 0 in voicemail.conf, Voicemail will consider the
3441    associated mailbox(es) to be greetings-only.
3442  * The ChanSpy application now has the 'S' option, which makes the application
3443    automatically exit once it hits a point where no more channels are available
3444    to spy on.
3445  * The ChanSpy application also now has the 'E' option, which spies on a single
3446    channel and exits when that channel hangs up.
3447  * The MeetMe application now turns on the DENOISE() function by default, for
3448    each participant.  In our tests, this has significantly decreased background
3449    noise (especially noisy data centers).
3450  * Voicemail now permits storage of secrets in a separate file, located in the
3451    spool directory of each individual user.  The control for this is located in
3452    the "passwordlocation" option in voicemail.conf.  Please see the sample
3453    configuration for more information.
3454  * The ChanIsAvail application now exposes the returned cause code using a separate
3455    variable, AVAILCAUSECODE, instead of overwriting the device state in AVAILSTATUS.
3456  * Added 'd' option to app_followme.  This option disables the "Please hold"
3457    announcement.
3458  * Added 'y' option to app_record. This option enables a mode where any DTMF digit
3459    received will terminate recording.
3460  * Voicemail now supports per mailbox settings for folders when using IMAP storage.
3461    Previously the folder could only be set per context, but has now been extended
3462    using the imapfolder option.
3463  * Voicemail now supports per mailbox settings for nextaftercmd and minsecs.
3464  * Voicemail now allows the pager date format to be specified separately from the
3465    email date format.
3466  * New applications JabberJoin, JabberLeave, and JabberSendGroup have been added
3467    to allow joining, leaving, and sending text to group chats.
3468  * MeetMe has a new option 'G' to play an announcement before joining a conference.
3469  * Page has a new option 'A(x)' which will playback an announcement simultaneously
3470    to all paged phones (and optionally excluding the caller's one using the new
3471    option 'n') before the call is bridged.
3472  * The 'f' option to Dial has been augmented to take an optional argument. If no
3473    argument is provided, the 'f' option works as it always has. If an argument is
3474    provided, then the connected party information of all outgoing channels created
3475    during the Dial will be set to the argument passed to the 'f' option.
3476  * Dial now inherits the GOSUB_RETVAL from the peer, when the U() option runs a
3477    Gosub on the peer.
3478  * The OSP lookup application adds in/outbound network ID, optional security,
3479    number portability, QoS reporting, destination IP port, custom info and service
3480    type features.
3481  * Added new application VMSayName that will play the recorded name of the voicemail
3482    user if it exists, otherwise will play the mailbox number.
3483  * Added custom device states to ConfBridge bridges.  Use 'confbridge:<name>' to
3484    retrieve state for a particular bridge, where <name> is the conference name
3485  * app_directory now allows exiting at any time using the operator or pound key.
3486  * Voicemail now supports setting a locale per-mailbox.
3487  * Two new applications are provided for declining counting phrases in multiple
3488    languages.  See the application notes for SayCountedNoun and SayCountedAdj for
3489    more information.
3490  * Voicemail now runs the externnotify script when pollmailboxes is activated and
3491    notices a change.
3492  * Voicemail now includes rdnis within msgXXXX.txt file.
3493  * ExternalIVR now supports IPv6 addresses.
3494  * Added 'D' command to ExternalIVR. Details are available on the Asterisk wiki
3495    at https://wiki.asterisk.org/wiki/x/oQBB
3496  * ParkedCall and Park can now specify the parking lot to use.
3497
3498 Dialplan Functions
3499 ------------------
3500  * SRVQUERY and SRVRESULT functions added. This can be used to query and iterate
3501    over SRV records associated with a specific service. From the CLI, type
3502    'core show function SRVQUERY' and 'core show function SRVRESULT' for more
3503    details on how these may be used.
3504  * PITCH_SHIFT dialplan function added. This function can be used to modify the
3505    pitch of a channel's tx and rx audio streams.
3506  * Added new dialplan functions CONNECTEDLINE and REDIRECTING which permits
3507    setting various connected line and redirecting party information.
3508  * CALLERID and CONNECTEDLINE dialplan functions have been extended to
3509    support ISDN subaddressing.
3510  * The CHANNEL() function now supports the "name" and "checkhangup" options.
3511  * For DAHDI channels, the CHANNEL() dialplan function now allows
3512    the dialplan to request changes in the configuration of the active
3513    echo canceller on the channel (if any), for the current call only.
3514    The syntax is:
3515
3516    exten => s,n,Set(CHANNEL(echocan_mode)=off)
3517
3518    The possible values are:
3519
3520      on - normal mode (the echo canceller is actually reinitialized)
3521      off - disabled
3522      fax - FAX/data mode (NLP disabled if possible, otherwise completely
3523            disabled)
3524      voice - voice mode (returns from FAX mode, reverting the changes that
3525              were made when FAX mode was requested)
3526  * Added new dialplan function MASTER_CHANNEL(), which permits retrieving
3527    and setting variables on the channel which created the current channel.
3528    Administrators should take care to avoid naming conflicts, when multiple
3529    channels are dialled at once, especially when used with the Local channel
3530    construct (which all could set variables on the master channel).  Usage
3531    of the HASH() dialplan function, with the key set to the name of the slave
3532    channel, is one approach that will avoid conflicts.
3533  * Added new dialplan function MUTEAUDIO() for muting inbound and/or outbound
3534    audio in a channel.
3535  * func_odbc now allows multiple row results to be retrieved without using
3536    mode=multirow.  If rowlimit is set, then additional rows may be retrieved
3537    from the same query by using the name of the function which retrieved the
3538    first row as an argument to ODBC_FETCH().
3539  * Added JABBER_RECEIVE, which permits receiving XMPP messages from the
3540    dialplan. This function returns the content of the received message.
3541  * Added REPLACE, which searches a given variable name for a set of characters,
3542    then either replaces them with a single character or deletes them.
3543  * Added PASSTHRU, which literally passes the same argument back as its return
3544    value.  The intent is to be able to use a literal string argument to
3545    functions that currently require a variable name as an argument.
3546  * HASH-associated variables now can be inherited across channel creation, by
3547    prefixing the name of the hash at assignment with the appropriate number of
3548    underscores, just like variables.
3549  * GROUP_MATCH_COUNT has been improved to allow regex matching on category
3550  * CHANNEL(secure_bridge_signaling) and CHANNEL(secure_bridge_media) to set/get
3551    whether or not channels that are bridged to the current channel will be
3552    required to have secure signaling and/or media.
3553  * CHANNEL(secure_signaling) and CHANNEL(secure_media) to get whether or not
3554    the current channel has secure signaling and/or media.
3555  * For DAHDI/ISDN channels, the CHANNEL() dialplan function now supports the
3556    "no_media_path" option.
3557    Returns "0" if there is a B channel associated with the call.
3558    Returns "1" if no B channel is associated with the call.  The call is either
3559    on hold or is a call waiting call.