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