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