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