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