mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	
		
			
	
	
		
			8365 lines
		
	
	
		
			378 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			8365 lines
		
	
	
		
			378 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | ============================================================================== | ||
|  | === | ||
|  | === THIS FILE IS AUTOMATICALLY GENERATED DURING THE RELEASE | ||
|  | === PROCESS. DO NOT MAKE CHANGES HERE. INSTEAD, REFER TO | ||
|  | === doc/CHANGES-staging/README.md FOR MORE DETAILS. | ||
|  | === | ||
|  | === This file documents the new and/or enhanced functionality added in | ||
|  | === the Asterisk versions listed below. This file does NOT include | ||
|  | === changes in behavior that would not be backwards compatible with | ||
|  | === previous versions; for that information see the UPGRADE.txt file | ||
|  | === and the other UPGRADE files for older releases. | ||
|  | === | ||
|  | ============================================================================== | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.16.0 to Asterisk 18.17.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | app_broadcast | ||
|  | ------------------ | ||
|  |  * A Broadcast application is now available which allows | ||
|  |    for asynchronous one-to-many and many-to-one channel audio. | ||
|  | 
 | ||
|  | app_directory | ||
|  | ------------------ | ||
|  |  * A new option 's' has been added to the Directory() application that | ||
|  |    will skip calling the extension and instead set the extension as | ||
|  |    DIRECTORY_EXTEN channel variable. | ||
|  | 
 | ||
|  | app_read | ||
|  | ------------------ | ||
|  |  * A new option 'e' has been added to allow Read() to return the | ||
|  |    terminator as the dialed digits in the case where only the terminator | ||
|  |    is entered. | ||
|  | 
 | ||
|  | app_senddtmf | ||
|  | ------------------ | ||
|  |  * A new option has been added to SendDTMF() which will answer the | ||
|  |    specified channel if it is not already up. If no channel is specified, | ||
|  |    the current channel will be answered instead. | ||
|  | 
 | ||
|  | app_signal | ||
|  | ------------------ | ||
|  |  * Adds Signal and WaitForSignal applications | ||
|  |    which can be used for signaling or as a | ||
|  |    simple message queue in the dialplan. | ||
|  | 
 | ||
|  | func_json | ||
|  | ------------------ | ||
|  |  * Additional parsing capabilities have been added to the | ||
|  |    JSON_DECODE function, including support for arrays | ||
|  |    and recursive indexing. | ||
|  | 
 | ||
|  | res_phoneprov | ||
|  | ------------------ | ||
|  |  * On multihomed Asterisk servers with dynamic SERVER template variables, | ||
|  |    reloading this module is no longer required when re-provisioning your | ||
|  |    phone to another interface address (e.g. when moving between VLANs.) | ||
|  | 
 | ||
|  | res_pjsip_rfc3326 | ||
|  | ------------------ | ||
|  |  * Add ability to set HANGUPCAUSE when SIP causecode received in BYE Reason header (in | ||
|  |    addition to currently supported Q.850). The first header found will be used to set | ||
|  |    the HANGUPCAUSE variable. | ||
|  | 
 | ||
|  | res_pjsip_session | ||
|  | ------------------ | ||
|  |  * The overlap_context option now allows explicitly | ||
|  |    specifying a context to use for overlap dialing matches. | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * This module has been updated to provide additional | ||
|  |    quality statistics in the form of an Asterisk | ||
|  |    Media Experience Score.  The score is available using | ||
|  |    the same mechanisms you'd use to retrieve jitter, loss, | ||
|  |    and rtt statistics.  For more information about the | ||
|  |    score and how to retrieve it, see | ||
|  |    https://wiki.asterisk.org/wiki/display/AST/Media+Experience+Score | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.15.0 to Asterisk 18.16.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * The AOCMessage action can now be used to generate AOC-S messages. | ||
|  | 
 | ||
|  | Add support for named capture agent. | ||
|  | ------------------ | ||
|  |  * A name for the capture agent can now be specified | ||
|  |    using the capture_name option which, if specified, | ||
|  |    will be sent to the HEP server. | ||
|  | 
 | ||
|  | app_if | ||
|  | ------------------ | ||
|  |  * Adds the If, ElseIf, Else, EndIf, and ExitIf applications | ||
|  |    for conditional execution of a block of code. | ||
|  | 
 | ||
|  | app_mixmonitor | ||
|  | ------------------ | ||
|  |  * The d option for MixMonitor now allows deleting | ||
|  |    the original recording when MixMonitor exits, | ||
|  |    which can be useful when MixMonitor copies it | ||
|  |    somewhere else before exiting. | ||
|  | 
 | ||
|  |  * Adds the c option to use the real Caller ID on | ||
|  |    the channel in voicemail recordings as opposed | ||
|  |    to the Connected Line. | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * The voicemail user option attachextrecs can | ||
|  |    now be set to control whether external recordings | ||
|  |    trigger voicemail email notifications. | ||
|  | 
 | ||
|  | cdr | ||
|  | ------------------ | ||
|  |  * Two new options have been added which allow | ||
|  |    bridging and dial state changes to be ignored | ||
|  |    in CDRs, which can be useful if a single CDR | ||
|  |    is desired for a channel. | ||
|  | 
 | ||
|  | chan_dahdi | ||
|  | ------------------ | ||
|  |  * FXO channels (FXS signaled) that don't use callerid or | ||
|  |    distinctive ring detection can now be configured | ||
|  |    to enter the dialplan immediately using immediate=yes, | ||
|  |    instead of waiting for at least one ring. | ||
|  | 
 | ||
|  | pbx_builtins | ||
|  | ------------------ | ||
|  |  * It is now possible to not wait for media on | ||
|  |    a channel when answering it using Answer, | ||
|  |    by specifying the i option. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Added options "security_negotiation" and "security_mechanisms" to pjsip | ||
|  |    endpoints and registrations. "security_negotiation" can be set to "no" (default) | ||
|  |    or "mediasec", and "security_mechanisms" can be a list of comma-separated | ||
|  |    security_mechanisms in the form defined by RFC 3329 section 2.2. | ||
|  | 
 | ||
|  |  * A new option named "all_codecs_on_empty_reinvite" has been added to the | ||
|  |    global section. When this option is enabled, on reception of a re-INVITE | ||
|  |    without SDP, Asterisk will send an SDP offer in the 200 OK response containing | ||
|  |    all configured codecs on the endpoint, instead of simply those that have | ||
|  |    already been negotiated. RFC 3261 specifies this as a SHOULD requirement. | ||
|  |    The default value is "off". | ||
|  | 
 | ||
|  | res_pjsip_aoc | ||
|  | ------------------ | ||
|  |  * Added res_pjsip_aoc which gives chan_pjsip the ability to send Advice-of-Charge messages. | ||
|  |    A new endpoint option, send_aoc, controls this. | ||
|  | 
 | ||
|  | res_pjsip_header_funcs | ||
|  | ------------------ | ||
|  |  * The new PJSIP_HEADER_PARAM function now fully supports both | ||
|  |    URI and header parameters. Both reading and writing | ||
|  |    parameters are supported. | ||
|  | 
 | ||
|  | res_pjsip_logger | ||
|  | ------------------ | ||
|  |  * SIP messages can now be filtered by SIP request method | ||
|  |    (INVITE, CANCEL, ACK, BYE, REGISTER, OPTION, | ||
|  |    SUBSCRIBE, NOTIFY, PUBLISH, INFO, and MESSAGE), | ||
|  |    allowing for more granular debugging to be done | ||
|  |    in the CLI. This applies to requests but not responses. | ||
|  | 
 | ||
|  | res_pjsip_notify | ||
|  | ------------------ | ||
|  |  * Allows using the config options in pjsip_notify.conf | ||
|  |    from AMI actions as with the existing CLI commands. | ||
|  | 
 | ||
|  | res_tonedetect | ||
|  | ------------------ | ||
|  |  * The TONE_DETECT function now supports | ||
|  |    detection of audible ringback tone | ||
|  |    using the p option. | ||
|  | 
 | ||
|  | xmldocs | ||
|  | ------------------ | ||
|  |  * The XML documentation can now be reloaded without restarting | ||
|  |    Asterisk, which makes it possible to load new modules that | ||
|  |    enforce documentation without restarting Asterisk. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.14.0 to Asterisk 18.15.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | New EXPORT function | ||
|  | ------------------ | ||
|  |  * A new function, EXPORT, allows writing variables | ||
|  |    and functions on other channels, the complement | ||
|  |    of the IMPORT function. | ||
|  | 
 | ||
|  | app_amd | ||
|  | ------------------ | ||
|  |  * An audio file to play during AMD processing can | ||
|  |    now be specified to the AMD application or configured | ||
|  |    in the amd.conf configuration file. | ||
|  | 
 | ||
|  | app_bridgewait | ||
|  | ------------------ | ||
|  |  * Adds the n option to not answer the channel when | ||
|  |    the BridgeWait application is called. | ||
|  | 
 | ||
|  | features | ||
|  | ------------------ | ||
|  |  * The Bridge application now has the n "no answer" option | ||
|  |    that can be used to prevent the channel from being | ||
|  |    automatically answered prior to bridging. | ||
|  | 
 | ||
|  | func_strings | ||
|  | ------------------ | ||
|  |  * Three new functions, TRIM, LTRIM, and RTRIM, are | ||
|  |    now available for trimming leading and trailing | ||
|  |    whitespace. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new option named "peer_supported" has been added to the endpoint option | ||
|  |    100rel. When set to this option, Asterisk sends provisional responses | ||
|  |    reliably if the peer supports it. If the peer does not support reliable | ||
|  |    provisional responses, Asterisk sends them normally. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.14.0 to Asterisk 18.15.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Transfer feature | ||
|  | ------------------ | ||
|  |  * The following capabilities have been added to the | ||
|  |    transfer feature: | ||
|  | 
 | ||
|  |    - The transfer initiation announcement prompt can | ||
|  |    now be customized in features.conf. | ||
|  | 
 | ||
|  |    - The TRANSFER_EXTEN variable now can be set on the | ||
|  |    transferer's channel in order to allow the transfer | ||
|  |    function to automatically attempt to go to the extension | ||
|  |    contained in this variable, if it exists. The transfer | ||
|  |    context behavior is not changed (TRANSFER_CONTEXT is used | ||
|  |    if it exists; otherwise the default context is used). | ||
|  | 
 | ||
|  | app_confbridge | ||
|  | ------------------ | ||
|  |  * Adds the end_marked_any option which can be used | ||
|  |    to kick users from a conference after any | ||
|  |    marked user leaves (including marked users). | ||
|  | 
 | ||
|  | locks | ||
|  | ------------------ | ||
|  |  * A new AMI event, DeadlockStart, is now available | ||
|  |    when Asterisk is compiled with DETECT_DEADLOCKS, | ||
|  |    and can indicate that a deadlock has occured. | ||
|  | 
 | ||
|  | res_geolocation | ||
|  | ------------------ | ||
|  |  * Added 4 built-in profiles: | ||
|  |      "<prefer_config>" | ||
|  |      "<discard_config>" | ||
|  |      "<prefer_incoming>" | ||
|  |      "<discard_incoming>" | ||
|  |    The profiles are empty except for having their precedence | ||
|  |    set. | ||
|  | 
 | ||
|  |    Added profile parameter "suppress_empty_ca_elements" that | ||
|  |    will cause Civic Address elements that are empty to be | ||
|  |    suppressed from the outgoing PIDF-LO document. | ||
|  | 
 | ||
|  |    You can now specify the location object's format, location_info, | ||
|  |    method, location_source and confidence parameters directly on | ||
|  |    a profile object for simple scenarios where the location | ||
|  |    information isn't common with any other profiles.  This is | ||
|  |    mutually exclusive with setting location_reference on the | ||
|  |    profile. | ||
|  | 
 | ||
|  |    Added an 'a' option to the GEOLOC_PROFILE function to allow | ||
|  |    variable lists like location_info_refinement to be appended | ||
|  |    to instead of replacing the entire list. | ||
|  | 
 | ||
|  |    Added an 'r' option to the GEOLOC_PROFILE function to resolve all | ||
|  |    variables before a read operation and after a Set operation. | ||
|  | 
 | ||
|  | res_musiconhold_answeredonly | ||
|  | ------------------ | ||
|  |  * This change adds an option, answeredonly, that will prevent music | ||
|  |    on hold on channels that are not answered. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * TLS transports in res_pjsip can now reload their TLS certificate | ||
|  |    and private key files, provided the filename of them has not | ||
|  |    changed. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.13.0 to Asterisk 18.14.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | res_geolocation | ||
|  | ------------------ | ||
|  |  * * Added processing for the 'confidence' element. | ||
|  |    * Added documentation to some APIs. | ||
|  |    * removed a lot of complex code related to the very-off-nominal | ||
|  |      case of needing to process multiple location info sources. | ||
|  |    * Create a new 'ast_geoloc_eprofile_to_pidf' API that just takes | ||
|  |      one eprofile instead of a datastore of multiples. | ||
|  |    * Plugged a huge leak in XML processing that arose from | ||
|  |      insufficient documentation by the libxml/libxslt authors. | ||
|  |    * Refactored stylesheets to be more efficient. | ||
|  |    * Renamed 'profile_action' to 'profile_precedence' to better | ||
|  |      reflect it's purpose. | ||
|  |    * Added the config option for 'allow_routing_use' which | ||
|  |      sets the value of the 'Geolocation-Routing' header. | ||
|  |    * Removed the GeolocProfileCreate and GeolocProfileDelete | ||
|  |      dialplan apps. | ||
|  |    * Changed the GEOLOC_PROFILE dialplan function as follows: | ||
|  |      * Removed the 'profile' argument. | ||
|  |      * Automatically create a profile if it doesn't exist. | ||
|  |      * Delete a profile if 'inheritable' is set to no. | ||
|  |    * Fixed various bugs and leaks | ||
|  |    * Updated Asterisk WiKi documentation. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.13.0 to Asterisk 18.14.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | chan_dahdi | ||
|  | ------------------ | ||
|  |  * A POLARITY function is now available that allows | ||
|  |    getting or setting the polarity on a channel | ||
|  |    from the dialplan. | ||
|  | 
 | ||
|  | db | ||
|  | ------------------ | ||
|  |  * The DBPrefixGet AMI action now allows retrieving | ||
|  |    all of the DB keys beginning with a particular | ||
|  |    prefix. | ||
|  | 
 | ||
|  | res_cliexec | ||
|  | ------------------ | ||
|  |  * A new CLI command, dialplan exec application, has | ||
|  |    been added which allows dialplan applications to be | ||
|  |    executed at the CLI, useful for some quick testing | ||
|  |    without needing to write dialplan. | ||
|  | 
 | ||
|  | res_geolocation | ||
|  | ------------------ | ||
|  |  * Added res_geolocation which creates the core capabilities | ||
|  |    to manipulate Geolocation information on SIP INVITEs. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new transport option 'allow_wildcard_certs' has been added that when it | ||
|  |    and 'verify_server' are both set to 'yes', enables verification against | ||
|  |    wildcards, i.e. '*.' in certs for common, and subject alt names of type DNS | ||
|  |    for TLS transport types. Names must start with the wildcard. Partial wildcards, | ||
|  |    e.g. 'f*.example.com' and 'foo.*.com' are not allowed. As well, names only | ||
|  |    match against a single level meaning '*.example.com' matches 'foo.example.com', | ||
|  |    but not 'foo.bar.example.com'. | ||
|  | 
 | ||
|  | res_pjsip_geolocation | ||
|  | ------------------ | ||
|  |  * Added res_pjsip_geolocation which gives chan_pjsip | ||
|  |    the ability to use the core geolocation capabilities. | ||
|  | 
 | ||
|  | res_pjsip_header_funcs | ||
|  | ------------------ | ||
|  |  * Add function PJSIP_RESPONSE_HEADERS() to get list of header names from 200 response, in the same way as PJSIP_HEADERS() from the request. | ||
|  | 
 | ||
|  |    Add function PJSIP_RESPONSE_HEADER() to read header from 200 response, in the same way as PJSIP_HEADER() from the request. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.12.0 to Asterisk 18.13.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | app_confbridge | ||
|  | ------------------ | ||
|  |  * Adds the CONFBRIDGE_CHANNELS function which can | ||
|  |    be used to retrieve a list of channels in a ConfBridge, | ||
|  |    optionally filtered by a particular category. This | ||
|  |    list can then be used with functions like SHIFT, POP, | ||
|  |    UNSHIFT, etc. | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * The r option has been added, which prevents deletion | ||
|  |    of messages from VoiceMailMain, which can be | ||
|  |    useful for shared mailboxes. | ||
|  | 
 | ||
|  | ari | ||
|  | ------------------ | ||
|  |  * Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP) | ||
|  |    to ARI channel resources as 'protocol_id'. | ||
|  | 
 | ||
|  |    ASTERISK-30027 | ||
|  | 
 | ||
|  | res_agi | ||
|  | ------------------ | ||
|  |  * Agi command 'exec' can now be enabled | ||
|  |    to evaluate dialplan functions and variables | ||
|  |    by setting the variable AGIEXECFULL to yes. | ||
|  | 
 | ||
|  | res_parking | ||
|  | ------------------ | ||
|  |  * An m option to Park and ParkAndAnnounce now allows | ||
|  |    specifying a music on hold class override. | ||
|  | 
 | ||
|  | stasis_channels | ||
|  | ------------------ | ||
|  |  * Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP) | ||
|  |    to ARI channel resources as 'protocol_id'. | ||
|  | 
 | ||
|  |    ASTERISK-30027 | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.11.3 to Asterisk 18.12.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | app_confbridge | ||
|  | ------------------ | ||
|  |  * Added the hear_own_join_sound option to the confbridge user profile to | ||
|  |    control who hears the sound_join audio file. When set to 'yes' the user | ||
|  |    entering the conference and the participants already in the conference | ||
|  |    will hear the sound_join audio file. When set to 'no' the user entering | ||
|  |    the conference will not hear the sound_join audio file, but the | ||
|  |    participants already in the conference will hear the sound_join audio file. | ||
|  | 
 | ||
|  | app_queue | ||
|  | ------------------ | ||
|  |  * The m option now allows an override music on hold | ||
|  |    class to be specified for the Queue application | ||
|  |    within the dialplan. | ||
|  | 
 | ||
|  | chan_dahdi | ||
|  | ------------------ | ||
|  |  * Previously, cadences were appended on dahdi restart, | ||
|  |    rather than reloaded. This prevented cadences from | ||
|  |    being updated and maxed out the available cadences | ||
|  |    if reloaded multiple times. This behavior is fixed | ||
|  |    so that reloading cadences is idempotent and cadences | ||
|  |    can actually be reloaded. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * added global config option "allow_sending_180_after_183" | ||
|  | 
 | ||
|  |    Allow Asterisk to send 180 Ringing to an endpoint | ||
|  |    after 183 Session Progress has been send. | ||
|  |    If disabled Asterisk will instead send only a | ||
|  |    183 Session Progress to the endpoint. | ||
|  | 
 | ||
|  |  * Hook flash events can now be sent on a PJSIP channel | ||
|  |    if requested to do so. | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------ | ||
|  |  * Session timers get removed on UPDATE | ||
|  |    Fix if Asterisk receives a SIP REFER with Session-Timers UAC | ||
|  |    that Asterisk maintains Session-Timers when sending UPDATE request | ||
|  | 
 | ||
|  | cli | ||
|  | ------------------ | ||
|  |  * A new CLI command 'dialplan eval function' has been | ||
|  |    added which allows users to test the behavior of | ||
|  |    dialplan function calls directly from the CLI. | ||
|  | 
 | ||
|  | func_db | ||
|  | ------------------ | ||
|  |  * The function DB_KEYCOUNT has been added, which | ||
|  |    returns the cardinality of the keys at a specified | ||
|  |    prefix in AstDB, i.e. the number of keys at a | ||
|  |    given prefix. | ||
|  | 
 | ||
|  | func_evalexten | ||
|  | ------------------ | ||
|  |  * This adds the EVAL_EXTEN function which may be | ||
|  |    used to evaluate data at dialplan extensions. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.11.1 to Asterisk 18.11.2 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | func_odbc | ||
|  | ------------------ | ||
|  |  * A SQL_ESC_BACKSLASHES dialplan function has been added which | ||
|  |    escapes backslashes. Usage of this is dependent on whether the | ||
|  |    database in use can use backslashes to escape ticks or not. If | ||
|  |    it can, then usage of this prevents a broken SQL query depending | ||
|  |    on how the SQL query is constructed. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.10.0 to Asterisk 18.11.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | ami | ||
|  | ------------------ | ||
|  |  * AMI events can now be globally disabled using | ||
|  |    the disabledevents [general] setting. | ||
|  | 
 | ||
|  | app_mf | ||
|  | ------------------ | ||
|  |  * Adds an option to ReceiveMF to cap the | ||
|  |    number of digits read at a user-specified | ||
|  |    maximum. | ||
|  | 
 | ||
|  | app_queue | ||
|  | ------------------ | ||
|  |  * Load queues and members from Realtime for | ||
|  |    AMI actions: QueuePause, QueueStatus and QueueSummary, | ||
|  |    Applications: PauseQueueMember and UnpauseQueueMember. | ||
|  | 
 | ||
|  |  * Added a new AMI action: QueueWithdrawCaller | ||
|  |    This AMI action makes it possible to withdraw a caller from a queue | ||
|  |    back to the dialplan. The call will be signaled to leave the queue | ||
|  |    whenever it can, hence, it not guaranteed that the call will leave | ||
|  |    the queue. | ||
|  | 
 | ||
|  |    Optional custom data can be passed in the request, in the WithdrawInfo | ||
|  |    parameter. If the call successfully withdrawn the queue, | ||
|  |    it can be retrieved using the QUEUE_WITHDRAW_INFO variable. | ||
|  | 
 | ||
|  |    This can be useful for certain uses, such as dispatching the call | ||
|  |    to a specific extension. | ||
|  | 
 | ||
|  | channel_internal_api | ||
|  | ------------------ | ||
|  |  * CHANNEL(lastcontext) and CHANNEL(lastexten) | ||
|  |    are now available for use in the dialplan. | ||
|  | 
 | ||
|  | res_pjsip_pubsub | ||
|  | ------------------ | ||
|  |  * A new resource_list option, resource_display_name, indicates | ||
|  |    whether display name of resource or the resource name being | ||
|  |    provided for RLS entries. | ||
|  |    If this option is enabled, the Display Name will be provided. | ||
|  |    This option is disabled by default to remain the previous behavior. | ||
|  |    If the 'event' set to 'presence' or 'dialog' the non-empty HINT name | ||
|  |    will be set as the Display Name. | ||
|  |    The 'message-summary' is not supported yet. | ||
|  | 
 | ||
|  |  * The Resource List Subscriptions (RLS) is dynamic now. | ||
|  |    The asterisk now updates current subscriptions to reflect the changes | ||
|  |    to the list on subscription refresh. If list items are added, | ||
|  |    removed, updated or do not exist anymore, the asterisk regenerates | ||
|  |    the resource list. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.9.0 to Asterisk 18.10.0 ----------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Applications | ||
|  | ------------------ | ||
|  |  * added support for Danish syntax, playing the correct plural sound file | ||
|  |    dependen on where you have 1 or multipe messages | ||
|  |    based on the existing SE/NO code | ||
|  | 
 | ||
|  |  * added that we set DIALEDPEERNUMBER on the outgoing channels | ||
|  |    so it is avalible in b(content^extension^line) | ||
|  |    this add the same behaviour as Dial | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * Bundled PJProject Build | ||
|  | 
 | ||
|  |    The build process has been updated to make pjproject troubleshooting | ||
|  |    and development easier. See third-party/pjproject/README-hacking.md or | ||
|  |    https://wiki.asterisk.org/wiki/display/AST/Bundled+PJProject | ||
|  |    for more info. | ||
|  | 
 | ||
|  | ami | ||
|  | ------------------ | ||
|  |  * An AMI event now exists for "Wink". | ||
|  | 
 | ||
|  | app_mf | ||
|  | ------------------ | ||
|  |  * Adds MF receiver and sender applications to support | ||
|  |    the R1 MF signaling protocol, including integration | ||
|  |    with the Dial application. | ||
|  | 
 | ||
|  | app_queue | ||
|  | ------------------ | ||
|  |  * added that we set DIALEDPEERNUMBER on the outgoing channels | ||
|  |    so it is avalible in b(content^extension^line) | ||
|  |    this add the same behaviour as Dial | ||
|  | 
 | ||
|  | app_queues | ||
|  | ------------------ | ||
|  |  * adding support for playing the correct en/et for nordic languages | ||
|  | 
 | ||
|  |  * Don't play sound_thanks if there is no leading hold_time message | ||
|  |    When the only announcement is hold time, and there is no hold time (0 min, 0 sec), asterisk will say "thank you for your patience" | ||
|  | 
 | ||
|  | app_sendtext | ||
|  | ------------------ | ||
|  |  * A ReceiveText application has been added that can be | ||
|  |    used in conjunction with the SendText application. | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * added support for Danish syntax, playing the correct plural sound file | ||
|  |    dependen on where you have 1 or multipe messages | ||
|  |    based on the existing SE/NO code | ||
|  | 
 | ||
|  | cdr | ||
|  | ------------------ | ||
|  |  * A new CDR option, channeldefaultenabled, allows controlling | ||
|  |    whether CDR is enabled or disabled by default on | ||
|  |    newly created channels. The default behavior remains | ||
|  |    unchanged from previous versions of Asterisk (new | ||
|  |    channels will have CDR enabled, as long as CDR is | ||
|  |    enabled globally). | ||
|  | 
 | ||
|  | chan_sip.c | ||
|  | ------------------ | ||
|  |  * resolve issue with pickup on device that uses "183" and not "180" | ||
|  | 
 | ||
|  | cli | ||
|  | ------------------ | ||
|  |  * The "module refresh" command has been added, | ||
|  |    which allows unloading and then loading a | ||
|  |    module with a single command. | ||
|  | 
 | ||
|  | func_json | ||
|  | ------------------ | ||
|  |  * The JSON_DECODE dialplan function can now be used | ||
|  |    to parse JSON strings, such as in conjunction with | ||
|  |    CURL for using API responses. | ||
|  | 
 | ||
|  | res_fax_spandsp | ||
|  | ------------------ | ||
|  |  * Adds support for spandsp 3.0.0. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.8.0 to Asterisk 18.9.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | ToneScan application | ||
|  | ------------------ | ||
|  |  * A new application, ToneScan, allows for | ||
|  |    synchronous detection of call progress | ||
|  |    signals such as dial tone, busy tone, | ||
|  |    Special Information Tones, and modems. | ||
|  | 
 | ||
|  | app_playback | ||
|  | ------------------ | ||
|  |  * A new option 'mix' is added to the Playback application that  | ||
|  |    will play by filename and say.conf. It will look on the format of the  | ||
|  |    name, if it is like say format it will play with say.conf if not it  | ||
|  |    will play the file name. | ||
|  | 
 | ||
|  | app_queue | ||
|  | ------------------ | ||
|  |  * Add field to save the time value when a member enter a queue. | ||
|  |    Shows this time in seconds using 'queue show' command and the | ||
|  |    field LoginTime for responses for AMI the events. | ||
|  | 
 | ||
|  |    The output for the CLI command `queue show` is changed by added a | ||
|  |    extra data field for the information of the time login time for each | ||
|  |    member. | ||
|  | 
 | ||
|  | apps | ||
|  | ------------------ | ||
|  |  * A new option 'mix' is added to the Playback application that  | ||
|  |    will play by filename and say.conf. It will look on the format of the  | ||
|  |    name, if it is like say format it will play with say.conf if not it  | ||
|  |    will play the file name. | ||
|  | 
 | ||
|  | ast_coredumper | ||
|  | ------------------ | ||
|  |  * New options: | ||
|  |     --pid=<asterisk_pid> | ||
|  |       Allows specification of an Asterisk instance when trying to | ||
|  |       and the script can't determine it itself. | ||
|  |     --libdir=<system library directory> | ||
|  |       Allows specification of a non-standard installation directory | ||
|  |       containing the Asterisk modules. | ||
|  |     --(no-)rename | ||
|  |       Renames the coredump and the output files with readable | ||
|  |       timestamps. This is the default. | ||
|  |    Removed unneeded or confusing options: | ||
|  |     --append-coredumps | ||
|  |     --conffile | ||
|  |     --no-default-search | ||
|  |     --tarball-uniqueid | ||
|  |    Changed Variables: | ||
|  |     COREDUMPS is now just "/tmp/core!(*.txt)" | ||
|  |     DATEFORMAT is renamed to DATEOPTS and defaults to '-u +%FT%H-%M-%SZ' | ||
|  |    Changed behavior: | ||
|  |     If you use 'running' or 'RUNNING' you no longer need to specify | ||
|  |     '--no-default-search' to ignore existing coredumps. | ||
|  | 
 | ||
|  | chan_iax2 | ||
|  | ------------------ | ||
|  |  * Both a secret and an outkey may be specified at dial time, | ||
|  |    since encryption is possible with RSA authentication. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.7.0 to Asterisk 18.8.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | MessageSend | ||
|  | ------------------ | ||
|  |  * The MessageSend AMI action has been updated to allow the Destination | ||
|  |    and the To addresses to be provided separately. This brings the | ||
|  |    MessageSend manager command in line with the capabilities of the | ||
|  |    MessageSend dialplan application. | ||
|  | 
 | ||
|  | func_channel | ||
|  | ------------------ | ||
|  |  * Adds the CHANNEL_EXISTS function to check for the existence | ||
|  |    of a channel by name or unique ID. | ||
|  | 
 | ||
|  | func_vmcount | ||
|  | ------------------ | ||
|  |  * Multiple mailboxes may now be specified instead of just one. | ||
|  | 
 | ||
|  | logger | ||
|  | ------------------ | ||
|  |  * Added the ability to define custom log levels in logger.conf | ||
|  |    and use them in the Log dialplan application. Also adds a | ||
|  |    logger show levels CLI command. | ||
|  | 
 | ||
|  | res_pjsip_registrar | ||
|  | ------------------ | ||
|  |  * Adds new PJSIP AOR option remove_unavailable to either | ||
|  |    remove unavailable contacts when a REGISTER exceeds | ||
|  |    max_contacts when remove_existing is disabled, or | ||
|  |    prioritize unavailable contacts over other existing | ||
|  |    contacts when remove_existing is enabled. | ||
|  | 
 | ||
|  | res_pjsip_t38 | ||
|  | ------------------ | ||
|  |  * In res_pjsip_sdp_rtp, the bind_rtp_to_media_address option and the | ||
|  |    fallback use of the transport's bind address solve problems sending | ||
|  |    media on systems that cannot send ipv4 packets on ipv6 sockets, and | ||
|  |    certain other situations. This change extends both of these behaviors | ||
|  |    to UDPTL sessions as well in res_pjsip_t38, to fix fax-specific | ||
|  |    problems on these systems, introducing a new option | ||
|  |    endpoint/t38_bind_udptl_to_media_address. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.6.0 to Asterisk 18.7.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Channel-agnostic MF support | ||
|  | ------------------ | ||
|  |  * A SendMF application and PlayMF manager | ||
|  |    application are now included to send | ||
|  |    arbitrary standard R1 MF tones on the | ||
|  |    current channel or another specified channel. | ||
|  | 
 | ||
|  | app_milliwatt | ||
|  | ------------------ | ||
|  |  * The Milliwatt application's existing behavior is | ||
|  |    incorrect in that it plays a constant tone, which | ||
|  |    is not how digital milliwatt test lines actually | ||
|  |    work. | ||
|  | 
 | ||
|  |    An option is added so that a proper milliwatt test | ||
|  |    tone can be provided, including a 1 second silent | ||
|  |    interval every 10 seconds. However, for compatability | ||
|  |    reasons, the default behavior remains unchanged. | ||
|  | 
 | ||
|  | app_morsecode | ||
|  | ------------------ | ||
|  |  * Extends the Morsecode application by adding support for | ||
|  |    American Morse code and adds a configurable option | ||
|  |    for the frequency used in off intervals. | ||
|  | 
 | ||
|  | app_originate | ||
|  | ------------------ | ||
|  |  * Codecs can now be specified for dialplan-originated | ||
|  |    calls, as with call files and the manager action. | ||
|  |    By default, only the slin codec is now used, instead | ||
|  |    of all the slin* codecs. | ||
|  | 
 | ||
|  | app_queue | ||
|  | ------------------ | ||
|  |  * Reload behavior in app_queue has been changed so | ||
|  |    queue and agent stats are not reset during full | ||
|  |    app_queue module reloads. The queue reset stats | ||
|  |    CLI command may still be used to reset stats while | ||
|  |    Asterisk is running. | ||
|  | 
 | ||
|  | app_read | ||
|  | ------------------ | ||
|  |  * A new option allows the digit '#' to be read literally, | ||
|  |    rather than used exclusively as the input terminator | ||
|  |    character. | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * Add a new 'S' option to VoiceMail which prevents the instructions | ||
|  |    (vm-intro) from being played if a busy/unavailable/temporary greeting | ||
|  |    from the voicemail user is played. This is similar to the existing 's' | ||
|  |    option except that instructions will still be played if no user | ||
|  |    greeting is available. | ||
|  | 
 | ||
|  | chan_iax2 | ||
|  | ------------------ | ||
|  |  * ANI2 (OLI) is now transmitted over IAX2 calls | ||
|  |    as an information element. | ||
|  | 
 | ||
|  | func_env.c | ||
|  | ------------------ | ||
|  |  * Two new functions, DIRNAME and BASENAME, are now | ||
|  |    included which allow users to obtain the directory | ||
|  |    or the base filename of any file. | ||
|  | 
 | ||
|  | func_framedrop | ||
|  | ------------------ | ||
|  |  * New function to selectively drop specified frames | ||
|  |    in either direction on a channel. | ||
|  | 
 | ||
|  | func_scramble | ||
|  | ------------------ | ||
|  |  * Adds an audio scrambler function that may be used to | ||
|  |    distort voice audio on a channel as a privacy | ||
|  |    enhancement. | ||
|  | 
 | ||
|  | func_strings | ||
|  | ------------------ | ||
|  |  * A new STRBETWEEN function is now included which | ||
|  |    allows a substring to be inserted between characters | ||
|  |    in a string. This is particularly useful for transforming | ||
|  |    dial strings, such as adding pauses between digits | ||
|  |    for a string of digits that are sent to another channel. | ||
|  | 
 | ||
|  | res_pjproject | ||
|  | ------------------ | ||
|  |  * In pjproject.conf you can now map pjproject log levels | ||
|  |    to the Asterisk TRACE log level.  The default mappings | ||
|  |    have therefore changed so that only pjproject levels | ||
|  |    3 and 4 are mapped to DEBUG and 5 and 6 are now mapped | ||
|  |    to TRACE.  Previously 3, 4, 5, and 6 were all mapped to | ||
|  |    DEBUG. | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * When the address of the STUN server (stunaddr) is a name resolved via DNS, the | ||
|  |    stunaddr will be recurringly resolved when the DNS answer Time-To-Live (TTL) | ||
|  |    expires. This allows the STUN server to change its IP address without having to | ||
|  |    reload the res_rtp_asterisk module. | ||
|  | 
 | ||
|  | res_tonedetect | ||
|  | ------------------ | ||
|  |  * Arbitrary tone detection is now available through a | ||
|  |    WaitForTone application (blocking) and a TONE_DETECT | ||
|  |    function (non-blocking). | ||
|  | 
 | ||
|  | say.c | ||
|  | ------------------ | ||
|  |  * Adds SAYFILES function to retrieve the file names that would | ||
|  |    be played by corresponding Say applications, such as | ||
|  |    SayDigits, SayAlpha, etc. | ||
|  | 
 | ||
|  |    Additionally adds SayMoney and SayOrdinal applications. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.5.0 to Asterisk 18.6.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Handle non-standard Meter metric type safely | ||
|  | ------------------ | ||
|  |  * A meter_support flag has been introduced that defaults to true to maintain current behaviour. | ||
|  |    If disabled, a counter metric type will be used instead wherever a meter metric type was used, | ||
|  |    the counter will have a "_meter" suffix appended to the metric name. | ||
|  | 
 | ||
|  | app_dtmfstore | ||
|  | ------------------ | ||
|  |  * New application which collects digits | ||
|  |    dialed and stores them into | ||
|  |    a specified variable. | ||
|  | 
 | ||
|  | app_queue.c | ||
|  | ------------------ | ||
|  |  * Allow multiple files to be streamed for agent announcement. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * Add function PJSIP_HEADERS() to get list of headers by pattern in the same way as SIP_HEADERS() do. | ||
|  | 
 | ||
|  |    Add ability to read header by pattern using PJSIP_HEADER(). | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.5.0 to Asterisk 18.5.1 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | New Reload application | ||
|  | ------------------ | ||
|  |  * Adds an application to reload modules | ||
|  | 
 | ||
|  | PlaybackFinished has a new error state | ||
|  | ------------------ | ||
|  |  * The PlaybackFinished event now has a new state "failed" | ||
|  |    that is used when the sound file was not played due to an error. | ||
|  |    Before the state on PlaybackFinished was always "done". | ||
|  | 
 | ||
|  |    In case of multiple sound files to be played, | ||
|  |    the PlaybackFinished is sent only once in the end of the list, | ||
|  |    even in case of error. | ||
|  | 
 | ||
|  | WaitForCondition application | ||
|  | ------------------ | ||
|  |  * This application provides a way to halt | ||
|  |    dialplan execution until a provided | ||
|  |    condition evaluates to true. | ||
|  | 
 | ||
|  | app_dial announcement option | ||
|  | ------------------ | ||
|  |  * The A option for Dial now supports | ||
|  |    playing audio to the caller as well | ||
|  |    as the called party. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.4.0 to Asterisk 18.5.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AMI Flash event | ||
|  | ------------------ | ||
|  |  * Hook flash events are now exposed as AMI events. | ||
|  | 
 | ||
|  | Add variable support to Originate | ||
|  | ------------------ | ||
|  |  * The Originate application now allows | ||
|  |    variables to be set on the new channel | ||
|  |    through a new option. | ||
|  | 
 | ||
|  | MessageSend | ||
|  | ------------------ | ||
|  |  * The MessageSend dialplan application now takes an | ||
|  |    optional third argument that can set the message's | ||
|  |    "To" field on outgoing messages.  It's an alternative | ||
|  |    to using the MESSAGE(to) dialplan function. | ||
|  | 
 | ||
|  |    To prevent confusion with the first argument, currently | ||
|  |    named "to", it's been renamed to "destination". | ||
|  |    Its function, creating the request URI, hasn't changed. | ||
|  | 
 | ||
|  |    The online documentation has also been enhanced to | ||
|  |    explain the behavior. | ||
|  | 
 | ||
|  |    Despite the changes in this commit, there should be | ||
|  |    no impact to current users of MessageSend. | ||
|  | 
 | ||
|  | New ConfKick application | ||
|  | ------------------ | ||
|  |  * Adds a ConfKick() application, which allows | ||
|  |    a specific channel, all users, or all non-admin | ||
|  |    users to be kicked from a conference bridge. | ||
|  | 
 | ||
|  | app_confbridge answer supervision control | ||
|  | ------------------ | ||
|  |  * app_confbridge now provides a user option to prevent | ||
|  |    answer supervision if the channel hasn't been | ||
|  |    answered yet. To use it, set a user profile's | ||
|  |    answer_channel option to no. | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * You can now customize the "beep" tone or omit it entirely. | ||
|  | 
 | ||
|  | func_math: Three new dialplan functions | ||
|  | ------------------ | ||
|  |  * Introduce three new functions, MIN, MAX, and ABS, which can be used to | ||
|  |    obtain the minimum or maximum of up to two integers or absolute value. | ||
|  | 
 | ||
|  | func_volume now can be read | ||
|  | ------------------ | ||
|  |  * The VOLUME function can now also be used | ||
|  |    to read existing values previously set. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * PJSIP support of registrations of endpoints in multidomain | ||
|  |    scenarios, where the endpoint contains the domain info | ||
|  |    in pjsip.conf. | ||
|  | 
 | ||
|  | res_pjsip_dialog_info_body_generator | ||
|  | ------------------ | ||
|  |  * PJSIP now supports RFC 4235 Section 4.1.6 dialog-info+xml local and | ||
|  |    remote elements by iterating through ringing channels and inserting | ||
|  |    that info into NOTIFY packet sent to the endpoint. | ||
|  | 
 | ||
|  | res_pjsip_messaging | ||
|  | ------------------ | ||
|  |  * Implemented the new "to" parameter of the MessageSend() | ||
|  |    dialplan application.  This allows a user to specify | ||
|  |    a complete SIP "To" header separate from the Request URI. | ||
|  |    We now also accept a destination in the same format | ||
|  |    as Dial()...  PJSIP/number@endpoint | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * By default Asterisk reports the PJSIP version in all | ||
|  |    STUN packets it sends. | ||
|  | 
 | ||
|  |    This behaviour may not be desired in a production | ||
|  |    environment and can now be disabled by setting the | ||
|  |    stun_software_attribute option to 'no' in rtp.conf. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.3.0 to Asterisk 18.4.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | logger | ||
|  | ------------------ | ||
|  |  * The dateformat option in logger.conf will now control the remote | ||
|  |    console (asterisk -r -T) timestamp format.  Previously, dateformat only | ||
|  |    controlled the formatting of the timestamp going to log files and the | ||
|  |    main console (asterisk -c) but only for non-verbose messages. | ||
|  | 
 | ||
|  |    Internally, Asterisk does not send the logging timestamp with verbose | ||
|  |    messages to console clients. It's up to the Asterisk remote consoles | ||
|  |    to format verbose messages.  Asterisk remote consoles previously did | ||
|  |    not load dateformat from logger.conf. | ||
|  | 
 | ||
|  |    Previously there was a non-configurable and hard-coded "%b %e %T" | ||
|  |    dateformat that would be used no matter what on all verbose console | ||
|  |    messages printed on remote consoles. | ||
|  | 
 | ||
|  |    Example: | ||
|  |    logger.conf | ||
|  |     dateformat=%F %T.%3q | ||
|  | 
 | ||
|  |    # asterisk -rvvv -T | ||
|  |    [2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so. | ||
|  |    [Mar 19 09:55:43]     -- Goto (dialExten,s,1) | ||
|  | 
 | ||
|  |    Given the following example configuration in logger.conf, Asterisk log | ||
|  |    files and the console, will log verbose messages using the given | ||
|  |    timestamp.  Now ensuring that all remote console messages are logged | ||
|  |    with the same dateformat as other log streams. | ||
|  | 
 | ||
|  |    --- | ||
|  |    [general] | ||
|  |    dateformat=%F %T.%3q | ||
|  | 
 | ||
|  |    [logfiles] | ||
|  |    console  => notice,warning,error,verbose | ||
|  |    full     => notice,warning,error,debug,verbose | ||
|  |    --- | ||
|  | 
 | ||
|  |    Now we have a globally-defined dateformat that will be used | ||
|  |    consistently across the Asterisk main console, remote consoles, and | ||
|  |    log files. | ||
|  | 
 | ||
|  |    Now we have consistent logging: | ||
|  | 
 | ||
|  |    # asterisk -rvvv -T | ||
|  |    [2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so. | ||
|  |    [2021-03-19 09:55:43.920-0400]     -- Goto (dialExten,s,1) | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * PJSIP transports can now be partially reloaded safely. This allows the | ||
|  |    local_net and external_* options to be updated without restarting Asterisk. | ||
|  | 
 | ||
|  |  * PJSIP endpoints can now be configured to skip authentication when | ||
|  |    handling OPTIONS requests by setting the allow_unauthenticated_options | ||
|  |    configuration property to 'yes.' | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.2.2 to Asterisk 18.3.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | app_mixmonitor | ||
|  | ------------------ | ||
|  |  * app_mixmonitor now sends manager events MixMonitorStart, MixMonitorStop and | ||
|  |    MixMonitorMute when the channel monitoring is started, stopped and muted (or | ||
|  |    unmuted) respectively. | ||
|  | 
 | ||
|  | chan_iax2 | ||
|  | ------------------ | ||
|  |  * You can now specify a default "auth" method in the | ||
|  |    [general] section of iax.conf | ||
|  | 
 | ||
|  | chan_pjsip, app_transfer | ||
|  | ------------------ | ||
|  |  * Added TRANSFERSTATUSPROTOCOL variable.  When transfer is performed, | ||
|  |    transfers can pass a protocol specific error code. | ||
|  |    Example, in SIP 3xx-6xx represent any SIP specific error received when | ||
|  |    performing a REFER. | ||
|  | 
 | ||
|  | func_odbc | ||
|  | ------------------ | ||
|  |  * Introduce an ARGC variable for func_odbc functions, along with a minargs | ||
|  |    per-function configuration option. | ||
|  | 
 | ||
|  |    minargs enables enforcing of minimum count of arguments to pass to | ||
|  |    func_odbc, so if you're unconditionally using ARG1 through ARG4 then | ||
|  |    this should be set to 4.  func_odbc will generate an error in this case, | ||
|  |    so for example | ||
|  | 
 | ||
|  |    [FOO] | ||
|  |    minargs = 4 | ||
|  | 
 | ||
|  |    and ODBC_FOO(a,b,c) in dialplan will now error out instead of using a | ||
|  |    potentially leaked ARG4 from Gosub(). | ||
|  | 
 | ||
|  |    ARGC is needed if you're using optional argument, to verify whether or | ||
|  |    not an argument has been passed, else it's possible to use a leaked ARGn | ||
|  |    from Gosub (app_stack).  So now you can safely do | ||
|  |    ${IF($[${ARGC}>3]?${ARGV}:default value)} kind of thing. | ||
|  | 
 | ||
|  | res_srtp | ||
|  | ------------------ | ||
|  |  * SRTP replay protection has been added to res_srtp and | ||
|  |    a new configuration option "srtpreplayprotection" has | ||
|  |    been added to the rtp.conf config file.  For security | ||
|  |    reasons, the default setting is "yes".  Buggy clients | ||
|  |    may not handle this correctly which could result in | ||
|  |    no, or one way, audio and Asterisk error messages like | ||
|  |    "replay check failed". | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.1.0 to Asterisk 18.2.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * The location where the media cache stores its temporary files | ||
|  |    is no longer hardcoded to /tmp but can now be configured separately | ||
|  |    via the astcachedir config variable in asterisk.conf. To retain | ||
|  |    backwards compatibility, the default location remains /tmp. | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * The VoiceMail application can now be configured to send greetings and | ||
|  |    instructions via early media and only answering the channel when it is | ||
|  |    time for the caller to record their message. This behavior can be | ||
|  |    activated by passing the new 'e' option to VoiceMail. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 18.0.0 to Asterisk 18.1.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * Added debug logging categories that allow a user to output debug information | ||
|  |    based on a specified category. This lets the user limit, and filter debug | ||
|  |    output to data relevant to a particular context, or topic. For instance the | ||
|  |    following categories are now available for debug logging purposes: | ||
|  | 
 | ||
|  |      dtls, dtls_packet, ice, rtcp, rtcp_packet, rtp, rtp_packet, stun, stun_packet | ||
|  | 
 | ||
|  |    These debug categories can be enable/disable via an Asterisk CLI command: | ||
|  | 
 | ||
|  |      core set debug category <category>[:<sublevel>] [category[:<sublevel] ...] | ||
|  |      core set debug category off [<category> [<category>] ...] | ||
|  | 
 | ||
|  |    If no sub-level is associated all debug statements for a given category are | ||
|  |    output. If a sub-level is given then only those statements assigned a value | ||
|  |    at or below the associated sub-level are output. | ||
|  | 
 | ||
|  | app_confbridge | ||
|  | ------------------ | ||
|  |  * app_confbridge now has the ability to force the estimated bitrate on an SFU | ||
|  |    bridge.  To use it, set a bridge profile's remb_behavior to "force" and | ||
|  |    set remb_estimated_bitrate to a rate in bits per second.  The | ||
|  |    remb_estimated_bitrate parameter is ignored if remb_behavior is something | ||
|  |    other than "force". | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 17.0.0 to Asterisk 18.0.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * The PJSIP_SEND_SESSION_REFRESH dialplan function now issues a warning, and | ||
|  |    returns unsuccessful if it's used on a channel prior to answering. | ||
|  | 
 | ||
|  | logger | ||
|  | ------------------ | ||
|  |  * Added a new log formatter called "plain" that always prints | ||
|  |    file, function and line number if available (even for verbose | ||
|  |    messages) and never prints color control characters.  Most | ||
|  |    suitable for file output but can be used for other channels | ||
|  |    as well. | ||
|  | 
 | ||
|  |    You use it in logger.conf like so: | ||
|  |    debug => [plain]debug | ||
|  |    console => [plain]error,warning,debug,notice,pjsip_history | ||
|  |    messages => [plain]warning,error,verbose | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- New functionality introduced in Asterisk 18.0.0 -------------------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * The Streams API becomes the home for the core ACN capabilities. | ||
|  |    These include... | ||
|  | 
 | ||
|  |     * Parsing and formatting of codec negotiation preferences. | ||
|  |     * Resolving pending streams and topologies with those configured | ||
|  |       using configured preferences. | ||
|  |     * Utility functions for creating string representations of | ||
|  |       streams, topologies, and negotiation preferences. | ||
|  | 
 | ||
|  |    For codec negotiation preferences: | ||
|  |     * Added ast_stream_codec_prefs_parse() which takes a string | ||
|  |       representation of codec negotiation preferences, which | ||
|  |       may come from a pjsip endpoint for example, and populates | ||
|  |       a ast_stream_codec_negotiation_prefs structure. | ||
|  |     * Added ast_stream_codec_prefs_to_str() which does the reverse. | ||
|  |     * Added many functions to parse individual parameter name | ||
|  |       and value strings to their respective enum values, and the | ||
|  |       reverse. | ||
|  | 
 | ||
|  |    For streams: | ||
|  |     * Added ast_stream_create_resolved() which takes a "live" stream | ||
|  |       and resolves it with a configured stream and the negotiation | ||
|  |       preferences to create a new stream. | ||
|  |     * Added ast_stream_to_str() which create a string representation | ||
|  |       of a stream suitable for debug or display purposes. | ||
|  | 
 | ||
|  |    For topology: | ||
|  |     * Added ast_stream_topology_create_resolved() which takes a "live" | ||
|  |       topology and resolves it, stream by stream, with a configured | ||
|  |       topology stream and the negotiation preferences to create a new | ||
|  |       topology. | ||
|  |     * Added ast_stream_topology_to_str() which create a string | ||
|  |       representation of a topology suitable for debug or display | ||
|  |       purposes. | ||
|  |     * Renamed ast_format_caps_from_topology() to | ||
|  |       ast_stream_topology_get_formats() to be more consistent with | ||
|  |       the existing ast_stream_get_formats(). | ||
|  | 
 | ||
|  |    Additional changes: | ||
|  |     * A new function ast_format_cap_append_names() appends the results | ||
|  |       to the ast_str buffer instead of replacing buffer contents. | ||
|  | 
 | ||
|  | app_bridgeaddchan | ||
|  | ------------------ | ||
|  |  * The BridgeAdd application now behaves more like the Bridge application. | ||
|  |    The application now sets the BRIDGERESULT channel variable to indicate | ||
|  |    what happened when the channel resumes in dialplan.  This is instead of | ||
|  |    hanging up the channel on failure conditions. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Two new options, incoming_call_offer_pref and outgoing_call_offer_pref | ||
|  |    have been added to res_pjsip endpoints that specify the preferred order | ||
|  |    of codecs to use between those received/sent in an SDP offer and those | ||
|  |    set in the endpoint configuration. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 17.0.0 to Asterisk 18.0.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * You can now specify an optional 'Content-Type' as an argument for the Asterisk | ||
|  |    SendText manager action. | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * A new parameter 'inhibitConnectedLineUpdates' is now available in the | ||
|  |    'bridges.addChannel' call. This prevents the identity of the newly connected | ||
|  |    channel from being presented to other bridge members. | ||
|  | 
 | ||
|  | ARI Channels | ||
|  | ------------------ | ||
|  |  * The Channel resource has a new sub-resource "externalMedia". | ||
|  |    This allows an application to create a channel for the sole purpose | ||
|  |    of exchanging media with an external server.  Once created, this | ||
|  |    channel could be placed into a bridge with existing channels to | ||
|  |    allow the external server to inject audio into the bridge or | ||
|  |    receive audio from the bridge. | ||
|  |    See https://wiki.asterisk.org/wiki/display/AST/External+Media+and+ARI | ||
|  |    for more information. | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * H.265/HEVC is now a supported video codec and it can be used by | ||
|  |    specifying "h265" in the allow line. | ||
|  |    Please note however, that handling of the additional SDP parameters | ||
|  |    described in RFC 7798 section 7.2 is not yet supported. | ||
|  | 
 | ||
|  | Features | ||
|  | ------------------ | ||
|  |  * Adds support for AudioSocket, a very simple bidirectional audio streaming | ||
|  |    protocol. There are both channel and application interfaces. | ||
|  | 
 | ||
|  |    A description of the protocol can be found on the referenced wiki page. A | ||
|  |    short talk about the reasons and implementation can be found on YouTube at | ||
|  |    the link provided. | ||
|  | 
 | ||
|  |    ARI support has also been added via the existing "externalMedia" ARI | ||
|  |    functionality. The UUID is specified using the arbitrary "data" field. | ||
|  | 
 | ||
|  |    Wiki: https://wiki.asterisk.org/wiki/display/AST/AudioSocket | ||
|  |    YouTube: https://www.youtube.com/watch?v=tjduXbZZEgI | ||
|  | 
 | ||
|  | Messaging | ||
|  | ------------------ | ||
|  |  * In order to reduce the amount of AMI and ARI events generated, | ||
|  |    the global "Message/ast_msg_queue" channel can be set to suppress | ||
|  |    it's normal channel housekeeping events such as "Newexten", | ||
|  |    "VarSet", etc. This can greatly reduce load on the manager | ||
|  |    and ARI applications when the Digium Phone Module for Asterisk | ||
|  |    is in use.  To enable, set "hide_messaging_ami_events" in | ||
|  |    asterisk.conf to "yes"  In Asterisk versions <18, the default | ||
|  |    is "no" preserving existing behavior.  Beginning with | ||
|  |    Asterisk 18, the option will default to "yes". | ||
|  | 
 | ||
|  | STIR/SHAKEN | ||
|  | ------------------ | ||
|  |  * STIR/SHAKEN support has been added to Asterisk. Configuration is done in | ||
|  |    stir_shaken.conf. There is a sample configuration file to help you get | ||
|  |    started (asterisk/configs/samples/stir_shaken.conf.sample). Once that's | ||
|  |    set up, you can enable STIR/SHAKEN on any endpoint by setting stir_shaken | ||
|  |    to yes on the endpoint configuration object. This will add an Identity | ||
|  |    header on outgoing INVITEs, and check for an Identity header on incoming | ||
|  |    INVITEs. This option has been added to Alembic as well. | ||
|  | 
 | ||
|  |    The information received on an incoming INVITE can be checked using the | ||
|  |    STIR_SHAKEN dialplan function. There are two variations: | ||
|  | 
 | ||
|  |    STIR_SHAKEN(count) | ||
|  |    STIR_SHAKEN(0, verify_result) | ||
|  | 
 | ||
|  |    The first variation will tell you how many STIR/SHAKEN results are on the | ||
|  |    channel. The second fetches information for a specific result. The first | ||
|  |    parameter is the index, followed by what information you want to retrieve. | ||
|  |    The available options are 'verify_result', 'identity', and 'attestation'. | ||
|  | 
 | ||
|  | app_chanisavail | ||
|  | ------------------ | ||
|  |  * The ChanIsAvail application now tolerates empty positions in the supplied | ||
|  |    device list.  Dialplan can now be simplified by not having to check for | ||
|  |    empty positions in the device list. | ||
|  | 
 | ||
|  | app_confbridge | ||
|  | ------------------ | ||
|  |  * A new bridge profile option, maximum_sample_rate, has been added which sets | ||
|  |    a maximum sample rate that the bridge will be mixed at. This allows the bridge | ||
|  |    to move below the maximum sample rate as needed but caps it at the maximum. | ||
|  | 
 | ||
|  |  * A new option, "text_messaging", has been added to the user profile | ||
|  |    which allows control over whether text messaging is enabled or | ||
|  |    disabled for a user. If enabled (the default) text messages | ||
|  |    will be sent to the user. If disabled no text messages will be | ||
|  |    sent to the user. | ||
|  | 
 | ||
|  | app_dial | ||
|  | ------------------ | ||
|  |  * The Dial application now tolerates empty positions in the supplied | ||
|  |    destination list.  Dialplan can now be simplified by not having to check | ||
|  |    for empty positions in the destination list.  If there are no endpoints to | ||
|  |    dial then DIALSTATUS is set to CHANUNAVAIL. | ||
|  | 
 | ||
|  | app_mixmonitor | ||
|  | ------------------ | ||
|  |  * An option 'S' has been added to MixMonitor. If used in combination with | ||
|  |    the r() and/or t() options, if a frame is available to write to one of | ||
|  |    those files but not the other, a frame of silence if written to the file | ||
|  |    that does not have an audio frame. This should prevent the two files | ||
|  |    from "drifting" when mixed after the fact. | ||
|  | 
 | ||
|  |  * If the 'filename' argument to MixMonitor() ended with '.wav49,' | ||
|  |    Asterisk would silently convert the extension to '.WAV' when opening | ||
|  |    the file for writing. This caused the MIXMONITOR_FILENAME variable to | ||
|  |    reference the wrong file. The MIXMONITOR_FILENAME variable will now | ||
|  |    reflect the name of the file that Asterisk actually used instead of | ||
|  |    the filename that was passed to the application. | ||
|  | 
 | ||
|  | app_page | ||
|  | ------------------ | ||
|  |  * The Page application now tolerates empty positions in the supplied | ||
|  |    destination list.  Dialplan can now be simplified by not having to check | ||
|  |    for empty positions in the destination list. | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * A feature was added in Asterisk 13.27.0 and 16.4.0 that removed lock files from | ||
|  |    the Asterisk voicemail directory on startup. Some users that store their | ||
|  |    voicemails on network storage devices experienced slow startup times due to the | ||
|  |    relative expense of traversing the voicemail directory structure looking for | ||
|  |    orphaned lock files. This feature has now been removed. | ||
|  | 
 | ||
|  |    Users who require the lock files to be removed at startup should modify their | ||
|  |    startup scripts to do so before starting the asterisk process. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * A new dialplan function, PJSIP_MOH_PASSTHROUGH, has been added to chan_pjsip. This | ||
|  |    allows the behaviour of the moh_passthrough endpoint option to be read or changed | ||
|  |    in the dialplan. This allows control on a per-call basis. | ||
|  | 
 | ||
|  | chan_rtp | ||
|  | ------------------ | ||
|  |  * The UnicastRTP channel driver provided by chan_rtp now accepts | ||
|  |    "<hostname>:<port>" as an alternative to "<ip_address>:<port>" in the destination. | ||
|  |    The first AAAA (preferred) or A record resolved will be used as the destination. | ||
|  |    The lookup is synchronous so beware of possible dialplan delays if you specify a | ||
|  |    hostname. | ||
|  | 
 | ||
|  | func_curl | ||
|  | ------------------ | ||
|  |  * A new parameter, httpheader, has been added to CURLOPT function. This parameter | ||
|  |    allows to set custom http headers for subsequent calls off CURL function. | ||
|  |    Any setting of headers will replace the default curl headers | ||
|  |    (e.g. "Content-type: application/x-www-form-urlencoded") | ||
|  | 
 | ||
|  |  * A new option, followlocation, can now be enabled with the CURLOPT() | ||
|  |    dialplan function. Setting this will instruct cURL to follow 3xx | ||
|  |    redirects, which it does not by default. | ||
|  | 
 | ||
|  | func_jitterbuffer | ||
|  | ------------------ | ||
|  |  * The JITTERBUFFER dialplan function now has an option to enable video synchronization | ||
|  |    support. When enabled and used with a compatible channel driver (chan_sip, chan_pjsip) | ||
|  |    the video is buffered according to the size of the audio jitterbuffer and is | ||
|  |    synchronized to the audio. | ||
|  | 
 | ||
|  | func_volume | ||
|  | ------------------ | ||
|  |  * Accept decimal number as argument. | ||
|  | 
 | ||
|  | http | ||
|  | ------------------ | ||
|  |  * You can now disable the /httpstatus page served by Asterisk's built-in | ||
|  |    HTTP server by setting 'enable_status' to 'no' in http.conf. | ||
|  | 
 | ||
|  | minmemfree | ||
|  | ------------------ | ||
|  |  * The 'minmemfree' configuration option now counts memory allocated to | ||
|  |    the filesystem cache as "free" because it is memory that is available | ||
|  |    to the process. | ||
|  | 
 | ||
|  | res_ari_channels | ||
|  | ------------------ | ||
|  |  * When creating a channel in ARI using the create call | ||
|  |    you can now specify dialplan variables to be set as part | ||
|  |    of the same operation. | ||
|  | 
 | ||
|  | res_musiconhold | ||
|  | ------------------ | ||
|  |  * This fix allows a realtime moh class to be unregistered from the command | ||
|  |    line. This is useful when the contents of a directory referenced by a | ||
|  |    realtime moh class have changed. | ||
|  |    The realtime moh class is then reloaded on the next request and uses the | ||
|  |    new directory contents. | ||
|  | 
 | ||
|  |  * A new mode - playlist - has been added to res_musiconhold. This mode allows the | ||
|  |    user to specify the files (or URLs) to play explicitly by putting them directly | ||
|  |    in musiconhold.conf. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Added a new PJSIP system setting called disable_rport. | ||
|  |    Default is no to keep support working as before. | ||
|  | 
 | ||
|  |    If it is false (default) it adds the 'rport' parameter in the outgoing request message. | ||
|  |    If it is true it does not add the 'rport' parameter in the outgoing request message. | ||
|  | 
 | ||
|  |    This is a system option, but working as a global option. | ||
|  | 
 | ||
|  | res_pjsip_endpoint_identifier_ip | ||
|  | ------------------ | ||
|  |  * In 'type = identify' sections, the addresses specified for the 'match' | ||
|  |    clause can now include a port number. For IP addresses, the port is | ||
|  |    provided by including a colon after the address, followed by the | ||
|  |    desired port number. If supplied, the netmask should follow the port | ||
|  |    number. To specify a port for IPv6 addresses, the address itself must | ||
|  |    be enclosed in brackets to be parsed correctly. | ||
|  | 
 | ||
|  | res_pjsip_logger | ||
|  | ------------------ | ||
|  |  * The PJSIP packet logger now has the following CLI commands: | ||
|  | 
 | ||
|  |    pjsip set logger pcap <filename> | ||
|  | 
 | ||
|  |    When used this will create a pcap file containing the incoming | ||
|  |    and outgoing SIP packets, in unencrypted form. | ||
|  | 
 | ||
|  |    pjsip set logger console <on / off> | ||
|  | 
 | ||
|  |    This allows you to toggle logging to console on and off. | ||
|  | 
 | ||
|  |    pjsip set logger host <IP/subnet mask> add | ||
|  | 
 | ||
|  |    This allows you to add an additional IP address or subnet | ||
|  |    mask to logging, allowing you to log multiple instead of | ||
|  |    just a single IP address or all traffic. | ||
|  | 
 | ||
|  |    The normal "pjsip set logger host" CLI command has also been | ||
|  |    expanded to allow subnet masks as well. | ||
|  | 
 | ||
|  | res_pjsip_session | ||
|  | ------------------ | ||
|  |  * When placing an outgoing call to a PJSIP endpoint the intent | ||
|  |    of any requested formats will now be respected. If only an audio | ||
|  |    format is requested (such as ulaw) but the underlying endpoint | ||
|  |    does not support the format the resulting SDP will still only | ||
|  |    contain an audio stream, and not any additional streams such as | ||
|  |    video. | ||
|  | 
 | ||
|  |  * Two new options, incoming_call_offer_pref and outgoing_call_offer_pref | ||
|  |    have been added to res_pjsip endpoints that specify the preferred order | ||
|  |    of codecs to use between those received/sent in an SDP offer and those | ||
|  |    set in the endpoint configuration. | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * This change include a new cli command 'rtp show settings' | ||
|  | 
 | ||
|  |    The command display by general settings of rtp configuration. For this | ||
|  |    point is added the fields: rtpstart, rtpend, dtmftimeout, rtpchecksum, | ||
|  |    strictrtp, learning_min_sequential and icesupport. | ||
|  | 
 | ||
|  |  * The blacklist mechanism in res_rtp_asterisk for ICE and STUN was converted to | ||
|  |    an ACL mechanism. | ||
|  | 
 | ||
|  |    As such six now options are now available: | ||
|  | 
 | ||
|  |    ice_deny | ||
|  |    ice_permit | ||
|  |    ice_acl | ||
|  |    stun_deny | ||
|  |    stun_permit | ||
|  |    stun_acl | ||
|  | 
 | ||
|  |    These options have their obvious meanings as used elsewhere. | ||
|  | 
 | ||
|  |    Backwards compatibility was maintained by adding {stun,ice}_blacklist as | ||
|  |    aliases for {stun,ice}_deny. | ||
|  | 
 | ||
|  | res_sorcery_memory_cache | ||
|  | ------------------ | ||
|  |  * The SorceryMemoryCacheExpireObject AMI action and CLI | ||
|  |    command allow expiring of a specific object within the | ||
|  |    sorcery memory cache. This is done by removing the | ||
|  |    object from the cache with the expectation that the | ||
|  |    cache will then re-populate the object when it is next | ||
|  |    needed. | ||
|  | 
 | ||
|  |    For full backend caching this does not occur. The cache | ||
|  |    won't repopulate until an entire refresh is done resulting | ||
|  |    in the possibility that objects are missing until that | ||
|  |    time. | ||
|  | 
 | ||
|  |    The AMI action and CLI command will now not allow | ||
|  |    expiring of an object if the cache is configured as a | ||
|  |    full backend cache. Instead you must use either the | ||
|  |    SorceryMemoryCacheExpire or SorceryMemoryCachePopulate | ||
|  |    AMI actions or their associated CLI commands. | ||
|  | 
 | ||
|  | taskprocessor.c | ||
|  | ------------------ | ||
|  |  * Added two new CLI commands to reset stats for taskprocessors. You can | ||
|  |    reset stats for a single, specific taskprocessor ('core reset | ||
|  |    taskprocessor <taskprocessor>'), or you can reset all taskprocessors | ||
|  |    ('core reset taskprocessors'). These commands will reset the counter for | ||
|  |    the number of tasks processed as well as the max queue size. | ||
|  | 
 | ||
|  |  * Added "like" support for 'core show taskprocessors'. Now you | ||
|  |    can specify a specific set of taskprocessors (or just one) by | ||
|  |    adding the keyword "like" to the above command, followed by | ||
|  |    your search criteria. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- New functionality introduced in Asterisk 17.0.0 -------------------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Bridging | ||
|  | ------------------ | ||
|  |  * The bridging core no longer uses the stasis cache for bridge | ||
|  |    snapshots.  The latest bridge snapshot is now stored on the | ||
|  |    ast_bridge structure itself. | ||
|  | 
 | ||
|  |    The following APIs are no longer available since the stasis cache | ||
|  |    is no longer used: | ||
|  |      ast_bridge_topic_cached() | ||
|  |      ast_bridge_topic_all_cached() | ||
|  | 
 | ||
|  |    A topic pool is now used for individual bridge topics. | ||
|  | 
 | ||
|  |    The ast_bridge_cache() function was removed since there's no | ||
|  |    longer a separate container of snapshots. | ||
|  | 
 | ||
|  |    A new function "ast_bridges()" was created to retrieve the | ||
|  |    container of all bridges.  Users formerly calling | ||
|  |    ast_bridge_cache() can use the new function to iterate over | ||
|  |    bridges and retrieve the latest snapshot directly from the | ||
|  |    bridge. | ||
|  | 
 | ||
|  |    The ast_bridge_snapshot_get_latest() function was renamed to | ||
|  |    ast_bridge_get_snapshot_by_uniqueid(). | ||
|  | 
 | ||
|  |    A new function "ast_bridge_get_snapshot()" was created to retrieve | ||
|  |    the bridge snapshot directly from the bridge structure. | ||
|  | 
 | ||
|  |    The ast_bridge_topic_all() function now returns a normal topic | ||
|  |    not a cached one so you can't use stasis cache functions on it | ||
|  |    either. | ||
|  | 
 | ||
|  |    The ast_bridge_snapshot_type() stasis message now has the | ||
|  |    ast_bridge_snapshot_update structure as it's data.  It contains | ||
|  |    the last snapshot and the new one. | ||
|  | 
 | ||
|  | Channels | ||
|  | ------------------ | ||
|  |  * The core no longer uses the stasis cache for channels snapshots. | ||
|  |    The following APIs are no longer available: | ||
|  |        ast_channel_topic_cached() | ||
|  |        ast_channel_topic_all_cached() | ||
|  |    The ast_channel_cache_all() and ast_channel_cache_by_name() functions | ||
|  |    now returns an ao2_container of ast_channel_snapshots rather than a | ||
|  |    container of stasis_messages therefore you can't call stasis_cache | ||
|  |    functions on it. | ||
|  |    The ast_channel_topic_all() function now returns a normal topic, | ||
|  |    not a cached one so you can't use stasis cache functions on it either. | ||
|  |    The ast_channel_snapshot_type() stasis message now has the | ||
|  |    ast_channel_snapshot_update structure as it's data. | ||
|  |    ast_channel_snapshot_get_latest() still returns the latest snapshot. | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------ | ||
|  |  * The chan_sip module is now deprecated, users should migrate to the | ||
|  |    replacement module chan_pjsip.  See guides at the Asterisk Wiki: | ||
|  |      https://wiki.asterisk.org/wiki/x/tAHOAQ | ||
|  |      https://wiki.asterisk.org/wiki/x/hYCLAQ | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 16.0.0 to Asterisk 17.0.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AttendedTransfer | ||
|  | ------------------ | ||
|  |  * A new application, this will queue up attended transfer to the given extension. | ||
|  | 
 | ||
|  | BlindTransfer | ||
|  | ------------------ | ||
|  |  * A new application, this will redirect all channels currently | ||
|  |    bridged to the caller channel to the specified destination. | ||
|  | 
 | ||
|  | ConfBridge | ||
|  | ------------------ | ||
|  |  * Add "average_all", "highest_all", and "lowest_all" values for | ||
|  |    the remb_behavior option. These values operate on a bridge | ||
|  |    level instead of a per-source level. This means that a single | ||
|  |    REMB value is calculated and sent to every sender, instead of | ||
|  |    a REMB value that is unique for the specific sender.. | ||
|  | 
 | ||
|  | Dial | ||
|  | ------------------ | ||
|  |  * Add RINGTIME and RINGTIME_MS variables containing respectively seconds and | ||
|  |    milliseconds between creation of the dialing channel and receiving the first | ||
|  |    RINGING signal | ||
|  | 
 | ||
|  |    Add PROGRESSTIME and PROGRESSTIME_MS variables analogous to the above with respect to | ||
|  |    the PROGRESS signal. Shorter of these two times should be equivalent to | ||
|  |    the PDD (Post Dial Delay) value | ||
|  | 
 | ||
|  |    Add DIALEDTIME_MS and ANSWEREDTIME_MS variables to get millisecond resolution | ||
|  |    versions of DIALEDTIME and ANSWEREDTIME | ||
|  | 
 | ||
|  | RTP/ICE | ||
|  | ------------------ | ||
|  |  * You can now indicate that you'd like an ice_host_candidate's local address | ||
|  |    to be published as well as the mapped address.  See the sample rtp.conf | ||
|  |    for more information. | ||
|  | 
 | ||
|  | ReadExten | ||
|  | ------------------ | ||
|  |  * Add 'p' option to stop reading extension if user presses '#' key. | ||
|  | 
 | ||
|  | pbx_dundi | ||
|  | ------------------ | ||
|  |  * The DUNDi PBX module now supports IPv4/IPv6 dual binding. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Added a new PJSIP global setting called norefersub. | ||
|  |    Default is true to keep support working as before. | ||
|  | 
 | ||
|  |    res_pjsip_refer configures PJSIP norefersub capability accordingly. | ||
|  | 
 | ||
|  |    Checks the PJSIP global setting value. | ||
|  |    If it is true (default) it adds the norefersub capability to PJSIP. | ||
|  |    If it is false (disabled) it does not add the norefersub capability | ||
|  |    to PJSIP. | ||
|  | 
 | ||
|  |    This is useful for Cisco switches that do not follow RFC4488. | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * DTLS packets will now be fragmented according to the MTU as set in rtp.conf. This | ||
|  |    allows larger certificates to be used for the DTLS negotiation. By default this value | ||
|  |    is 1200. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 16.2.0 to Asterisk 16.3.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * Application event filtering is now supported. An application can now specify | ||
|  |    an "allowed" and/or "disallowed" list(s) of event types. Only those types | ||
|  |    indicated in the "allowed" list are sent to the application. Conversely, any | ||
|  |    types defined in the "disallowed" list are not sent to the application. Note | ||
|  |    that if a type is specified in both lists "disallowed" takes precedence. | ||
|  | 
 | ||
|  |  * A new REST API call has been added: 'move'. It follows the format | ||
|  |    'channels/{channelId}/move' and can be used to move channels from one application | ||
|  |    to another without needing to exit back into the dialplan. An application must be | ||
|  |    specified, but the passing a list of arguments to the new application is optional. | ||
|  |    An example call would look like this: | ||
|  | 
 | ||
|  |    client.channels.move(channelId=chan.id, app='ari-example', appArgs='a,b,c') | ||
|  | 
 | ||
|  |    If the channel was inside of a bridge when switching applications, it will | ||
|  |    remain there. If the application specified cannot be moved to, then the channel | ||
|  |    will remain in the current application and an event will be triggered named | ||
|  |    "ApplicationMoveFailed", which will provide the destination application's name | ||
|  |    and the channel information. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new configuration parameter "taskprocessor_overload_trigger" has been | ||
|  |    added to the pjsip.conf "globals" section.  The distributor currently stops | ||
|  |    accepting new requests when any taskprocessor overload is triggered.  The | ||
|  |    new option allows you to completely disable overload detection (NOT | ||
|  |    RECOMMENDED), keep the current behavior, or trigger only on pjsip | ||
|  |    taskprocessor overloads. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * A new configuration parameter 'ignore_183_without_sdp' has been added | ||
|  |    to the pjsip.conf "endpoints" section.  If enabled, will make chan_pjsip | ||
|  |    discard 183s that do not contain an SDP body, which can resolve no | ||
|  |    ringback tone issues as well as making the behavior match chan_sip. | ||
|  | 
 | ||
|  | MWI | ||
|  | ------------------ | ||
|  |  * A new module "res_mwi_devstate" has been added that allows subscriptions | ||
|  |    to voicemail boxes using "presence" events.  This allows common BLF keys | ||
|  |    to act as voicemail waiting indicators. | ||
|  | 
 | ||
|  | app_queue | ||
|  | ------------------ | ||
|  |  * Added the ability to set the wrapuptime per-member using the AddQueueMember | ||
|  |    application. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 16.1.0 to Asterisk 16.2.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * Whenever an ARI application is started, a context will be created for it | ||
|  |    automatically as long as one does not already exist, following the format | ||
|  |    'stasis-<app_name>'. Two extensions are also added to this context: a match-all | ||
|  |    extension, and the 'h' extension. Any phone that registers under this context | ||
|  |    will place all calls to the corresponding Stasis application. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Added "send_contact_status_on_update_registration" global configuration option | ||
|  |    to enable sending AMI ContactStatus event when a device refreshes its registration. | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * Reworked the media indexer so it doesn't cache the index.  Testing revealed | ||
|  |    that the cache added no benefit but that it could consume excessive memory. | ||
|  |    Two new index related functions were created: ast_sounds_get_index_for_file() | ||
|  |    and ast_media_index_update_for_file() which restrict index updating to | ||
|  |    specific sound files.  The original ast_sounds_get_index() and | ||
|  |    ast_media_index_update() calls are still available but since they no longer | ||
|  |    cache the results internally, developers should re-use an index they may | ||
|  |    already have instead of calling ast_sounds_get_index() repeatedly.  If | ||
|  |    information for only a single file is needed, ast_sounds_get_index_for_file() | ||
|  |    should be called instead of ast_sounds_get_index(). | ||
|  | 
 | ||
|  | Features | ||
|  | ------------------ | ||
|  |  * Before Asterisk 12, when using the automon or automixmon features defined | ||
|  |    in features.conf, a channel variable (TOUCH_MIXMONITOR_OUTPUT) was set on | ||
|  |    both channels, indicating the filename of the recording. | ||
|  | 
 | ||
|  |    When bridging was overhauled in Asterisk 12, the behavior was changed such | ||
|  |    that the variable was only set on the peer channel and not on the channel | ||
|  |    that initiated the automon or automixmon. | ||
|  | 
 | ||
|  |    The previous behavior has been restored so both channels receive the | ||
|  |    channel variable when one of these features is invoked. | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * You can now specify a special context with the "aliasescontext" parameter | ||
|  |    in voicemail.conf which will allow you to create aliases for physical | ||
|  |    mailboxes. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 16.0.0 to Asterisk 16.1.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | pbx_config | ||
|  | ------------------ | ||
|  |  * pbx_config will now find and process multiple 'globals' sections from | ||
|  |    extensions.conf.  Variables are processed in the order they are found | ||
|  |    and duplicate variables overwrite the previous value. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * New dialplan function PJSIP_PARSE_URI added to parse an URI and return | ||
|  |    a specified part of the URI. | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * ast_bt_get_symbols() now returns a vector of strings instead of an | ||
|  |    array of strings.  This must be freed with ast_bt_free_symbols. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * New options 'trust_connected_line' and 'send_connected_line' have been | ||
|  |    added to the endpoint. The option 'trust_connected_line' is to control | ||
|  |    if connected line updates are accepted from this endpoint. | ||
|  |    The option 'send_connected_line' is to control if connected line updates | ||
|  |    can be sent to this endpoint. | ||
|  |    The default value is 'yes' for both options. | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * The existing strictrtp option in rtp.conf has a new choice availabe, called | ||
|  |    'seqno', which behaves the same way as setting strictrtp to 'yes', but will | ||
|  |    ignore the time interval during learning so that bursts of packets can still | ||
|  |    trigger learning our source. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 15 to Asterisk 16 -------------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | app_fax | ||
|  | ------------------ | ||
|  |  * The app_fax module is now deprecated, users should migrate to the | ||
|  |    replacement module res_fax. | ||
|  | 
 | ||
|  | app_originate | ||
|  | ------------------ | ||
|  |  * An 'a' option has been added to the Originate dialplan application which | ||
|  |    will execute the originate in an asynchronous fashion. If set then the | ||
|  |    application will return immediately without waiting for the originated | ||
|  |    channel to answer. | ||
|  | 
 | ||
|  | Build System | ||
|  | ------------------ | ||
|  |  * MALLOC_DEBUG no longer has an effect on Asterisk's ABI.  Asterisk built | ||
|  |    with MALLOC_DEBUG can now successfully load binary modules built without | ||
|  |    MALLOC_DEBUG and vice versa.  Third-party pre-compiled modules no longer | ||
|  |    need to have a special build with it enabled. | ||
|  | 
 | ||
|  |  * Asterisk now depends on libjansson >= 2.11.  If this version is not | ||
|  |    available on your distro you can use `./configure --with-jansson-bundled`. | ||
|  | 
 | ||
|  | app_macro | ||
|  | ------------------ | ||
|  |  * The app_macro module is now deprecated and by default it is no longer | ||
|  |    built.  Users should migrate to app_stack (Gosub).  A warning is logged | ||
|  |    the first time any Macro is used. | ||
|  | 
 | ||
|  | app_setcallerid | ||
|  | ------------------ | ||
|  |  * The app_setcallerid module has been removed. The CALLERID dialplan function | ||
|  |    should be used instead. | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------ | ||
|  |  * New function SIP_HEADERS() enumerates all headers in the incoming INVITE. | ||
|  | 
 | ||
|  |  * The variable GET_TRANSFERRER_DATA set in the peer channel causes matching | ||
|  |    headers be retrieved from the REFER message and made accessible to the | ||
|  |    dialplan in the hash TRANSFER_DATA. | ||
|  | 
 | ||
|  | chan_dahdi | ||
|  | ------------------ | ||
|  |  * Timeouts for reading digits from analog phones are now configurable in | ||
|  |    chan_dahdi.conf: firstdigit_timeout, interdigit_timeout, matchdigit_timeout. | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * The ContactStatus and Status fields for the manager events ContactStatus | ||
|  |    and ContactStatusDetail are now set to "NonQualified" when a contact exists | ||
|  |    but has not been qualified. | ||
|  | 
 | ||
|  |  * The "Newexten" event is now part of the "dialplan" class. The documentation | ||
|  |    for Asterisk 15 already specified this, but the implementation was actually | ||
|  |    using the "call" class instead. | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * The ContactInfo event's contact_status field is now set to "NonQualified" | ||
|  |    when a contact exists but has not been qualified. | ||
|  | 
 | ||
|  | app_queue | ||
|  | ------------------ | ||
|  |  * Added the ability to set the wrapuptime in the configuration of member. | ||
|  |    When set the wrapuptime on the member is used instead of the wrapuptime | ||
|  |    defined for the queue itself. | ||
|  | 
 | ||
|  |  * Added predial handler support for caller and callee channels with the | ||
|  |    B and b options respectively.  This is similar to the predial support | ||
|  |    in app_dial. | ||
|  | 
 | ||
|  | res_config_sqlite | ||
|  | ------------------ | ||
|  |  * The res_config_sqlite module is now deprecated, users should migrate to the | ||
|  |    replacement module res_config_sqlite3. | ||
|  | 
 | ||
|  | res_monitor | ||
|  | ------------------ | ||
|  |  * The res_monitor module is now deprecated, users should migrate to the | ||
|  |    replacement module app_mixmonitor. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new AMI action, PJSIPShowAors, has been added which displays information | ||
|  |    about all configured PJSIP AORs. | ||
|  | 
 | ||
|  |  * A new AMI action, PJSIPShowAuths, has been added which displays information | ||
|  |    about all configured PJSIP Auths. | ||
|  | 
 | ||
|  |  * A new AMI action, PJSIPShowContacts, has been added which displays information | ||
|  |    about all configured PJSIP Contacts. | ||
|  | 
 | ||
|  | res_pjsip_registrar_expire | ||
|  | ------------------ | ||
|  |  * The res_pjsip_registrar_expire module has been removed.  The functionality has | ||
|  |    been moved into res_pjsip_registrar. | ||
|  | 
 | ||
|  | func_audiohookinherit | ||
|  | ------------------ | ||
|  |  * The func_audiohookinherit module has been removed. Due to architectural changes | ||
|  |    in Asterisk 12, audiohook inheritance is performed automatically and this | ||
|  |    function now lacks function. | ||
|  | 
 | ||
|  | cdr_syslog | ||
|  | ------------------ | ||
|  |  * The cdr_syslog module is now deprecated and by default it is no longer | ||
|  |    built. | ||
|  | 
 | ||
|  | cdr_sqlite | ||
|  | ------------------ | ||
|  |  * The cdr_sqlite module has been removed. Users should move to using the | ||
|  |    cdr_sqlite3_custom module instead. | ||
|  | 
 | ||
|  | format_jpeg | ||
|  | ------------------ | ||
|  |  * The format_jpeg module has been removed. | ||
|  | 
 | ||
|  | pbx_dundi | ||
|  | ------------------ | ||
|  |  * DUNDi now supports IPv6 | ||
|  | 
 | ||
|  | Core: | ||
|  | ------------------ | ||
|  |  * libedit is no longer available as an embedded library and must be provided | ||
|  |    by the system. | ||
|  |  * The STATIC_BUILD functionality has been removed as it has not been maintained | ||
|  |    and has not worked in quite some time. | ||
|  |  * The module loader now enforces inter-module dependencies.  This ensures that | ||
|  |    a module is not started before another it depends on, even if preload is used. | ||
|  |    If a dependency is not available or fails to startup this will block any | ||
|  |    dependants from startup. | ||
|  |  * Parts of the Asterisk core which can load configuration from realtime are now | ||
|  |    built-in modules.  It is no longer necessary to preload realtime drivers as | ||
|  |    they are always initialized before the built-in modules. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 15.5.0 to Asterisk 15.6.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new option 'suppress_q850_reason_headers' has been added to the endpoint | ||
|  |    object. Some devices can't accept multiple Reason headers and get confused | ||
|  |    when both 'SIP' and 'Q.850' Reason headers are received.  This option allows | ||
|  |    the 'Q.850' Reason header to be suppressed.  The default value is 'no'. | ||
|  | 
 | ||
|  | res_pjsip_endpoint_identifier_ip | ||
|  | ------------------ | ||
|  |  * Added regex support to the identify section match_header option.  You | ||
|  |    specify a regex instead of an explicit string by surrounding the header | ||
|  |    value with slashes: | ||
|  |    match_header = SIPHeader: /regex/ | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 15.4.0 to Asterisk 15.5.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * Core bridging and, more specifically, bridge_softmix have been enhanced to | ||
|  |    relay received frames of type TEXT or TEXT_DATA to all participants in a | ||
|  |    softmix bridge.  res_pjsip_messaging and chan_pjsip have been enhanced to | ||
|  |    take advantage of this so when res_pjsip_messaging receives an in-dialog | ||
|  |    MESSAGE message from a user in a conference call, it's relayed to all | ||
|  |    other participants in the call. | ||
|  | 
 | ||
|  | app_sendtext | ||
|  | ------------------ | ||
|  |  * Support Enhanced Messaging.  SendText now accepts new channel variables | ||
|  |    that can be used to override the To and From display names and set the | ||
|  |    Content-Type of a message.  Since you can now set Content-Type, other | ||
|  |    text/* content types are now valid. | ||
|  | 
 | ||
|  | app_confbridge | ||
|  | ------------------ | ||
|  |  * ConfbridgeList now shows talking status. This utilizes the same voice | ||
|  |    detection as the ConfbridgeTalking event, so bridges must be configured | ||
|  |    with "talk_detection_events=yes" for this flag to have meaning. | ||
|  | 
 | ||
|  |  * ConfBridge can now send events to participants via in-dialog MESSAGEs. | ||
|  |    All current Confbridge events are supported, such as ConfbridgeJoin, | ||
|  |    ConfbridgeLeave, etc.  In addition to those events, a new event | ||
|  |    ConfbridgeWelcome has been added that will send a list of all | ||
|  |    current participants to a new participant. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |   * Two new options have been added to the system and endpoint objects to | ||
|  |     control whether, on outbound calls, Asterisk will accept updated SDP answers | ||
|  |     during the initial INVITE transaction when 100rel is not in effect. | ||
|  |     This usually happens when the INVITE is forked to multiple UASs and more | ||
|  |     than one sends an SDP answer or when a single UAS needs to change a media | ||
|  |     port to switch from custom ringback to the actual media destination. | ||
|  | 
 | ||
|  |     The 'follow_early_media_forked' option sets whether Asterisk will accept | ||
|  |     the updated SDP when the To tag on the subsequent response is different than | ||
|  |     that on the the previous response.  This usually occurs in the forked INVITE | ||
|  |     scenario. The default value is "yes" which is the current behavior. | ||
|  | 
 | ||
|  |     The 'accept_multiple_sdp_answers' flag sets whether Asterisk will accept the | ||
|  |     updated SDP when the To tag on the subsequent response is the same as that | ||
|  |     on the previous response. This can occur when a UAS needs to switch media | ||
|  |     ports from custom ringback to the final media path.  The default value is | ||
|  |     "no" which is the current behavior. | ||
|  | 
 | ||
|  |     These options have to be enabled system-wide in the system config section | ||
|  |     of pjsip.conf as well as on individual endpoints that require the | ||
|  |     functionality. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 15.3.0 to Asterisk 15.4.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * A new configuration option "genericplc_on_equal_codecs" was added to the | ||
|  |    "plc" section of codecs.conf to allow generic packet loss concealment even | ||
|  |    if no transcoding was originally needed.  Transcoding via SLIN is forced | ||
|  |    in this case. | ||
|  | 
 | ||
|  | res_pjproject | ||
|  | ------------------ | ||
|  |  * Added the "cache_pools" option to pjproject.conf.  Disabling the option | ||
|  |    helps track down pool content mismanagement when using valgrind or | ||
|  |    MALLOC_DEBUG.  The cache gets in the way of determining if the pool contents | ||
|  |    are used after free and who freed it. | ||
|  | 
 | ||
|  | res_pjsip_notify | ||
|  | ------------------ | ||
|  |  * Extend the PJSIPNotify AMI command to send an in-dialog notify on a | ||
|  |    channel. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 15.2.0 to Asterisk 15.3.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * During dialplan reload log messages are produced for each context, | ||
|  |    extension and include.  These messages are no longer printed by the | ||
|  |    verbose loggers, they are now only logged as debug messages. | ||
|  | 
 | ||
|  | app_confbridge | ||
|  | ------------------ | ||
|  |  * Added the Muted header to the ConfbridgeJoin AMI event to indicate the | ||
|  |    participant's starting mute status. | ||
|  | 
 | ||
|  |  * Made the AMI ConfbridgeList action's ConfbridgeList events output all | ||
|  |    the standard channel snapshot headers instead of a few hand-coded channel | ||
|  |    snapshot headers.  The benefit is that the CallerIDName gets disruptive | ||
|  |    characters like CR, LF, Tab, and a few others escaped.  However, an empty | ||
|  |    CallerIDName is now output as "<unknown>" instead of "<no name>". | ||
|  | 
 | ||
|  | app_followme | ||
|  | ------------------ | ||
|  |  * Added a new prompt, connecting-prompt, which will be played | ||
|  |    (if configured) to the "winner" callee before connecting the call. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Users who are matching endpoints by SIP header need to reevaluate their | ||
|  |    global "endpoint_identifier_order" option in light of the "ip" endpoint | ||
|  |    identifier method split into the "ip" and "header" endpoint identifier | ||
|  |    methods. | ||
|  | 
 | ||
|  |  * The pjsip_transport_event feature introduced in 15.1.0 has been refactored. | ||
|  |    Any external modules that may have used that feature (highly unlikely) will | ||
|  |    need to be changed as the API has been altered slightly. | ||
|  | 
 | ||
|  | res_pjsip_endpoint_identifier_ip | ||
|  | ------------------ | ||
|  |  * The endpoint identifier "ip" method previously recognized endpoints either | ||
|  |    by IP address or a matching SIP header.  The "ip" endpoint identifier method | ||
|  |    is now split into the "ip" and "header" endpoint identifier methods.  The | ||
|  |    "ip" endpoint identifier method only matches by IP address and the "header" | ||
|  |    endpoint identifier method only matches by SIP header.  The split allows the | ||
|  |    user to control the relative priority of the IP address and the SIP header | ||
|  |    identification methods in the global "endpoint_identifier_order" option. | ||
|  |    e.g., If you have two type=identify sections where one matches by IP address | ||
|  |    for endpoint alice and the other matches by SIP header for endpoint bob then | ||
|  |    you can now predict which endpoint is matched when a request comes in that | ||
|  |    matches both. | ||
|  | 
 | ||
|  | res_pjsip_pubsub | ||
|  | ------------------ | ||
|  |  * In an earlier release, inbound registrations on a reliable transport | ||
|  |    were pruned on Asterisk restart since the TCP connection would have | ||
|  |    been torn down and become unusable when Asterisk stopped.  This same | ||
|  |    process is now also applied to inbound subscriptions.  Since this | ||
|  |    required the addition of a new column to the ps_subscription_persistence | ||
|  |    realtime table, users who store their subscriptions in a database will | ||
|  |    need to run the "alembic upgrade head" process to add the column to | ||
|  |    the schema. | ||
|  | 
 | ||
|  | res_pjsip_transport_management | ||
|  | ------------------ | ||
|  |  * Since res_pjsip_transport_management provides several attack | ||
|  |    mitigation features, its functionality moved to res_pjsip and | ||
|  |    this module has been removed.  This way the features will always | ||
|  |    be available if res_pjsip is loaded. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 15.1.0 to Asterisk 15.2.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * Added the "cache_media_frames" option to asterisk.conf.  Disabling the option | ||
|  |    helps track down media frame mismanagement when using valgrind or | ||
|  |    MALLOC_DEBUG.  The cache gets in the way of determining if the frame is | ||
|  |    used after free and who freed it.  NOTE: This option has no effect when | ||
|  |    Asterisk is compiled with the LOW_MEMORY compile time option enabled because | ||
|  |    the cache code does not exist. | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------ | ||
|  |  * Calls to invalid extensions are now reported as an ACL failure security event | ||
|  |    "no_extension_match". | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * The X.509 certificate used for DTLS negotiation can now be automatically | ||
|  |    generated. This is supported by res_pjsip by specifying | ||
|  |    "dtls_auto_generate_cert = yes" on a PJSIP endpoint. For chan_sip, you | ||
|  |    would set "dtlsautogeneratecert = yes" either in the [general] section of | ||
|  |    sip.conf or on a specific peer. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * The "identify_by" on endpoints can now be set to "ip" to restrict an endpoint | ||
|  |    being matched based only on IP address. To ensure no behavior change the | ||
|  |    default has been changed to "username,ip". | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 15.0.0 to Asterisk 15.1.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * The "remove_existing" option now allows a registration to succeed by | ||
|  |    displacing any existing contacts that now exceed the "max_contacts" count. | ||
|  |    Any removed contacts are the next to expire.  The behaviour change is | ||
|  |    beneficial when "rewrite_contact" is enabled and "max_contacts" is greater | ||
|  |    than one.  The removed contact is likely the old contact created by | ||
|  |    "rewrite_contact" that the device is refreshing. | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * Added a new CancelAtxfer action that cancels an attended transfer. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 14 to Asterisk 15 -------------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | app_queue | ||
|  | ------------------ | ||
|  |  * PAUSEALL/UNPAUSEALL now sets the pause reason in the queue_log if it has | ||
|  |    been defined. | ||
|  | 
 | ||
|  |  * A new option, "announce-position-only-up," has been added that, when set to | ||
|  |    yes, causes position announcements to only be played when the caller's | ||
|  |    queue position has improved since the last time that we announced their | ||
|  |    position. This default is no. | ||
|  | 
 | ||
|  | Build System | ||
|  | ------------------ | ||
|  |  * '--with-pjproject-bundled' is now the default when running ./configure | ||
|  |    It can be disabled with '--without-pjproject-bundled'. | ||
|  | 
 | ||
|  |  * A '--with-download-cache' option is now available which is equivalent to | ||
|  |    setting '--with-sounds-cache' and '--with-externals-cache' to the same | ||
|  |    value.  The download cache can also be set via the AST_DOWNLOAD_CACHE | ||
|  |    environment variable. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 14.6.0 to Asterisk 14.7.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * The "external_media_address" on transports is now resolved using dnsmgr and | ||
|  |    when dnsmgr refreshes are enabled will be automatically updated with the new | ||
|  |    IP address of a given hostname. | ||
|  | 
 | ||
|  |  * A new endpoint parameter "incoming_mwi_mailbox" allows Asterisk to receive | ||
|  |    unsolicited MWI NOTIFY requests and make them available to other modules via | ||
|  |    the stasis message bus. | ||
|  | 
 | ||
|  | res_musiconhold | ||
|  | ------------------ | ||
|  |  * By default, when res_musiconhold reloads or unloads, it sends a HUP signal | ||
|  |    to custom applications (and all descendants), waits 100ms, then sends a | ||
|  |    TERM signal, waits 100ms, then finally sends a KILL signal.  An application | ||
|  |    which is interacting with an external device and/or spawns children of its | ||
|  |    own may not be able to exit cleanly in the default times, expecially if sent | ||
|  |    a KILL signal, or if it's children are getting signals directly from | ||
|  |    res_musiconhoild.  To allow extra time, the 'kill_escalation_delay' | ||
|  |    class option can be used to set the number of milliseconds res_musiconhold | ||
|  |    waits before escalating kill signals, with the default being the current | ||
|  |    100ms.  To control to whom the signals are sent, the "kill_method" | ||
|  |    class option can be set to "process_group" (the default, existing behavior), | ||
|  |    which sends signals to the application and its descendants directly, or | ||
|  |    "process" which sends signals only to the application itself. | ||
|  | 
 | ||
|  |  * New dialplan function PJSIP_DTMF_MODE added to get or change the DTMF mode | ||
|  |    of a channel on a per-call basis. | ||
|  | 
 | ||
|  | res_xmpp | ||
|  | ----------------- | ||
|  |  * OAuth 2.0 authentication is now supported when contacting Google. Follow the | ||
|  |    instructions in xmpp.conf.sample to retrieve and configure the necessary | ||
|  |    tokens. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 14.5.0 to Asterisk 14.6.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * A new global option "imap_poll_logout" was added to specify whether need to | ||
|  |    disconnect from the IMAP server after polling of mailboxes. | ||
|  |    Default: no | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new endpoint option "refer_blind_progress" was added to turn off notifying | ||
|  |    the progress details on Blind Transfer. If this option is not set then | ||
|  |    the chan_pjsip will send NOTIFY "200 OK" immediately after "202 Accepted". | ||
|  |    On default is enabled. | ||
|  |    Some SIP phones like Mitel/Aastra or Snom keep the line busy until | ||
|  |    receive "200 OK". | ||
|  | 
 | ||
|  |  * A new endpoint option "notify_early_inuse_ringing" was added to control | ||
|  |    whether to notify dialog-info state 'early' or 'confirmed' on Ringing | ||
|  |    when already INUSE. | ||
|  | 
 | ||
|  |  * The endpoint option 'dtmf_mode' has a new option 'auto_dtmf' added. This | ||
|  |    mode works similar to 'auto' except uses DTMF INFO as fallback instead of | ||
|  |    INBAND. | ||
|  | 
 | ||
|  | res_agi | ||
|  | ------------------ | ||
|  |  * The EAGI() application will now look for a dialplan variable named | ||
|  |    EAGI_AUDIO_FORMAT and use that format with the 'enhanced' audio pipe that | ||
|  |    EAGI provides. If not specified, it will continue to use the default signed | ||
|  |    linear (slin). | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * When dialing an endpoint directly or using the PJSIP_DIAL_CONTACTS dialplan | ||
|  |    function any contact which is considered unreachable due to qualify being | ||
|  |    enabled will no longer be called. | ||
|  | 
 | ||
|  |  * The asymmetric_rtp_codec option now also controls whether chan_pjsip will | ||
|  |    send media as-is without transcoding if the codec has been negotiated in the | ||
|  |    SDP. If set to "no" then Asterisk will only ever send the preferred codec | ||
|  |    from the SDP, unless the remote side sends a different codec and we will | ||
|  |    switch to match. | ||
|  | 
 | ||
|  | Build System | ||
|  | ------------------ | ||
|  |  * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which can be used | ||
|  |    to pass arbitrary options to the bundled pjproject configure. | ||
|  | 
 | ||
|  |  * Automatically set the bundled pjproject configure --host and --build | ||
|  |    options to match those supplied for the asterisk configure. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 14.4.0 to Asterisk 14.5.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * Added the stun_blacklist option to rtp.conf.  Some multihomed servers have | ||
|  |    IP interfaces that cannot reach the STUN server specified by stunaddr. | ||
|  |    Blacklist those interface subnets from trying to send a STUN packet to find | ||
|  |    the external IP address.  Attempting to send the STUN packet needlessly | ||
|  |    delays processing incoming and outgoing SIP INVITEs because we will wait | ||
|  |    for a response that can never come until we give up on the response. | ||
|  |    Multiple subnets may be listed. | ||
|  | 
 | ||
|  | Logging | ||
|  | ------------------- | ||
|  |  * Added logger_queue_limit to the configuration options. | ||
|  |    All log messages go to a queue serviced by a single thread | ||
|  |    which does all the IO.  This setting controls how big that | ||
|  |    queue can get (and therefore how much memory is allocated) | ||
|  |    before new messages are discarded. | ||
|  |    The default is 1000. | ||
|  | 
 | ||
|  | res_pjsip_config_wizard | ||
|  | ------------------ | ||
|  |  * Two new parameters have been added to the pjsip config wizard. | ||
|  |    Setting 'sends_line_with_registrations' to true will cause the wizard | ||
|  |    to skip the creation of an identify object to match incoming requests | ||
|  |    to the endpoint and instead add the line and endpoint parameters to | ||
|  |    the outbound registration object. | ||
|  |    Setting 'outbound_proxy' is a shortcut for adding individual | ||
|  |    endpoint/outbound_proxy, aor/outbound_proxy and registration/outbound_proxy | ||
|  |    parameters. | ||
|  | 
 | ||
|  | res_hep_rtcp | ||
|  | ------------------ | ||
|  |  * If the 'call-id' value is specified for the uuid_type option and a | ||
|  |    chan_sip channel is used the resulting HEP traffic will now contain the | ||
|  |    SIP Call-ID instead of the Asterisk channel name. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Build System | ||
|  | ------------------ | ||
|  |  * LOW_MEMORY no longer has an effect on Asterisk ABI.  Symbols that were | ||
|  |    previously suppressed by LOW_MEMORY are now replaced by stub functions. | ||
|  |    Asterisk built with LOW_MEMORY can now successfully load binary modules | ||
|  |    built without LOW_MEMORY and vice versa. | ||
|  | 
 | ||
|  |  * RADIUS backends for CEL and CDR can now also be built using the radcli | ||
|  |    client library, in addition to the existing support for building them | ||
|  |    using either freeradius or radiusclient-ng. | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * ASTERISK_REGISTER_FILE was no longer useful and has been removed.  Sources | ||
|  |    which use mtx_prof must now manually declare and initialize the variable. | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------ | ||
|  |  * If an offer is received with optional SRTP (a media stream with RTP/AVP but | ||
|  |    which contains a crypto line) chan_sip will now accept it and enable SRTP. | ||
|  |    If you would like to do optional SRTP on outbound you will need to create | ||
|  |    a dialplan that dials with it enabled initially and if it fails fall back to | ||
|  |    without. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Added endpoint configuration parameter "preferred_codec_only". | ||
|  |    This allow asterisk response to a SIP invite with the single most | ||
|  |    preferred codec rather than advertising all joint codec capabilities. | ||
|  |    This limits the other side's codec choice to exactly what we prefer. | ||
|  | 
 | ||
|  | cdr_radius | ||
|  | ------------------ | ||
|  |  * To fix a memory leak the syslog channel is now empty if it has not been set | ||
|  |    and used by a syslog channel in the logger. | ||
|  | 
 | ||
|  | cel_radius | ||
|  | ------------------ | ||
|  |  * To fix a memory leak the syslog channel is now empty if it has not been set | ||
|  |    and used by a syslog channel in the logger. | ||
|  | 
 | ||
|  | RTP | ||
|  | ------------------ | ||
|  |  * New setting "rtp_pt_dynamic = 35" in asterisk.conf: | ||
|  |    Normally the Dynamic RTP Payload Type numbers are 96-127, which allow just 32 | ||
|  |    formats. To avoid the message "No Dynamic RTP mapping available", the range | ||
|  |    was changed to 35-63,96-127. This is allowed by RFC 3551 section 3. However, | ||
|  |    when you use more than 32 formats and calls are not accepted by a remote | ||
|  |    implementation, please report this and go back to rtp_pt_dynamic = 96. | ||
|  | 
 | ||
|  |  * A new setting, "rtp_use_dynamic", has been added in asterisk.conf". When set | ||
|  |    to "yes" RTP dynamic payload types are assigned dynamically per RTP instance. | ||
|  |    When set to "no" RTP dynamic payload types are globally initialized to pre- | ||
|  |    designated numbers and function similar to static payload types. | ||
|  | 
 | ||
|  | app_originate | ||
|  | ------------------ | ||
|  |  * Added support to gosub predial routines on both original channel and on the | ||
|  |    created channel using options parameter (like app_dial) B() and b().  This | ||
|  |    allows for adding variables to newly created channel or, e.g. setting callerid. | ||
|  | 
 | ||
|  | CLI Commands | ||
|  | ------------------ | ||
|  |  * 'dialplan show' output will now show [config_file:line_number] instead of | ||
|  |    [registrar] when that information is available. Currently only extensions | ||
|  |    registered by pbx_config when loading/reloading will use this format. | ||
|  | 
 | ||
|  | app_queue | ||
|  | ------------------ | ||
|  |  * Add 'QueueUpdate' application which can be used to track outbound calls | ||
|  |    using app_queue. | ||
|  | 
 | ||
|  | pbx_spool | ||
|  | ------------------ | ||
|  |  * Asterisk will now set the AST_OUTGOING_ATTEMPT channel variable so that | ||
|  |    attempt-specific behavior is possible. This is a 1-based number that | ||
|  |    simply increases by 1 for each attempt. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 14.3.0 to Asterisk 14.4.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * The 'PJSIPShowEndpoint' command's respone event of 'IdentifyDetail' now | ||
|  |    contains a new optional parameter, 'MatchHeader', mapping to the new | ||
|  |    configuration option 'match_header' for the corresponding 'identify' object. | ||
|  |    It should be noted that since 'match_header' takes in a key: value pair, the | ||
|  |    event parameter will contain a ':' as well. | ||
|  | 
 | ||
|  | app_record | ||
|  | ------------------ | ||
|  |  * Added new 'u' option to Record() application which prevents Asterisk from | ||
|  |    truncating silence from the end of recorded files. | ||
|  | 
 | ||
|  | res_pjsip_outbound_registration | ||
|  | ------------------ | ||
|  |  * Outbound registrations are now refreshed when res_stun_monitor detects | ||
|  |    a network change event has happened. | ||
|  |    The 'pjsip send (un)register' CLI commands were updated to accept '*all' | ||
|  |    as an argument to operate on all registrations. | ||
|  |    The 'PJSIP(Un)Register' AMI commands were updated to also accept '*all'. | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * The 'Comedian Mail' prompts can now be overriden using the 'vm-login' and | ||
|  |    'vm-newuser' configuration options in voicemail.conf. | ||
|  | 
 | ||
|  |  * Added 'fromstring' field to the voicemail boxes. If set, it will override | ||
|  |    the global 'fromstring' field on a per-mailbox basis. | ||
|  | 
 | ||
|  | func_channel | ||
|  | ------------------ | ||
|  |  * Added CHANNEL(callid) to retrieve the call log tag associated with the | ||
|  |    channel.  e.g., [C-00000000]  Dialplan now has access to the call log | ||
|  |    search key associated with the channel so it can be saved in case there | ||
|  |    is a problem with the call. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new transport parameter 'symmetric_transport' has been added. | ||
|  |    When a request from a dynamic contact comes in on a transport with this | ||
|  |    option set to 'yes', the transport name will be saved and used for | ||
|  |    subsequent outgoing requests like OPTIONS, NOTIFY and INVITE.  It's | ||
|  |    saved as a contact uri parameter named 'x-ast-txp' and will display with | ||
|  |    the contact uri in CLI, AMI, and ARI output.  On the outgoing request, | ||
|  |    if a transport wasn't explicitly set on the endpoint AND the request URI | ||
|  |    is not a hostname, the saved transport will be used and the 'x-ast-txp' | ||
|  |    parameter stripped from the outgoing packet.  To facilitate recreation of | ||
|  |    subscriptions on asterisk restart, a new column 'contact_uri' needed to be | ||
|  |    added to the ps_subcsription_persistence table.  Since new columns were | ||
|  |    added to both transport and subscription_persistence, an alembic upgrade | ||
|  |    should be run to bring the database tables up to date. | ||
|  | 
 | ||
|  |  * A new option, allow_overlap, has been added to endpoints which allows | ||
|  |    overlap dialing functionality to be enabled or disabled. The option defaults | ||
|  |    to enabled. | ||
|  | 
 | ||
|  | res_pjsip_transport_websocket | ||
|  | ------------------ | ||
|  |  * Removed non-secure websocket support.  Firefox and Chrome have not allowed | ||
|  |    non-secure websockets for quite some time so this shouldn't be an issue | ||
|  |    for people.  Attempting to use a non-secure websocket may or may not work | ||
|  |    when Asterisk attempts to send SIP requests to do something like initiate | ||
|  |    call hangup. | ||
|  | 
 | ||
|  | res_pjsip_endpoint_identifier_ip | ||
|  | ------------------ | ||
|  |  * A new option has been added to the 'identify' configuration object, | ||
|  |    'match_header'. The 'match_header' attribute should contain a SIP | ||
|  |    header: value pair that, When set, will cause inbound requests that contain | ||
|  |    the matching SIP header/value pair to be associated with the corresponding | ||
|  |    endpoint. This option is cumulative with the 'match' option, so that if | ||
|  |    either option matches the request, the request is associated with the | ||
|  |    endpoint. | ||
|  | 
 | ||
|  |    In a future release, this module will be renamed to something more | ||
|  |    appropriate, as it now matches inbound requests on more than just IP | ||
|  |    address. | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ----------------- | ||
|  |  * The RTP layer of Asterisk now has support for RFC 5761: "Multiplexing RTP | ||
|  |    Data and Control Packets on a Single Port." So far, the only channel driver | ||
|  |    that supports this feature is chan_pjsip. You can set "rtcp_mux = yes" on | ||
|  |    a PJSIP endpoint in pjsip.conf to enable the feature. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 14.2.0 to Asterisk 14.3.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | res_pjproject | ||
|  | ------------------ | ||
|  |  * Added new CLI command "pjproject set log level".  The new command allows | ||
|  |    the maximum PJPROJECT log levels to be adjusted dynamically and | ||
|  |    independently from the set debug logging level like many other similar | ||
|  |    module debug logging commands. | ||
|  | 
 | ||
|  |  * Added new companion CLI command "pjproject show log level" to allow the | ||
|  |    user to see the current maximum pjproject logging level. | ||
|  | 
 | ||
|  |  * Added new pjproject.conf startup section "log_level' option to set the | ||
|  |    initial maximum PJPROJECT logging level. | ||
|  | 
 | ||
|  | res_pjsip_outbound_registration | ||
|  | ------------------ | ||
|  |  * Statsd no longer logs redundant status PJSIP.registrations.state changes | ||
|  |    for internal state transitions that don't change the reported public status | ||
|  |    state. | ||
|  | 
 | ||
|  | res_pjsip_registrar | ||
|  | ------------------ | ||
|  |  * The PJSIPShowRegistrationInboundContactStatuses AMI command has been added | ||
|  |    to return ContactStatusDetail events as opposed to | ||
|  |    PJSIPShowRegistrationsInbound which just a dumps every defined AOR. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Six existing contact fields have been added to the end of the | ||
|  |    ContactStatusDetail AMI event: | ||
|  |    ID, AuthenticateQualify, OutboundProxy, Path, QualifyFrequency and | ||
|  |    QualifyTimeout.  Existing fields have not been disturbed. | ||
|  | 
 | ||
|  | res_pjsip_endpoint_identifier_ip | ||
|  | ------------------ | ||
|  |  * SRV lookups can now be done on provided hostnames to determine additional | ||
|  |    source IP addresses for requests. This is configurable using the | ||
|  |    "srv_lookups" option on the identify and defaults to "yes". | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * The 'ari set debug' command has been enhanced to accept 'all' as an | ||
|  |    application name.  This allows dumping of all apps even if an app | ||
|  |    hasn't registered yet. | ||
|  | 
 | ||
|  |  * 'ari set debug' now displays requests and responses as well as events. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 14.1.0 to Asterisk 14.2.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * Events that reference a bridge may now contain two new optional fields: | ||
|  |    - 'BridgeVideoSourceMode': the video source mode for the bridge. | ||
|  |      Can be one of 'none', 'talker', or 'single'. | ||
|  |    - 'BridgeVideoSource': the unique ID of the channel that is the video | ||
|  |      source in this bridge, if one exists. | ||
|  | 
 | ||
|  |  * A new event, BridgeVideoSourceUpdate, has been added with a class | ||
|  |    authorization of CALL. The event is raised when the video source changes | ||
|  |    in a multi-party mixing bridge. | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * The bridges resource now exposes two new operations: | ||
|  |    - POST /bridges/{bridgeId}/videoSource/{channelId}: Set a video source in a | ||
|  |      multi-party mixing bridge | ||
|  |    - DELETE /bridges/{bridgeId}/videoSource: Remove the set video source, | ||
|  |      reverting to talk detection for the video source | ||
|  | 
 | ||
|  |  * The bridge model in any returned response or event now contains the following | ||
|  |    optional fields: | ||
|  |    - video_mode: the video source mode for the bridge. Can be one of 'none', | ||
|  |      'talker', or 'single'. | ||
|  |    - video_source_id: the unique ID of the channel that is the video source | ||
|  |      in this bridge, if one exists. | ||
|  | 
 | ||
|  |  * A new event, BridgeVideoSourceChanged, has been added for bridges. | ||
|  |    Applications subscribed to a bridge will receive this event when the source | ||
|  |    of video changes in a mixing bridge. | ||
|  | 
 | ||
|  |  * The ARI major version has been bumped. There are not any known breaking changes | ||
|  |    in ARI. The major version has been bumped because otherwise we can end up with | ||
|  |    overlapping version numbers between different Asterisk versions. Now each major | ||
|  |    version of Asterisk will bring with it a change in the major version of ARI. | ||
|  |    The ARI version in Asterisk 14 is now 2.0.0. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Automatic dual stack support is now implemented. Depending on DNS resolution | ||
|  |    and the transport used for sending a message the SIP signaling and SDP will | ||
|  |    be updated with the correct IP address and protocol version. This means that | ||
|  |    the rtp_ipv6 and t38_udptl_ipv6 options no longer have any effect. The | ||
|  |    res_pjsip_multihomed module has also been moved into core res_pjsip to ensure | ||
|  |    that messages are updated with the correct address information in all cases. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * The default behavior for RTP codecs has been changed. The sending codec will | ||
|  |    now match the receiving codec. This can be turned off and behavior reverted | ||
|  |    to asymmetric using the "asymmetric_rtp_codec" endpoint option. If this | ||
|  |    option is set then the sending and received codec are allowed to differ. | ||
|  | 
 | ||
|  | CLI Commands | ||
|  | ------------------ | ||
|  |  * Three new CLI commands have been added for ARI: | ||
|  |    - ari show apps: | ||
|  |       Displays a listing of all registered ARI applications. | ||
|  |    - ari show app <name>: | ||
|  |       Display detailed information about a registered ARI application. | ||
|  |    - ari set debug <name> <on|off>: | ||
|  |       Enable/disable debugging of an ARI application. When debugged, verbose | ||
|  |       information will be sent to the Asterisk CLI. | ||
|  | 
 | ||
|  | 
 | ||
|  | Queue | ||
|  | ------------------ | ||
|  |  * A new dialplan variable, ABANDONED, is set when the call is not answered | ||
|  |    by an agent. | ||
|  | 
 | ||
|  | res_ari | ||
|  | ------------------ | ||
|  |  * The configuration file ari.conf now supports a channelvars option, which | ||
|  |    specifies a list of channel variables to include in each channel-oriented | ||
|  |    ARI event. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 14.0.0 to Asterisk 14.1.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Build System | ||
|  | ------------------ | ||
|  |  * The res_digium_phone, codec_g729a, codec_silk, codec_siren7 and | ||
|  |    codec_siren14 binary modules hosted at downloads.digium.com can now be | ||
|  |    automatically downloaded and installed during the Asterisk install | ||
|  |    process.  If selected in menuselect, when 'make install' is run, the | ||
|  |    script will check the downloads site for a new version and download | ||
|  |    and install it if needed.  The '--with-externals-cache' option to | ||
|  |    ./configure can be used to specify a location to cache the latest | ||
|  |    tarballs so they don't have to be re-downloaded for every install. | ||
|  | 
 | ||
|  | app_voicemail | ||
|  | ------------------ | ||
|  |  * Added "tps_queue_high" and "tps_queue_low" options. | ||
|  |    The options can modify the taskprocessor alert levels for this module. | ||
|  |    Additional information can be found in the sample configuration file at | ||
|  |    config/samples/voicemail.conf.sample. | ||
|  | 
 | ||
|  | res_pjsip_mwi | ||
|  | ------------------ | ||
|  |  * Added "mwi_tps_queue_high" and "mwi_tps_queue_low" global configuration | ||
|  |    options to tune taskprocessor alert levels. | ||
|  | 
 | ||
|  |  * Added "mwi_disable_initial_unsolicited" global configuration option | ||
|  |    to disable sending unsolicited MWI to all endpoints on startup. | ||
|  |    Additional information can be found in the sample configuration file at | ||
|  |    config/samples/pjsip.conf.sample. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * A new dialplan function, PJSIP_SEND_SESSION_REFRESH, has been added. When | ||
|  |    invoked, a re-INVITE or UPDATE request will be sent immediately to the | ||
|  |    endpoint underlying the channel. When used in combination with the existing | ||
|  |    dialplan function PJSIP_MEDIA_OFFER, this allows the formats on a PJSIP | ||
|  |    channel to be re-negotiated and updated after session set up. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new endpoint configuration parameter 'contact_user' has been added which | ||
|  |    when set will override the default user set on Contact headers in outgoing | ||
|  |    requests. | ||
|  | 
 | ||
|  |  * If you are using a sorcery realtime backend to store global res_pjsip | ||
|  |    options (ps_globals table) then you now have to do a res_pjsip reload for | ||
|  |    changes to these options to take effect.  If you are using pjsip.conf to | ||
|  |    configure these options then you already had to do a reload after making | ||
|  |    changes. | ||
|  | 
 | ||
|  |  * Added "ignore_uri_user_options" global configuration option for | ||
|  |    compatibility with an ITSP that sends URI user field options.  When enabled | ||
|  |    the user field is truncated at the first semicolon. | ||
|  |    Example: | ||
|  |    URI: "sip:1235557890;phone-context=national@x.x.x.x;user=phone" | ||
|  |    The user field is "1235557890;phone-context=national" | ||
|  |    Which is truncated to this: "1235557890" | ||
|  | 
 | ||
|  |    Note: The caller-id and redirecting number strings obtained from incoming | ||
|  |    SIP URI user fields are now always truncated at the first semicolon. | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |   * An option, ice_blacklist, has been added which allows certain subnets to be | ||
|  |     excluded from local ICE candidates. | ||
|  | 
 | ||
|  | app_confbridge | ||
|  | ------------------ | ||
|  |   * Some sounds played into the bridge are played asynchronously. This, for | ||
|  |     instance, allows a channel to immediately exit the ConfBridge without having | ||
|  |     to wait for a leave announcement to play. | ||
|  | 
 | ||
|  | app_dial | ||
|  | ------------------ | ||
|  |  * Added the "Q" option which sets the Q.850/Q.931 cause on unanswered channels | ||
|  |    when another channel answers the call.  The default of ANSWERED_ELSEWHERE | ||
|  |    is unchanged. | ||
|  | 
 | ||
|  | res_ari | ||
|  | ------------------ | ||
|  |  * ARI events will all now include a new field in the root of the JSON message, | ||
|  |    'asterisk_id'.  This will be the unique ID for the Asterisk system | ||
|  |    transmitting the event.  The value can be overridden using the 'entityid' | ||
|  |    setting in asterisk.conf. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13 to Asterisk 14 -------------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AMI | ||
|  | ----------------- | ||
|  |  * A new event, "DialState" has been added. This is similar to "DialBegin" and | ||
|  |  "DialEnd" in that it tracks the state of a dialed call. The difference is that | ||
|  |  this indicates some intermediate state change in the dial attempt, such as | ||
|  |  "RINGING", "PROGRESS", or "PROCEEDING". | ||
|  | 
 | ||
|  | ARI | ||
|  | ----------------- | ||
|  |  * A new ARI method has been added to the channels resource. "create" allows for | ||
|  |    you to create a new channel and place that channel into a Stasis application. | ||
|  |    This is similar to origination except that the specified channel is not | ||
|  |    dialed. This allows for an application writer to create a channel, perform | ||
|  |    manipulations on it, and then delay dialing the channel until later. | ||
|  | 
 | ||
|  |  * To complement the "create" method, a "dial" method has been added to the | ||
|  |    channels resource in order to place a call to a created channel. | ||
|  | 
 | ||
|  |  * All operations that initiate playback of media on a resource now support | ||
|  |    a list of media URIs. The list of URIs are played in the order they are | ||
|  |    presented to the resource. A new event, "PlaybackContinuing", is raised when | ||
|  |    a media URI finishes but before the next media URI starts. When a list is | ||
|  |    played, the "Playback" model will contain the optional attribute | ||
|  |    "next_media_uri", which specifies the next media URI in the list to be played | ||
|  |    back to the resource. The "PlaybackFinished" event is raised when all media | ||
|  |    URIs are done. | ||
|  | 
 | ||
|  |  * Stored recordings now allow for the media associated with a stored recording | ||
|  |    to be retrieved. The new route, GET /recordings/stored/{name}/file, will | ||
|  |    transmit the raw media file to the requester as binary. | ||
|  | 
 | ||
|  | 
 | ||
|  |  * "Dial" events have been modified to not only be sent when dialing begins and ends. | ||
|  |  They now are also sent for intermediate states, such as "RINGING", "PROGRESS", and | ||
|  |  "PROCEEDING". | ||
|  | 
 | ||
|  | Applications | ||
|  | ------------------ | ||
|  | 
 | ||
|  | BridgeAdd | ||
|  | ------------------ | ||
|  |  * A new application in Asterisk, this will join the calling channel | ||
|  |    to an existing bridge containing the named channel prefix. | ||
|  | 
 | ||
|  | ChanSpy | ||
|  | ------------------ | ||
|  |  * Added the 'l' option, which forces ChanSpy's audiohook to use a long queue | ||
|  |    to store the audio frames. This option is useful if audio loss is | ||
|  |    experienced when using ChanSpy, but may introduce some delay in the audio | ||
|  |    feed on the listening channel. | ||
|  | 
 | ||
|  | Codecs | ||
|  | ------------------ | ||
|  |  * Added format attribute negotiation for the iLBC audio codec. Format attribute | ||
|  |    negotiation is provided by the res_format_attr_ilbc module. iLBC 20 is the | ||
|  |    default now. Falls back to iLBC 30, when the remote party requests this. | ||
|  | 
 | ||
|  | ConfBridge | ||
|  | ------------------ | ||
|  |  * Added the ability to pass options to MixMonitor when recording is used with | ||
|  |    ConfBridge. This includes the addition of the following configuration | ||
|  |    parameters for the 'bridge' object: | ||
|  |    - record_file_timestamp: whether or not to append the start time to the | ||
|  |      recorded file name | ||
|  |    - record_options: the options to pass to the MixMonitor application | ||
|  |    - record_command: a command to execute when recording is finished | ||
|  |    Note that these options may also be with the CONFBRIDGE function. | ||
|  | 
 | ||
|  | ControlPlayback | ||
|  | ------------------ | ||
|  |  * Remote files can now be retrieved and played back. See the Playback | ||
|  |    dialplan application for more details. | ||
|  | 
 | ||
|  | FollowMe | ||
|  | ------------------ | ||
|  |  * It is now possible to disable the prompt from a callee by setting | ||
|  |    'enable_callee_prompt = no' in followme.conf. | ||
|  | 
 | ||
|  | Playback | ||
|  | ------------------ | ||
|  |  * Remote files can now be retrieved and played back via the Playback and other | ||
|  |    media playback dialplan applications. This is done by directly providing | ||
|  |    the URL to play to the dialplan application: | ||
|  |      same => n,Playback(http://1.1.1.1/howler-monkeys-fl.wav) | ||
|  |    Note that unlike 'normal' media files, the entire URI to the file must be | ||
|  |    provided, including the file extension. Currently, on HTTP and HTTPS URI | ||
|  |    schemes are supported. | ||
|  | 
 | ||
|  | Queue | ||
|  | ------------------- | ||
|  |  * Added field ReasonPause on QueueMemberStatus if set when paused, the reason | ||
|  |    the queue member was paused. | ||
|  | 
 | ||
|  |  * Added field LastPause on QueueMemberStatus for time when started the last | ||
|  |    pause for a queue member. | ||
|  | 
 | ||
|  |  * Show the time when started the last pause for queue member on CLI for command | ||
|  |    'queue show'. | ||
|  | 
 | ||
|  | SMS | ||
|  | ------------------ | ||
|  |  * Added the 'n' option, which prevents the SMS from being written to the log | ||
|  |    file. This is needed for those countries with privacy laws that require | ||
|  |    providers to not log SMS content. | ||
|  | 
 | ||
|  | 
 | ||
|  | Channel Drivers | ||
|  | ------------------ | ||
|  | 
 | ||
|  | chan_dahdi | ||
|  | ------------------ | ||
|  |  * The CALLERID(ani2) value for incoming calls is now populated in featdmf | ||
|  |    signaling mode.  The information was previously discarded. | ||
|  | 
 | ||
|  |  * Added the force_restart_unavailable_chans compatibility option.  When | ||
|  |    enabled it causes Asterisk to restart the ISDN B channel if an outgoing | ||
|  |    call receives cause 44 (Requested channel not available). | ||
|  | 
 | ||
|  | chan_iax2 | ||
|  | ------------------ | ||
|  |  * The iax.conf forcejitterbuffer option has been removed.  It is now always | ||
|  |    forced if you set iax.conf jitterbuffer=yes.  If you put a jitter buffer | ||
|  |    on a channel it will be on the channel. | ||
|  | 
 | ||
|  |  * A new configuration parameters, 'calltokenexpiration', has been added that | ||
|  |    controls the duration before a call token expires. Default duration is 10 | ||
|  |    seconds. Setting this to a higher value may help in lagged networks or those | ||
|  |    experiencing high packet loss. | ||
|  | 
 | ||
|  |  * Plaintext auth mode is deprecated and removed from possible default modes. | ||
|  | 
 | ||
|  | chan_rtp (was chan_multicast_rtp) | ||
|  | ------------------ | ||
|  |  * Added unicast RTP support and renamed chan_multicast_rtp to chan_rtp. | ||
|  | 
 | ||
|  |  * The format for dialing a unicast RTP channel is: | ||
|  |    UnicastRTP/<destination-addr>[/[<options>]] | ||
|  |    Where <destination-addr> is something like '127.0.0.1:5060'. | ||
|  |    Where <options> are in standard Asterisk flag options format: | ||
|  |    c(<codec>) - Specify which codec/format to use such as 'ulaw'. | ||
|  |    e(<engine>) - Specify which RTP engine to use such as 'asterisk'. | ||
|  | 
 | ||
|  |  * New options were added for a multicast RTP channel.  The format for | ||
|  |    dialing a multicast RTP channel is: | ||
|  |    MulticastRTP/<type>/<destination-addr>[/[<control-addr>][/[<options>]]] | ||
|  |    Where <type> can be either 'basic' or 'linksys'. | ||
|  |    Where <destination-addr> is something like '224.0.0.3:5060'. | ||
|  |    Where <control-addr> is something like '127.0.0.1:5060'. | ||
|  |    Where <options> are in standard Asterisk flag options format: | ||
|  |    c(<codec>) - Specify which codec/format to use such as 'ulaw'. | ||
|  |    i(<address>) - Specify the interface address from which multicast RTP | ||
|  |      is sent. | ||
|  |    l(<enable>) - Set whether packets are looped back to the sender.  The | ||
|  |      enable value can be 0 to set looping to off and non-zero to set | ||
|  |      looping on. | ||
|  |    t(<ttl>) - Set the time-to-live (TTL) value for multicast packets. | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------ | ||
|  |  * New 'rtpbindaddr' global setting. This allows a user to define which | ||
|  |    ipaddress to bind the rtpengine to. For example, chan_sip might bind | ||
|  |    to eth0 (10.0.0.2) but rtpengine to eth1 (192.168.1.10). | ||
|  | 
 | ||
|  |  * DTLS related configuration options can now be set at a general level. | ||
|  |    Enabling DTLS support, though, requires enabling it at the user | ||
|  |    or peer level. | ||
|  | 
 | ||
|  |  * Added the possibility to set the From: header through the the SIP dial | ||
|  |    string (populating the fromuser/fromdomain fields), complementing the | ||
|  |    [!dnid] option for the To: header that has existed since 1.6.0 (1d6b192). | ||
|  |    NOTE: This is again separated by an exclamation mark, so the To: header may | ||
|  |    not contain one of those. | ||
|  | 
 | ||
|  |  * Session-Timers (RFC 4028) work for TCP (and TLS) transports as well now. | ||
|  |    Previously Asterisk dropped calls only with UDP transports. However with | ||
|  |    longer international calls via TCP, the SIP channel might break, because | ||
|  |    all hops on the Internet route must stay online (have not a single power | ||
|  |    outage, for example). Therefore with Session-Timers enabled (which are | ||
|  |    enabled at default), you might see additional dropped calls. Consequently | ||
|  |    please, consider to go for session-timers=refuse in your sip.conf. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * New 'user_eq_phone' endpoint setting. This adds a 'user=phone' parameter | ||
|  |    to the request URI and From URI if the user is determined to be a phone | ||
|  |    number. | ||
|  | 
 | ||
|  |  * New 'moh_passthrough' endpoint setting. This will pass hold and unhold | ||
|  |    requests through using SIP re-invites with sendonly and sendrecv accordingly. | ||
|  | 
 | ||
|  |  * Added the pjsip.conf system type disable_tcp_switch option.  The option | ||
|  |    allows the user to disable switching from UDP to TCP transports described | ||
|  |    by RFC 3261 section 18.1.1. | ||
|  | 
 | ||
|  |  * New 'line' and 'endpoint' options added on outbound registrations. This | ||
|  |    allows some identifying information to be added to the Contact of the | ||
|  |    outbound registration. If this information is present on messages received | ||
|  |    from the remote server the message will automatically be associated with the | ||
|  |    configured endpoint on the outbound registration. | ||
|  | 
 | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * The core of Asterisk uses a message bus called "Stasis" to distribute | ||
|  |    information to internal components. For performance reasons, the message | ||
|  |    distribution was modified to make use of a thread pool instead of a | ||
|  |    dedicated thread per consumer in certain cases. The initial settings for | ||
|  |    the thread pool can now be configured in 'stasis.conf'. | ||
|  | 
 | ||
|  |  * A new core DNS API has been implemented which provides a common interface | ||
|  |    for DNS functionality. Modules that use this functionality will require that | ||
|  |    a DNS resolver module is loaded and available. | ||
|  | 
 | ||
|  |  * Modified processing of command-line options to first parse only what | ||
|  |    is necessary to read asterisk.conf. Once asterisk.conf is fully loaded, | ||
|  |    the remaining options are processed.  The -X option now applies to | ||
|  |    asterisk.conf only.  To enable #exec for other config files you must | ||
|  |    set execincludes=yes in asterisk.conf.  Any other option set on the | ||
|  |    command-line will now override the equivalent setting from asterisk.conf. | ||
|  | 
 | ||
|  |  * The TLS core in Asterisk now supports X.509 certificate subject alternative | ||
|  |    names. This way one X.509 certificate can be used for hosts that can be | ||
|  |    reached under multiple DNS names or for multiple hosts. | ||
|  | 
 | ||
|  |  * The Asterisk logging system now supports JSON structured logging. Log | ||
|  |    channels specified in logger.conf or added dynamically via CLI commands now | ||
|  |    support an optional specifier prior to their levels that determines their | ||
|  |    formatting. To set a log channel to format its entries as JSON, a formatter | ||
|  |    of '[json]' can be set, e.g., | ||
|  |       full => [json]debug,verbose,notice,warning,error | ||
|  | 
 | ||
|  |  * The core now supports a 'media cache', which stores temporary media files | ||
|  |    retrieved from external sources. CLI commands have been added to manipulate | ||
|  |    and display the cached files, including: | ||
|  |    - 'media cache show <all>' - show all cached media files, or details about | ||
|  |      one particular cached media file | ||
|  |    - 'media cache refresh <item>' - force a refresh of a particular media file | ||
|  |      in the cache | ||
|  |    - 'media cache delete <item>' - remove an item from the cache | ||
|  |    - 'media cache create <uri>' - retrieve a URI and store it in the cache | ||
|  | 
 | ||
|  |  * The ability for device state hints to be automatically created as a result of | ||
|  |    device state changes now exists in the PBX. This functionality is referred to | ||
|  |    as "autohints" and is configurable in extensions.conf by placing "autohints=yes" | ||
|  |    in the context. If enabled a device state hint will be automatically created | ||
|  |    with the name of the device. | ||
|  | 
 | ||
|  | * If Asterisk is built with systemd support, and run under systemd, it will | ||
|  |   notify systemd of its state using sd_notify. Use 'Type=notify' in | ||
|  |   asterisk.service. | ||
|  | 
 | ||
|  | Functions | ||
|  | ------------------ | ||
|  |  * The func_odbc global option "single_db_connection" default value has been | ||
|  |    changed to 'no'. | ||
|  | 
 | ||
|  | 
 | ||
|  | Formats | ||
|  | ------------------ | ||
|  |  * New module format_ogg_speex added which supports Speex codec inside | ||
|  |    Ogg containers (filename extension .spx). | ||
|  | 
 | ||
|  | 
 | ||
|  | CHANNEL | ||
|  | ------------------ | ||
|  |  * Added CHANNEL(onhold) item that returns 1 (onhold) and 0 (not-onhold) for | ||
|  |    the hold status of a channel. | ||
|  | 
 | ||
|  | CURL | ||
|  | ------------------ | ||
|  |  * The CURL function now supports a write option, which will save the retrieved | ||
|  |    file to a location on disk. As an example: | ||
|  |      same => n,Set(CURL(https://1.1.1.1/foo.wav)=/tmp/foo.wav) | ||
|  |    will save 'foo.wav' to /tmp. | ||
|  | 
 | ||
|  | DTMF Features | ||
|  | ------------------ | ||
|  |  * The transferdialattempts default value has been changed from 1 to 3. The | ||
|  |    transferinvalidsound has been changed from "pbx-invalid" to | ||
|  |    "privacy-incorrect". These were changed to make DTMF transfers be more | ||
|  |    user-friendly by default. | ||
|  | 
 | ||
|  | 
 | ||
|  | Resources | ||
|  | ------------------ | ||
|  | 
 | ||
|  | res_http_media_cache | ||
|  | ------------------ | ||
|  |  * A backend for the core media cache, this module retrieves media files from | ||
|  |    a remote HTTP(S) server and stores them in the core media cache for later | ||
|  |    playback. | ||
|  | 
 | ||
|  | res_musiconhold | ||
|  | ------------------ | ||
|  |  * Added sort=randstart to the sort options. It sorts the files by name and | ||
|  |    then chooses the first file to play at random. | ||
|  |  * Added preferchannelclass=no option to prefer the application-passed class | ||
|  |    over the channel-set musicclass. This allows separate hold-music from | ||
|  |    application (e.g. Queue or Dial) specified music. | ||
|  | 
 | ||
|  | res_resolver_unbound | ||
|  | ------------------ | ||
|  |  * Added a res_resolver_unbound module which uses the libunbound resolver library | ||
|  |    to perform DNS resolution. This module requires the libunbound library to be | ||
|  |    installed in order to be used. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new SIP resolver using the core DNS API has been implemented. This relies on | ||
|  |    external SIP resolver support in PJSIP which is only available as of PJSIP | ||
|  |    2.4. If this support is unavailable the existing built-in PJSIP SIP resolver | ||
|  |    will be used instead. The new SIP resolver provides NAPTR support, improved | ||
|  |    SRV support, and AAAA record support. | ||
|  | 
 | ||
|  | res_pjsip_info_empty | ||
|  | -------------------- | ||
|  |  * A new module that can respond to empty Content-Type INFO packets during call. | ||
|  |    Some SBCs will terminate a call if their empty INFO packets are not responded | ||
|  |    to within a predefined time. | ||
|  | 
 | ||
|  | res_pjsip_outbound_registration | ||
|  | ------------------------------- | ||
|  | * A new 'fatal_retry_interval' option has been added to outbound registration. | ||
|  |   When set (default is zero), and upon receiving a failure response to an | ||
|  |   outbound registration, registration is retried at the given interval up to | ||
|  |   'max_retries'. | ||
|  | 
 | ||
|  | res_pjsip_outbound_publish | ||
|  | ------------------ | ||
|  |  * Added a new multi_user option that when set to 'yes' allows a given configuration | ||
|  |    to be used for multiple users. | ||
|  | 
 | ||
|  | 
 | ||
|  | CEL Backends | ||
|  | ------------------ | ||
|  | 
 | ||
|  | cel_pgsql | ||
|  | ------------------ | ||
|  |  * Added a new option, 'usegmtime', which causes timestamps in CEL events | ||
|  |    to be logged in GMT. | ||
|  | 
 | ||
|  |  * Added support to set schema where located the table cel. This settings is | ||
|  |    configurable for cel_pgsql via the 'schema' in configuration file | ||
|  |    cel_pgsql.conf. | ||
|  | 
 | ||
|  | 
 | ||
|  | CDR Backends | ||
|  | ------------------ | ||
|  | 
 | ||
|  | cdr_adaptive_odbc | ||
|  | ------------------ | ||
|  |  * Added the ability to set the character to quote identifiers. This | ||
|  |    allows adding the character at the start and end of table and column | ||
|  |    names. This setting is configurable for cdr_adaptive_odbc via the | ||
|  |    quoted_identifiers in configuration file cdr_adaptive_odbc.conf. | ||
|  | 
 | ||
|  | cdr_odbc | ||
|  | ------------------ | ||
|  |  * Added a new configuration option, "newcdrcolumns", which enables use of the | ||
|  |    post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'. | ||
|  | 
 | ||
|  | cdr_csv | ||
|  | ------------------ | ||
|  |  * Added a new configuration option, "newcdrcolumns", which enables use of the | ||
|  |    post-1.8 CDR columns 'peeraccount', 'linkedid', and 'sequence'. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.10.0 to Asterisk 13.11.0 ---------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | chan_dahdi | ||
|  | ------------------ | ||
|  |  * Added "faxdetect_timeout" option. | ||
|  |    The option determines how many seconds into a call before faxdetect | ||
|  |    is disabled for the call.  Setting the value to zero disables the timeout. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Added "fax_detect_timeout" to endpoint. | ||
|  |    The option determines how many seconds into a call before fax_detect | ||
|  |    is disabled for the call.  Setting the value to zero disables the timeout. | ||
|  | 
 | ||
|  |  * Added "subscribe_context" to endpoint. | ||
|  |    If specified, incoming SUBSCRIBE requests will be searched for the matching | ||
|  |    extension in the indicated context. If no "subscribe_context" is specified, | ||
|  |    then the "context" setting is used. | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * The DTLS part in Asterisk now supports Perfect Forward Secrecy (PFS). | ||
|  |    Enabling PFS is attempted by default, and is dependent on the configuration | ||
|  |    of the module using TLS. | ||
|  |    - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not | ||
|  |      specify a ECDHE cipher suite in sip.conf, for example: | ||
|  |        dtlscipher=AES128-SHA | ||
|  |    - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters | ||
|  |      into the private key file, e.g., sip.conf dtlsprivatekey. For example: | ||
|  |        openssl dhparam -out ./dh.pem 2048 | ||
|  |    - Because clients expect the server to prefer PFS, and because OpenSSL sorts | ||
|  |      its cipher suites by bit strength, see "openssl ciphers -v DEFAULT". | ||
|  |      Consider re-ordering your cipher suites in the respective configuration | ||
|  |      file. For example: | ||
|  |        dtlscipher=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 | ||
|  |      which forces PFS and requires at least DTLS 1.2. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.9.0 to Asterisk 13.10.0 ----------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * A channel variable FORWARDERNAME is now set which indicates which channel | ||
|  |    was responsible for a forwarding requests received on dial attempt. | ||
|  | 
 | ||
|  | func_odbc | ||
|  | ------------------ | ||
|  |  * Added new global option "single_db_connection". | ||
|  |    Enabling this option func_odbc will use a single database connection per DSN. | ||
|  |    This option is enabled by default. | ||
|  | 
 | ||
|  | res_fax | ||
|  | ------------------ | ||
|  |  * Added FAXMODE variable to let dialplan know what fax transport was used. | ||
|  |    FAXMODE variable is set to either "audio" or "T38". | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Added "via_addr", "via_port", "call_id" to contacts. | ||
|  |    As res_pjsip_nat rewrites contact's address, only the last Via header | ||
|  |    can contain the source address of registered endpoint. | ||
|  |    Also Call-Id header may contain the source address of registered endpoint. | ||
|  |    Added new fields ViaAddress,CallID to AMI event ContactStatus | ||
|  | 
 | ||
|  |  * Endpoint IP Access Controls | ||
|  |    Added new configuration Endpoint options: | ||
|  |     "acl" - list of IP ACL section names in acl.conf | ||
|  |     "deny" - List of IP addresses to deny access from | ||
|  |     "permit" - List of IP addresses to permit access from | ||
|  |     "contact_acl" - List of Contact ACL section names in acl.conf | ||
|  |     "contact_deny" - List of Contact header addresses to deny | ||
|  |     "contact_permit" - List of Contact header addresses to permit | ||
|  | 
 | ||
|  |  * Added "reg_server" to contacts. | ||
|  |    If the Asterisk system name is set in asterisk.conf, it will be stored | ||
|  |    into the "reg_server" field in the ps_contacts table to facilitate | ||
|  |    multi-server setups. | ||
|  | 
 | ||
|  |  * When starting Asterisk, received traffic will now be ignored until Asterisk | ||
|  |    has loaded all modules and is fully booted. | ||
|  | 
 | ||
|  | res_hep | ||
|  | ------------------ | ||
|  |  * Added a new option, 'uuid_type', that sets the preferred source of the Homer | ||
|  |    correlation UUID. The valid options are: | ||
|  |    - call-id: Use the PJSIP SIP Call-ID header value | ||
|  |    - channel: Use the Asterisk channel name | ||
|  |    The default value is 'call-id'. In the event that a HEP module cannot find a | ||
|  |    valid value using the specified 'uuid_type', the module may fallback to a | ||
|  |    more readily available source for the correlation UUID. | ||
|  | 
 | ||
|  | res_odbc | ||
|  | ------------------ | ||
|  |  * A new option has been added, 'max_connections', which sets the maximum number | ||
|  |    of concurrent connections to the database. This option defaults to 1 which | ||
|  |    returns the behavior to that of Asterisk 13.7 and prior. | ||
|  | 
 | ||
|  | app_confbridge | ||
|  | ------------------ | ||
|  |  * Added a bridge profile option called regcontext that allows you to | ||
|  |    dynamically register the conference bridge name as an extension into | ||
|  |    the specified context.  This allows tracking down conferences on multi- | ||
|  |    server installations via alternate means (DUNDI for example). By default | ||
|  |    this feature is not used. | ||
|  | 
 | ||
|  | Codecs | ||
|  | ------------------ | ||
|  |  * Added the associated format name to 'core show codecs'. | ||
|  | 
 | ||
|  | res_ari_channels | ||
|  | ------------------ | ||
|  |  * Added 'formats' to channel create/originate to allow setting the allowed | ||
|  |    formats for a channel when no originator channel is available.  Especially | ||
|  |    useful for Local channel creation where no other format information is | ||
|  |    available.  'core show codecs' can now be used to look up suitable format | ||
|  |    names. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.8.0 to Asterisk 13.9.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | res_parking: | ||
|  |  - The dynamic parking lot creation channel variables PARKINGDYNAMIC, | ||
|  |    PARKINGDYNCONTEXT, PARKINGDYNEXTEN, and PARKINGDYNPOS are now looked | ||
|  |    for in the parker's channel instead of the parked channel.  This is only | ||
|  |    of significance if the parker uses blind transfer or the DTMF one-step | ||
|  |    parking feature.  You need to use the double underscore '__' inheritance | ||
|  |    for these variables.  The indefinite inheritance is also recommended | ||
|  |    for the PARKINGEXTEN variable. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Added new global option (disable_multi_domain) to pjsip. | ||
|  |    Disabling Multi Domain can improve realtime performace by reducing | ||
|  |    number of database requsts. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * Added 'pjsip show channelstats' CLI command. | ||
|  | 
 | ||
|  | res_pjsip_outbound_publish | ||
|  | ------------------ | ||
|  |  * Added support for setting the transport used on outbound publish | ||
|  |    using the transport configuration option. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.7.0 to Asterisk 13.8.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | res_pjsip_caller_id | ||
|  | ------------------ | ||
|  |  * Per RFC3325, the 'From' header is now anonymized on outgoing calls when | ||
|  |    caller id presentation is prohibited. | ||
|  | 
 | ||
|  | res_pjsip_config_wizard | ||
|  | ------------------ | ||
|  |  * A new command (pjsip export config_wizard primitives) has been added that | ||
|  |    will export all the pjsip objects it created to the console or a file | ||
|  |    suitable for reuse in a pjsip.conf file. | ||
|  | 
 | ||
|  | Build System | ||
|  | ------------------ | ||
|  |  * To help insure that Asterisk is compiled and run with the same known | ||
|  |    version of pjproject, a new option (--with-pjproject-bundled) has been | ||
|  |    added to ./configure.  When specified, the version of pjproject specified | ||
|  |    in third-party/versions.mak will be downloaded and configured.  When you | ||
|  |    make Asterisk, the build process will also automatically build pjproject | ||
|  |    and Asterisk will be statically linked to it.  Once a particular version | ||
|  |    of pjproject is configured and built, it won't be configured or built | ||
|  |    again unless you run a 'make distclean'. | ||
|  | 
 | ||
|  |    To facilitate testing, when 'make install' is run, the pjsua and pjsystest | ||
|  |    utilities and the pjproject python bindings will be installed in | ||
|  |    ASTDATADIR/third-party/pjproject. | ||
|  | 
 | ||
|  |    The default behavior remains building with the shared pjproject | ||
|  |    installation, if any. | ||
|  | 
 | ||
|  | app_confbridge | ||
|  | ------------------ | ||
|  |  * Added CONFBRIDGE_INFO(muted,) for querying the muted conference state. | ||
|  | 
 | ||
|  |  * Added Muted header to AMI ConfbridgeListRooms action response list events | ||
|  |    to indicate the muted conference state. | ||
|  | 
 | ||
|  |  * Added Muted column to CLI "confbridge list" output to indicate the muted | ||
|  |    conference state and made the locked column a yes/no value instead of a | ||
|  |    locked/unlocked value. | ||
|  | 
 | ||
|  | REDIRECTING(reason) | ||
|  | ------------------ | ||
|  |  * The REDIRECTING(reason) value is now treated consistently between | ||
|  |    chan_sip and chan_pjsip. | ||
|  | 
 | ||
|  |    Both channel drivers match incoming reason values with values documented | ||
|  |    by REDIRECTING(reason) and values documented by RFC5806 regardless of | ||
|  |    whether they are quoted or not.  RFC5806 values are mapped to the | ||
|  |    equivalent REDIRECTING(reason) documented value and is set in | ||
|  |    REDIRECTING(reason).  e.g., an incoming RFC5806 'unconditional' value or a | ||
|  |    quoted string version ('"unconditional"') is converted to | ||
|  |    REDIRECTING(reason)'s 'cfu' value.  The user's dialplan only needs to deal | ||
|  |    with 'cfu' instead of any of the aliases. | ||
|  | 
 | ||
|  |    The incoming 480 response reason text supported by chan_sip checks for | ||
|  |    known reason values and if not matched then puts quotes around the reason | ||
|  |    string and assigns that to REDIRECTING(reason). | ||
|  | 
 | ||
|  |    Both channel drivers send outgoing known REDIRECTING(reason) values as the | ||
|  |    unquoted RFC5806 equivalent.  User custom values are either sent as is or | ||
|  |    with added quotes if SIP doesn't allow a character within the value as | ||
|  |    part of a RFC3261 Section 25.1 token.  Note that there are still | ||
|  |    limitations on what characters can be put in a custom user value.  e.g., | ||
|  |    embedding quotes in the middle of the reason string is just going to cause | ||
|  |    you grief. | ||
|  | 
 | ||
|  |  * Setting a REDIRECTING(reason) value now recognizes RFC5806 aliases. | ||
|  |    e.g., Setting REDIRECTING(reason) to 'unconditional' is converted to the | ||
|  |    'cfu' value. | ||
|  | 
 | ||
|  | res_pjproject | ||
|  | ------------------ | ||
|  |  * This module is the successor of res_pjsip_log_forwarder.  As well as | ||
|  |    handling the log forwarding (which now displays as 'pjproject:0' instead | ||
|  |    of 'pjsip:0'), it also adds a 'pjproject show buildopts' command to the CLI. | ||
|  |    This displays the compiled-in options of the pjproject installation | ||
|  |    Asterisk is currently running against. | ||
|  | 
 | ||
|  |  * Another feature of this module is the ability to map pjproject log levels | ||
|  |    to Asterisk log levels, or to suppress the pjproject log messages | ||
|  |    altogether.  Many of the messages emitted by pjproject itself are the result | ||
|  |    of errors which Asterisk will ultimately handle so the messages can be | ||
|  |    misleading or just noise.  A new config file (pjproject.conf) has been added | ||
|  |    to configure the mapping and a new CLI command (pjproject show log mappings) | ||
|  |    has been added to display the mappings currently in use. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Transports are now reloadable.  In testing, no in-progress calls were | ||
|  |    disrupted if the ip address or port weren't changed, but the possibility | ||
|  |    still exists.  To make sure there are no unintentional drops, a new option | ||
|  |    'allow_reload', which defaults to 'no' has been added to transport.  If | ||
|  |    left at the default, changes to the particular transport will be ignored. | ||
|  |    If set to 'yes', changes (if any) will be applied. | ||
|  | 
 | ||
|  |  * Added new global option (regcontext) to pjsip. When set, Asterisk will | ||
|  |    dynamically create and destroy a NoOp priority 1 extension | ||
|  |    for a given endpoint who registers or unregisters with us. | ||
|  | 
 | ||
|  |  * Endpoints and aors can now be identified by the username and realm in an | ||
|  |    incoming Authorization header.  To use this feature, add "auth_username" | ||
|  |    to your endpoint's "identify_by" list.  You can combine "auth_username" | ||
|  |    and the original "username" to test both the From/To and Authorization | ||
|  |    headers.  For endpoints, the order is controlled by the global | ||
|  |    "endpoint_identifier_order" setting.  For matching aors to an endpoint | ||
|  |    for inbound registration, the order is controlled by this option. | ||
|  | 
 | ||
|  |  * In conjunction with the "auth_username" change, 3 new options have been | ||
|  |    added to the global configuration object that control how many unidentified | ||
|  |    requests over a certain period from the same IP address can be received | ||
|  |    before a security alert is generated.  A new CLI command | ||
|  |    "pjsip show unidentified_requests" will list the current candidates. | ||
|  | 
 | ||
|  | res_pjsip_history | ||
|  | ------------------ | ||
|  |  * A new module, res_pjsip_history, has been added that provides SIP history | ||
|  |    viewing/filtering from the CLI. The module is intended to be used on systems | ||
|  |    with busy SIP traffic, where existing forms of viewing SIP messages - such | ||
|  |    as the res_pjsip_logger - may be inadequate. The module provides two new | ||
|  |    CLI commands: | ||
|  |    - 'pjsip set history {on|off|clear}' - this enables/disables SIP history | ||
|  |      capturing, as well as clears an existing history capture. Note that SIP | ||
|  |      packets captured are stored in memory until cleared. As a result, the | ||
|  |      history capture should only be used for debugging/viewing purposes, and | ||
|  |      should *NOT* be left permanently enabled on a system. | ||
|  |    - 'pjsip show history' - displays the captured SIP history. When invoked | ||
|  |      with no options, the entire captured history is displayed. Two options | ||
|  |      are available: | ||
|  |      -- 'entry <num>' - display a detailed view of a single SIP message in | ||
|  |         the history | ||
|  |      -- 'where ...' - filter the history based on some expression. For more | ||
|  |         information on filtering, view the current CLI help for the | ||
|  |         'pjsip show history' command. | ||
|  | 
 | ||
|  | Voicemail | ||
|  | ------------------ | ||
|  |  * app_voicemail and res_mwi_external can now be built together.  The default | ||
|  |    remains to build app_voicemail and not res_mwi_external but if they are | ||
|  |    both built, the load order will cause res_mwi_external to load first and | ||
|  |    app_voicemail will be skipped.  Use 'preload=app_voicemail.so' in | ||
|  |    modules.conf to force app_voicemail to be the voicemail provider. | ||
|  | 
 | ||
|  | res_pjsip_sdp_rtp | ||
|  | ------------------ | ||
|  |  * A new option (bind_rtp_to_media_address) has been added to endpoint which | ||
|  |    will cause res_pjsip_sdp_rtp to actually bind the RTP instance to the | ||
|  |    media_address as well as using it in the SDP.  If set, RTP packets will now | ||
|  |    originate from the media address instead of the operating system's "primary" | ||
|  |    ip address. | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * A new configuration section - ice_host_candidates - has been added to | ||
|  |    rtp.conf, allowing automatically discovered ICE host candidates to be | ||
|  |    overriden. This allows an Asterisk server behind a 1:1 NAT to send its | ||
|  |    external IP as a host candidate rather than relying on STUN to discover it. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.6.0 to Asterisk 13.7.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Codecs | ||
|  | ------------------ | ||
|  |  * Added format attribute negotiation for the VP8 video codec. Format attribute | ||
|  |    negotiation is provided by the res_format_attr_vp8 module. | ||
|  | 
 | ||
|  | ConfBridge | ||
|  | ------------------ | ||
|  |  * A new "timeout" user profile option has been added. This configures the number | ||
|  |    of seconds that a participant may stay in the ConfBridge after joining. When | ||
|  |    the time expires, the user is ejected from the conference and CONFBRIDGE_RESULT | ||
|  |    is set to "TIMEOUT" on the channel. | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------ | ||
|  |  * The websockets_enabled option has been added to the general section of | ||
|  |    sip.conf.  The option is enabled by default to match the previous behavior. | ||
|  |    The option should be disabled when using res_pjsip_transport_websockets to | ||
|  |    ensure chan_sip will not conflict with PJSIP websockets. | ||
|  | 
 | ||
|  | Dialplan Functions | ||
|  | ------------------ | ||
|  |  * The HOLD_INTERCEPT dialplan function now actually exists in the source tree. | ||
|  |    While support for the events was added in Asterisk 13.4.0, the function | ||
|  |    accidentally never made it in. That function is now present, and will cause | ||
|  |    the 'hold' raised by a channel to be intercepted and converted into an | ||
|  |    event instead. | ||
|  | 
 | ||
|  | res_pjsip_outbound_registration | ||
|  | ------------------------------- | ||
|  |  * If res_statsd is loaded and a StatsD server is configured, basic statistics | ||
|  |    regarding the state of outbound registrations will now be emitted. This | ||
|  |    includes: | ||
|  |    - A GAUGE statistic for the overall number of outbound registrations, i.e.: | ||
|  |        PJSIP.registrations.count | ||
|  |    - A GAUGE statistic for the overall number of outbound registrations in a | ||
|  |      particular state, e.g.: | ||
|  |        PJSIP.registrations.state.Registered | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * The ability to use "like" has been added to the pjsip list and show | ||
|  |    CLI commands.  For instance: CLI> pjsip list endpoints like abc | ||
|  | 
 | ||
|  |  * If res_statsd is loaded and a StatsD server is configured, basic statistics | ||
|  |    regarding the state of PJSIP contacts will now be emitted. This includes: | ||
|  |    - A GAUGE statistic for the overall number of contacts in a particular | ||
|  |      state, e.g.: | ||
|  |        PJSIP.contacts.states.Reachable | ||
|  |    - A TIMER statistic for the RTT time for each qualified contact, e.g.: | ||
|  |        PJSIP.contacts.alice@@127.0.0.1:5061.rtt | ||
|  | 
 | ||
|  | res_sorcery_memory_cache | ||
|  | ------------------------ | ||
|  |  * A new caching strategy, full_backend_cache, has been added which caches | ||
|  |    all stored objects in the backend. When enabled all objects will be | ||
|  |    expired or go stale according to the configuration. As well when enabled | ||
|  |    all retrieval operations will be performed against the cache instead of | ||
|  |    the backend. | ||
|  | 
 | ||
|  | func_callerid | ||
|  | ------------------- | ||
|  |  * CALLERID(pres) is now documented as a valid alternative to setting both | ||
|  |    CALLERID(name-pres) and CALLERID(num-pres) at once.  Some channel drivers, | ||
|  |    like chan_sip, don't make a distinction between the two: they take the | ||
|  |    least public value from name-pres and num-pres.  By using CALLERID(pres) | ||
|  |    for reading and writing, you touch the same combined value in the dialplan. | ||
|  |    The same applies to CONNECTEDLINE(pres), REDIRECTING(orig-pres), | ||
|  |    REDIRECTING(to-pres) and REDIRECTING(from-pres). | ||
|  | 
 | ||
|  | res_endpoint_stats | ||
|  | ------------------- | ||
|  |  * A new module that emits StatsD statistics regarding Asterisk endpoints. | ||
|  |    This includes a total count of the number of endpoints, the count of the | ||
|  |    number of endpoints in the technology agnostic state of the endpoint - | ||
|  |    online or offline - as well as the number of channels associated with each | ||
|  |    endpoint. These are recorded as three different GAUGE statistics: | ||
|  |     - endpoints.count | ||
|  |     - endpoints.state.{unknown|offline|online} | ||
|  |     - endpoints.{tech}.{resource}.channels | ||
|  | 
 | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.5.0 to Asterisk 13.6.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Dialplan Functions | ||
|  | ------------------ | ||
|  |  * The CHANNEL function, when used on a PJSIP channel, now exposes a 'call-id' | ||
|  |    extraction option when using with the 'pjsip' signalling option. It will | ||
|  |    return the SIP Call-ID associated with the INVITE request that established | ||
|  |    the PJSIP channel. | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * Two new endpoint related events are now available: PeerStatusChange and | ||
|  |    ContactStatusChange. In particular, these events are useful when subscribing | ||
|  |    to all event sources, as they provide additional endpoint related | ||
|  |    information beyond the addition/removal of channels from an endpoint. | ||
|  | 
 | ||
|  |  * Added the ability to subscribe to all ARI events in Asterisk, regardless | ||
|  |    of whether the application 'controls' the resource. This is useful for | ||
|  |    scenarios where an ARI application merely wants to observe the system, | ||
|  |    as opposed to control it. There are two ways to accomplish this: | ||
|  |    (1) Via the WebSocket connection URI. A new query paramter, 'subscribeAll', | ||
|  |        has been added that, when present and True, will subscribe all | ||
|  |        specified applications to all ARI event sources in Asterisk. | ||
|  |    (2) Via the applications resource. An ARI client can, at any time, subscribe | ||
|  |        to all resources in an event source merely by not providing an explicit | ||
|  |        resource. For example, subscribing to an event source of 'channels:' | ||
|  |        as opposed to 'channels:12345' will subscribe the application to all | ||
|  |        channels. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.4.0 to Asterisk 13.5.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * A new ContactStatus event has been added that reflects res_pjsip contact | ||
|  |    lifecycle changes:  Created, Removed, Reachable, Unreachable, Unknown. | ||
|  | 
 | ||
|  |  * Added the Linkedid header to the common channel headers listed for each | ||
|  |    channel in AMI events. | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * A new feature has been added that enables the retrieval of modules and | ||
|  |    module information through an HTTP request. Information on a single module | ||
|  |    can be also be retrieved. Individual modules can be loaded to Asterisk, as | ||
|  |    well as unloaded and reloaded. | ||
|  | 
 | ||
|  | * A new resource has been added to the 'asterisk' resource, 'config/dynamic'. | ||
|  |    This resource allows for push configuration of sorcery derived objects | ||
|  |    within Asterisk. The resource supports creation, retrieval, updating, and | ||
|  |    deletion. Sorcery derived objects that are manipulated by this resource | ||
|  |    must have a sorcery wizard that supports the desired operations. | ||
|  | 
 | ||
|  |  * A new feature has been added that allows for the rotation of log channels | ||
|  |    through HTTP requests. | ||
|  | 
 | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  | * A new 'g726_non_standard' endpoint option has been added that, when set to | ||
|  |   'yes' and g.726 audio is negotiated, forces the codec to be treated as if it | ||
|  |   is AAL2 packed on the channel. | ||
|  | 
 | ||
|  | * A new 'rtp_keepalive' endpoint option has been added. This option specifies | ||
|  |   an interval, in seconds, at which we will send RTP comfort noise packets to | ||
|  |   the endpoint. This functions identically to chan_sip's "rtpkeepalive" option. | ||
|  | 
 | ||
|  | * New 'rtp_timeout' and 'rtp_timeout_hold' endpoint options have been added. | ||
|  |   These options specify the amount of time, in seconds, that Asterisk will wait | ||
|  |   before terminating the call due to lack of received RTP. These are identical | ||
|  |   to chan_sip's rtptimeout and rtpholdtimeout options. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.3.0 to Asterisk 13.4.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * New 'rpid_immediate' option to control if connected line update information | ||
|  |    goes to the caller immediately or waits for another reason to send the | ||
|  |    connected line information update.  See the online option documentation for | ||
|  |    more information.  Defaults to 'no' as setting it to 'yes' can result in | ||
|  |    many unnecessary messages being sent to the caller. | ||
|  | 
 | ||
|  |  * The configuration setting 'progressinband' now defaults to 'no', which | ||
|  |    matches the actual behavior of previous versions. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new CLI command has been added: "pjsip show settings", which shows | ||
|  |    both the global and system configuration settings. | ||
|  | 
 | ||
|  |  * A new aor option has been added: "qualify_timeout", which sets the timeout | ||
|  |    in seconds for a qualify.  The default is 3 seconds.  This overrides the | ||
|  |    hard coded 32 seconds in pjproject. | ||
|  | 
 | ||
|  |  * Endpoint status will now change to "Unreachable" when all contacts are | ||
|  |    unavailable.  When any contact becomes available, the endpoint will status | ||
|  |    will change back to "Reachable". | ||
|  | 
 | ||
|  |  * A new global option has been added: "max_initial_qualify_time", which | ||
|  |    sets the maximum amount of time from startup that qualifies should be | ||
|  |    attempted on all contacts. | ||
|  | 
 | ||
|  | res_ari_channels | ||
|  | ------------------ | ||
|  |  * Two new events, 'ChannelHold' and 'ChannelUnhold', have been added to the | ||
|  |    events data model. These events are raised when a channel indicates a hold | ||
|  |    or unhold, respectively. | ||
|  | 
 | ||
|  | func_holdintercept | ||
|  | ------------------ | ||
|  |  * A new dialplan function, HOLD_INTERCEPT, has been added. This function, when | ||
|  |    placed on a channel, intercepts hold/unhold indications signalled by the | ||
|  |    channel and prevents them from moving on to other channels in a bridge with | ||
|  |    the hold initiator. Instead, AMI or ARI events are raised indicating that | ||
|  |    the channel wanted to place someone on hold. This allows external | ||
|  |    applications to implement their own custom hold/unhold logic. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.2.0 to Asterisk 13.3.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | chan_pjsip/app_transfer | ||
|  | ------------------ | ||
|  |  * The Transfer application, when used with chan_pjsip, now supports using | ||
|  |    a PJSIP endpoint as the transfer destination. This is in addition to | ||
|  |    explicitly specifying a SIP URI to transfer to. | ||
|  | 
 | ||
|  | res_ari_channels | ||
|  | ------------------ | ||
|  |  * The ARI /channels resource now supports a new operation, 'redirect'. The | ||
|  |    redirect operation will perform a technology and state specific redirection | ||
|  |    on the channel to a specified endpoint or destination. In the case of SIP | ||
|  |    technologies, this is either a 302 Redirect response to an on-going INVITE | ||
|  |    dialog or a SIP REFER request. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * A new 'endpoint_identifier_order' option has been added that allows one to | ||
|  |    set the order by which endpoint identifiers are processed and checked. This | ||
|  |    option is specified under the 'global' type configuration section. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.1.0 to Asterisk 13.2.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  |  * New 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions have been added which | ||
|  |    allow examining PJSIP AORs or contacts from the dialplan. | ||
|  | 
 | ||
|  | res_pjsip_outbound_registration | ||
|  | ------------------ | ||
|  |  * The 'pjsip send unregister' command now stops further registrations. | ||
|  | 
 | ||
|  |  * A new command 'pjsip send register' has been added which allows you to | ||
|  |    start or restart periodic registration.  It can be used after a | ||
|  |    'send unregister' or after a 401 permanent error. | ||
|  | 
 | ||
|  | res_pjsip_config_wizard | ||
|  | ------------------ | ||
|  |  * This is a new module that adds streamlined configuration capability for | ||
|  |    chan_pjsip.  It's targeted at users who have lots of basic configuration | ||
|  |    scenarios like 'phone' or 'agent' or 'trunk'.  Additional information | ||
|  |    can be found in the sample configuration file at | ||
|  |    config/samples/pjsip_wizard.conf.sample. | ||
|  | 
 | ||
|  | res_fax | ||
|  | ----------- | ||
|  |  * The T.38 negotiation timeout was previously hard coded at 5000 milliseconds | ||
|  |    and is now configurable via the 't38timeout' configuration option in | ||
|  |    res_fax.conf and via the fax options dialplan function 'FAXOPT(t38timeout)'. | ||
|  |    The default remains at 5000 milliseconds. | ||
|  | 
 | ||
|  | PJSIP Transports | ||
|  | ---------- | ||
|  |  * The ca_list_path transport parameter has been added for TLS transports. This | ||
|  |    option behaves similarly to the old sip.conf option "tlscapath". In order to | ||
|  |    use this, you must be using PJProject version 2.4 or higher. | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * The Originate operation now takes in an originator channel. The linked ID of | ||
|  |    this originator channel is applied to the newly originated outgoing channel. | ||
|  |    If using CEL this allows an association to be established between the two so | ||
|  |    it can be recognized that the originator is dialing the originated channel. | ||
|  | 
 | ||
|  |  * "language" (the default spoken language for the channel) is now included in | ||
|  |    the standard channel state output for suitable events. | ||
|  | 
 | ||
|  |  * The POST channels/{id} operation and the POST channels/{id}/continue operation | ||
|  |    now have a new "label" parameter. This allows for origination or continuation | ||
|  |    to a labeled priority in the dialplan instead of requiring a specific priority | ||
|  |    number. The ARI version has been bumped to 1.7.0 as a result. | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * "Language" (the default spoken language for the channel) is now included in | ||
|  |    the standard channel state output for suitable events. | ||
|  | 
 | ||
|  |  * AMI actions that return a list of events have been made to return consistent | ||
|  |    headers for the action response event starting the list and the list complete | ||
|  |    event.  The AMI version has been bumped to 2.7.0 as a result. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 13.0.0 to Asterisk 13.1.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * Event NewConnectedLine is emitted when the connected line information on | ||
|  |    a channel changes. | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * Event ChannelConnectedLine is emitted when the connected line information | ||
|  |    on a channel changes. | ||
|  | 
 | ||
|  | Core Transfers | ||
|  | ----------------- | ||
|  | 
 | ||
|  | The features.conf general section has three new configurable options: | ||
|  |     * transferdialattempts | ||
|  |     * transferretrysound | ||
|  |     * transferinvalidsound | ||
|  | For more information on what these options do, see the Asterisk wiki: | ||
|  |  https://wiki.asterisk.org/wiki/x/W4fAAQ | ||
|  | 
 | ||
|  | Channel Drivers | ||
|  | ------------------ | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * New 'media_encryption_optimistic' endpoint setting. This will use SRTP | ||
|  |    when possible but does not consider lack of it a failure. | ||
|  | 
 | ||
|  | res_pjsip_endpoint_identifer_ip | ||
|  | ------------------ | ||
|  |  * New CLI commands have been added: "pjsip show identif(y|ies)", which lists | ||
|  |    all configured PJSIP identify objects | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 12 to Asterisk 13 -------------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Overview | ||
|  | ------------------ | ||
|  | 
 | ||
|  | Asterisk 13 is the next Long Term Support (LTS) release of Asterisk. As such, | ||
|  | the focus of development for this release of Asterisk was on improving the | ||
|  | usability and features developed in the previous Standard release, Asterisk 12. | ||
|  | Beyond a general refinement of end user features, development focussed heavily | ||
|  | on the Asterisk APIs - the Asterisk Manager Interface (AMI) and the Asterisk | ||
|  | REST Interface (ARI) - and the PJSIP stack in Asterisk. Some highlights of the | ||
|  | new features include: | ||
|  | 
 | ||
|  | * Asterisk security events are now provided via AMI, allowing end users to | ||
|  |   monitor their Asterisk system in real time for security related issues. | ||
|  | * External control of Message Waiting Indicators (MWI) through both AMI and ARI. | ||
|  | * Reception/transmission of out of call text messages using any supported | ||
|  |   channel driver/protocol stack through ARI. | ||
|  | * Resource List Server support in the PJSIP stack, providing subscriptions to | ||
|  |   lists of resources and batched delivery of NOTIFY requests. | ||
|  | * Inter-Asterisk distributed device state and mailbox state using the PJSIP | ||
|  |   stack. | ||
|  | 
 | ||
|  | It is important to note that Asterisk 13 is built on the architecture developed | ||
|  | during the previous Standard release, Asterisk 12. Users upgrading to | ||
|  | Asterisk 13 should read about the new features in Asterisk 12 later in this file | ||
|  | (see Functionality changes from Asterisk 11 to Asterisk 12), as well as the | ||
|  | UPGRADE-12.txt delivered with this release. In particular, users upgrading to | ||
|  | Asterisk 13 from a release prior to Asterisk 12 should read the specifications | ||
|  | on AMI, CDRs, and CEL on the Asterisk wiki: | ||
|  |  * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ | ||
|  |  * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ | ||
|  |  * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ | ||
|  | 
 | ||
|  | Many new featuers in Asterisk 13 were introduced in point releases of | ||
|  | Asterisk 12. Following this section - which documents the changes from all | ||
|  | versions of Asterisk 12 to Asterisk 13 - users should examine the new features | ||
|  | that were introduced in the point releases of Asterisk 12, as they are also | ||
|  | included in Asterisk 13. | ||
|  | 
 | ||
|  | Finally, all users upgrading to Asterisk 13 should read the UPGRADE.txt file | ||
|  | delivered with this release. | ||
|  | 
 | ||
|  | 
 | ||
|  | Build System | ||
|  | ------------------ | ||
|  |  * Sample config files have been moved from configs/ to a sub-folder of that | ||
|  |    directory, samples. | ||
|  | 
 | ||
|  |  * The menuselect utility has been pulled into the Asterisk repository. As a | ||
|  |    result, the libxml2 development library is now a required dependency for | ||
|  |    Asterisk. | ||
|  | 
 | ||
|  |  * A new Compiler Flag, REF_DEBUG, has been added. When enabled, reference | ||
|  |    counted objects will emit additional debug information to the refs log file | ||
|  |    located in the standard Asterisk log file directory. This log file is useful | ||
|  |    in tracking down object leaks and other reference counting issues. Prior to | ||
|  |    this version, this option was only available by modifying the source code | ||
|  |    directly. This change also includes a new script, refcounter.py, in the | ||
|  |    contrib folder that will process the refs log file. Note that this replaces | ||
|  |    the refcounter utility that could be built from the utils directory. | ||
|  | 
 | ||
|  | 
 | ||
|  | Applications | ||
|  | ------------------ | ||
|  | 
 | ||
|  | DahdiBarge | ||
|  | ------------------ | ||
|  |  * This module was deprecated and has been removed. Users of app_dahdibarge | ||
|  |    should use ChanSpy instead. | ||
|  | 
 | ||
|  | MixMonitor | ||
|  | ------------------ | ||
|  |  * New options to play a beep when starting a recording and stopping a recording | ||
|  |    have been added.  The option "p" will play a beep to the channel that starts | ||
|  |    the recording.  The option "P" will play a beep to the channel that stops the | ||
|  |    recording. | ||
|  | 
 | ||
|  | Queue | ||
|  | ------------------ | ||
|  |  * Queue rules can now be stored in a database table, queue_rules. Unlike other | ||
|  |    RealTime tables, the queue_rules table is only examined on module load or | ||
|  |    module reload. A new general setting has been added to queuerules.conf, | ||
|  |    'realtime_rules', which, when set to 'yes', will cause app_queue to look in | ||
|  |    RealTime for additional queue rules to parse. Note that both the file and | ||
|  |    the database can be used as a provide of queue rules when 'realtime_rules' | ||
|  |    is set to 'yes'. | ||
|  | 
 | ||
|  |    When app_queue is reloaded, all rules are re-parsed and loaded into memory. | ||
|  |    There is no caching of RealTime queue rules. | ||
|  | 
 | ||
|  | ReadFile | ||
|  | ------------------ | ||
|  |  * This module was deprecated and has been removed. Users of app_readfile | ||
|  |    should use func_env's FILE function instead. | ||
|  | 
 | ||
|  | Say | ||
|  | ------------------ | ||
|  |  * The 'say' family of dialplan applications now support the Japanese | ||
|  |    language. The 'language' parameter in say.conf now recognizes a setting of | ||
|  |    'ja', which will enable Japanese language specific mechanisms for playing | ||
|  |    back numbers, dates, and other items. | ||
|  |  * Counting, enumeration and dates now supports Icelandic grammar with the | ||
|  |    'language' parameter set to 'is'. | ||
|  | 
 | ||
|  | SayCountPL | ||
|  | ------------------ | ||
|  |  * This module was deprecated and has been removed. Users of app_saycountpl | ||
|  |    should use the Say family of applications. | ||
|  | 
 | ||
|  | SetMusicOnHold | ||
|  | ------------------ | ||
|  |  * The SetMusicOnHold dialplan application was deprecated and has been removed. | ||
|  |    Users of the application should use the CHANNEL function's musicclass | ||
|  |    setting instead. | ||
|  | 
 | ||
|  | WaitMusicOnHold | ||
|  | ------------------ | ||
|  |  * The WaitMusicOnHold dialplan application was deprecated and has been | ||
|  |    removed. Users of the application should use MusicOnHold with a duration | ||
|  |    parameter instead. | ||
|  | 
 | ||
|  | VoiceMail | ||
|  | ------------------ | ||
|  |  * VoiceMail and VoiceMailMain now support the Japanese language. The | ||
|  |    'language' parameter in voicemail.conf now recognizes a setting of 'ja', | ||
|  |    which will enable prompts to be played back using a Japanese grammatical | ||
|  |    structure. Additional prompts are necessary for this functionality, | ||
|  |    including: | ||
|  |    - jb-arimasu: there is | ||
|  |    - jb-arimasen: there is not | ||
|  |    - jb-oshitekudasai: please press | ||
|  |    - jb-ni: article ni | ||
|  |    - jb-ga: article ga | ||
|  |    - jb-wa: article wa | ||
|  |    - jb-wo: article wo | ||
|  | 
 | ||
|  |  * Add the ability to specify multiple email addresses in configuration, | ||
|  |    separated by a |. | ||
|  | 
 | ||
|  | 
 | ||
|  | CDR Backends | ||
|  | ------------------ | ||
|  | 
 | ||
|  | cdr_sqlite | ||
|  | ----------------- | ||
|  |  * This module was deprecated and has been removed. Users of cdr_sqlite | ||
|  |    should use cdr_sqlite3_custom. | ||
|  | 
 | ||
|  | cdr_pgsql | ||
|  | ------------------ | ||
|  |  * Added the ability to support PostgreSQL application_name on connections. | ||
|  |    This allows PostgreSQL to display the configured name in the | ||
|  |    pg_stat_activity view and CSV log entries. This setting is configurable | ||
|  |    for cdr_pgsql via the appname configuration setting in cdr_pgsql.conf. | ||
|  | 
 | ||
|  | 
 | ||
|  | CEL Backends | ||
|  | ------------------ | ||
|  | 
 | ||
|  | cel_pgsql | ||
|  | ------------------ | ||
|  |  * Added the ability to support PostgreSQL application_name on connections. | ||
|  |    This allows PostgreSQL to display the configured name in the | ||
|  |    pg_stat_activity view and CSV log entries. This setting is configurable | ||
|  |    for cel_pgsql via the appname configuration setting in cel_pgsql.conf. | ||
|  | 
 | ||
|  | 
 | ||
|  | Channel Drivers | ||
|  | ------------------ | ||
|  | 
 | ||
|  | chan_dahdi | ||
|  | ------------------ | ||
|  |  * SS7 support now requires libss7 v2.0 or later. | ||
|  | 
 | ||
|  |  * Added SS7 support for connected line and redirecting. | ||
|  | 
 | ||
|  |  * Most SS7 CLI commands are reworked as well as new SS7 commands added. | ||
|  |    See online CLI help. | ||
|  | 
 | ||
|  |  * Added several SS7 config option parameters described in | ||
|  |    chan_dahdi.conf.sample. | ||
|  | 
 | ||
|  | chan_gtalk | ||
|  | ------------------ | ||
|  |  * This module was deprecated and has been removed. Users of chan_gtalk | ||
|  |    should use chan_motif. | ||
|  | 
 | ||
|  | chan_h323 | ||
|  | ------------------ | ||
|  |  * This module was deprecated and has been removed. Users of chan_h323 | ||
|  |    should use chan_ooh323. | ||
|  | 
 | ||
|  | chan_jingle | ||
|  | ------------------ | ||
|  |  * This module was deprecated and has been removed. Users of chan_jingle | ||
|  |    should use chan_motif. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * Added the CLI command 'pjsip list ciphers' so a user can know what | ||
|  |    OpenSSL names are available on their system for the pjsip.conf cipher | ||
|  |    option. | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------ | ||
|  |  * The SIPPEER dialplan function no longer supports using a colon as a | ||
|  |    delimiter for parameters. The parameters for the function should be | ||
|  |    delimited using a comma. | ||
|  | 
 | ||
|  |  * The SIPCHANINFO dialplan function was deprecated and has been removed. Users | ||
|  |    of the function should use the CHANNEL function instead. | ||
|  | 
 | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  | 
 | ||
|  | Account Codes | ||
|  | ------------------ | ||
|  |  * Added functional peeraccount support.  Except for Queue, the | ||
|  |    accountcode propagation is now consistently propagated to outgoing | ||
|  |    channels before dialing.  The channel accountcode can change from its | ||
|  |    original non-empty value on channel creation for the following specific | ||
|  |    reasons.  One, dialplan sets it using CHANNEL(accountcode).  Two, an | ||
|  |    originate method that can specify an accountcode value.  Three, the | ||
|  |    calling channel propagates its peeraccount or accountcode to the | ||
|  |    outgoing channel's accountcode before dialing.  The change has two | ||
|  |    visible effects.  One, local channels now cross accountcode and | ||
|  |    peeraccount across the special bridge between the ;1 and ;2 channels | ||
|  |    just like channels between normal bridges.  Two, the | ||
|  |    CHANNEL(peeraccount) value can now be set before Dial and FollowMe to | ||
|  |    set the accountcode on the outgoing channel(s). | ||
|  | 
 | ||
|  |    For Queue, an outgoing channel's non-empty accountcode will not change | ||
|  |    unless explicitly set by CHANNEL(accountcode).  The change has three | ||
|  |    visible effects.  One, local channels now cross accountcode and | ||
|  |    peeraccount across the special bridge between the ;1 and ;2 channels | ||
|  |    just like channels between normal bridges.  Two, the queue member will | ||
|  |    get an accountcode if it doesn't have one and one is available from the | ||
|  |    calling channel's peeraccount.  Three, accountcode propagation includes | ||
|  |    local channel members where the accountcodes are propagated early | ||
|  |    enough to be available on the ;2 channel. | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * New DeviceStateChanged and PresenceStateChanged AMI events have been added. | ||
|  |    These events are emitted whenever a device state or presence state change | ||
|  |    occurs. The events are controlled by res_manager_device_state.so and | ||
|  |    res_manager_presence_state.so. If the high frequency of these events is | ||
|  |    problematic for you, do not load these modules. | ||
|  | 
 | ||
|  |  * Added DialplanExtensionAdd and DialplanExtensionRemove AMI commands. They | ||
|  |    work in basically the same way as the 'dialplan add extension' and | ||
|  |    'dialplan remove extension' CLI commands respectively. | ||
|  | 
 | ||
|  |  * New AMI action LoggerRotate reloads and rotates logger in the same manner | ||
|  |    as CLI command 'logger rotate' | ||
|  | 
 | ||
|  |  * New AMI Actions FAXSessions, FAXSession, and FAXStats replicate the | ||
|  |    functionality of CLI commands 'fax show sessions', 'fax show session', | ||
|  |    and fax show stats' respectively. | ||
|  | 
 | ||
|  |  * New AMI actions PRIDebugSet, PRIDebugFileSet, and PRIDebugFileUnset | ||
|  |    enable manager control over PRI debugging levels and file output. | ||
|  | 
 | ||
|  |  * AMI action PJSIPNotify may now send to a URI instead of only to a PJSIP | ||
|  |    endpoint as long as a default outbound endpoint is set. This also applies | ||
|  |    to the equivalent CLI command (pjsip send notify) | ||
|  | 
 | ||
|  |  * The AMI action PJSIPShowEndpoint now includes ContactStatusDetail sections | ||
|  |    that give information on Asterisk's attempts to qualify the endpoint. | ||
|  | 
 | ||
|  |  * The DialEnd event will now contain a Forward header if the dial is ending | ||
|  |    due to the call being forwarded. The contents of the Forward header is the | ||
|  |    extension in the number to which the call is being forwarded. | ||
|  | 
 | ||
|  | CEL | ||
|  | ------------------ | ||
|  |  * The "bridge_technology" extra field key has been added to BRIDGE_ENTER | ||
|  |    and BRIDGE_EXIT events. | ||
|  | 
 | ||
|  | Features | ||
|  | ------------------ | ||
|  |  * Channel variables are now substituted in arguments passed to applications | ||
|  |    run by using dynamic features. | ||
|  | 
 | ||
|  | TLS | ||
|  | ------------------ | ||
|  |  * The TLS core in Asterisk now supports Perfect Forward Secrecy (PFS). | ||
|  |    Enabling PFS is attempted by default, and is dependent on the configuration | ||
|  |    of the module using TLS. | ||
|  |    - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not | ||
|  |      specify a ECDHE cipher suite in sip.conf, for example: | ||
|  |        tlscipher=AES128-SHA:DES-CBC3-SHA | ||
|  |    - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters | ||
|  |      into the private key file, e.g., sip.conf tlsprivatekey. For example, the | ||
|  |      default dh2048.pem - see | ||
|  |      http://www.opensource.apple.com/source/OpenSSL098/OpenSSL098-35.1/src/apps/dh2048.pem?txt | ||
|  |    - Because clients expect the server to prefer PFS, and because OpenSSL sorts | ||
|  |      its cipher suites by bit strength, see "openssl ciphers -v DEFAULT". | ||
|  |      Consider re-ordering your cipher suites in the respective configuration | ||
|  |      file. For example: | ||
|  |        tlscipher=AES128+kEECDH:AES128+kEDH:3DES+kEDH:AES128-SHA:DES-CBC3-SHA:-ADH:-AECDH | ||
|  |      will use PFS when offered by the client. Clients which do not offer PFS | ||
|  |      fall-back to AES-128 (or even 3DES, as recommended by RFC 3261). | ||
|  | 
 | ||
|  | 
 | ||
|  | Functions | ||
|  | ------------------ | ||
|  | 
 | ||
|  | JACK_HOOK | ||
|  | ------------------ | ||
|  |  * The JACK_HOOK function now supports audio with a sample rate higher than | ||
|  |    8kHz. | ||
|  | 
 | ||
|  | 
 | ||
|  | Resources | ||
|  | ------------------ | ||
|  | 
 | ||
|  | res_config_pgsql | ||
|  | ------------------ | ||
|  |  * Added the ability to support PostgreSQL application_name on connections. | ||
|  |    This allows PostgreSQL to display the configured name in the | ||
|  |    pg_stat_activity view and CSV log entries. This setting is configurable | ||
|  |    for res_config_pgsql via the dbappname configuration setting in | ||
|  |    res_pgsql.conf. | ||
|  | 
 | ||
|  | res_pjsip_outbound_publish | ||
|  | ------------------ | ||
|  |  * A new module, res_pjsip_outbound_publish provides the mechanisms for sending | ||
|  |    PUBLISH requests for specific event packages to another SIP User Agent. | ||
|  | 
 | ||
|  | res_pjsip_pubsub | ||
|  | ------------------ | ||
|  |  * The publish/subscribe core module has been updated to support RFC 4662 | ||
|  |    Resource Lists, allowing Asterisk to act as a Resource List Server (RLS). | ||
|  |    Resource lists are configured in pjsip.conf under a new object type, | ||
|  |    resource_list. Resource lists can contain either message-summary or presence | ||
|  |    events, and can be composed of specific resources that provide the event or | ||
|  |    other resource lists. | ||
|  | 
 | ||
|  |  * Inbound publication support is provided by a new object, inbound-publication. | ||
|  |    This configures res_pjsip_pubsub to accept PUBLISH requests from a particular | ||
|  |    resource. Which events are accepted is constructed dynamically; see | ||
|  |    res_pjsip_publish_asterisk for more information. | ||
|  | 
 | ||
|  | res_pjsip_publish_asterisk | ||
|  | ------------------ | ||
|  |  * A new module, res_pjsip_publish_asterisk adds support for PUBLISH requests of | ||
|  |    Asterisk information to other Asterisk servers. This module is intended only | ||
|  |    for Asterisk to Asterisk exchanges of information. Currently, this includes | ||
|  |    both mailbox state and device state information. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 12.4.0 to Asterisk 12.5.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * Stored recordings now support a new operation, copy. This will take an | ||
|  |    existing stored recording and copy it to a new location in the recordings | ||
|  |    directory. | ||
|  | 
 | ||
|  |  * LiveRecording objects now have three additional fields that can be reported | ||
|  |    in a RecordingFinished ARI event: | ||
|  |    - total_duration: the duration of the recording | ||
|  |    - talking_duration: optional. The duration of talking detected in the | ||
|  |      recording. This is only available if max_silence_seconds was specified | ||
|  |      when the recording was started. | ||
|  |    - silence_duration: optional. The duration of silence detected in the | ||
|  |      recording. This is only available if max_silence_seconds was specified | ||
|  |      when the recording was started. | ||
|  |    Note that all duration values are reported in seconds. | ||
|  | 
 | ||
|  |  * Users of ARI can now send and receive out of call text messages. Messages | ||
|  |    can be sent directly to a particular endpoint, or can be sent to the | ||
|  |    endpoints resource directly and inferred from the URI scheme. Text | ||
|  |    messages are passed to ARI clients as TextMessageReceived events. ARI | ||
|  |    clients can choose to receive text messages by subscribing to the particular | ||
|  |    endpoint technology or endpoints that they are interested in. | ||
|  | 
 | ||
|  |  * The applications resource now supports subscriptions to all endpoints of | ||
|  |    a particular channel technology. For example, subscribing to an eventSource | ||
|  |    of 'endpoint:PJSIP' will subscribe to all PJSIP endpoints. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * The endpoint configuration object now supports 'accountcode'. Any channel | ||
|  |    created for an endpoint with this setting will have its accountcode set | ||
|  |    to the specified value. | ||
|  | 
 | ||
|  | res_hep_rtcp | ||
|  | ------------------ | ||
|  |  * A new module, res_hep_rtcp, has been added that will forward RTCP call | ||
|  |    statistics to a HEP capture server. See res_hep for more information. | ||
|  | 
 | ||
|  | Functions | ||
|  | ------------------ | ||
|  |  * Function AUDIOHOOK_INHERIT has been deprecated. Audiohooks are now | ||
|  |    unconditionally inherited through masquerades. As a side benefit, more | ||
|  |    than one audiohook of a given type may persist through a masquerade now. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 12.3.0 to Asterisk 12.4.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AgentRequest | ||
|  | ------------------ | ||
|  |  * Returns new AGENT_STATUS value "NOT_CONNECTED" if the agent fails to | ||
|  |    connect with an incoming caller after being alerted to the presence | ||
|  |    of the incoming caller.  The most likely reason this would happen is | ||
|  |    the agent did not acknowledge the call in time. | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * New events have been added for the TALK_DETECT function. When the function | ||
|  |    is used on a channel, ChannelTalkingStart/ChannelTalkingStop events will be | ||
|  |    emitted to connected AMI clients indicating the start/stop of talking on | ||
|  |    the channel. | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * New event models have been aded for the TALK_DETECT function. When the | ||
|  |    function is used on a channel, ChannelTalkingStarted/ChannelTalkingFinished | ||
|  |    events will be emitted to connected WebSockets subscribed to the channel, | ||
|  |    indicating the start/stop of talking on the channel. | ||
|  | 
 | ||
|  | Functions | ||
|  | ------------------ | ||
|  |  * A new function, TALK_DETECT, has been added. When set on a channel, this | ||
|  |    fucntion causes events indicating the starting/stoping of talking on said | ||
|  |    channel to be emitted to both AMI and ARI clients. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 12.2.0 to Asterisk 12.3.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * A new Playback URI 'tone' has been added. Tones are specified either as | ||
|  |    an indication name (e.g. 'tone:busy') from indications.conf or as a tone | ||
|  |    pattern (e.g. 'tone:240/250,0/250'). Tones differ from normal playback | ||
|  |    URIs in that they must be stopped manually and will continue to occupy | ||
|  |    a channel's ARI control queue until they are stopped. They also can not | ||
|  |    be rewound or fastforwarded. | ||
|  | 
 | ||
|  |  * User events can now be generated from ARI.  Events can be signalled with | ||
|  |    arbitrary json variables, and include one or more of channel, bridge, or | ||
|  |    endpoint snapshots.  An application must be specified which will receive | ||
|  |    the event message (other applications can subscribe to it).  The message | ||
|  |    will also be delivered via AMI provided a channel is attached.  Dialplan | ||
|  |    generated user event messages are still transmitted via the channel, and | ||
|  |    will only be received by a stasis application they are attached to or if | ||
|  |    the channel is subscribed to. | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ----------- | ||
|  |  * SIP peers can now specify 'trust_id_outbound' which affects RPID/PAI | ||
|  |    fields for prohibited callingpres information. Values are legacy, no, and | ||
|  |    yes. By default, legacy is used. | ||
|  |    trust_id_outbound=legacy - behavior remains the same as 1.8.26.1. When | ||
|  |      dealing with prohibited callingpres and sendrpid=pai/rpid, RPID/PAI | ||
|  |      headers are appended to outbound SIP messages just as they are with | ||
|  |      allowed callingpres values, but data about the remote party's identity is | ||
|  |      anonymized. | ||
|  |      When sendrpid=rpid, only the remote party's domain is anonymized. | ||
|  |    trust_id_outbound=no - when dealing with prohibited callingpres, RPID/PAI | ||
|  |      headers are not sent. | ||
|  |    trust_id_outbound=yes - RPID/PAI headers are applied with the full remote | ||
|  |      party information in tact even for prohibited callingpres information. | ||
|  |      In the case of PAI, a Privacy: id header will be appended for prohibited | ||
|  |      calling information to communicate that the private information should | ||
|  |      not be relayed to untrusted parties. | ||
|  | 
 | ||
|  | res_parking | ||
|  | ------------------ | ||
|  |  * Manager action 'Park' now takes an additional argument 'AnnounceChannel' | ||
|  |    which can be used to announce the parked call's location to an arbitrary | ||
|  |    channel in a bridge. If 'Channel' and 'TimeoutChannel' are now the two | ||
|  |    parties in a one to one bridge, 'TimeoutChannel' is treated as having | ||
|  |    parked 'Channel' like with the Park Call DTMF feature and will receive | ||
|  |    announcements prior to being hung up. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 12.1.0 to Asterisk 12.2.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Record | ||
|  | ------------------ | ||
|  |  * Record application now has an option 'o' which allows 0 to act as an exit | ||
|  |    key setting the RECORD_STATUS variable to 'OPERATOR' instead of 'DTMF' | ||
|  | 
 | ||
|  | ChanSpy | ||
|  | -------------------------- | ||
|  |  * ChanSpy now accepts a channel uniqueid or a fully specified channel name | ||
|  |    as the chanprefix parameter if the 'u' option is specified. | ||
|  | 
 | ||
|  | ConfBridge | ||
|  | -------------------------- | ||
|  |  * CONFBRIDGE dialplan function is now capable of creating/modifying dynamic | ||
|  |    conference user menus. | ||
|  | 
 | ||
|  |  * CONFBRIDGE dialplan function is now capable of removing dynamic conference | ||
|  |    menus, bridge settings, and user settings that have been applied by the | ||
|  |    CONFBRIDGE dialplan function. | ||
|  | 
 | ||
|  |  * The ConfBridge dialplan application now sets a channel variable, | ||
|  |    CONFBRIDGE_RESULT, upon exiting. This variable can be used to determine | ||
|  |    how a channel exited the conference. | ||
|  | 
 | ||
|  |  * Added conference user option 'announce_join_leave_review'. This option | ||
|  |    implies 'announce_join_leave' with the added effect that the user will | ||
|  |    be asked if they want to confirm or re-record the recording of their | ||
|  |    name when entering the conference | ||
|  | 
 | ||
|  | Directory | ||
|  | -------------------------- | ||
|  |  * At exit, the Directory application now sets a channel variable | ||
|  |    DIRECTORY_RESULT to one of the following based on the reason for exiting: | ||
|  |      OPERATOR    user requested operator by pressing '0' for operator | ||
|  |      ASSISTANT   user requested assistant by pressing '*' for assistant | ||
|  |      TIMEOUT     user pressed nothing and Directory stopped waiting | ||
|  |      HANGUP      user's channel hung up | ||
|  |      SELECTED    user selected a user from the directory and is routed | ||
|  |      USEREXIT    user pressed '#' from the selection prompt to exit | ||
|  |      FAILED      directory failed in a way that wasn't accounted for. Dang. | ||
|  | 
 | ||
|  | Monitor | ||
|  | ------------------ | ||
|  |  * Monitor() - A new option, B(), has been added that will turn on a periodic | ||
|  |    beep while the call is being recorded. | ||
|  | 
 | ||
|  | MusicOnHold | ||
|  | -------------------------- | ||
|  |  * MusicOnHold streams (all modes other than "files") now support wide band | ||
|  |    audio too. | ||
|  | 
 | ||
|  | Page | ||
|  | -------------------------- | ||
|  |  * Added options 'b' and 'B' to apply predial handlers for outgoing calls | ||
|  |    and for the channel executing Page respectively. | ||
|  | 
 | ||
|  | PickupChan | ||
|  | -------------------------- | ||
|  |  * PickupChan now accepts channel uniqueids of channels to pickup. | ||
|  | 
 | ||
|  | Say | ||
|  | -------------------------- | ||
|  |  * If a channel variable SAY_DTMF_INTERRUPT is present on a channel and set | ||
|  |    to 'true' (case insensitive), then any Say application (SayNumber, | ||
|  |    SayDigits, SayAlpha, SayAlphaCase, SayUnixTime, and SayCounted) will | ||
|  |    anticipate DTMF. If DTMF is received, these applications will behave like | ||
|  |    the background application and jump to the received extension once a match | ||
|  |    is established or after a short period of inactivity. | ||
|  | 
 | ||
|  | MixMonitor | ||
|  | ------------------------- | ||
|  |  * A new function, MIXMONITOR, has been added to allow access to individual | ||
|  |    instances of MixMonitor on a channel. | ||
|  | 
 | ||
|  |  * A new option, B(), has been added that will turn on a periodic beep while the | ||
|  |    call is being recorded. | ||
|  | 
 | ||
|  | 
 | ||
|  | Channel Drivers | ||
|  | ------------------------- | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------------- | ||
|  |  * TEL URI support for inbound INVITE requests has been added. chan_sip will | ||
|  |    now handle TEL schemes in the Request and From URIs. The phone-context in | ||
|  |    the Request URI will be stored in the SIPURIPHONECONTEXT channel variable on | ||
|  |    the inbound channel. | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * Exposed sorcery-based configuration files like pjsip.conf to dialplans via | ||
|  |    the new AST_SORCERY diaplan function. | ||
|  | 
 | ||
|  |  * Core Show Locks output now includes Thread/LWP ID if the platform | ||
|  |    supports this feature. | ||
|  | 
 | ||
|  |  * New "logger add channel" and "logger remove channel" CLI commands have | ||
|  |    been added to allow creation and deletion of dynamic logger channels | ||
|  |    without configuration changes. These dynamic logger channels will only | ||
|  |    exist until the next restart of asterisk. | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * The live recording object on recording events now contains a target_uri | ||
|  |    field which contains the URI of what is being recorded. | ||
|  | 
 | ||
|  |  * The bridge type used when creating a bridge is now a comma separated list of | ||
|  |    bridge properties. Valid options are: mixing, holding, dtmf_events, and | ||
|  |    proxy_media. | ||
|  | 
 | ||
|  |  * A channelId can now be provided when creating a channel, either in the | ||
|  |    uri (POST channels/my-channel-id) or as query parameter.  A local channel | ||
|  |    will suffix the second channel id with ';2' unless provided as query | ||
|  |    parameter otherChannelId. | ||
|  | 
 | ||
|  |  * A bridgeId can now be provided when creating a bridge, either in the uri | ||
|  |    (POST bridges/my-bridge-id) or as a query parameter. | ||
|  | 
 | ||
|  |  * A playbackId can be provided when starting a playback, either in the uri | ||
|  |    (POST channels/my-channel-id/play/my-playback-id / | ||
|  |     POST bridges/my-bridge-id/play/my-playback-id)  or as a query parameter. | ||
|  | 
 | ||
|  |  * A snoop channel can be started with a snoopId, in the uri or query. | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * Originate now takes optional parameters ChannelId and OtherChannelId, | ||
|  |    used to set the UniqueId on creation.  The other id is assigned to the | ||
|  |    second channel when dialing LOCAL, or defaults to appending ;2 if only | ||
|  |    the single Id is given. | ||
|  | 
 | ||
|  |  * The Mixmonitor action now has a "Command" header that can be used to | ||
|  |    indicate a post-process command to run once recording finishes. | ||
|  | 
 | ||
|  | RealTime | ||
|  | ------------------ | ||
|  |  * A new set of Alembic scripts has been added for CDR tables. This will create | ||
|  |    a 'cdr' table with the default schema that Asterisk expects. | ||
|  | 
 | ||
|  | 
 | ||
|  | Functions | ||
|  | ------------------ | ||
|  |  * A new function was added: PERIODIC_HOOK.  This allows running a periodic | ||
|  |    dialplan hook on a channel.  Any audio generated by this hook will be | ||
|  |    injected into the call. | ||
|  | 
 | ||
|  | 
 | ||
|  | Resources | ||
|  | ------------------ | ||
|  | 
 | ||
|  | res_hep | ||
|  | ------------------ | ||
|  |  * A new module, res_hep, has been added, that acts as a generic packet | ||
|  |    capture agent for the Homer Encapsulation Protocol (HEP) version 3. | ||
|  |    It can be configured via hep.conf. Other modules can use res_hep to send | ||
|  |    message traffic to a HEP capture server. | ||
|  | 
 | ||
|  | res_hep_pjsip | ||
|  | ------------------ | ||
|  |  * A new module, res_hep_pjsip, has been added that will forward PJSIP | ||
|  |    message traffic to a HEP capture server. See res_hep for more | ||
|  |    information. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * transport and endpoint ToS options (tos, tos_audio, and tos_video) may now | ||
|  |    be set as the named set of ToS values (cs0-cs7, af11-af43, ef). | ||
|  | 
 | ||
|  |  * Added the following new CLI commands: | ||
|  |    - "pjsip show contacts" - list all current PJSIP contacts. | ||
|  |    - "pjsip show contact" - show specific information about a current PJSIP | ||
|  |      contact. | ||
|  |    - "pjsip show channel" - show detailed information about a PJSIP channel. | ||
|  | 
 | ||
|  | res_pjsip_multihomed | ||
|  | ------------------ | ||
|  |  * A new module, res_pjsip_multihomed handles situations where the system | ||
|  |    Asterisk is running out has multiple interfaces. res_pjsip_multihomed | ||
|  |    determines which interface should be used during message sending. | ||
|  | 
 | ||
|  | res_pjsip_pidf_digium_body_supplement | ||
|  | ------------------ | ||
|  |  * A new module, res_pjsip_pidf_digium_body_supplement provides NOTIFY | ||
|  |    request body formatting for presence support in Digium phones. | ||
|  | 
 | ||
|  | res_pjsip_send_to_voicemail | ||
|  | ------------------ | ||
|  |  * A new module, res_pjsip_send_to_voicemail allows for REFER requests with | ||
|  |    particular headers to transfer a PJSIP channel directly to a particular | ||
|  |    extension that has VoiceMail. This is intended to be used with Digium | ||
|  |    phones that support this feature. | ||
|  | 
 | ||
|  | res_pjsip_outbound_registration | ||
|  | ------------------ | ||
|  |  * A new CLI command has been added: "pjsip show registrations", which lists | ||
|  |    all configured PJSIP registrations | ||
|  | 
 | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 12.0.0 to Asterisk 12.1.0 ------------ | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AMI | ||
|  | ------------------ | ||
|  |  * Added a new module that provides AMI control over MWI within Asterisk, | ||
|  |    res_mwi_external_ami. Note that this module depends on res_mwi_external; | ||
|  |    for more information on enabling this module, see res_mwi_external. | ||
|  |    This module provides the MWIGet/MWIUpdate/MWIDelete actions, as well as | ||
|  |    the MWIGet/MWIGetComplete events. | ||
|  | 
 | ||
|  |  * The DialStatus field in the DialEnd event can now contain additional | ||
|  |    statuses that convey how the dial operation terminated. This includes | ||
|  |    ABORT, CONTINUE, and GOTO. | ||
|  | 
 | ||
|  |  * AMI will now emit security events. A new class authorization has been | ||
|  |    added in manager.conf for the security events, 'security'. The new events | ||
|  |    are: | ||
|  |     - FailedACL - raised when a request violates an ACL check | ||
|  |     - InvalidAccountID - raised when a request fails an authentication | ||
|  |       check due to an invalid account ID | ||
|  |     - SessionLimit - raised when a request fails due to exceeding the | ||
|  |       number of allowed concurrent sessions for a service | ||
|  |     - MemoryLimit - raised when a request fails due to an internal memory | ||
|  |       allocation failure | ||
|  |     - LoadAverageLimit - raised when a request fails because a configured | ||
|  |       load average limit has been reached | ||
|  |     - RequestNotAllowed - raised when a request is not allowed by | ||
|  |       the service | ||
|  |     - AuthMethodNotAllowed - raised when a request used an authentication | ||
|  |       method not allowed by the service | ||
|  |     - RequestBadFormat - raised when a request is received with bad formatting | ||
|  |     - SuccessfulAuth - raised when a request successfully authenticates | ||
|  |     - UnexpectedAddress - raised when a request has a different source address | ||
|  |       then what is expected for a session already in progress with a service | ||
|  |     - ChallengeResponseFailed - raised when a request's attempt to authenticate | ||
|  |       has been challenged, and the request failed the authentication challenge | ||
|  |     - InvalidPassword - raised when a request provides an invalid password | ||
|  |       during an authentication attempt | ||
|  |     - ChallengeSent - raised when an Asterisk service send an authentication | ||
|  |       challenge to a request | ||
|  |     - InvalidTransport - raised when a request attempts to use a transport not | ||
|  |       allowed by the Asterisk service | ||
|  | 
 | ||
|  |  * Bridge related events now have two additional fields: BridgeName and | ||
|  |    BridgeCreator. BridgeName is a descriptive name for the bridge; | ||
|  |    BridgeCreator is the name of the entity that created the bridge. This | ||
|  |    affects the following events: ConfbridgeStart, ConfbridgeEnd, | ||
|  |    ConfbridgeJoin, ConfbridgeLeave, ConfbridgeRecord, ConfbridgeStopRecord, | ||
|  |    ConfbridgeMute, ConfbridgeUnmute, ConfbridgeTalking, BlindTransfer, | ||
|  |    AttendedTransfer, BridgeCreate, BridgeDestroy, BridgeEnter, BridgeLeave | ||
|  | 
 | ||
|  | ARI | ||
|  | ------------------ | ||
|  |  * The Bridge data model now contains the additional fields 'name' and | ||
|  |    'creator'. The 'name' field conveys a descriptive name for the bridge; | ||
|  |    the 'creator' field conveys the name of the entity that created the bridge. | ||
|  |    This affects all responses to HTTP requests that return a Bridge data model | ||
|  |    as well as all event derived data models that contain a Bridge data model. | ||
|  |    The POST /bridges operation may now optionally specify a name to give to | ||
|  |    the bridge being created. | ||
|  | 
 | ||
|  |  * Added a new ARI resource 'mailboxes' which allows the creation and | ||
|  |    modification of mailboxes managed by external MWI. Modules res_mwi_external | ||
|  |    and res_stasis_mailbox must be enabled to use this resource. For more | ||
|  |    information on external MWI control, see res_mwi_external. | ||
|  | 
 | ||
|  |  * Added new events for externally initiated transfers. The event | ||
|  |    BridgeBlindTransfer is now raised when a channel initiates a blind transfer | ||
|  |    of a bridge in the ARI controlled application to the dialplan; the | ||
|  |    BridgeAttendedTransfer event is raised when a channel initiates an | ||
|  |    attended transfer of a bridge in the ARI controlled application to the | ||
|  |    dialplan. | ||
|  | 
 | ||
|  |  * Channel variables may now be specified as a body parameter to the | ||
|  |    POST /channels operation. The 'variables' key in the JSON is interpreted | ||
|  |    as a sequence of key/value pairs that will be added to the created channel | ||
|  |    as channel variables. Other parameters in the JSON body are treated as | ||
|  |    query parameters of the same name. | ||
|  | 
 | ||
|  | HTTP | ||
|  | ------------------ | ||
|  |  * Asterisk's HTTP server now supports chunked Transfer-Encoding. This will be | ||
|  |    automatically handled by the HTTP server if a request is received with a | ||
|  |    Transfer-Encoding type of "chunked". | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * Path support has been added with the 'support_path' option in registration | ||
|  |    and aor sections. | ||
|  | 
 | ||
|  |  * A 'debug' option has been added to the globals section that will allow | ||
|  |    sip messages to be logged. | ||
|  | 
 | ||
|  |  * A 'set_var' option has been added to endpoints that will automatically | ||
|  |    set the desired variable(s) on a channel created for that endpoint. | ||
|  | 
 | ||
|  |  * Several new tables and columns have been added to the realtime schema for | ||
|  |    the res_pjsip related modules. See the UPGRADE.txt notes for updating | ||
|  |    the database schema. | ||
|  | 
 | ||
|  | res_mwi_external | ||
|  | ------------------ | ||
|  |  * A new module, res_mwi_external, has been added to Asterisk. This module | ||
|  |    acts as a base framework that other modules can build on top of to allow | ||
|  |    an external system to control MWI within Asterisk. For implementations | ||
|  |    that make use of res_mwi_external, see res_mwi_external_ami and | ||
|  |    res_ari_mailboxes. Note that res_mwi_external conflicts with other modules | ||
|  |    that may produce MWI themselves, such as app_voicemail. res_mwi_external | ||
|  |    and other modules that depend on it cannot be built or loaded with | ||
|  |    app_voicemail present. | ||
|  | 
 | ||
|  | res_pjsip | ||
|  | ------------------ | ||
|  |  * DNS functionality will now automatically be enabled if the system configured | ||
|  |    nameservers can be retrieved. If the system configured nameservers can not be | ||
|  |    retrieved the functionality will resort to using system resolution. Functionality | ||
|  |    such as SRV records and failover will not be available if system resolution | ||
|  |    is in use. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 11 to Asterisk 12 -------------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Overview | ||
|  | ------------------ | ||
|  | 
 | ||
|  | Asterisk 12 is a standard release of the Asterisk project. As such, the | ||
|  | focus of development for this release was on core architectural changes and | ||
|  | major new features. This includes: | ||
|  |  * A more flexible bridging core based on the Bridging API | ||
|  |  * A new internal message bus, Stasis | ||
|  |  * Major standardization and consistency improvements to AMI | ||
|  |  * Addition of the Asterisk RESTful Interface (ARI) | ||
|  |  * A new SIP channel driver, chan_pjsip | ||
|  | In addition, as the vast majority of bridging in Asterisk was migrated to the | ||
|  | Bridging API used by ConfBridge, major changes were made to most of the | ||
|  | interfaces in Asterisk. This includes not only AMI, but also CDRs and CEL. | ||
|  | 
 | ||
|  | Specifications have been written for the affected interfaces. These | ||
|  | specifications are available on the Asterisk wiki: | ||
|  |  * AMI - https://wiki.asterisk.org/wiki/x/dAFRAQ | ||
|  |  * CEL - https://wiki.asterisk.org/wiki/x/4ICLAQ | ||
|  |  * CDRs - https://wiki.asterisk.org/wiki/x/pwpRAQ | ||
|  | 
 | ||
|  | It is *highly* recommended that anyone migrating to Asterisk 12 read the | ||
|  | information regarding its release both in this file and in the accompanying | ||
|  | UPGRADE.txt file. More detailed information on the major changes can be found | ||
|  | on the Asterisk wiki at https://wiki.asterisk.org/wiki/x/0YCLAQ. | ||
|  | 
 | ||
|  | 
 | ||
|  | Build System | ||
|  | ------------------ | ||
|  |  * Added build option DISABLE_INLINE. This option can be used to work around a | ||
|  |    bug in gcc. For more information, see | ||
|  |    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47816 | ||
|  | 
 | ||
|  |  * Removed the CHANNEL_TRACE development mode build option. Certain aspects of | ||
|  |    the CHANNEL_TRACE build option were incompatible with the new bridging | ||
|  |    architecture. | ||
|  | 
 | ||
|  |  * Asterisk now optionally uses libxslt to improve XML documentation generation | ||
|  |    and maintainability. If libxslt is not available on the system, some XML | ||
|  |    documentation will be incomplete. | ||
|  | 
 | ||
|  |  * Asterisk now depends on libjansson. If a package of libjansson is not | ||
|  |    available on your distro, please see http://www.digip.org/jansson/. | ||
|  | 
 | ||
|  |  * Asterisk now depends on libuuid and, optionally, uriparser. It is | ||
|  |    recommended that you install uriparser, even if it is optional. | ||
|  | 
 | ||
|  |  * The new SIP stack and channel driver uses a particular version of PJSIP. | ||
|  |    Please see https://wiki.asterisk.org/wiki/x/J4GLAQ for more information on | ||
|  |    configuring and installing PJSIP for usage with Asterisk. | ||
|  | 
 | ||
|  |  * Optional API was re-implemented to be more portable, and no longer requires | ||
|  |    weak reference support from the compiler. The build option OPTIONAL_API may | ||
|  |    be disabled to disable Optional API support. | ||
|  | 
 | ||
|  | Applications | ||
|  | ------------------ | ||
|  | 
 | ||
|  | AgentLogin | ||
|  | ------------------ | ||
|  |  * Along with AgentRequest, this application has been modified to be a | ||
|  |    replacement for chan_agent. The act of a channel calling the AgentLogin | ||
|  |    application places the channel into a pool of agents that can be | ||
|  |    requested by the AgentRequest application. Note that this application, as | ||
|  |    well as all other agent related functionality, is now provided by the | ||
|  |    app_agent_pool module. See chan_agent and AgentRequest for more information. | ||
|  | 
 | ||
|  |  * This application no longer performs agent authentication. If authentication | ||
|  |    is desired, the dialplan needs to perform this function using the | ||
|  |    Authenticate or VMAuthenticate application or through an AGI script before | ||
|  |    running AgentLogin. | ||
|  | 
 | ||
|  |  * If this application is called and the agent is already logged in, the | ||
|  |    dialplan will continue execution with the AGENT_STATUS channel variable set | ||
|  |    to ALREADY_LOGGED_IN. | ||
|  | 
 | ||
|  |  * The agents.conf schema has changed. Rather than specifying agents on a | ||
|  |    single line in comma delineated fashion, each agent is defined in a separate | ||
|  |    context. This allows agents to use the power of context templates in their | ||
|  |    definition. | ||
|  | 
 | ||
|  |  * A number of parameters from agents.conf have been removed. This includes | ||
|  |    maxloginretries, autologoffunavail, updatecdr, goodbye, group, recordformat, | ||
|  |    urlprefix, and savecallsin. These options were obsoleted by the move from | ||
|  |    a channel driver model to the bridging/application model provided by | ||
|  |    app_agent_pool. | ||
|  | 
 | ||
|  | AgentRequest | ||
|  | ------------------ | ||
|  |  * A new application, this will request a logged in agent from the pool and | ||
|  |    bridge the requested channel with the channel calling this application. | ||
|  |    Logged in agents are those channels that called the AgentLogin application. | ||
|  |    If an agent cannot be requested from the pool, the AGENT_STATUS dialplan | ||
|  |    application will be set with an appropriate error value. | ||
|  | 
 | ||
|  | AgentMonitorOutgoing | ||
|  | ------------------ | ||
|  |  * This application has been removed. It was a holdover from when | ||
|  |    AgentCallbackLogin was removed. | ||
|  | 
 | ||
|  | AlarmReceiver | ||
|  | ------------------ | ||
|  |  * Added support for additional Ademco DTMF signalling formats, including | ||
|  |    Express 4+1, Express 4+2, High Speed and Super Fast. | ||
|  | 
 | ||
|  |  * Added channel variable ALARMRECEIVER_CALL_LIMIT. This sets the maximum | ||
|  |    call time, in milliseconds, to run the application. | ||
|  | 
 | ||
|  |  * Added channel variable ALARMRECEIVER_RETRIES_LIMIT. This sets the | ||
|  |    maximum number of times to retry the call. | ||
|  | 
 | ||
|  |  * Added a new configuration option answait. If set, the AlarmReceiver | ||
|  |    application will wait the number of milliseconds specified by answait | ||
|  |    after the channel has answered. Valid values range between 500 | ||
|  |    milliseconds and 10000 milliseconds. | ||
|  | 
 | ||
|  |  * Added configuration option no_group_meta. If enabled, grouping of metadata | ||
|  |    information in the AlarmReceiver log file will be skipped. | ||
|  | 
 | ||
|  | Answer | ||
|  | ------------------ | ||
|  |  * It is now no longer possible to bypass updating the CDR on the channel | ||
|  |    when answering. CDRs reflect the state of the channel and will always | ||
|  |    reflect the time they were Answered. | ||
|  | 
 | ||
|  | BridgeWait | ||
|  | ------------------ | ||
|  |  * A new application in Asterisk, this will place the calling channel | ||
|  |    into a holding bridge, optionally entertaining them with some form of | ||
|  |    media. Channels participating in a holding bridge do not interact with | ||
|  |    other channels in the same holding bridge. Optionally, however, a channel | ||
|  |    may join as an announcer. Any media passed from an announcer channel is | ||
|  |    played to all channels in the holding bridge. Channels leave a holding | ||
|  |    bridge either when an optional timer expires, or via the ChannelRedirect | ||
|  |    application or AMI Redirect action. | ||
|  | 
 | ||
|  | ConfBridge | ||
|  | ------------------ | ||
|  |  * All participants in a bridge can now be kicked out of a conference room | ||
|  |    by specifying the channel parameter as 'all' in the ConfBridge kick CLI | ||
|  |    command, i.e., 'confbridge kick <conference> all' | ||
|  | 
 | ||
|  |  * CLI output for the 'confbridge list' command has been improved. When | ||
|  |    displaying information about a particular bridge, flags will now be shown | ||
|  |    for the participating users indicating properties of that user. | ||
|  | 
 | ||
|  |  * The ConfbridgeList event now contains the following fields: WaitMarked, | ||
|  |    EndMarked, and Waiting. This displays additional properties about the | ||
|  |    user's profile, as well as whether or not the user is waiting for a | ||
|  |    Marked user to enter the conference. | ||
|  | 
 | ||
|  |  * Added a new option for conference recording, record_file_append. If enabled, | ||
|  |    when the recording is stopped and then re-started, the existing recording | ||
|  |    will be used and appended to. | ||
|  | 
 | ||
|  |  * ConfBridge now has the ability to set the language of announcements to the | ||
|  |    conference.  The language can be set on a bridge profile in confbridge.conf | ||
|  |    or by the dialplan function CONFBRIDGE(bridge,language)=en. | ||
|  | 
 | ||
|  | ControlPlayback | ||
|  | ------------------ | ||
|  |  * The channel variable CPLAYBACKSTATUS may now return the value | ||
|  |    'REMOTESTOPPED'. This occurs when playback is stopped by a remote interface, | ||
|  |    such as AMI. See the AMI action ControlPlayback for more information. | ||
|  | 
 | ||
|  | Directory | ||
|  | ------------------ | ||
|  |  * Added the 'a' option, which allows the caller to enter in an additional | ||
|  |    alias for the user in the directory. This option must be used in conjunction | ||
|  |    with the 'f', 'l', or 'b' options. Note that the alias for a user can be | ||
|  |    specified in voicemail.conf. | ||
|  | 
 | ||
|  | DumpChan | ||
|  | ------------------ | ||
|  |  * The output of DumpChan no longer includes the DirectBridge or IndirectBridge | ||
|  |    fields. Instead, if a channel is in a bridge, it includes a BridgeID field | ||
|  |    containing the unique ID of the bridge that the channel happens to be in. | ||
|  | 
 | ||
|  | ForkCDR | ||
|  | ------------------ | ||
|  |  * ForkCDR no longer automatically resets the forked CDR. See the 'r' option | ||
|  |    for more information. | ||
|  | 
 | ||
|  |  * Variables are no longer purged from the original CDR. See the 'v' option for | ||
|  |    more information. | ||
|  | 
 | ||
|  |  * The 'A' option has been removed. The Answer time on a CDR is never updated | ||
|  |    once set. | ||
|  | 
 | ||
|  |  * The 'd' option has been removed. The disposition on a CDR is a function of | ||
|  |    the state of the channel and cannot be altered. | ||
|  | 
 | ||
|  |  * The 'D' option has been removed. Who the Party B is on a CDR is a function | ||
|  |    of the state of the respective channels involved in the CDR and cannot be | ||
|  |    altered. | ||
|  | 
 | ||
|  |  * The 'r' option has been changed. Previously, ForkCDR always reset the CDR | ||
|  |    such that the start time and, if applicable, the answer time was updated. | ||
|  |    Now, by default, ForkCDR simply forks the CDR, maintaining any times. The | ||
|  |    'r' option now triggers the Reset, setting the start time (and answer time | ||
|  |    if applicable) to the current time. Note that the 'a' option still sets | ||
|  |    the answer time to the current time if the channel was already answered. | ||
|  | 
 | ||
|  |  * The 's' option has been removed. A variable can be set on the original CDR | ||
|  |    if desired using the CDR function, and removed from a forked CDR using the | ||
|  |    same function. | ||
|  | 
 | ||
|  |  * The 'T' option has been removed. The concept of DONT_TOUCH and LOCKED no | ||
|  |    longer applies in the CDR engine. | ||
|  | 
 | ||
|  |  * The 'v' option now prevents the copy of the variables from the original CDR | ||
|  |    to the forked CDR. Previously the variables were always copied but were | ||
|  |    removed from the original. This was changed as removing variables from a CDR | ||
|  |    can have unintended side effects - this option allows the user to prevent | ||
|  |    propagation of variables from the original to the forked without modifying | ||
|  |    the original. | ||
|  | 
 | ||
|  | MeetMe | ||
|  | ------------------- | ||
|  |  * Added the 'n' option to MeetMe to prevent application of the DENOISE | ||
|  |    function to a channel joining a conference. Some channel drivers that vary | ||
|  |    the number of audio samples in a voice frame will experience significant | ||
|  |    quality problems if a denoiser is attached to the channel; this option gives | ||
|  |    them the ability to remove the denoiser without having to unload func_speex. | ||
|  | 
 | ||
|  | MixMonitor | ||
|  | ------------------ | ||
|  |  * The 'b' option now includes conferences as well as sounds played to the | ||
|  |    participants. | ||
|  | 
 | ||
|  |  * The AUDIOHOOK_INHERIT function is no longer needed to keep a MixMonitor | ||
|  |    running during a transfer. If a MixMonitor is started on a channel, | ||
|  |    the MixMonitor will continue to record the audio passing through the | ||
|  |    channel even in the presence of transfers. | ||
|  | 
 | ||
|  | NoCDR | ||
|  | ------------------ | ||
|  |  * The NoCDR application is deprecated. Please use the CDR_PROP function to | ||
|  |    disable CDRs. | ||
|  | 
 | ||
|  |  * While the NoCDR application will prevent CDRs for a channel from being | ||
|  |    propagated to registered CDR backends, it will not prevent that data from | ||
|  |    being collected. Hence, a subsequent call to ResetCDR or the CDR_PROP | ||
|  |    function that enables CDRs on a channel will restore those records that have | ||
|  |    not yet been finalized. | ||
|  | 
 | ||
|  | ParkAndAnnounce | ||
|  | ------------------- | ||
|  |  * The app_parkandannounce module has been removed. The application | ||
|  |    ParkAndAnnounce is now provided by the res_parking module. See the | ||
|  |    res_parking changes for more information. | ||
|  | 
 | ||
|  | Queue | ||
|  | ------------------- | ||
|  |  * Added queue available hint. The hint can be added to the dialplan using the | ||
|  |    following syntax: exten,hint,Queue:{queue_name}_avail | ||
|  |    For example, if the name of the queue is 'markq': | ||
|  |         exten => 8501,hint,Queue:markq_avail | ||
|  |    This will report 'InUse' if there are no logged in agents or no free agents. | ||
|  |    It will report 'Idle' when an agent is free. | ||
|  | 
 | ||
|  |  * Queues now support a hint for member paused state. The hint uses the form | ||
|  |    'Queue:{queue_name}_pause_{member_name}', where {queue_name} and {member_name} | ||
|  |    are the name of the queue and the name of the member to subscribe to, | ||
|  |    respectively. For example: exten => 8501,hint,Queue:sales_pause_mark. | ||
|  |    Members will show as In Use when paused. | ||
|  | 
 | ||
|  |  * The configuration options eventwhencalled and eventmemberstatus have been | ||
|  |    removed.  As a result, the AMI events QueueMemberStatus, AgentCalled, | ||
|  |    AgentConnect, AgentComplete, AgentDump, and AgentRingNoAnswer will always be | ||
|  |    sent.  The "Variable" fields will also no longer exist on the Agent* events. | ||
|  |    These events can be filtered out from a connected AMI client using the | ||
|  |    eventfilter setting in manager.conf. | ||
|  | 
 | ||
|  |  * The queue log now differentiates between blind and attended transfers. A | ||
|  |    blind transfer will result in a BLINDTRANSFER message with the destination | ||
|  |    context and extension. An attended transfer will result in an | ||
|  |    ATTENDEDTRANSFER message. This message will indicate the method by which | ||
|  |    the attended transfer was completed: "BRIDGE" for a bridge merge, "APP" | ||
|  |    for running an application on a bridge or channel, or "LINK" for linking | ||
|  |    two bridges together with local channels. The queue log will also now detect | ||
|  |    externally initiated blind and attended transfers and record the transfer | ||
|  |    status accordingly. | ||
|  | 
 | ||
|  |  * When performing queue pause/unpause on an interface without specifying an | ||
|  |    individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at | ||
|  |    least one member of any queue exists for that interface. | ||
|  | 
 | ||
|  |  * Added the 'queue_log_realtime_use_gmt' option to have timestamps in GMT | ||
|  |    for realtime queue log entries. | ||
|  | 
 | ||
|  | ResetCDR | ||
|  | ------------------ | ||
|  |  * The 'e' option has been deprecated. Use the CDR_PROP function to re-enable | ||
|  |    CDRs when they were previously disabled on a channel. | ||
|  | 
 | ||
|  |  * The 'w' and 'a' options have been removed. Dispatching CDRs to registered | ||
|  |    backends occurs on an as-needed basis in order to preserve linkedid | ||
|  |    propagation and other needed behavior. | ||
|  | 
 | ||
|  | SayAlphaCase | ||
|  | ------------------ | ||
|  |  * A new application, this is similar to SayAlpha except that it supports | ||
|  |    case sensitive playback of the specified characters. For example, | ||
|  |    SayAlphaCase(u,aBc) will result in 'a uppercase b c'. | ||
|  | 
 | ||
|  | SetAMAFlags | ||
|  | ------------------ | ||
|  |  * This application is deprecated in favor of CHANNEL(amaflags). | ||
|  | 
 | ||
|  | SendDTMF | ||
|  | ------------------ | ||
|  |  * The SendDTMF application will now accept 'W' as valid input. This will cause | ||
|  |    the application to delay one second while streaming DTMF. | ||
|  | 
 | ||
|  | Stasis | ||
|  | ------------------ | ||
|  |  * A new application in Asterisk 12, this hands control of the channel calling | ||
|  |    the application over to an external system. Currently, external systems | ||
|  |    manipulate channels in Stasis through the Asterisk RESTful Interface (ARI). | ||
|  | 
 | ||
|  | UserEvent | ||
|  | ------------------ | ||
|  |  * UserEvent will now handle duplicate keys by overwriting the previous value | ||
|  |    assigned to the key. | ||
|  | 
 | ||
|  |  * In addition to AMI, UserEvent invocations will now be distributed to any | ||
|  |    interested Stasis applications. | ||
|  | 
 | ||
|  | VoiceMail | ||
|  | ------------------ | ||
|  |  * Mailboxes defined by app_voicemail MUST be referenced by the rest of the | ||
|  |    system as mailbox@context.  The rest of the system cannot add @default | ||
|  |    to mailbox identifiers for app_voicemail that do not specify a context | ||
|  |    any longer.  It is a mailbox identifier format that should only be | ||
|  |    interpreted by app_voicemail. | ||
|  | 
 | ||
|  |  * The voicemail.conf configuration file now has an 'alias' configuration | ||
|  |    parameter for use with the Directory application. The voicemail realtime | ||
|  |    database table schema has also been updated with an 'alias' column. | ||
|  | 
 | ||
|  | 
 | ||
|  | Codecs | ||
|  | ------------------ | ||
|  |  * Pass through support has been added for both VP8 and Opus. | ||
|  | 
 | ||
|  |  * Added format attribute negotiation for the Opus codec. Format attribute | ||
|  |    negotiation is provided by the res_format_attr_opus module. | ||
|  | 
 | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * Masquerades as an operation inside Asterisk have been effectively hidden | ||
|  |    by the migration to the Bridging API. As such, many 'quirks' of Asterisk | ||
|  |    no longer occur. This includes renaming of channels, "<ZOMBIE>" channels, | ||
|  |    dropping of frame/audio hooks, and other internal implementation details | ||
|  |    that users had to deal with. This fundamental change has large implications | ||
|  |    throughout the changes documented for this version. For more information | ||
|  |    about the new core architecture of Asterisk, please see the Asterisk wiki. | ||
|  | 
 | ||
|  |  * Multiple parties in a bridge may now be transferred. If a participant in a | ||
|  |    multi-party bridge initiates a blind transfer, a Local channel will be used | ||
|  |    to execute the dialplan location that the transferer sent the parties to. If | ||
|  |    a participant in a multi-party bridge initiates an attended transfer, | ||
|  |    several options are possible. If the attended transfer results in a transfer | ||
|  |    to an application, a Local channel is used. If the attended transfer results | ||
|  |    in a transfer to another channel, the resulting channels will be merged into | ||
|  |    a single bridge. | ||
|  | 
 | ||
|  |  * The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND is no longer channel | ||
|  |    driver specific.  If the channel variable is set on the transferrer channel, | ||
|  |    the sound will be played to the target of an attended transfer. | ||
|  | 
 | ||
|  |  * The channel variable BRIDGEPEER becomes a comma separated list of peers in | ||
|  |    a multi-party bridge.  The BRIDGEPEER value can have a maximum of 10 peers | ||
|  |    listed.  Any more peers in the bridge will not be included in the list. | ||
|  |    BRIDGEPEER is not valid in holding bridges like parking since those channels | ||
|  |    do not talk to each other even though they are in a bridge. | ||
|  | 
 | ||
|  |  * The channel variable BRIDGEPVTCALLID is only valid for two party bridges | ||
|  |    and will contain a value if the BRIDGEPEER's channel driver supports it. | ||
|  | 
 | ||
|  |  * A channel variable ATTENDEDTRANSFER is now set which indicates which channel | ||
|  |    was responsible for an attended transfer in a similar fashion to | ||
|  |    BLINDTRANSFER. | ||
|  | 
 | ||
|  |  * Modules using the Configuration Framework or Sorcery must have XML | ||
|  |    configuration documentation. This configuration documentation is included | ||
|  |    with the rest of Asterisk's XML documentation, and is accessible via CLI | ||
|  |    commands. See the CLI changes for more information. | ||
|  | 
 | ||
|  | AMI (Asterisk Manager Interface) | ||
|  | ------------------ | ||
|  |  * Major changes were made to both the syntax as well as the semantics of the | ||
|  |    AMI protocol. In particular, AMI events have been substantially improved | ||
|  |    in this version of Asterisk. For more information, please see the AMI | ||
|  |    specification at https://wiki.asterisk.org/wiki/x/dAFRAQ | ||
|  | 
 | ||
|  |  * AMI events that reference a particular channel or bridge will now always | ||
|  |    contain a standard set of fields. When multiple channels or bridges are | ||
|  |    referenced in an event, fields for at least some subset of the channels | ||
|  |    and bridges in the event will be prefixed with a descriptive name to avoid | ||
|  |    name collisions. See the AMI event documentation on the Asterisk wiki for | ||
|  |    more information. | ||
|  | 
 | ||
|  |  * The CLI command 'manager show commands' no longer truncates command names | ||
|  |    longer than 15 characters and no longer shows authorization requirement | ||
|  |    for commands. 'manager show command' now displays the privileges needed | ||
|  |    for using a given manager command instead. | ||
|  | 
 | ||
|  |  * The SIPshowpeer action will now include a 'SubscribeContext' field for a | ||
|  |    peer in its response if the peer has a subscribe context set. | ||
|  | 
 | ||
|  |  * The SIPqualifypeer action now acknowledges the request once it has | ||
|  |    established that the request is against a known peer. It also issues a new | ||
|  |    event, 'SIPQualifyPeerDone', once the qualify action has been completed. | ||
|  | 
 | ||
|  |  * The PlayDTMF action now supports an optional 'Duration' parameter.  This | ||
|  |    specifies the duration of the digit to be played, in milliseconds. | ||
|  | 
 | ||
|  |  * Added VoicemailRefresh action to allow an external entity to trigger mailbox | ||
|  |    updates when changes occur instead of requiring the use of pollmailboxes. | ||
|  | 
 | ||
|  |  * Added a new action 'ControlPlayback'. The ControlPlayback action allows an | ||
|  |    AMI client to manipulate audio currently being played back on a channel. The | ||
|  |    supported operations depend on the application being used to send audio to | ||
|  |    the channel. When the audio playback was initiated using the ControlPlayback | ||
|  |    application or CONTROL STREAM FILE AGI command, the audio can be paused, | ||
|  |    stopped, restarted, reversed, or skipped forward. When initiated by other | ||
|  |    mechanisms (such as the Playback application), the audio can be stopped, | ||
|  |    reversed, or skipped forward. | ||
|  | 
 | ||
|  |  * Channel related events now contain a snapshot of channel state, adding new | ||
|  |    fields to many of these events. | ||
|  | 
 | ||
|  |  * The AMI event 'Newexten' field 'Extension' is deprecated, and may be removed | ||
|  |    in a future release. Please use the common 'Exten' field instead. | ||
|  | 
 | ||
|  |  * The AMI event 'UserEvent' from app_userevent now contains the channel state | ||
|  |    fields. The channel state fields will come before the body fields. | ||
|  | 
 | ||
|  |  * The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and | ||
|  |    'UnParkedCall' have changed significantly in the new res_parking module. | ||
|  | 
 | ||
|  |    The 'Channel' and 'From' headers are gone. For the channel that was parked | ||
|  |    or is coming out of parking, a 'Parkee' channel snapshot is issued and it | ||
|  |    has a number of fields associated with it. The old 'Channel' header relayed | ||
|  |    the same data as the new 'ParkeeChannel' header. | ||
|  | 
 | ||
|  |    The 'From' field was ambiguous and changed meaning depending on the event. | ||
|  |    for most of these, it was the name of the channel that parked the call | ||
|  |    (the 'Parker'). There is no longer a header that provides this channel name, | ||
|  |    however the 'ParkerDialString' will contain a dialstring to redial the | ||
|  |    device that parked the call. | ||
|  | 
 | ||
|  |    On UnParkedCall events, the 'From' header would instead represent the | ||
|  |    channel responsible for retrieving the parkee. It receives a channel | ||
|  |    snapshot labeled 'Retriever'. The 'from' field is is replaced with | ||
|  |    'RetrieverChannel'. | ||
|  | 
 | ||
|  |    Lastly, the 'Exten' field has been replaced with 'ParkingSpace'. | ||
|  | 
 | ||
|  |  * The AMI event 'Parkinglot' (response to 'Parkinglots' command) in a similar | ||
|  |    fashion has changed the field names 'StartExten' and 'StopExten' to | ||
|  |    'StartSpace' and 'StopSpace' respectively. | ||
|  | 
 | ||
|  |  * The deprecated use of | (pipe) as a separator in the channelvars setting in | ||
|  |    manager.conf has been removed. | ||
|  | 
 | ||
|  |  * Channel Variables conveyed with a channel no longer contain the name of the | ||
|  |    channel as part of the key field, i.e., ChanVariable(SIP/foo): bar=baz is now | ||
|  |    ChanVariable: bar=baz. When multiple channels are present in a single AMI | ||
|  |    event, the various ChanVariable fields will contain a suffix that specifies | ||
|  |    which channel they correspond to. | ||
|  | 
 | ||
|  |  * The NewPeerAccount AMI event is no longer raised. The NewAccountCode AMI | ||
|  |    event always conveys the AMI event for a particular channel. | ||
|  | 
 | ||
|  |  * All 'Reload' events have been consolidated into a single event type. This | ||
|  |    event will always contain a Module field specifying the name of the module | ||
|  |    and a Status field denoting the result of the reload. All modules now issue | ||
|  |    this event when being reloaded. | ||
|  | 
 | ||
|  |  * The 'ModuleLoadReport' event has been removed. Most AMI connections would | ||
|  |    fail to receive this event due to being connected after modules have loaded. | ||
|  |    AMI connections that want to know when Asterisk is ready should listen for | ||
|  |    the 'FullyBooted' event. | ||
|  | 
 | ||
|  |  * app_fax now sends the same send fax/receive fax events as res_fax. The | ||
|  |    'FaxSent' event is now the 'SendFAX' event, and the 'FaxReceived' event is | ||
|  |    now the 'ReceiveFAX' event. | ||
|  | 
 | ||
|  |  * The 'MusicOnHold' event is now two events: 'MusicOnHoldStart' and | ||
|  |    'MusicOnHoldStop'. The sub type field has been removed. | ||
|  | 
 | ||
|  |  * The 'JabberEvent' event has been removed. It is not AMI's purpose to be a | ||
|  |    carrier for another protocol. | ||
|  | 
 | ||
|  |  * The Bridge Manager action's 'Playtone' header now accepts more fine-grained | ||
|  |    options. 'Channel1' and 'Channel2' may be specified in order to play a tone | ||
|  |    to the specific channel. 'Both' may be specified to play a tone to both | ||
|  |    channels. The old 'yes' option is still accepted as a way of playing the | ||
|  |    tone to Channel2 only. | ||
|  | 
 | ||
|  |  * The AMI 'Status' response event to the AMI Status action replaces the | ||
|  |    'BridgedChannel' and 'BridgedUniqueid' headers with the 'BridgeID' header to | ||
|  |    indicate what bridge the channel is currently in. | ||
|  | 
 | ||
|  |  * The AMI 'Hold' event has been moved out of individual channel drivers, into | ||
|  |    core, and is now two events: 'Hold' and 'Unhold'.  The status field has been | ||
|  |    removed. | ||
|  | 
 | ||
|  |  * The AMI events in app_queue have been made more consistent with each other. | ||
|  |    Events that reference channels (QueueCaller* and Agent*) will show | ||
|  |    information about each channel.  The (infamous) 'Join' and 'Leave' AMI | ||
|  |    events have been changed to 'QueueCallerJoin' and 'QueueCallerLeave'. | ||
|  | 
 | ||
|  |  * The 'MCID' AMI event now publishes a channel snapshot when available and | ||
|  |    its non-channel-snapshot parameters now use either the "MCallerID" or | ||
|  |    'MConnectedID' prefixes with Subaddr*, Name*, and Num* suffixes instead | ||
|  |    of 'CallerID' and 'ConnectedID' to avoid confusion with similarly named | ||
|  |    parameters in the channel snapshot. | ||
|  | 
 | ||
|  |  * The AMI events 'Agentlogin' and 'Agentlogoff' have been renamed | ||
|  |    'AgentLogin' and 'AgentLogoff' respectively. | ||
|  | 
 | ||
|  |  * The 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been | ||
|  |    renamed "DAHDIChannel" since it does not convey an Asterisk channel name. | ||
|  | 
 | ||
|  |  * 'ChannelUpdate' events have been removed. | ||
|  | 
 | ||
|  |  * All AMI events now contain a 'SystemName' field, if available. | ||
|  | 
 | ||
|  |  * Local channel optimization is now conveyed in two events: | ||
|  |    'LocalOptimizationBegin' and 'LocalOptimizationEnd'. The Begin event is sent | ||
|  |    when the Local channel driver begins attempting to optimize itself out of | ||
|  |    the media path; the End event is sent after the channel halves have | ||
|  |    successfully optimized themselves out of the media path. | ||
|  | 
 | ||
|  |  * Local channel information in events is now prefixed with 'LocalOne' and | ||
|  |    'LocalTwo'. This replaces the suffix of '1' and '2' for the two halves of | ||
|  |    the Local channel. This affects the 'LocalBridge', 'LocalOptimizationBegin', | ||
|  |    and 'LocalOptimizationEnd' events. | ||
|  | 
 | ||
|  |  * The option 'allowmultiplelogin' can now be set or overriden in a particular | ||
|  |    account. When set in the general context, it will act as the default | ||
|  |    setting for defined accounts. | ||
|  | 
 | ||
|  |  * The 'BridgeAction' event was removed. It technically added no value, as the | ||
|  |    Bridge Action already receives confirmation of the bridge through a | ||
|  |    successful completion Event. | ||
|  | 
 | ||
|  |  * The 'BridgeExec' events were removed. These events duplicated the events that | ||
|  |    occur in the Bridging API, and are conveyed now through BridgeCreate, | ||
|  |    BridgeEnter, and BridgeLeave events. | ||
|  | 
 | ||
|  |  * The 'RTCPSent'/'RTCPReceived' events have been significantly modified from | ||
|  |    previous versions. They now report all SR/RR packets sent/received, and | ||
|  |    have been restructured to better reflect the data sent in a SR/RR. In | ||
|  |    particular, the event structure now supports multiple report blocks. | ||
|  | 
 | ||
|  |  * Added 'BlindTransfer' and 'AttendedTransfer' events. These events are | ||
|  |    raised when a blind transfer/attended transfer completes successfully. | ||
|  |    They contain information about the transfer that just completed, including | ||
|  |    the location of the transfered channel. | ||
|  | 
 | ||
|  |  * Added a 'security' class to AMI which outputs the required fields for | ||
|  |    security messages similar to the log messages from res_security_log | ||
|  | 
 | ||
|  |  * The AMI event 'ExtensionStatus' now contains a 'StatusText' field | ||
|  |    that describes the status value in a human readable string. | ||
|  | 
 | ||
|  | CDR (Call Detail Records) | ||
|  | ------------------ | ||
|  |  * Significant changes have been made to the behavior of CDRs. The CDR engine | ||
|  |    was effectively rewritten and built on the Stasis message bus. For a full | ||
|  |    definition of CDR behavior in Asterisk 12, please read the specification | ||
|  |    on the Asterisk wiki (wiki.asterisk.org). | ||
|  | 
 | ||
|  |  * CDRs will now be created between all participants in a bridge. For each | ||
|  |    pair of channels in a bridge, a CDR is created to represent the path of | ||
|  |    communication between those two endpoints. This lets an end user choose who | ||
|  |    to bill for what during bridge operations with multiple parties. | ||
|  | 
 | ||
|  |  * The duration, billsec, start, answer, and end times now reflect the times | ||
|  |    associated with the current CDR for the channel, as opposed to a cumulative | ||
|  |    measurement of all CDRs for that channel. | ||
|  | 
 | ||
|  |  * When a CDR is dispatched, user defined CDR variables from both parties are | ||
|  |    included in the resulting CDR. If both parties have the same variable, only | ||
|  |    the Party A value is provided. | ||
|  | 
 | ||
|  |  * Added a new option to cdr.conf, 'debug'. When enabled, significantly more | ||
|  |    information regarding the CDR engine is logged as verbose messages. This | ||
|  |    option should only be used if the behavior of the CDR engine needs to be | ||
|  |    debugged. | ||
|  | 
 | ||
|  |  * Added CLI command 'cdr set debug {on|off}'. This toggles the 'debug' setting | ||
|  |    normally configured in cdr.conf. | ||
|  | 
 | ||
|  |  * Added CLI command 'cdr show active {channel}'. When {channel} is not | ||
|  |    specified, this command provides a summary of the channels with CDR | ||
|  |    information and their statistics. When {channel} is specified, it shows | ||
|  |    detailed information about all records associated with {channel}. | ||
|  | 
 | ||
|  | CEL (Channel Event Logging) | ||
|  | ------------------ | ||
|  |  * CEL has undergone significant rework in Asterisk 12, and is now built on the | ||
|  |    Stasis message bus. Please see the specification for CEL on the Asterisk | ||
|  |    wiki at https://wiki.asterisk.org/wiki/x/4ICLAQ for more detailed | ||
|  |    information. | ||
|  | 
 | ||
|  |  * The 'extra' field of all CEL events that use it now consists of a JSON blob | ||
|  |    with key/value pairs which are defined in the Asterisk 12 CEL documentation. | ||
|  | 
 | ||
|  |  * BLINDTRANSFER events now report the transferee bridge unique | ||
|  |    identifier, extension, and context in a JSON blob as the extra string | ||
|  |    instead of the transferee channel name as the peer. | ||
|  | 
 | ||
|  |  * ATTENDEDTRANSFER events now report the peer as NULL and additional | ||
|  |    information in the 'extra' string as a JSON blob. For transfers that occur | ||
|  |    between two bridged channels, the 'extra' JSON blob contains the primary | ||
|  |    bridge unique identifier, the secondary channel name, and the secondary | ||
|  |    bridge unique identifier. For transfers that occur between a bridged channel | ||
|  |    and a channel running an app, the 'extra' JSON blob contains the primary | ||
|  |    bridge unique identifier, the secondary channel name, and the app name. | ||
|  | 
 | ||
|  |  * LOCAL_OPTIMIZE events have been added to convey local channel | ||
|  |    optimizations with the record occurring for the semi-one channel and | ||
|  |    the semi-two channel name in the peer field. | ||
|  | 
 | ||
|  |  * BRIDGE_START, BRIDGE_END, BRIDGE_UPDATE, 3WAY_START, 3WAY_END, CONF_ENTER, | ||
|  |    CONF_EXIT, CONF_START, and CONF_END events have all been removed. These | ||
|  |    events have been replaced by BRIDGE_ENTER/BRIDGE_EXIT. The BRIDGE_ENTER | ||
|  |    and BRIDGE_EXIT events are raised when a channel enters/exits any bridge, | ||
|  |    regardless of whether or not that bridge happens to contain multiple | ||
|  |    parties. | ||
|  | 
 | ||
|  | CLI | ||
|  | ------------------- | ||
|  |  * When compiled with '--enable-dev-mode', the astobj2 library will now add | ||
|  |    several CLI commands that allow for inspection of ao2 containers that | ||
|  |    register themselves with astobj2. The CLI commands are 'astobj2 container | ||
|  |    dump', 'astobj2 container stats', and 'astobj2 container check'. | ||
|  | 
 | ||
|  |  * Added specific CLI commands for bridge inspection. This includes 'bridge | ||
|  |    show all', which lists all bridges in the system, and 'bridge show {id}', | ||
|  |    which provides specific information about a bridge. | ||
|  | 
 | ||
|  |  * Added CLI command 'bridge destroy'. This will destroy the specified bridge, | ||
|  |    ejecting the channels currently in the bridge. If the channels cannot | ||
|  |    continue in the dialplan or application that put them in the bridge, they | ||
|  |    will be hung up. | ||
|  | 
 | ||
|  |  * Added command 'bridge kick'. This will eject a single channel from a bridge. | ||
|  | 
 | ||
|  |  * Added commands to inspect and manipulate the registered bridge technologies. | ||
|  |    This include 'bridge technology show', which lists the registered bridge | ||
|  |    technologies, as well as 'bridge technology {suspend|unsuspend} {tech}', | ||
|  |    which controls whether or not a registered bridge technology can be used | ||
|  |    during smart bridge operations. If a technology is suspended, it will not | ||
|  |    be used when a bridge technology is picked for channels; when unsuspended, | ||
|  |    it can be used again. | ||
|  | 
 | ||
|  |  * The command 'config show help {module} {type} {option}' will show | ||
|  |    configuration documentation for modules with XML configuration | ||
|  |    documentation. When {module}, {type}, and {option} are omitted, a listing | ||
|  |    of all modules with registered documentation is displayed. When {module} | ||
|  |    is specified, a listing of all configuration types for that module is | ||
|  |    displayed, along with their synopsis. When {module} and {type} are | ||
|  |    specified, a listing of all configuration options for that type are | ||
|  |    displayed along with their synopsis. When {module}, {type}, and {option} | ||
|  |    are specified, detailed information for that configuration option is | ||
|  |    displayed. | ||
|  | 
 | ||
|  |  * Added 'core show sounds' and 'core show sound' CLI commands. These display | ||
|  |    a listing of all installed media sounds available on the system and | ||
|  |    detailed information about a sound, respectively. | ||
|  | 
 | ||
|  |  * 'xmldoc dump' has been added. This CLI command will dump the XML | ||
|  |    documentation DOM as a string to the specified file. The Asterisk core | ||
|  |    will populate certain XML elements pulled from the source files with | ||
|  |    additional run-time information; this command lets a user produce the | ||
|  |    XML documentation with all information. | ||
|  | 
 | ||
|  | Features | ||
|  | ------------------- | ||
|  |  * Parking has been pulled from core and placed into a separate module called | ||
|  |    res_parking. See Parking changes below for more details. Configuration for | ||
|  |    parking should now be performed in res_parking.conf. Configuration for | ||
|  |    parking in features.conf is now unsupported. | ||
|  | 
 | ||
|  |  * Core attended transfers now have several new options. While performing an | ||
|  |    attended transfer, the transferer now has the following options: | ||
|  |    - *1 - cancel the attended transfer (configurable via atxferabort) | ||
|  |    - *2 - complete the attended transfer, dropping out of the call | ||
|  |           (configurable via atxfercomplete) | ||
|  |    - *3 - complete the attended transfer, but stay in the call. This will turn | ||
|  |           the call into a multi-party bridge (configurable via atxferthreeway) | ||
|  |    - *4 - swap to the other party. Once an attended transfer has begun, this | ||
|  |           options may be used multiple times (configurable via atxferswap) | ||
|  | 
 | ||
|  |  * For DTMF blind and attended transfers, the channel variable TRANSFER_CONTEXT | ||
|  |    must be on the channel initiating the transfer to have any effect. | ||
|  | 
 | ||
|  |  * The BRIDGE_FEATURES channel variable would previously only set features for | ||
|  |    the calling party and would set this feature regardless of whether the | ||
|  |    feature was in caps or in lowercase. Use of a caps feature for a letter | ||
|  |    will now apply the feature to the calling party while use of a lowercase | ||
|  |    letter will apply that feature to the called party. | ||
|  | 
 | ||
|  |  * Add support for automixmon to the BRIDGE_FEATURES channel variable. | ||
|  | 
 | ||
|  |  * The channel variable DYNAMIC_PEERNAME is redundant with BRIDGEPEER and is | ||
|  |    removed.  The more useful DYNAMIC_WHO_ACTIVATED gives the channel name that | ||
|  |    activated the dynamic feature. | ||
|  | 
 | ||
|  |  * The channel variables DYNAMIC_FEATURENAME and DYNAMIC_WHO_ACTIVATED are set | ||
|  |    only on the channel executing the dynamic feature.  Executing a dynamic | ||
|  |    feature on the bridge peer in a multi-party bridge will execute it on all | ||
|  |    peers of the activating channel. | ||
|  | 
 | ||
|  |  * You can now have the settings for a channel updated using the FEATURE() | ||
|  |    and FEATUREMAP() functions inherited to child channels by setting | ||
|  |    FEATURE(inherit)=yes. | ||
|  | 
 | ||
|  |  * automixmon now supports additional channel variables from automon including: | ||
|  |    TOUCH_MIXMONITOR_PREFIX, TOUCH_MIXMONITOR_MESSAGE_START, | ||
|  |    and TOUCH_MIXMONITOR_MESSAGE_STOP | ||
|  | 
 | ||
|  |  * A new general features.conf option 'recordingfailsound' has been added which | ||
|  |    allowssetting a failure sound for a user tries to invoke a recording feature | ||
|  |    such as automon or automixmon and it fails. | ||
|  | 
 | ||
|  |  * It is no longer necessary (or possible) to define the ATXFER_NULL_TECH in | ||
|  |    features.c for atxferdropcall=no to work properly. This option now just | ||
|  |    works. | ||
|  | 
 | ||
|  | Logging | ||
|  | ------------------- | ||
|  |  * Added log rotation strategy 'none'. If set, no log rotation strategy will | ||
|  |    be used. Given that this can cause the Asterisk log files to grow quickly, | ||
|  |    this option should only be used if an external mechanism for log management | ||
|  |    is preferred. | ||
|  | 
 | ||
|  | Realtime | ||
|  | ------------------ | ||
|  |  * Dynamic realtime tables for SIP Users can now include a 'path' field. This | ||
|  |    will store the path information for that peer when it registers. Realtime | ||
|  |    tables can also use the 'supportpath' field to enable Path header support. | ||
|  | 
 | ||
|  |  * LDAP realtime configurations for SIP Users now have the AstAccountPathSupport | ||
|  |    objectIdentifier. This maps to the supportpath option in sip.conf. | ||
|  | 
 | ||
|  | Sorcery | ||
|  | ------------------ | ||
|  |  * Sorcery is a new data abstraction and object persistence API in Asterisk. It | ||
|  |    provides modules a useful abstraction on top of the many storage mechanisms | ||
|  |    in Asterisk, including the Asterisk Database, static configuration files, | ||
|  |    static Realtime, and dynamic Realtime. It also provides a caching service. | ||
|  |    Users can configure a hierarchy of data storage layers for specific modules | ||
|  |    in sorcery.conf. | ||
|  | 
 | ||
|  |  * All future modules which utilize Sorcery for object persistence must have a | ||
|  |    column named "id" within their schema when using the Sorcery realtime module. | ||
|  |    This column must be able to contain a string of up to 128 characters in length. | ||
|  | 
 | ||
|  | Security Events Framework | ||
|  | ------------------ | ||
|  |  * Security Event timestamps now use ISO 8601 formatted date/time instead of | ||
|  |    the "seconds-microseconds" format that it was using previously. | ||
|  | 
 | ||
|  | Stasis Message Bus | ||
|  | ------------------ | ||
|  |  * The Stasis message bus is a publish/subscribe message bus internal to | ||
|  |    Asterisk. Many services in Asterisk are built on the Stasis message bus, | ||
|  |    including AMI, ARI, CDRs, and CEL. Parameters controlling the operation of | ||
|  |    Stasis can be configured in stasis.conf. Note that these parameters operate | ||
|  |    at a very low level in Asterisk, and generally will not require changes. | ||
|  | 
 | ||
|  | Channel Drivers | ||
|  | ------------------ | ||
|  |  * When a channel driver is configured to enable jiterbuffers, they are now | ||
|  |    applied unconditionally when a channel joins a bridge. If a jitterbuffer | ||
|  |    is already set for that channel when it enters, such as by the JITTERBUFFER | ||
|  |    function, then the existing jitterbuffer will be used and the one set by | ||
|  |    the channel driver will not be applied. | ||
|  | 
 | ||
|  | chan_agent | ||
|  | ------------------ | ||
|  |  * chan_agent has been removed and replaced with AgentLogin and AgentRequest | ||
|  |    dialplan applications provided by the app_agent_pool module. Agents are | ||
|  |    connected with callers using the new AgentRequest dialplan application. | ||
|  |    The Agents:<agent-id> device state is available to monitor the status of an | ||
|  |    agent. See agents.conf.sample for valid configuration options. | ||
|  | 
 | ||
|  |  * The updatecdr option has been removed. Altering the names of channels on a | ||
|  |    CDR is not supported - the name of the channel is the name of the channel, | ||
|  |    and pretending otherwise helps no one. The AGENTUPDATECDR channel variable | ||
|  |    has also been removed, for the same reason. | ||
|  | 
 | ||
|  |  * The endcall and enddtmf configuration options are removed.  Use the | ||
|  |    dialplan function CHANNEL(dtmf_features) to set DTMF features on the agent | ||
|  |    channel before calling AgentLogin. | ||
|  | 
 | ||
|  | chan_bridge | ||
|  | ------------------ | ||
|  |  * chan_bridge has been removed. Its functionality has been incorporated | ||
|  |    directly into the ConfBridge application itself. | ||
|  | 
 | ||
|  | chan_dahdi | ||
|  | ------------------ | ||
|  |  * Added the CLI command 'pri destroy span'. This will destroy the D-channel | ||
|  |    of the specified span and its B-channels. Note that this command should | ||
|  |    only be used if you understand the risks it entails. | ||
|  | 
 | ||
|  |  * The CLI command 'dahdi destroy channel' is now 'dahdi destroy channels'. | ||
|  |    A range of channels can be specified to be destroyed. Note that this command | ||
|  |    should only be used if you understand the risks it entails. | ||
|  | 
 | ||
|  |  * Added the CLI command 'dahdi create channels'. A range of channels can be | ||
|  |    specified to be created, or the keyword 'new' can be used to add channels | ||
|  |    not yet created. | ||
|  | 
 | ||
|  |  * The script specified by the chan_dahdi.conf mwimonitornotify option now gets | ||
|  |    the exact configured mailbox name.  For app_voicemail mailboxes this is | ||
|  |    mailbox@context. | ||
|  | 
 | ||
|  |  * Added mwi_vm_boxes that also must be configured for ISDN MWI to be enabled. | ||
|  | 
 | ||
|  | chan_iax2 | ||
|  | ------------------ | ||
|  |  * IPv6 support has been added.  We are now able to bind to and | ||
|  |    communicate using IPv6 addresses. | ||
|  | 
 | ||
|  | chan_local | ||
|  | ------------------ | ||
|  |  * The /b option has been removed. | ||
|  | 
 | ||
|  |  * chan_local moved into the system core and is no longer a loadable module. | ||
|  | 
 | ||
|  | chan_mobile | ||
|  | ------------------ | ||
|  |  * Added general support for busy detection. | ||
|  | 
 | ||
|  |  * Added ECAM command support for Sony Ericsson phones. | ||
|  | 
 | ||
|  | chan_pjsip | ||
|  | ------------------ | ||
|  |  * A new SIP channel driver for Asterisk, chan_pjsip is built on the PJSIP | ||
|  |    SIP stack. A collection of resource modules provides the bulk of the SIP | ||
|  |    functionality. For more information on the new SIP channel driver, see | ||
|  |    https://wiki.asterisk.org/wiki/x/JYGLAQ | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------ | ||
|  |  * Added support for RFC 3327 "Path" headers. This can be enabled in sip.conf | ||
|  |    using the 'supportpath' setting, either on a global basis or on a peer basis. | ||
|  |    This setting enables Asterisk to route outgoing out-of-dialog requests via a | ||
|  |    set of proxies by using a pre-loaded route-set defined by the Path headers in | ||
|  |    the REGISTER request. See Realtime updates for more configuration information. | ||
|  | 
 | ||
|  |  * The SIP_CODEC family of variables may now specify more than one codec. Each | ||
|  |    codec must be separated by a comma. The first codec specified is the | ||
|  |    preferred codec for the offer. This allows a dialplan writer to specify both | ||
|  |    audio and video codecs, e.g., Set(SIP_CODEC=ulaw,h264) | ||
|  | 
 | ||
|  |  * The 'callevents' parameter has been removed. Hold AMI events are now raised | ||
|  |    in the core, and can be filtered out using the 'eventfilter' parameter | ||
|  |    in manager.conf. | ||
|  | 
 | ||
|  |  * Added 'ignore_requested_pref'. When enabled, this will use the preferred | ||
|  |    codecs configured for a peer instead of the requested codec. | ||
|  | 
 | ||
|  |  * The option "register_retry_403" has been added to chan_sip to work around | ||
|  |    servers that are known to erroneously send 403 in response to valid | ||
|  |    REGISTER requests and allows Asterisk to continue attepmting to connect. | ||
|  | 
 | ||
|  | chan_skinny | ||
|  | ------------------ | ||
|  |  * Added the 'immeddialkey' parameter. If set, when the user presses the | ||
|  |    configured key the already entered number will be immediately dialed. This | ||
|  |    is useful when the dialplan allows for variable length pattern matching. | ||
|  |    Valid options are '*' and '#'. | ||
|  | 
 | ||
|  |  * Added the 'callfwdtimeout' parameter. This configures the amount of time (in | ||
|  |    milliseconds) before a call forward is considered to not be answered. | ||
|  | 
 | ||
|  |  * The 'serviceurl' parameter allows Service URLs to be attached to line | ||
|  |    buttons. | ||
|  | 
 | ||
|  | 
 | ||
|  | Functions | ||
|  | ------------------ | ||
|  | 
 | ||
|  | AGENT | ||
|  | ------------------ | ||
|  |  * The password option has been disabled, as the AgentLogin application no | ||
|  |    longer provides authentication. | ||
|  | 
 | ||
|  | AUDIOHOOK_INHERIT | ||
|  | ------------------ | ||
|  |  * Due to changes in the Asterisk core, this function is no longer needed to | ||
|  |    preserve a MixMonitor on a channel during transfer operations and dialplan | ||
|  |    execution. It is effectively obsolete. | ||
|  | 
 | ||
|  | CDR (function) | ||
|  | ------------------ | ||
|  |  * The 'amaflags' and 'accountcode' attributes for the CDR function are | ||
|  |    deprecated. Use the CHANNEL function instead to access these attributes. | ||
|  | 
 | ||
|  |  * The 'l' option has been removed. When reading a CDR attribute, the most | ||
|  |    recent record is always used. When writing a CDR attribute, all non-finalized | ||
|  |    CDRs are updated. | ||
|  | 
 | ||
|  |  * The 'r' option has been removed, for the same reason as the 'l' option. | ||
|  | 
 | ||
|  |  * The 's' option has been removed, as LOCKED semantics no longer exist in the | ||
|  |    CDR engine. | ||
|  | 
 | ||
|  | CDR_PROP | ||
|  | ------------------ | ||
|  |  * A new function CDR_PROP has been added. This function lets you set properties | ||
|  |    on a channel's active CDRs. This function is write-only. Properties accept | ||
|  |    boolean values to set/clear them on the channel's CDRs. Valid properties | ||
|  |    include: | ||
|  |    - 'party_a' - make this channel the preferred Party A in any CDR between two | ||
|  |      channels. If two channels have this property set, the creation time of the | ||
|  |      channel is used to determine who is Party A. Note that dialed channels are | ||
|  |      never Party A in a CDR. | ||
|  |    - 'disable' - disable CDRs on this channel. This is analogous to the NoCDR | ||
|  |      application when set to True, and analogous to the 'e' option in ResetCDR | ||
|  |      when set to False. | ||
|  | 
 | ||
|  | CHANNEL | ||
|  | ------------------ | ||
|  |  * Added the argument 'dtmf_features'. This sets the DTMF features that will be | ||
|  |    enabled on a channel when it enters a bridge. Allowed values are 'T', 'K', | ||
|  |    'H', 'W', and 'X', and are analogous to the parameters passed to the Dial | ||
|  |    application. | ||
|  | 
 | ||
|  |  * Added the argument 'after_bridge_goto'. This can be set to a parseable Goto | ||
|  |    string, i.e., [[context],extension],priority. If set on a channel, if a | ||
|  |    channel leaves a bridge but is not hung up it will resume dialplan execution | ||
|  |    at that location. | ||
|  | 
 | ||
|  | JITTERBUFFER | ||
|  | ------------------ | ||
|  |  * JITTERBUFFER now accepts an argument of 'disabled' which can be used | ||
|  |    to remove jitterbuffers previously set on a channel with JITTERBUFFER. | ||
|  |    The value of this setting is ignored when disabled is used for the argument. | ||
|  | 
 | ||
|  | PJSIP_DIAL_CONTACTS | ||
|  | ------------------ | ||
|  |  * A new function provided by chan_pjsip, this function can be used in | ||
|  |    conjunction with the Dial application to construct a dial string that will | ||
|  |    dial all contacts on an Address of Record associated with a chan_pjsip | ||
|  |    endpoint. | ||
|  | 
 | ||
|  | PJSIP_MEDIA_OFFER | ||
|  | ------------------ | ||
|  |  * Provided by chan_pjsip, this function sets the codecs to be offered on the | ||
|  |    outbound channel prior to dialing. | ||
|  | 
 | ||
|  | REDIRECTING | ||
|  | ------------------ | ||
|  |  * Redirecting reasons can now be set to arbitrary strings. This means | ||
|  |    that the REDIRECTING dialplan function can be used to set the redirecting | ||
|  |    reason to any string. It also allows for custom strings to be read as the | ||
|  |    redirecting reason from SIP Diversion headers. | ||
|  | 
 | ||
|  | SPEECH_ENGINE | ||
|  | ------------------ | ||
|  |  * The SPEECH_ENGINE function now supports read operations. When read from, it | ||
|  |    will return the current value of the requested attribute. | ||
|  | 
 | ||
|  | VMCOUNT: | ||
|  | ------------------ | ||
|  |  * Mailboxes defined by app_voicemail MUST be referenced by the rest of the | ||
|  |    system as mailbox@context.  The rest of the system cannot add @default | ||
|  |    to mailbox identifiers for app_voicemail that do not specify a context | ||
|  |    any longer.  It is a mailbox identifier format that should only be | ||
|  |    interpreted by app_voicemail. | ||
|  | 
 | ||
|  | 
 | ||
|  | Resources | ||
|  | ------------------ | ||
|  | 
 | ||
|  | res_agi (Asterisk Gateway Interface) | ||
|  | ------------------ | ||
|  |  * The manager event AGIExec has been split into AGIExecStart and AGIExecEnd. | ||
|  | 
 | ||
|  |  * The manager event AsyncAGI has been split into AsyncAGIStart, AsyncAGIExec, | ||
|  |    and AsyncAGIEnd. | ||
|  | 
 | ||
|  |  * The CONTROL STREAM FILE command now accepts an offsetms parameter. This | ||
|  |    will start the playback of the audio at the position specified. It will | ||
|  |    also return the final position of the file in 'endpos'. | ||
|  | 
 | ||
|  |  * The CONTROL STREAM FILE command will now populate the CPLAYBACKSTATUS | ||
|  |    channel variable if the user stopped the file playback or if a remote | ||
|  |    entity stopped the playback. If neither stopped the playback, it will | ||
|  |    indicate the overall success/failure of the playback. If stopped early, | ||
|  |    the final offset of the file will be set in the CPLAYBACKOFFSET channel | ||
|  |    variable. | ||
|  | 
 | ||
|  |  * The SAY ALPHA command now accepts an additional parameter to control | ||
|  |    whether it specifies the case of uppercase, lowercase, or all letters to | ||
|  |    provide functionality similar to SayAlphaCase. | ||
|  | 
 | ||
|  | res_ari (Asterisk RESTful Interface) (and others) | ||
|  | ------------------ | ||
|  |  * The Asterisk RESTful Interface (ARI) provides a mechanism to expose and | ||
|  |    control telephony primitives in Asterisk by remote client. This includes | ||
|  |    channels, bridges, endpoints, media, and other fundamental concepts. Users | ||
|  |    of ARI can develop their own communications applications, controlling | ||
|  |    multiple channels using an HTTP RESTful interface and receiving JSON events | ||
|  |    about the objects via a WebSocket connection. ARI can be configured in | ||
|  |    Asterisk via ari.conf. For more information on ARI, see | ||
|  |    https://wiki.asterisk.org/wiki/x/0YCLAQ | ||
|  | 
 | ||
|  | res_parking | ||
|  | ------------------- | ||
|  |  * Parking has been extracted from the Asterisk core as a loadable module, | ||
|  |    res_parking. Configuration for parking is now provided by res_parking.conf. | ||
|  |    Configuration through features.conf is no longer supported. | ||
|  | 
 | ||
|  |  * res_parking uses the configuration framework. If an invalid configuration is | ||
|  |    supplied, res_parking will fail to load or fail to reload. Previously, | ||
|  |    invalid configurations would generally be accepted, with certain errors | ||
|  |    resulting in individually disabled parking lots. | ||
|  | 
 | ||
|  |  * Parked calls are now placed in bridges. While this is largely an | ||
|  |    architectural change, it does have implications on how channels in a parking | ||
|  |    lot are viewed. For example, commands that display channels in bridges will | ||
|  |    now also display the channels in a parking lot. | ||
|  | 
 | ||
|  |  * The order of arguments for the new parking applications have been modified. | ||
|  |    Timeout and return context/exten/priority are now implemented as options, | ||
|  |    while the name of the parking lot is now the first parameter. See the | ||
|  |    application documentation for Park, ParkedCall, and ParkAndAnnounce for more | ||
|  |    in-depth information as well as syntax. | ||
|  | 
 | ||
|  |  * Extensions are by default no longer automatically created in the dialplan to | ||
|  |    park calls or pickup parked calls. Generation of dialplan extensions can be | ||
|  |    enabled using the 'parkext' configuration option. | ||
|  | 
 | ||
|  |  * ADSI functionality for parking is no longer supported. The 'adsipark' | ||
|  |    configuration option has been removed as a result. | ||
|  | 
 | ||
|  |  * The PARKINGSLOT channel variable has been deprecated in favor of | ||
|  |    PARKING_SPACE to match the naming scheme of the new system. | ||
|  | 
 | ||
|  |  * PARKING_SPACE and PARKEDLOT channel variables will now be set for a parked | ||
|  |    channel even when the configuration option 'comebactoorigin' is enabled. | ||
|  | 
 | ||
|  |  * A new CLI command 'parking show' has been added. This allows a user to | ||
|  |    inspect the parking lots that are currently in use. | ||
|  |    'parking show <parkinglot>' will also show the parked calls in a specific | ||
|  |    parking lot. | ||
|  | 
 | ||
|  |  * The CLI command 'parkedcalls' is now deprecated in favor of | ||
|  |    'parking show <parkinglot>'. | ||
|  | 
 | ||
|  |  * The AMI command 'ParkedCalls' will now accept a 'ParkingLot' argument which | ||
|  |    can be used to get a list of parked calls for a specific parking lot. | ||
|  | 
 | ||
|  |  * The AMI command 'Park' field 'Channel2' has been deprecated and replaced | ||
|  |    with 'TimeoutChannel'. If both 'Channel2' and 'TimeoutChannel' are | ||
|  |    specified, 'TimeoutChannel' will be used. The field 'TimeoutChannel' is no | ||
|  |    longer a required argument. | ||
|  | 
 | ||
|  |  * The ParkAndAnnounce application is now provided through res_parking instead | ||
|  |    of through the separate app_parkandannounce module. | ||
|  | 
 | ||
|  |  * ParkAndAnnounce will no longer go to the next position in dialplan on timeout | ||
|  |    by default. Instead, it will follow the timeout rules of the parking lot. The | ||
|  |    old behavior can be reproduced by using the 'c' option. | ||
|  | 
 | ||
|  |  * Dynamic parking lots will now fail to be created under the following | ||
|  |    conditions: | ||
|  |    - if the parking lot specified by PARKINGDYNAMIC does not exist | ||
|  |    - if they require exclusive park and parkedcall extensions which overlap | ||
|  |      with existing parking lots. | ||
|  | 
 | ||
|  |  * Dynamic parking lots will be cleared on reload for dynamic parking lots that | ||
|  |    currently contain no calls. Dynamic parking lots containing parked calls | ||
|  |    will persist through the reloads without alteration. | ||
|  | 
 | ||
|  |  * If 'parkext_exclusive' is set for a parking lot and that extension is | ||
|  |    already in use when that parking lot tries to register it, this is now | ||
|  |    considered a parking system configuration error. Configurations which do | ||
|  |    this will be rejected. | ||
|  | 
 | ||
|  |  * Added channel variable PARKER_FLAT. This contains the name of the extension | ||
|  |    that would be used if 'comebacktoorigin' is enabled. This can be useful when | ||
|  |    comebacktoorigin is disabled, but the dialplan or an external control | ||
|  |    mechanism wants to use the extension in the park-dial context that was | ||
|  |    generated to re-dial the parker on timeout. | ||
|  | 
 | ||
|  | res_pjsip (and many others) | ||
|  | ------------------ | ||
|  |  * A large number of resource modules make up the SIP stack based on pjsip. | ||
|  |    The chan_pjsip channel driver users these resource modules to provide | ||
|  |    various SIP functionality in Asterisk. The majority of configuration for | ||
|  |    these modules is performed in pjsip.conf. Other modules may use their | ||
|  |    own configuration files. | ||
|  | 
 | ||
|  |  * Added 'set_var' option for an endpoint. For each variable specified that | ||
|  |    variable gets set upon creation of a channel involving the endpoint. | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------ | ||
|  |  * ICE/STUN/TURN support in res_rtp_asterisk has been made optional.  To enable | ||
|  |    them, an Asterisk-specific version of PJSIP needs to be installed. | ||
|  |    Tarballs are available from https://github.com/asterisk/pjproject/tags/. | ||
|  | 
 | ||
|  | res_statsd/res_chan_stats | ||
|  | ------------------ | ||
|  |  * A new resource module, res_statsd, has been added, which acts as a statsd | ||
|  |    client. This module allows Asterisk to publish statistics to a statsd | ||
|  |    server. In conjunction with res_chan_stats, it will publish statistics about | ||
|  |    channels to the statsd server. It can be configured via res_statsd.conf. | ||
|  | 
 | ||
|  | res_xmpp | ||
|  | ------------------ | ||
|  |  * Device state for XMPP buddies is now available using the following format: | ||
|  |    XMPP/<client name>/<buddy address> | ||
|  |    If any resource is available the device state is considered to be not in use. | ||
|  |    If no resources exist or all are unavailable the device state is considered | ||
|  |    to be unavailable. | ||
|  | 
 | ||
|  | 
 | ||
|  | Scripts | ||
|  | ------------------ | ||
|  | 
 | ||
|  | Realtime/Database Scripts | ||
|  | ------------------ | ||
|  |  * Asterisk previously included example db schemas in the contrib/realtime/ | ||
|  |    directory of the source tree.  This has been replaced by a set of database | ||
|  |    migrations using the Alembic framework.  This allows you to use alembic to | ||
|  |    initialize the database for you.  It will also serve as a database migration | ||
|  |    tool when upgrading Asterisk in the future. | ||
|  | 
 | ||
|  |    See contrib/ast-db-manage/README.md for more details. | ||
|  | 
 | ||
|  | sip_to_res_pjsip.py | ||
|  | ------------------- | ||
|  |  * A new script has been added in the contrib/scripts/sip_to_res_pjsip folder. | ||
|  |    This python script will convert an existing sip.conf file to a | ||
|  |    pjsip.conf file, for use with the chan_pjsip channel driver. This script | ||
|  |    is meant to be an aid in converting an existing chan_sip configuration to | ||
|  |    a chan_pjsip configuration, but it is expected that configuration beyond | ||
|  |    what the script provides will be needed. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 10 to Asterisk 11 -------------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Build System | ||
|  | ------------------- | ||
|  |  * The Asterisk build system will now build and install a shared library | ||
|  |    (libasteriskssl.so) used to wrap various initialization and shutdown functions | ||
|  |    from the libssl and libcrypto libraries provided by OpenSSL. This is done so | ||
|  |    that Asterisk can ensure that these functions do *not* get called by any | ||
|  |    modules that are loaded into Asterisk, since they should only be called once | ||
|  |    in any single process. If desired, this feature can be disabled by supplying | ||
|  |    the "--disable-asteriskssl" option to the configure script. | ||
|  | 
 | ||
|  |  * A new make target, 'full', has been added to the Makefile.  This performs | ||
|  |    the same compilation actions as make all, but will also scan the entirety of | ||
|  |    each source file for documentation.  This option is needed to generate AMI | ||
|  |    event documentation.  Note that your system must have Python in order for | ||
|  |    this make target to succeed. | ||
|  | 
 | ||
|  |  * The optimization portion of the build system has been reworked to avoid | ||
|  |    broken builds on certain architectures.  All architecture-specific | ||
|  |    optimization has been removed in favor of using -march=native to allow gcc | ||
|  |    to detect the environment in which it is running when possible.  This can | ||
|  |    be toggled as BUILD_NATIVE under "Compiler Flags" in menuselect. | ||
|  | 
 | ||
|  |  * BUILD_CFLAGS and BUILD_LDFLAGS can now be passed to menuselect, e.g., | ||
|  |    make BUILD_CFLAGS="whatever" BUILD_LDFLAGS="whatever" | ||
|  | 
 | ||
|  |  * Remove "asterisk/version.h" in favor of "asterisk/ast_version.h".  If you | ||
|  |    previously parsed the header file to obtain the version of Asterisk, you | ||
|  |    will now have to go through Asterisk to get the version information. | ||
|  | 
 | ||
|  | 
 | ||
|  | Applications | ||
|  | ------------------- | ||
|  | 
 | ||
|  | Bridge | ||
|  | ------------------- | ||
|  |  * Added 'F()' option. Similar to the dial option, this can be supplied with | ||
|  |    arguments indicating where the callee should go after the caller is hung up, | ||
|  |    or without options specified, the priority after the Queue will be used. | ||
|  | 
 | ||
|  | 
 | ||
|  | ConfBridge | ||
|  | ------------------- | ||
|  |  * Added menu action admin_toggle_mute_participants.  This will mute / unmute | ||
|  |    all non-admin participants on a conference.  The confbridge configuration | ||
|  |    file also allows for the default sounds played to all conference users when | ||
|  |    this occurs to be overriden using sound_participants_unmuted and | ||
|  |    sound_participants_muted. | ||
|  | 
 | ||
|  |  * Added menu action participant_count.  This will playback the number of | ||
|  |    current participants in a conference. | ||
|  | 
 | ||
|  |  * Added announcement configuration option to user profile. If set the sound | ||
|  |    file will be played to the user, and only the user, upon joining the | ||
|  |    conference bridge. | ||
|  | 
 | ||
|  |  * Added record_file_append option that defaults to "yes", but if set to no | ||
|  |    will create a new file between each start/stop recording. | ||
|  | 
 | ||
|  | 
 | ||
|  | Dial | ||
|  | ------------------- | ||
|  |  * Added 'b' and 'B' options to Dial that execute a Gosub on callee and caller | ||
|  |    channels respectively before the callee channels are called. | ||
|  | 
 | ||
|  | 
 | ||
|  | ExternalIVR | ||
|  | ------------------- | ||
|  |  * Added support for IPv6. | ||
|  | 
 | ||
|  |  * Add interrupt ('I') command to ExternalIVR.  Sending this command from an | ||
|  |    external process will cause the current playlist to be cleared, including | ||
|  |    stopping any audio file that is currently playing.  This is useful when you | ||
|  |    want to interrupt audio playback only when specific DTMF is entered by the | ||
|  |    caller. | ||
|  | 
 | ||
|  | 
 | ||
|  | FollowMe | ||
|  | ------------------- | ||
|  |  * A new option, 'I' has been added to app_followme. By setting this option, | ||
|  |    Asterisk will not update the caller with connected line changes when they | ||
|  |    occur.  This is similar to app_dial and app_queue. | ||
|  | 
 | ||
|  |  * The 'N' option is now ignored if the call is already answered. | ||
|  | 
 | ||
|  |  * Added 'b' and 'B' options to FollowMe that execute a Gosub on callee | ||
|  |    and caller channels respectively before the callee channels are called. | ||
|  | 
 | ||
|  |  * The winning FollowMe outgoing call is now put on hold if the caller put it on | ||
|  |    hold. | ||
|  | 
 | ||
|  | 
 | ||
|  | MixMonitor | ||
|  | ------------------ | ||
|  |  * MixMonitor hooks now have IDs associated with them which can be used to | ||
|  |    assign a target to StopMixMonitor. Use of MixMonitor's i(variable) option | ||
|  |    will allow storage of the MixMonitor ID in a channel variable. StopMixmonitor | ||
|  |    now accepts that ID as an argument. | ||
|  | 
 | ||
|  |  * Added 'm' option, which stores a copy of the recording as a voicemail in the | ||
|  |    indicated mailboxes. | ||
|  | 
 | ||
|  | 
 | ||
|  | MySQL | ||
|  | ------------------- | ||
|  |  * The connect action in app_mysql now allows you to specify a port number to | ||
|  |    connect to.  This is useful if you run a MySQL server on a non-standard | ||
|  |    port number. | ||
|  | 
 | ||
|  | 
 | ||
|  | OSP Applications | ||
|  | ------------------- | ||
|  |  * Increased the default number of allowed destinations from 5 to 12. | ||
|  | 
 | ||
|  | 
 | ||
|  | Page | ||
|  | ------------------- | ||
|  |  * The app_page application now no longer depends on DAHDI or app_meetme.  It | ||
|  |    has been re-architected to use app_confbridge internally. | ||
|  | 
 | ||
|  | 
 | ||
|  | Queue | ||
|  | ------------------- | ||
|  |  * Added queue options autopausebusy and autopauseunavail for automatically | ||
|  |    pausing a queue member when their device reports busy or congestion. | ||
|  | 
 | ||
|  |  * The 'ignorebusy' option for queue members has been deprecated in favor of | ||
|  |    the option 'ringinuse. Also a 'queue set ringinuse' CLI command has been | ||
|  |    added as well as an AMI action 'QueueMemberRingInUse' to set this variable on a | ||
|  |    per interface basis. Individual ringinuse values can now be set in | ||
|  |    queues.conf via an argument to member definitions. Lastly, the queue | ||
|  |    'ringinuse' setting now only determines defaults for the per member | ||
|  |    'ringinuse' setting and does not override per member settings like it does | ||
|  |    in earlier versions. | ||
|  | 
 | ||
|  |  * Added 'F()' option. Similar to the dial option, this can be supplied with | ||
|  |    arguments indicating where the callee should go after the caller is hung up, | ||
|  |    or without options specified, the priority after the Queue will be used. | ||
|  | 
 | ||
|  |  * Added new option log_member_name_as_agent, which will cause the membername to | ||
|  |    be logged in the agent field for ADDMEMBER and REMOVEMEMBER queue events if a | ||
|  |    state_interface has been set. | ||
|  | 
 | ||
|  |  * Add queue monitoring hints.  exten => 8501,hint,Queue:markq. | ||
|  | 
 | ||
|  |  * App_queue will now play periodic announcements for the caller that | ||
|  |    holds the first position in the queue while waiting for answer. | ||
|  | 
 | ||
|  | SayUnixTime | ||
|  | ------------------ | ||
|  |  * Added 'j' option to SayUnixTime. SayUnixTime no longer auto jumps to extension | ||
|  |    when receiving DTMF.  Use the 'j' option to enable extension jumping. Also | ||
|  |    changed arguments to SayUnixTime so that every option is truly optional even | ||
|  |    when using multiple options (so that j option could be used without having to | ||
|  |    manually specify timezone and format) There are other benefits, e.g., format | ||
|  |    can now be used without specifying time zone as well. | ||
|  | 
 | ||
|  | 
 | ||
|  | Voicemail | ||
|  | ------------------ | ||
|  |  * Addition of the VM_INFO function - see Function changes. | ||
|  | 
 | ||
|  |  * The imapserver, imapport, and imapflags configuration options can now be | ||
|  |    overriden on a user by user basis. | ||
|  | 
 | ||
|  |  * When voicemail plays a message's envelope with saycid set to yes, when | ||
|  |    reaching the caller id field it will play a recording of a file with the same | ||
|  |    base name as the sender's callerid if there is a similarly named file in | ||
|  |    <astspooldir>/recordings/callerids/ | ||
|  | 
 | ||
|  |  * Voicemails now contains a unique message identifier "msg_id", which is stored | ||
|  |    in the message envelope with the sound files.  IMAP backends will now store | ||
|  |    the message identifiers with a header of "X-Asterisk-VM-Message-ID".  ODBC | ||
|  |    backends will store the message identifier in a "msg_id" column.  See | ||
|  |    UPGRADE.txt for more information. | ||
|  | 
 | ||
|  |  * Added VoiceMailPlayMsg application.  This application will play a single | ||
|  |    voicemail message from a mailbox.  The result of the application, SUCCESS or | ||
|  |    FAILED, is stored in the channel variable VOICEMAIL_PLAYBACKSTATUS. | ||
|  | 
 | ||
|  | 
 | ||
|  | Functions | ||
|  | ------------------ | ||
|  |  * Hangup handlers can be attached to channels using the CHANNEL() function. | ||
|  |    Hangup handlers will run when the channel is hung up similar to the h | ||
|  |    extension. The hangup_handler_push option will push a GoSub compatible | ||
|  |    location in the dialplan onto the channel's hangup handler stack.  The | ||
|  |    hangup_handler_pop option will remove the last added location, and optionally | ||
|  |    replace it with a new GoSub compatible location.  The hangup_handler_wipe | ||
|  |    option will remove all locations on the stack, and optionally add a new | ||
|  |    location. | ||
|  | 
 | ||
|  |  * The expression parser now recognizes the ABS() absolute value function, | ||
|  |    which will convert negative floating point values to positive values. | ||
|  | 
 | ||
|  |  * FAXOPT(faxdetect) will enable a generic fax detect framehook for dialplan | ||
|  |    control of faxdetect. | ||
|  | 
 | ||
|  |  * Addition of the VM_INFO function that can be used to retrieve voicemail | ||
|  |    user information, such as the email address and full name. | ||
|  |    The MAILBOX_EXISTS dialplan function has been deprecated in favour of | ||
|  |    VM_INFO. | ||
|  | 
 | ||
|  |  * The REDIRECTING function now supports the redirecting original party id | ||
|  |    and reason. | ||
|  | 
 | ||
|  |  * Two new functions have been added: FEATURE() and FEATUREMAP().  FEATURE() | ||
|  |    lets you set some of the configuration options from the [general] section | ||
|  |    of features.conf on a per-channel basis.  FEATUREMAP() lets you customize | ||
|  |    the key sequence used to activate built-in features, such as blindxfer, | ||
|  |    and automon.  See the built-in documentation for details. | ||
|  | 
 | ||
|  |  * MESSAGE(from) for incoming SIP messages now returns "display-name" <uri> | ||
|  |    instead of simply the uri.  This is the format that MessageSend() can use | ||
|  |    in the from parameter for outgoing SIP messages. | ||
|  | 
 | ||
|  |  * Added the PRESENCE_STATE function.  This allows retrieving presence state | ||
|  |    information from any presence state provider.  It also allows setting | ||
|  |    presence state information from a CustomPresence presence state provider. | ||
|  |    See AMI/CLI changes for related commands. | ||
|  | 
 | ||
|  |  * Added the AMI_CLIENT function to make manager account attributes available | ||
|  |    to the dialplan. It currently supports returning the current number of | ||
|  |    active sessions for a given account. | ||
|  | 
 | ||
|  |  * Added support for private party ID information to CALLERID, CONNECTEDLINE, | ||
|  |    and the REDIRECTING functions. | ||
|  | 
 | ||
|  | 
 | ||
|  | Channel Drivers | ||
|  | ------------------ | ||
|  | 
 | ||
|  | chan_local | ||
|  | ------------------ | ||
|  |  * Added a manager event "LocalBridge" for local channel call bridges between | ||
|  |    the two pseudo-channels created. | ||
|  | 
 | ||
|  | 
 | ||
|  | chan_dahdi | ||
|  | ------------------ | ||
|  |  * Added dialtone_detect option for analog ports to disconnect incoming | ||
|  |    calls when dialtone is detected. | ||
|  | 
 | ||
|  |  * Added option colp_send to send ISDN connected line information.  Allowed | ||
|  |    settings are block, to not send any connected line information; connect, to | ||
|  |    send connected line information on initial connect; and update, to send | ||
|  |    information on any update during a call.  Default is update. | ||
|  | 
 | ||
|  |  * Add options namedcallgroup and namedpickupgroup to support installations | ||
|  |    where a higher number of groups (>64) is required. | ||
|  | 
 | ||
|  |  * Added support to use private party ID information with PRI calls. | ||
|  | 
 | ||
|  | 
 | ||
|  | chan_motif | ||
|  | ------------------ | ||
|  |  * A new channel driver named chan_motif has been added which provides support for | ||
|  |    Google Talk and Jingle in a single channel driver. This new channel driver includes | ||
|  |    support for both audio and video, RFC2833 DTMF, all codecs supported by Asterisk, | ||
|  |    hold, unhold, and ringing notification. It is also compliant with the current Jingle | ||
|  |    specification, current Google Jingle specification, and the original Google Talk | ||
|  |    protocol. | ||
|  | 
 | ||
|  | 
 | ||
|  | chan_ooh323 | ||
|  | ------------------ | ||
|  |  * Added NAT support for RTP.  Setting in config is 'nat', which can be set | ||
|  |    globally and overriden on a peer by peer basis. | ||
|  | 
 | ||
|  |  * Direct media functionality has been added. Options in config are: | ||
|  |    directmedia (directrtp) and directrtpsetup (earlydirect) | ||
|  | 
 | ||
|  |  * ChannelUpdate events now contain a CallRef header. | ||
|  | 
 | ||
|  | 
 | ||
|  | chan_sip | ||
|  | ------------------ | ||
|  |  * Asterisk will no longer substitute CID number for CID name in the display | ||
|  |    name field if CID number exists without a CID name. This change improves | ||
|  |    compatibility with certain device features such as Avaya IP500's directory | ||
|  |    lookup service. | ||
|  | 
 | ||
|  |  * A new setting for autocreatepeer (autocreatepeer=persistent) allows peers | ||
|  |    created using that setting to not be removed during SIP reload. | ||
|  | 
 | ||
|  |  * Added settings recordonfeature and recordofffeature.  When receiving an INFO | ||
|  |    request with a "Record:" header, this will turn the requested feature on/off. | ||
|  |    Allowed values are 'automon', 'automixmon', and blank to disable.  Note that | ||
|  |    dynamic features must be enabled and configured properly on the requesting | ||
|  |    channel for this to function properly. | ||
|  | 
 | ||
|  |  * Add support to realtime for the 'callbackextension' option. | ||
|  | 
 | ||
|  |  * When multiple peers exist with the same address, but differing | ||
|  |    callbackextension options, incoming requests that are matched by address | ||
|  |    will be matched to the peer with the matching callbackextension if it is | ||
|  |    available. | ||
|  | 
 | ||
|  |  * Two new NAT options, auto_force_rport and auto_comedia, have been added | ||
|  |    which set the force_rport and comedia options automatically if Asterisk | ||
|  |    detects that an incoming SIP request crossed a NAT after being sent by | ||
|  |    the remote endpoint. | ||
|  | 
 | ||
|  |  * The default global nat setting in sip.conf has been changed from force_rport | ||
|  |    to auto_force_rport. | ||
|  | 
 | ||
|  |  * NAT settings are now a combinable list of options. The equivalent of the | ||
|  |    deprecated nat=yes is nat=force_rport,comedia. nat=no behaves as before. | ||
|  | 
 | ||
|  |  * Adds an option send_diversion which can be disabled to prevent | ||
|  |    diversion headers from automatically being added to INVITE requests. | ||
|  | 
 | ||
|  |  * Add support for lightweight NAT keepalive. If enabled a blank packet will | ||
|  |    be sent to the remote host at a given interval to keep the NAT mapping open. | ||
|  |    This can be enabled using the keepalive configuration option. | ||
|  | 
 | ||
|  |  * Add option 'tonezone' to specify country code for indications.  This option | ||
|  |    can be set both globally and overridden for specific peers. | ||
|  | 
 | ||
|  |  * The SIP Security Events Framework now supports IPv6. | ||
|  | 
 | ||
|  |  * Add a new setting for directmedia, 'outgoing', to alleviate INVITE glares | ||
|  |    between multiple user agents. When set, for directmedia reinvites, | ||
|  |    Asterisk will not send an immediate reinvite on an incoming call leg. This | ||
|  |    option is useful when peered with another SIP user agent that is known to | ||
|  |    send immediate direct media reinvites upon call establishment. | ||
|  | 
 | ||
|  |  * Add support for WebSocket transport. This can be configured using 'ws' or 'wss' | ||
|  |    as the transport. | ||
|  | 
 | ||
|  |  * Add options subminexpiry and submaxexpiry to set limits of subscription | ||
|  |    timer independently from registration timer settings. The setting of the | ||
|  |    registration timer limits still is done by options minexpiry, maxexpiry | ||
|  |    and defaultexpiry. For backwards compatibility the setting of minexpiry | ||
|  |    and maxexpiry also is used to configure the subscription timer limits if | ||
|  |    subminexpiry and submaxexpiry are not set in sip.conf. | ||
|  | 
 | ||
|  |  * Set registration timer limits to default values when reloading sip | ||
|  |    configuration and values are not set by configuration. | ||
|  | 
 | ||
|  |  * Add options namedcallgroup and namedpickupgroup to support installations | ||
|  |    where a higher number of groups (>64) is required. | ||
|  | 
 | ||
|  |  * When a MESSAGE request is received, the address the request was received from | ||
|  |    is now saved in the SIP_RECVADDR variable. | ||
|  | 
 | ||
|  |  * Add ANI2/OLI parsing for SIP.  The "From" header in INVITE requests is now | ||
|  |    parsed for the presence of "isup-oli", "ss7-oli", or "oli" tags.  If present, | ||
|  |    the ANI2/OLI information is set on the channel, which can be retrieved using | ||
|  |    the CALLERID function. | ||
|  | 
 | ||
|  |  * Peers can now be configured to support negotiation of ICE candidates using | ||
|  |    the setting icesupport.  See res_rtp_asterisk changes for more information. | ||
|  | 
 | ||
|  |  * Added support for format attribute negotiation.  See the Codecs changes for | ||
|  |    more information. | ||
|  | 
 | ||
|  |  * Extra headers specified with SIPAddHeader are sent with the REFER message | ||
|  |    when using Transfer application. See refer_addheaders in sip.conf.sample. | ||
|  | 
 | ||
|  |  * Added support to use private party ID information with calls. | ||
|  | 
 | ||
|  |  * Adds an option discard_remote_hold_retrieval that when set stops telling | ||
|  |    the peer to start music on hold. | ||
|  | 
 | ||
|  | 
 | ||
|  | chan_skinny | ||
|  | ------------------ | ||
|  |  * Added skinny version 17 protocol support. | ||
|  | 
 | ||
|  | 
 | ||
|  | chan_unistim | ||
|  | -------------------- | ||
|  |  * Added option 'dtmf_duration' allowing playback time of DTMF tones to be set | ||
|  | 
 | ||
|  |  * Modified option 'date_format' to allow options to display date in 31Jan and Jan31 | ||
|  |    formats as options 0 and 1. The previous options 0 and 1 now map to options 2 and 3 | ||
|  |    as per the UNISTIM protocol. | ||
|  | 
 | ||
|  |  * Fixed issues with dialtone not matching indications.conf and mute stopping rx | ||
|  |    as well as tx. Also fixed issue with call "Timer" displaying as French "Dur\E9e" | ||
|  | 
 | ||
|  |  * Added ability to use multiple lines for a single phone.  This allows multiple | ||
|  |    calls to occur on a single phone, using callwaiting and switching between calls. | ||
|  | 
 | ||
|  |  * Added option 'sharpdial' allowing end dialing by pressing # key | ||
|  | 
 | ||
|  |  * Added option 'interdigit_timer' to control phone dial timeout | ||
|  | 
 | ||
|  |  * Added options 'cwstyle', 'cwvolume' controlling callwaiting appearance | ||
|  | 
 | ||
|  |  * Added global 'debug' option, that enables debug in channel driver | ||
|  | 
 | ||
|  |  * Added ability to translate on-screen menu in multiple languages. Tested on | ||
|  |    Russian languages.  Supported encodings: ISO 8859-1, ISO 8859-2, ISO 8859-4, | ||
|  |    ISO 8859-5, ISO 2022-JP. Language controlled by 'language' and on-screen | ||
|  |    menu of phone | ||
|  | 
 | ||
|  |  * In addition to English added French and Russian languages for on-screen menus | ||
|  | 
 | ||
|  |  * Reworked dialing number input: added dialing by timeout, immediate dial on | ||
|  |    on dialplan compare, phone number length now not limited by screen size | ||
|  | 
 | ||
|  |  * Added ability to pickup a call using features.conf defined value and | ||
|  |    on-screen key | ||
|  | 
 | ||
|  | 
 | ||
|  | chan_mISDN: | ||
|  | ------------------ | ||
|  |  * Add options namedcallgroup and namedpickupgroup to support installations | ||
|  |    where a higher number of groups (>64) is required. | ||
|  | 
 | ||
|  |  * Added support to use private party ID information with calls. | ||
|  | 
 | ||
|  | 
 | ||
|  | Core | ||
|  | ------------------ | ||
|  |  * The minimum DTMF duration can now be configured in asterisk.conf | ||
|  |    as "mindtmfduration". The default value is (as before) set to 80 ms. | ||
|  |    (previously it was only available in source code) | ||
|  | 
 | ||
|  |  * Named ACLs can now be specified in acl.conf and used in configurations that | ||
|  |    use ACLs. As a general rule, if some derivative of 'permit' or 'deny' is | ||
|  |    used to specify an ACL, a similar form of 'acl' will add a named ACL to the | ||
|  |    working ACL. In addition, some CLI commands have been added to provide | ||
|  |    show information and allow for module reloading - see CLI Changes. | ||
|  | 
 | ||
|  |  * Rules in ACLs (specified using 'permit' and 'deny') can now contain multiple | ||
|  |    items (separated by commas), and items in the rule can be negated by prefixing | ||
|  |    them with '!'. This simplifies Asterisk Realtime configurations, since it is no | ||
|  |    longer necessray to control the order that the 'permit' and 'deny' columns are | ||
|  |    returned from queries. | ||
|  | 
 | ||
|  |  * DUNDi now allows the built in variables ${NUMBER}, ${IPADDR} and ${SECRET} to | ||
|  |    be used within the dynamic weight attribute when specifying a mapping. | ||
|  | 
 | ||
|  |  * CEL backends can now be configured to show "USER_DEFINED" in the EventName | ||
|  |    header, instead of putting the user defined event name there.  When enabled | ||
|  |    the UserDefType header is added for user defined events.  This feature is | ||
|  |    enabled with the setting show_user_defined. | ||
|  | 
 | ||
|  |  * Macro has been deprecated in favor of GoSub.  For redirecting and connected | ||
|  |    line purposes use the following variables instead of their macro equivalents: | ||
|  |    REDIRECTING_SEND_SUB, REDIRECTING_SEND_SUB_ARGS, CONNECTED_LINE_SEND_SUB, | ||
|  |    CONNECTED_LINE_SEND_SUB_ARGS.  For CCSS, use cc_callback_sub instead of | ||
|  |    cc_callback_macro in channel configurations. | ||
|  | 
 | ||
|  |  * Asterisk can now use a system-provided NetBSD editline library (libedit) if it | ||
|  |    is available. | ||
|  | 
 | ||
|  |  * Call files now support the "early_media" option to connect with an outgoing | ||
|  |    extension when early media is received. | ||
|  | 
 | ||
|  |  * Added support to use private party ID information with calls. | ||
|  | 
 | ||
|  | 
 | ||
|  | AGI | ||
|  | ------------------ | ||
|  |  * A new channel variable, AGIEXITONHANGUP, has been added which allows | ||
|  |    Asterisk to behave like it did in Asterisk 1.4 and earlier where the | ||
|  |    AGI application would exit immediately after a channel hangup is detected. | ||
|  | 
 | ||
|  |  * IPv6 addresses are now supported when using FastAGI (agi://).  Hostnames | ||
|  |    are resolved and each address is attempted in turn until one succeeds or | ||
|  |    all fail. | ||
|  | 
 | ||
|  | 
 | ||
|  | AMI (Asterisk Manager Interface) | ||
|  | ------------------ | ||
|  |  * The originate action now has an option "EarlyMedia" that enables the | ||
|  |    call to bridge when we get early media in the call. Previously, | ||
|  |    early media was disregarded always when originating calls using AMI. | ||
|  | 
 | ||
|  |  * Added setvar= option to manager accounts (much like sip.conf) | ||
|  | 
 | ||
|  |  * Originate now generates an error response if the extension given is not found | ||
|  |    in the dialplan | ||
|  | 
 | ||
|  |  * MixMonitor will now show IDs associated with the mixmonitor upon creating | ||
|  |    them if the i(variable) option is used. StopMixMonitor will accept | ||
|  |    MixMonitorID as an option to close specific MixMonitors. | ||
|  | 
 | ||
|  |  * The SIPshowpeer manager action response field "SIP-Forcerport" has been | ||
|  |    updated to include information about peers configured with | ||
|  |    nat=auto_force_rport by returning "A" if auto_force_rport is set and nat is | ||
|  |    detected, and "a" if it is set and nat is not detected. "Y" and "N" are still | ||
|  |    returned if auto_force_rport is not enabled. | ||
|  | 
 | ||
|  |  * Added SIPpeerstatus manager command which will generate PeerStatus events | ||
|  |    similar to the existing PeerStatus events found in chan_sip on demand. | ||
|  | 
 | ||
|  |  * Hangup now can take a regular expression as the Channel option.  If you want | ||
|  |    to hangup multiple channels, use /regex/ as the Channel option.  Existing | ||
|  |    behavior to hanging up a single channel is unchanged, but if you pass a regex, | ||
|  |    the manager will send you a list of channels back that were hung up. | ||
|  | 
 | ||
|  |  * Support for IPv6 addresses has been added. | ||
|  | 
 | ||
|  |  * AMI Events can now be documented in the Asterisk source. Note that AMI event | ||
|  |    documentation is only generated when Asterisk is compiled using 'make full'. | ||
|  |    See the CLI section for commands to display AMI event information. | ||
|  | 
 | ||
|  |  * The AMI Hangup event now includes the AccountCode header so you can easily | ||
|  |    correlate with AMI Newchannel events. | ||
|  | 
 | ||
|  |  * The QueueMemberStatus, QueueMemberAdded, and QueueMember events now include | ||
|  |    the StateInterface of the queue member. | ||
|  | 
 | ||
|  |  * Added AMI event SessionTimeout in the Call category that is issued when a | ||
|  |    call is terminated due to either RTP stream inactivity or SIP session timer | ||
|  |    expiration. | ||
|  | 
 | ||
|  |  * CEL events can now contain a user defined header UserDefType.  See core | ||
|  |    changes for more information. | ||
|  | 
 | ||
|  |  * OOH323 ChannelUpdate events now contain a CallRef header. | ||
|  | 
 | ||
|  |  * Added PresenceState command.  This command will report the presence state for | ||
|  |    the given presence provider. | ||
|  | 
 | ||
|  |  * Added Parkinglots command.  This will list all parking lots as a series of | ||
|  |    AMI Parkinglot events. | ||
|  | 
 | ||
|  |  * Added MessageSend command.  This behaves in the same manner as the | ||
|  |    MessageSend application, and is a technolgoy agnostic mechanism to send out | ||
|  |    of call text messages. | ||
|  | 
 | ||
|  |  * Added "message" class authorization.  This grants an account permission to | ||
|  |    send out of call messages.  Write-only. | ||
|  | 
 | ||
|  | 
 | ||
|  | CLI | ||
|  | ------------------- | ||
|  |  * The "dialplan add include" command has been modified to create context a context | ||
|  |    if one does not already exist. For instance, "dialplan add include foo into bar" | ||
|  |    will create context "bar" if it does not already exist. | ||
|  | 
 | ||
|  |  * A  "dialplan remove context" command has been added to remove a context from | ||
|  |    the dialplan | ||
|  | 
 | ||
|  |  * The "mixmonitor list <channel>" command will now show MixMonitor ID, and the | ||
|  |    filenames of all running mixmonitors on a channel. | ||
|  | 
 | ||
|  |  * The debug level of "pri set debug" is now a bitmask ranging from 0 to 15 if | ||
|  |    numeric instead of 0, 1, or 2. | ||
|  | 
 | ||
|  |  * "stun show status" will show a table describing how the STUN client is | ||
|  |    behaving. | ||
|  | 
 | ||
|  |  * "acl show [named acl]" will show information regarding a Named ACL.  The | ||
|  |    acl module can be reloaded with "reload acl". | ||
|  | 
 | ||
|  |  * Added CLI command to display AMI event information - "manager show events", | ||
|  |    which shows a list of all known and documented AMI events, and "manager show | ||
|  |    event [event name]", which shows detail information about a specific AMI | ||
|  |    event. | ||
|  | 
 | ||
|  |  * The result of the CLI command "queue show" now includes the state interface | ||
|  |    information of the queue member. | ||
|  | 
 | ||
|  |  * The command "core set verbose" will now set a separate level of logging for | ||
|  |    each remote console without affecting any other console. | ||
|  | 
 | ||
|  |  * Added command "cdr show pgsql status" to check connection status | ||
|  | 
 | ||
|  |  * "sip show channel" will now display the complete route set. | ||
|  | 
 | ||
|  |  * Added "presencestate list" command.  This command will list all custom | ||
|  |    presence states that have been set by using the PRESENCE_STATE dialplan | ||
|  |    function. | ||
|  | 
 | ||
|  |  * Added "presencestate change <entity> <state>[,<subtype>[,message[,options]]]" | ||
|  |    command.  This changes a custom presence to a new state. | ||
|  | 
 | ||
|  | 
 | ||
|  | Codecs | ||
|  | ------------------- | ||
|  |  * Codec lists may now be modified by the '!' character, to allow succinct | ||
|  |    specification of a list of codecs allowed and disallowed, without the | ||
|  |    requirement to use two different keywords.  For example, to specify all | ||
|  |    codecs except g729 and g723, one need only specify allow=all,!g729,!g723. | ||
|  | 
 | ||
|  |  * Add support for parsing SDP attributes, generating SDP attributes, and | ||
|  |    passing it through. This support includes codecs such as H.263, H.264, SILK, | ||
|  |    and CELT. You are able to set up a call and have attribute information pass. | ||
|  |    This should help considerably with video calls. | ||
|  | 
 | ||
|  |  * The iLBC codec can now use a system-provided iLBC library if one is installed, | ||
|  |    just like the GSM codec. | ||
|  | 
 | ||
|  | DUNDi changes | ||
|  | ------------- | ||
|  |  * Added CLI commands dundi show hints and dundi show cache which will list DUNDi | ||
|  |    'DONTASK' hints in the cache and list all DUNDi cache entires respectively. | ||
|  | 
 | ||
|  | Logging | ||
|  | ------------------- | ||
|  |  * Asterisk version and build information is now logged at the beginning of a | ||
|  |    log file. | ||
|  | 
 | ||
|  |  * Threads belonging to a particular call are now linked with callids which get | ||
|  |    added to any log messages produced by those threads. Log messages can now be | ||
|  |    easily identified as involved with a certain call by looking at their call id. | ||
|  |    Call ids may also be attached to log messages for just about any case where | ||
|  |    it can be determined to be related to a particular call. | ||
|  | 
 | ||
|  |  * Each logging destination and console now have an independent notion of the | ||
|  |    current verbosity level.  Logger.conf now allows an optional argument to | ||
|  |    the 'verbose' specifier, indicating the level of verbosity sent to that | ||
|  |    particular logging destination.  Additionally, remote consoles now each | ||
|  |    have their own verbosity level.  The command 'core set verbose' will now set | ||
|  |    a separate level for each remote console without affecting any other | ||
|  |    console. | ||
|  | 
 | ||
|  | 
 | ||
|  | Music On Hold | ||
|  | ------------------- | ||
|  |  * Added 'announcement' option which will play at the start of MOH and between | ||
|  |    songs in modes of MOH that can detect transitions between songs (eg. | ||
|  |    files, mp3, etc). | ||
|  | 
 | ||
|  | 
 | ||
|  | Parking | ||
|  | ------------------- | ||
|  |  * New per parking lot options: comebackcontext and comebackdialtime. See | ||
|  |    configs/features.conf.sample for more details. | ||
|  | 
 | ||
|  |  * Channel variable PARKER is now set when comebacktoorigin is disabled in | ||
|  |    a parking lot. | ||
|  | 
 | ||
|  |  * Channel variable PARKEDCALL is now set with the name of the parking lot | ||
|  |    when a timeout occurs. | ||
|  | 
 | ||
|  | 
 | ||
|  | CDRs | ||
|  | ------------------- | ||
|  | 
 | ||
|  | CDR Postgresql Driver | ||
|  | ------------------- | ||
|  |  * Added command "cdr show pgsql status" to check connection status | ||
|  | 
 | ||
|  | 
 | ||
|  | CDR Adaptive ODBC Driver | ||
|  | ------------------- | ||
|  |  * Added schema option for databases that support specifying a schema. | ||
|  | 
 | ||
|  | 
 | ||
|  | Resource Modules | ||
|  | ------------------- | ||
|  | 
 | ||
|  | Calendars | ||
|  | ------------------- | ||
|  |  * A CALENDAR_SUCCESS=1/0 channel variable is now set to show whether or not | ||
|  |    CALENDAR_WRITE has completed successfully. | ||
|  | 
 | ||
|  | 
 | ||
|  | res_rtp_asterisk | ||
|  | ------------------- | ||
|  |  * A new option, 'probation' has been added to rtp.conf | ||
|  |    RTP in strictrtp mode can now require more than 1 packet to exit learning | ||
|  |    mode with a new source (and by default requires 4). The probation option | ||
|  |    allows the user to change the required number of packets in sequence to any | ||
|  |    desired value. Use a value of 1 to essentially restore the old behavior. | ||
|  |    Also, with strictrtp on, Asterisk will now drop all packets until learning | ||
|  |    mode has successfully exited. These changes are based on how pjmedia handles | ||
|  |    media sources and source changes. | ||
|  | 
 | ||
|  |  * Add support for ICE/STUN/TURN in res_rtp_asterisk.  This option can be | ||
|  |    enabled or disabled using the icesupport setting.  A variety of other | ||
|  |    settings have been introduced to configure STUN/TURN connections. | ||
|  | 
 | ||
|  | 
 | ||
|  | res_corosync | ||
|  | ------------------- | ||
|  |  * A new module, res_corosync, has been introduced.  This module uses the | ||
|  |    Corosync cluster engineer (http://www.corosync.org) to allow a local cluster | ||
|  |    of Asterisk servers to both Message Waiting Indication (MWI) and/or | ||
|  |    Device State (presence) information.  This module is very similar to, and | ||
|  |    is a replacement for the res_ais module that was in previous releases of | ||
|  |    Asterisk. | ||
|  | 
 | ||
|  | 
 | ||
|  | res_xmpp | ||
|  | ------------------- | ||
|  |  * This module adds a cleaned up, drop-in replacement for res_jabber called | ||
|  |    res_xmpp. This provides the same externally facing functionality but is | ||
|  |    implemented differently internally.  res_jabber has been deprecated in favor | ||
|  |    of res_xmpp; please see the UPGRADE.txt file for more information. | ||
|  | 
 | ||
|  | 
 | ||
|  | Scripts | ||
|  | ------------------- | ||
|  |  * The safe_asterisk script has been updated to allow several of its parameters | ||
|  |    to be set from environment variables.  This also enables a custom run | ||
|  |    directory of Asterisk to be specified, instead of defaulting to /tmp. | ||
|  | 
 | ||
|  |  * The live_ast script will now look for the LIVE_AST_BASE_DIR variable and use | ||
|  |    its value to determine the directory to assume is the top-level directory of | ||
|  |    the source tree.  If the variable is not set, it defaults to the current | ||
|  |    behavior and uses the current working directory. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 1.8 to Asterisk 10 ------------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Text Messaging | ||
|  | -------------- | ||
|  |  * Asterisk now has protocol independent support for processing text messages | ||
|  |    outside of a call.  Messages are routed through the Asterisk dialplan. | ||
|  |    SIP MESSAGE and XMPP are currently supported.  There are options in | ||
|  |    jabber.conf and sip.conf to allow enabling these features. | ||
|  |      -> jabber.conf: see the "sendtodialplan" and "context" options. | ||
|  |      -> sip.conf: see the "accept_outofcall_message", "auth_message_requests" | ||
|  |         and "outofcall_message_context" options. | ||
|  |    The MESSAGE() dialplan function and MessageSend() application have been | ||
|  |    added to go along with this functionality.  More detailed usage information | ||
|  |    can be found on the Asterisk wiki (http://wiki.asterisk.org/). | ||
|  |  * If real-time text support (T.140) is negotiated, it will be preferred for | ||
|  |    sending text via the SendText application. For example, via SIP, messages | ||
|  |    that were once sent via the SIP MESSAGE request would be sent via RTP if | ||
|  |    T.140 text is negotiated for a call. | ||
|  | 
 | ||
|  | Parking | ||
|  | ------- | ||
|  |  * parkedmusicclass can now be set for non-default parking lots. | ||
|  | 
 | ||
|  | Asterisk Manager Interface | ||
|  | -------------------------- | ||
|  |  * PeerStatus now includes Address and Port. | ||
|  |  * Added Hold events for when the remote party puts the call on and off hold | ||
|  |    for chan_dahdi ISDN channels. | ||
|  |  * Added new action MeetmeListRooms to list active conferences (shows same | ||
|  |    data as "meetme list" at the CLI). | ||
|  |  * DAHDIShowChannels, SIPshowpeer, SIPpeers, and IAXpeers now contains a | ||
|  |    Description field that is set by 'description' in the channel configuration | ||
|  |    file. | ||
|  |  * Added Uniqueid header to UserEvent. | ||
|  |  * Added new action FilterAdd to control event filters for the current session. | ||
|  |    This requires the system permission and uses the same filter syntax as | ||
|  |    filters that can be defined in manager.conf | ||
|  |  * The Unlink event is now a Bridge event with Bridgestatus: Unlink. Previous | ||
|  |    versions had some instances of the event converted, but others were left | ||
|  |    as-is. All Unlink events should now be converted to Bridge events. The AMI | ||
|  |    protocol version number was incremented to 1.2 as a result of this change. | ||
|  | 
 | ||
|  | Asterisk HTTP Server | ||
|  | -------------------------- | ||
|  |  * The HTTP Server can bind to IPv6 addresses. | ||
|  | 
 | ||
|  | chan_dahdi | ||
|  | -------------------------- | ||
|  |  * Busy tone patterns featuring 2 silence and 2 tone lengths can now be used | ||
|  |    with busydetect.  usage example: busypattern=200,200,200,600 | ||
|  | 
 | ||
|  | CLI Changes | ||
|  | -------------------------- | ||
|  |  * New 'gtalk show settings' command showing the current settings loaded from | ||
|  |    gtalk.conf. | ||
|  |  * The 'logger reload' command now supports an optional argument, specifying an | ||
|  |    alternate configuration file to use. | ||
|  |  * 'dialplan add extension' command will now automatically create a context if | ||
|  |    the specified context does not exist with a message indicated it did so. | ||
|  |  * 'sip show peers', 'iax show peers', and 'dahdi show peers' now contains a | ||
|  |    Description field which can be populated with 'description' in the channel | ||
|  |    configuration files (sip.conf, iax2.conf, and chan_dahdi.conf). | ||
|  | 
 | ||
|  | CDR | ||
|  | -------------------------- | ||
|  |  * The filter option in cdr_adaptive_odbc now supports negating the argument, | ||
|  |    thus allowing records which do NOT match the specified filter. | ||
|  |  * Added ability to log CONGESTION calls to CDR | ||
|  | 
 | ||
|  | CODECS | ||
|  | -------------------------- | ||
|  |  * Ability to define custom SILK formats in codecs.conf. | ||
|  |  * Addition of speex32 audio format with translation. | ||
|  |  * CELT codec pass-through support and ability to define | ||
|  |    custom CELT formats in codecs.conf. | ||
|  |  * Ability to read raw signed linear files with sample rates | ||
|  |    ranging from 8khz - 192khz.  The new file extensions introduced | ||
|  |    are .sln12, .sln24, .sln32, .sln44, .sln48, .sln96, .sln192. | ||
|  |  * Due to protocol limitations, channel drivers other than SIP (eg. IAX2, MGCP, | ||
|  |    Skinny, H.323, etc) can still only support the following codecs: | ||
|  |    Audio: ulaw, alaw, slin, slin16, g719, g722, g723, g726, g726aal2, g729, gsm, | ||
|  |           siren7, siren14, speex, speex16, ilbc, lpc10, adpcm | ||
|  |    Video: h261, h263, h263p, h264, mpeg4 | ||
|  |    Image: jpeg, png | ||
|  |    Text:  red, t140 | ||
|  | 
 | ||
|  | ConfBridge | ||
|  | -------------------------- | ||
|  |  * New highly optimized and customizable ConfBridge application capable of | ||
|  |    mixing audio at sample rates ranging from 8khz-96khz. | ||
|  |  * CONFBRIDGE dialplan function capable of creating dynamic ConfBridge user | ||
|  |    and bridge profiles on a channel. | ||
|  |  * CONFBRIDGE_INFO dialplan function capable of retrieving information | ||
|  |    about a conference such as locked status and number of parties, admins, | ||
|  |    and marked users. | ||
|  |  * Addition of video_mode option in confbridge.conf for adding video support | ||
|  |    into a bridge profile. | ||
|  |  * Addition of the follow_talker video_mode in confbridge.conf.  This video | ||
|  |    mode dynamically switches the video feed to always display the loudest talker | ||
|  |    supplying video in the conference. | ||
|  | 
 | ||
|  | Dialplan Variables | ||
|  | ------------------ | ||
|  |  * Added ASTETCDIR, ASTMODDIR, ASTVARLIBDIR, ASTDBDIR, ASTKEYDIR, ASTDATADIR, | ||
|  |    ASTAGIDIR, ASTSPOOLDIR, ASTRUNDIR, ASTLOGDIR which hold the equivalent | ||
|  |    variables from asterisk.conf. | ||
|  | 
 | ||
|  | Dialplan Functions | ||
|  | ------------------ | ||
|  |  * Addition of the JITTERBUFFER dialplan function. This function allows | ||
|  |    for jitterbuffering to occur on the read side of a channel.  By using | ||
|  |    this function conference applications such as ConfBridge and MeetMe can | ||
|  |    have the rx streams jitterbuffered before conference mixing occurs. | ||
|  |  * Added DB_KEYS, which lists the next set of keys in the Asterisk database | ||
|  |    hierarchy. | ||
|  |  * Added STRREPLACE function.  This function let's the user search a variable | ||
|  |    for a given string to replace with another string as many times as the | ||
|  |    user specifies or just throughout the whole string. | ||
|  |  * Added option to CHANNEL(pickupgroup) allow reading and setting the pickupgroup of channel. | ||
|  |  * Mark VALID_EXTEN() deprecated in favor of DIALPLAN_EXISTS() | ||
|  |  * Added extensions to chan_ooh323 in function CHANNEL() | ||
|  | 
 | ||
|  | libpri channel driver (chan_dahdi) DAHDI changes | ||
|  | -------------------------- | ||
|  |  * Added moh_signaling option to specify what to do when the channel's bridged | ||
|  |    peer puts the ISDN channel on hold. | ||
|  |  * Added display_send and display_receive options to control how the display ie | ||
|  |    is handled.  To send display text from the dialplan use the SendText() | ||
|  |    application when the option is enabled. | ||
|  |  * Added mcid_send option to allow sending a MCID request on a span. | ||
|  | 
 | ||
|  | Calendaring | ||
|  | -------------------------- | ||
|  |  * Added setvar option to calendar.conf to allow setting channel variables on | ||
|  |    notification channels. | ||
|  |  * Added "calendar show types" CLI command to list registered calendar | ||
|  |    connectors. | ||
|  | 
 | ||
|  | MixMonitor | ||
|  | -------------------------- | ||
|  |  * Added two new options, r and t with file name arguments to record | ||
|  |    single direction (unmixed) audio recording separate from the bidirectional | ||
|  |    (mixed) recording.  The mixed file name argument is optional now as long | ||
|  |    as at least one recording option is used. | ||
|  | 
 | ||
|  | FollowMe | ||
|  | -------------------------- | ||
|  |  * Added a new option, l, which will disable local call optimization for | ||
|  |    channels involved with the FollowMe thread.  Use this option to improve | ||
|  |    compatability for a FollowMe call with certain dialplan apps, options, and | ||
|  |    functions. | ||
|  | 
 | ||
|  | Meetme | ||
|  | -------------------------- | ||
|  |  * Added option "k" that will automatically close the conference when there's | ||
|  |    only one person left when a user exits the conference. | ||
|  | 
 | ||
|  | CEL | ||
|  | -------------------------- | ||
|  |  * cel_pgsql now supports the 'extra' column for data added using the | ||
|  |    CELGenUserEvent() application. | ||
|  | 
 | ||
|  | pbx_lua | ||
|  | -------------------------- | ||
|  |  * Support for defining hints has been added to pbx_lua.  See the 'hints' table | ||
|  |    in the sample extensions.lua file for syntax details. | ||
|  |  * Applications that perform jumps in the dialplan such as Goto will now | ||
|  |    execute properly.  When pbx_lua detects that the context, extension, or | ||
|  |    priority we are executing on has changed it will immediately return control | ||
|  |    to the asterisk PBX engine.  Currently the engine cannot detect a Goto to | ||
|  |    the priority after the currently executing priority. | ||
|  |  * An autoservice is now started by default for pbx_lua channels.  It can be | ||
|  |    stopped and restarted using the autoservice_stop() and autoservice_start() | ||
|  |    functions. | ||
|  | 
 | ||
|  | res_fax | ||
|  | -------------------------- | ||
|  |  * The ReceiveFAXStatus and SendFAXStatus manager events have been consolidated | ||
|  |    into a FAXStatus event with an 'Operation' header that will be either | ||
|  |    'send', 'receive', and 'gateway'. | ||
|  |  * T.38 gateway functionality has been added to res_fax (and res_fax_spandsp). | ||
|  |    Set FAXOPT(gateway)=yes to enable this functionality on a channel. This | ||
|  |    feature will handle converting a fax call between an audio T.30 fax terminal | ||
|  |    and an IFP T.38 fax terminal. | ||
|  | 
 | ||
|  | SIP Changes | ||
|  | ----------- | ||
|  |  * Add T38 support for REJECTED state where T.38 Negotiation is explicitly rejected. | ||
|  |  * Add option encryption_taglen to set auth taglen only 32 and 80 are supported currently. | ||
|  |  * SIP now generates security events using the Security Events Framework for REGISTER and INVITE. | ||
|  | 
 | ||
|  | Queue changes | ||
|  | ------------- | ||
|  |  * Added general option negative_penalty_invalid default off. when set | ||
|  |    members are seen as invalid/logged out when there penalty is negative. | ||
|  |    for realtime members when set remove from queue will set penalty to -1. | ||
|  |  * Added queue option autopausedelay when autopause is enabled it will be | ||
|  |    delayed for this number of seconds since last successful call if there | ||
|  |    was no prior call the agent will be autopaused immediately. | ||
|  |  * Added member option ignorebusy this when set and ringinuse is not | ||
|  |    will allow per member control of multiple calls as ringinuse does for | ||
|  |    the Queue. | ||
|  | 
 | ||
|  | Applications | ||
|  | ------------ | ||
|  |  * Added 'v' option to MeetMe to play voicemail greetings when a user joins/leaves | ||
|  |    a MeetMe conference | ||
|  |  * Added 'k' option to MeetMe to automatically kill the conference when there's only | ||
|  |    one participant left (much like a normal call bridge) | ||
|  |  * Added extra argument to Originate to set timeout. | ||
|  | 
 | ||
|  | Asterisk Database | ||
|  | ----------------- | ||
|  |  * The internal Asterisk database has been switched from Berkeley DB 1.86 to | ||
|  |    SQLite 3. An existing Berkeley astdb file can be converted with the astdb2sqlite3 | ||
|  |    utility in the UTILS section of menuselect. If an existing astdb is found and no | ||
|  |    astdb.sqlite3 exists, astdb2sqlite3 will be compiled automatically. Asterisk will | ||
|  |    convert an existing astdb to the SQLite3 version automatically at runtime. | ||
|  | 
 | ||
|  | Asterisk Modules | ||
|  | ---------------- | ||
|  |  * Modules marked as deprecated are no longer marked as building by default. Enabling | ||
|  |    these modules is still available via menuselect. | ||
|  | 
 | ||
|  | IAX2 Changes | ||
|  | ------------ | ||
|  |  * authdebug is now disabled by default. To enable this functionality again | ||
|  |    set authdebug = yes in iax.conf. | ||
|  | 
 | ||
|  | RTP Changes | ||
|  | ----------- | ||
|  |  * The rtp.conf setting "strictrtp" is now enabled by default. In previous | ||
|  |    releases it was disabled. | ||
|  | 
 | ||
|  | PBX Core | ||
|  | -------- | ||
|  |  * The PBX core previously made a call with a non-existing extension test for | ||
|  |    extension s@default and jump there if the extension existed. | ||
|  |    This was a bad default behaviour and violated the principle of least surprise. | ||
|  |    It has therefore been changed in this release. It may affect some | ||
|  |    applications and configurations that rely on this behaviour. Most channel | ||
|  |    drivers have avoided this for many releases by testing whether the extension | ||
|  |    called exists before starting the PBX and generating a local error. | ||
|  |    This behaviour still exists and works as before. | ||
|  | 
 | ||
|  |    Extension "s" is used when no extension is given in a channel driver, | ||
|  |    like immediate answer in DAHDI or calling to a domain with no user part | ||
|  |    in a SIP uri. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 1.6.2 to Asterisk 1.8 ---------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | SIP Changes | ||
|  | ----------- | ||
|  |  * Due to potential username discovery vulnerabilities, the 'nat' setting in sip.conf | ||
|  |    now defaults to force_rport. It is very important that phones requiring nat=no be | ||
|  |    specifically set as such instead of relying on the default setting. If at all | ||
|  |    possible, all devices should have nat settings configured in the general section as | ||
|  |    opposed to configuring nat per-device. | ||
|  |  * Added preferred_codec_only option in sip.conf. This feature limits the joint | ||
|  |    codecs sent in response to an INVITE to the single most preferred codec. | ||
|  |  * Added SIP_CODEC_OUTBOUND dialplan variable which can be used to set the codec | ||
|  |    to be used for the outgoing call. It must be one of the codecs configured | ||
|  |    for the device. | ||
|  |  * Added tlsprivatekey option to sip.conf.  This allows a separate .pem file | ||
|  |    to be used for holding a private key.  If tlsprivatekey is not specified, | ||
|  |    tlscertfile is searched for both public and private key. | ||
|  |  * Added tlsclientmethod option to sip.conf.  This allows the protocol for | ||
|  |    outbound client connections to be specified. | ||
|  |  * The sendrpid parameter has been expanded to include the options | ||
|  |    'rpid' and 'pai'. Setting sendrpid to 'rpid' will cause Remote-Party-ID | ||
|  |    header to be sent (equivalent to setting sendrpid=yes) and setting | ||
|  |    sendrpid to 'pai' will cause P-Asserted-Identity header to be sent. | ||
|  |  * The 'ignoresdpversion' behavior has been made automatic when the SDP received | ||
|  |    is in response to a T.38 re-INVITE that Asterisk initiated. In this situation, | ||
|  |    since the call will fail if Asterisk does not process the incoming SDP, Asterisk | ||
|  |    will accept the SDP even if the SDP version number is not properly incremented, | ||
|  |    but will generate a warning in the log indicating that the SIP peer that sent | ||
|  |    the SDP should have the 'ignoresdpversion' option set. | ||
|  |  * The 'nat' option has now been been changed to have yes, no, force_rport, and | ||
|  |    comedia as valid values. Setting it to yes forces RFC 3581 behavior and enables | ||
|  |    symmetric RTP support. Setting it to no only enables RFC 3581 behavior if the | ||
|  |    remote side requests it and disables symmetric RTP support. Setting it to | ||
|  |    force_rport forces RFC 3581 behavior and disables symmetric RTP support. | ||
|  |    Setting it to comedia enables RFC 3581 behavior if the remote side requests it | ||
|  |    and enables symmetric RTP support. | ||
|  |  * Slave SIP channels now set HASH(SIP_CAUSE,<slave-channel-name>) on each | ||
|  |    response.  This permits the master channel to know how each channel dialled | ||
|  |    in a multi-channel setup resolved in an individual way. This carries a | ||
|  |    performance penalty and can be disabled in sip.conf using the | ||
|  |    'storesipcause' option. | ||
|  |  * Added 'externtcpport' and 'externtlsport' options to allow custom port | ||
|  |    configuration for the externip and externhost options when tcp or tls is used. | ||
|  |  * Added support for message body (stored in content variable) to SIP NOTIFY message | ||
|  |    accessible via AMI and CLI. | ||
|  |  * Added 'media_address' configuration option which can be used to explicitly specify | ||
|  |    the IP address to use in the SDP for media (audio, video, and text) streams. | ||
|  |  * Added 'unsolicited_mailbox' configuration option which specifies the virtual mailbox | ||
|  |    that the new/old count should be stored on if an unsolicited MWI NOTIFY message is | ||
|  |    received. | ||
|  |  * Added 'use_q850_reason' configuration option for generating and parsing | ||
|  |    if available  Reason: Q.850;cause=<cause code> header. It is implemented | ||
|  |    in some gateways for better passing PRI/SS7 cause codes via SIP. | ||
|  |  * When dialing SIP peers, a new component may be added to the end of the dialstring | ||
|  |    to indicate that a specific remote IP address or host should be used when dialing | ||
|  |    the particular peer. The dialstring format is SIP/peer/exten/host_or_IP. | ||
|  |  * SRTP SDES support for encrypting calls to/from Asterisk over SIP. The | ||
|  |    ability to selectively force bridged channels to also be encrypted is also | ||
|  |    implemented. Branching in the dialplan can be done based on whether or not | ||
|  |    a channel has secure media and/or signaling. | ||
|  |  * Added directmediapermit/directmediadeny to limit which peers can send direct media | ||
|  |    to each other | ||
|  |  * Added the 'snom_aoc_enabled' option to turn on support for sending Advice of | ||
|  |    Charge messages to snom phones. | ||
|  |  * Added support for G.719 media streams. | ||
|  |  * Added support for 16khz signed linear media streams. | ||
|  |  * SIP is now able to bind to and communicate with IPv6 addresses. In addition, | ||
|  |    RTP has been outfitted with the same abilities. | ||
|  |  * Added support for setting the Max-Forwards: header in SIP requests. Setting is | ||
|  |    available in device configurations as well as in the dial plan. | ||
|  |  * Addition of the 'subscribe_network_change' option for turning on and off | ||
|  |    res_stun_monitor module support in chan_sip. | ||
|  |  * Addition of the 'auth_options_requests' option for turning on and off | ||
|  |    authentication for OPTIONS requests in chan_sip. | ||
|  | 
 | ||
|  | Configuration files | ||
|  | ------------------- | ||
|  |  * Add #tryinclude statement for config files.  This provides the same | ||
|  |    functionality as the #include statement however an asterisk module will | ||
|  |    still load if the filename does not exist.  Using the #include statement | ||
|  |    Asterisk will not allow the module to load. | ||
|  | 
 | ||
|  | IAX2 Changes | ||
|  | ----------- | ||
|  |  * Added rtsavesysname option into iax.conf to allow the systname to be saved | ||
|  |    on realtime updates. | ||
|  |  * Added the ability for chan_iax2 to inform the dialplan whether or not | ||
|  |    encryption is being used. This interoperates with the SIP SRTP implementation | ||
|  |    so that a secure SIP call can be bridged to a secure IAX call when the | ||
|  |    dialplan requires bridged channels to be "secure". | ||
|  |  * Addition of the 'subscribe_network_change' option for turning on and off | ||
|  |    res_stun_monitor module support in chan_iax. | ||
|  | 
 | ||
|  | 
 | ||
|  | MGCP Changes | ||
|  | ------------ | ||
|  |  * Added ability to preset channel variables on indicated lines with the setvar | ||
|  |    configuration option.  Also, clearvars=all resets the list of variables back | ||
|  |    to none. | ||
|  |  * PacketCable NCS 1.0 support has been added for Docsis/Eurodocsis Networks. | ||
|  |    See configs/res_pktccops.conf for more information. | ||
|  | 
 | ||
|  | XMPP Google Talk/Jingle changes | ||
|  | ------------------------------- | ||
|  |   * Added the externip option to gtalk.conf. | ||
|  |   * Added the stunaddr option to gtalk.conf which allows for the automatic | ||
|  |     retrieval of the external ip from a stun server. | ||
|  | 
 | ||
|  | Applications | ||
|  | ------------ | ||
|  |  * Added 'p' option to PickupChan() to allow for picking up channel by the first | ||
|  |    match to a partial channel name. | ||
|  |  * Added .m3u support for Mp3Player application. | ||
|  |  * Added progress option to the app_dial D() option.  When progress DTMF is | ||
|  |    present, those values are sent immediately upon receiving a PROGRESS message | ||
|  |    regardless if the call has been answered or not. | ||
|  |  * Added functionality to the app_dial F() option to continue with execution | ||
|  |    at the current location when no parameters are provided. | ||
|  |  * Added the 'a' option to app_dial to answer the calling channel before any | ||
|  |    announcements or macros are executed. | ||
|  |  * Modified app_dial to set answertime when the called channel answers even if | ||
|  |    the called channel hangs up during playback of an announcement. | ||
|  |  * Modified app_dial 'r' option to support an additional parameter to play an | ||
|  |    indication tone from indications.conf | ||
|  |  * Added c() option to app_chanspy. This option allows custom DTMF to be set | ||
|  |    to cycle through the next available channel.  By default this is still '*'. | ||
|  |  * Added x() option to app_chanspy.  This option allows DTMF to be set to | ||
|  |    exit the application. | ||
|  |  * The Voicemail application has been improved to automatically ignore messages | ||
|  |    that only contain silence. | ||
|  |  * If you set maxmsg to 0 in voicemail.conf, Voicemail will consider the | ||
|  |    associated mailbox(es) to be greetings-only. | ||
|  |  * The ChanSpy application now has the 'S' option, which makes the application | ||
|  |    automatically exit once it hits a point where no more channels are available | ||
|  |    to spy on. | ||
|  |  * The ChanSpy application also now has the 'E' option, which spies on a single | ||
|  |    channel and exits when that channel hangs up. | ||
|  |  * The MeetMe application now turns on the DENOISE() function by default, for | ||
|  |    each participant.  In our tests, this has significantly decreased background | ||
|  |    noise (especially noisy data centers). | ||
|  |  * Voicemail now permits storage of secrets in a separate file, located in the | ||
|  |    spool directory of each individual user.  The control for this is located in | ||
|  |    the "passwordlocation" option in voicemail.conf.  Please see the sample | ||
|  |    configuration for more information. | ||
|  |  * The ChanIsAvail application now exposes the returned cause code using a separate | ||
|  |    variable, AVAILCAUSECODE, instead of overwriting the device state in AVAILSTATUS. | ||
|  |  * Added 'd' option to app_followme.  This option disables the "Please hold" | ||
|  |    announcement. | ||
|  |  * Added 'y' option to app_record. This option enables a mode where any DTMF digit | ||
|  |    received will terminate recording. | ||
|  |  * Voicemail now supports per mailbox settings for folders when using IMAP storage. | ||
|  |    Previously the folder could only be set per context, but has now been extended | ||
|  |    using the imapfolder option. | ||
|  |  * Voicemail now supports per mailbox settings for nextaftercmd and minsecs. | ||
|  |  * Voicemail now allows the pager date format to be specified separately from the | ||
|  |    email date format. | ||
|  |  * New applications JabberJoin, JabberLeave, and JabberSendGroup have been added | ||
|  |    to allow joining, leaving, and sending text to group chats. | ||
|  |  * MeetMe has a new option 'G' to play an announcement before joining a conference. | ||
|  |  * Page has a new option 'A(x)' which will playback an announcement simultaneously | ||
|  |    to all paged phones (and optionally excluding the caller's one using the new | ||
|  |    option 'n') before the call is bridged. | ||
|  |  * The 'f' option to Dial has been augmented to take an optional argument. If no | ||
|  |    argument is provided, the 'f' option works as it always has. If an argument is | ||
|  |    provided, then the connected party information of all outgoing channels created | ||
|  |    during the Dial will be set to the argument passed to the 'f' option. | ||
|  |  * Dial now inherits the GOSUB_RETVAL from the peer, when the U() option runs a | ||
|  |    Gosub on the peer. | ||
|  |  * The OSP lookup application adds in/outbound network ID, optional security, | ||
|  |    number portability, QoS reporting, destination IP port, custom info and service | ||
|  |    type features. | ||
|  |  * Added new application VMSayName that will play the recorded name of the voicemail | ||
|  |    user if it exists, otherwise will play the mailbox number. | ||
|  |  * Added custom device states to ConfBridge bridges.  Use 'confbridge:<name>' to | ||
|  |    retrieve state for a particular bridge, where <name> is the conference name | ||
|  |  * app_directory now allows exiting at any time using the operator or pound key. | ||
|  |  * Voicemail now supports setting a locale per-mailbox. | ||
|  |  * Two new applications are provided for declining counting phrases in multiple | ||
|  |    languages.  See the application notes for SayCountedNoun and SayCountedAdj for | ||
|  |    more information. | ||
|  |  * Voicemail now runs the externnotify script when pollmailboxes is activated and | ||
|  |    notices a change. | ||
|  |  * Voicemail now includes rdnis within msgXXXX.txt file. | ||
|  |  * ExternalIVR now supports IPv6 addresses. | ||
|  |  * Added 'D' command to ExternalIVR. Details are available on the Asterisk wiki | ||
|  |    at https://wiki.asterisk.org/wiki/x/oQBB | ||
|  |  * ParkedCall and Park can now specify the parking lot to use. | ||
|  | 
 | ||
|  | Dialplan Functions | ||
|  | ------------------ | ||
|  |  * SRVQUERY and SRVRESULT functions added. This can be used to query and iterate | ||
|  |    over SRV records associated with a specific service. From the CLI, type | ||
|  |    'core show function SRVQUERY' and 'core show function SRVRESULT' for more | ||
|  |    details on how these may be used. | ||
|  |  * PITCH_SHIFT dialplan function added. This function can be used to modify the | ||
|  |    pitch of a channel's tx and rx audio streams. | ||
|  |  * Added new dialplan functions CONNECTEDLINE and REDIRECTING which permits | ||
|  |    setting various connected line and redirecting party information. | ||
|  |  * CALLERID and CONNECTEDLINE dialplan functions have been extended to | ||
|  |    support ISDN subaddressing. | ||
|  |  * The CHANNEL() function now supports the "name" and "checkhangup" options. | ||
|  |  * For DAHDI channels, the CHANNEL() dialplan function now allows | ||
|  |    the dialplan to request changes in the configuration of the active | ||
|  |    echo canceller on the channel (if any), for the current call only. | ||
|  |    The syntax is: | ||
|  | 
 | ||
|  |    exten => s,n,Set(CHANNEL(echocan_mode)=off) | ||
|  | 
 | ||
|  |    The possible values are: | ||
|  | 
 | ||
|  |      on - normal mode (the echo canceller is actually reinitialized) | ||
|  |      off - disabled | ||
|  |      fax - FAX/data mode (NLP disabled if possible, otherwise completely | ||
|  |            disabled) | ||
|  |      voice - voice mode (returns from FAX mode, reverting the changes that | ||
|  |              were made when FAX mode was requested) | ||
|  |  * Added new dialplan function MASTER_CHANNEL(), which permits retrieving | ||
|  |    and setting variables on the channel which created the current channel. | ||
|  |    Administrators should take care to avoid naming conflicts, when multiple | ||
|  |    channels are dialled at once, especially when used with the Local channel | ||
|  |    construct (which all could set variables on the master channel).  Usage | ||
|  |    of the HASH() dialplan function, with the key set to the name of the slave | ||
|  |    channel, is one approach that will avoid conflicts. | ||
|  |  * Added new dialplan function MUTEAUDIO() for muting inbound and/or outbound | ||
|  |    audio in a channel. | ||
|  |  * func_odbc now allows multiple row results to be retrieved without using | ||
|  |    mode=multirow.  If rowlimit is set, then additional rows may be retrieved | ||
|  |    from the same query by using the name of the function which retrieved the | ||
|  |    first row as an argument to ODBC_FETCH(). | ||
|  |  * Added JABBER_RECEIVE, which permits receiving XMPP messages from the | ||
|  |    dialplan. This function returns the content of the received message. | ||
|  |  * Added REPLACE, which searches a given variable name for a set of characters, | ||
|  |    then either replaces them with a single character or deletes them. | ||
|  |  * Added PASSTHRU, which literally passes the same argument back as its return | ||
|  |    value.  The intent is to be able to use a literal string argument to | ||
|  |    functions that currently require a variable name as an argument. | ||
|  |  * HASH-associated variables now can be inherited across channel creation, by | ||
|  |    prefixing the name of the hash at assignment with the appropriate number of | ||
|  |    underscores, just like variables. | ||
|  |  * GROUP_MATCH_COUNT has been improved to allow regex matching on category | ||
|  |  * CHANNEL(secure_bridge_signaling) and CHANNEL(secure_bridge_media) to set/get | ||
|  |    whether or not channels that are bridged to the current channel will be | ||
|  |    required to have secure signaling and/or media. | ||
|  |  * CHANNEL(secure_signaling) and CHANNEL(secure_media) to get whether or not | ||
|  |    the current channel has secure signaling and/or media. | ||
|  |  * For DAHDI/ISDN channels, the CHANNEL() dialplan function now supports the | ||
|  |    "no_media_path" option. | ||
|  |    Returns "0" if there is a B channel associated with the call. | ||
|  |    Returns "1" if no B channel is associated with the call.  The call is either | ||
|  |    on hold or is a call waiting call. | ||
|  |  * Added option to dialplan function CDR(), the 'f' option | ||
|  |    allows for high resolution times for billsec and duration fields. | ||
|  |  * FILE() now supports line-mode and writing. | ||
|  |  * Added FIELDNUM(), which returns the 1-based offset of a field in a list. | ||
|  |  * FRAME_TRACE(), for tracking internal ast_frames on a channel. | ||
|  | 
 | ||
|  | Dialplan Variables | ||
|  | ------------------ | ||
|  |  * Added DYNAMIC_FEATURENAME which holds the last triggered dynamic feature. | ||
|  |  * Added DYNAMIC_PEERNAME which holds the unique channel name on the other side | ||
|  |    and is set when a dynamic feature is triggered. | ||
|  |  * Added PARKINGLOT which can be used with parkeddynamic feature.conf option | ||
|  |    to dynamically create a new parking lot matching the value this varible is | ||
|  |    set to. | ||
|  |  * Added PARKINGDYNAMIC which represents the template parkinglot defined in | ||
|  |    features.conf that should be the base for dynamic parkinglots. | ||
|  |  * Added PARKINGDYNCONTEXT which tells what context a newly created dynamic | ||
|  |    parkinglot should have. | ||
|  |  * Added PARKINGDYNEXTEN which tells what parking exten a newly created dynamic | ||
|  |    parkinglot should have. | ||
|  |  * Added PARKINGDYNPOS which holds what parking positions a dynamic parkinglot | ||
|  |    should have. | ||
|  | 
 | ||
|  | Queue changes | ||
|  | ------------- | ||
|  |  * Added "ready" option to QUEUE_MEMBER counting to count free agents whose wrap-up | ||
|  |    timeout has expired. | ||
|  |  * Added 'R' option to app_queue.  This option stops moh and indicates ringing | ||
|  |    to the caller when an Agent's phone is ringing.  This can be used to indicate | ||
|  |    to the caller that their call is about to be picked up, which is nice when | ||
|  |    one has been on hold for an extened period of time. | ||
|  |  * A new config option, penaltymemberslimit, has been added to queues.conf. | ||
|  |    When set this option will disregard penalty settings when a queue has too | ||
|  |    few members. | ||
|  |  * A new option, 'I' has been added to both app_queue and app_dial. | ||
|  |    By setting this option, Asterisk will not update the caller with | ||
|  |    connected line changes or redirecting party changes when they occur. | ||
|  |  * A 'relative-periodic-announce' option has been added to queues.conf.  When | ||
|  |    enabled, this option will cause periodic announce times to be calculated | ||
|  |    from the end of announcements rather than from the beginning. | ||
|  |  * The autopause option in queues.conf can be passed a new value, "all." The | ||
|  |    result is that if a member becomes auto-paused, he will be paused in all | ||
|  |    queues for which he is a member, not just the queue that failed to reach | ||
|  |    the member. | ||
|  |  * Added dialplan function QUEUE_EXISTS to check if a queue exists | ||
|  |  * The queue logger now allows events to optionally propagate to a file, | ||
|  |    even when realtime logging is turned on.  Additionally, realtime logging | ||
|  |    supports sending the event arguments to 5 individual fields, although it | ||
|  |    will fallback to the previous data definition, if the new table layout is | ||
|  |    not found. | ||
|  | 
 | ||
|  | mISDN channel driver (chan_misdn) changes | ||
|  | ---------------------------------------- | ||
|  |  * Added display_connected parameter to misdn.conf to put a display string | ||
|  |    in the CONNECT message containing the connected name and/or number if | ||
|  |    the presentation setting permits it. | ||
|  |  * Added display_setup parameter to misdn.conf to put a display string | ||
|  |    in the SETUP message containing the caller name and/or number if the | ||
|  |    presentation setting permits it. | ||
|  |  * Made misdn.conf parameters localdialplan and cpndialplan take a -1 to | ||
|  |    indicate the dialplan settings are to be obtained from the asterisk | ||
|  |    channel. | ||
|  |  * Made misdn.conf parameter callerid accept the "name" <number> format | ||
|  |    used by the rest of the system. | ||
|  |  * Made use the nationalprefix and internationalprefix misdn.conf | ||
|  |    parameters to prefix any received number from the ISDN link if that | ||
|  |    number has the corresponding Type-Of-Number.  NOTE:  This includes | ||
|  |    comparing the incoming call's dialed number against the MSN list. | ||
|  |  * Added the following new parameters: unknownprefix, netspecificprefix, | ||
|  |    subscriberprefix, and abbreviatedprefix in misdn.conf to prefix any | ||
|  |    received number from the ISDN link if that number has the corresponding | ||
|  |    Type-Of-Number. | ||
|  |  * Added new dialplan application misdn_command which permits controlling | ||
|  |    the CCBS/CCNR functionality. | ||
|  |  * Added new dialplan function mISDN_CC which permits retrieval of various | ||
|  |    values from an active call completion record. | ||
|  |  * For PTP, you should manually send the COLR of the redirected-to party | ||
|  |    for an incomming redirected call if the incoming call could experience | ||
|  |    further redirects.  Just set the REDIRECTING(to-num,i) = ${EXTEN} and | ||
|  |    set the REDIRECTING(to-pres) to the COLR.  A call has been redirected | ||
|  |    if the REDIRECTING(from-num) is not empty. | ||
|  |  * For outgoing PTP redirected calls, you now need to use the inhibit(i) | ||
|  |    option on all of the REDIRECTING statements before dialing the | ||
|  |    redirected-to party.  You still have to set the REDIRECTING(to-xxx,i) | ||
|  |    and the REDIRECTING(from-xxx,i) values.  The PTP call will update the | ||
|  |    redirecting-to presentation (COLR) when it becomes available. | ||
|  |  * Added outgoing_colp parameter to misdn.conf to filter outgoing COLP | ||
|  |    information. | ||
|  | 
 | ||
|  | thirdparty mISDN enhancements | ||
|  | ----------------------------- | ||
|  | mISDN has been modified by Digium, Inc. to greatly expand facility message | ||
|  | support to allow: | ||
|  |   * Enhanced COLP support for call diversion and transfer. | ||
|  |   * CCBS/CCNR support. | ||
|  | 
 | ||
|  | The latest modified mISDN v1.1.x based version is available at: | ||
|  | http://svn.digium.com/svn/thirdparty/mISDN/trunk | ||
|  | http://svn.digium.com/svn/thirdparty/mISDNuser/trunk | ||
|  | 
 | ||
|  | Tagged versions of the modified mISDN code are available under: | ||
|  | http://svn.digium.com/svn/thirdparty/mISDN/tags | ||
|  | http://svn.digium.com/svn/thirdparty/mISDNuser/tags | ||
|  | 
 | ||
|  | libpri channel driver (chan_dahdi) DAHDI changes | ||
|  | ------------------------------------------- | ||
|  |  * The channel variable PRIREDIRECTREASON is now just a status variable | ||
|  |    and it is also deprecated.  Use the REDIRECTING(reason) dialplan function | ||
|  |    to read and alter the reason. | ||
|  |  * For Q.SIG and ETSI PRI/BRI-PTP, you should manually send the COLR of the | ||
|  |    redirected-to party for an incomming redirected call if the incoming call | ||
|  |    could experience further redirects.  Just set the | ||
|  |    REDIRECTING(to-num,i) = CALLERID(dnid) and set the REDIRECTING(to-pres) | ||
|  |    to the COLR.  A call has been redirected if the REDIRECTING(count) is not | ||
|  |    zero. | ||
|  |  * For outgoing Q.SIG and ETSI PRI/BRI-PTP redirected calls, you need to | ||
|  |    use the inhibit(i) option on all of the REDIRECTING statements before | ||
|  |    dialing the redirected-to party.  You still have to set the | ||
|  |    REDIRECTING(to-xxx,i) and the REDIRECTING(from-xxx,i) values.  The call | ||
|  |    will update the redirecting-to presentation (COLR) when it becomes available. | ||
|  |  * Added the ability to ignore calls that are not in a Multiple Subscriber | ||
|  |    Number (MSN) list for PTMP CPE interfaces. | ||
|  |  * Added dynamic range compression support for dahdi channels.  It is | ||
|  |    configured via the rxdrc and txdrc parameters in chan_dahdi.conf. | ||
|  |  * Added support for ISDN calling and called subaddress with partial support | ||
|  |    for connected line subaddress. | ||
|  |  * Added support for BRI PTMP NT mode. (Requires latest LibPRI.) | ||
|  |  * Added handling of received HOLD/RETRIEVE messages and the optional ability | ||
|  |    to transfer a held call on disconnect similar to an analog phone. | ||
|  |  * Added CallRerouting/CallDeflection support for Q.SIG, ETSI PTP, ETSI PTMP. | ||
|  |    Will reroute/deflect an outgoing call when receive the message. | ||
|  |    Can use the DAHDISendCallreroutingFacility to send the message for the | ||
|  |    supported switches. | ||
|  |  * Added standard location to add options to chan_dahdi dialing: | ||
|  |    Dial(DAHDI/g1[/extension[/options]]) | ||
|  |    Current options: | ||
|  |    K(<keypad_digits>) | ||
|  |    R Reverse charging indication | ||
|  |  * Added Reverse Charging Indication (Collect calls) send/receive option. | ||
|  |    Send reverse charging in SETUP message with the chan_dahdi R dialing option. | ||
|  |    Dial(DAHDI/g1/extension/R) | ||
|  |    Access received reverse charge in SETUP message by: ${CHANNEL(reversecharge)} | ||
|  |    (requires latest LibPRI) | ||
|  |  * Added ability to send/receive keypad digits in the SETUP message. | ||
|  |    Send keypad digits in SETUP message with the chan_dahdi K(<keypad_digits>) | ||
|  |    dialing option.  Dial(DAHDI/g1/[extension]/K(<keypad_digits>)) | ||
|  |    Access any received keypad digits in SETUP message by: ${CHANNEL(keypad_digits)} | ||
|  |    (requires latest LibPRI) | ||
|  |  * Added ability to send and receive ETSI Explicit Call Transfer (ECT) messages | ||
|  |    to eliminate tromboned calls.  A tromboned call goes out an interface and comes | ||
|  |    back into the same interface.  Tromboned calls happen because of call routing, | ||
|  |    call deflection, call forwarding, and call transfer. | ||
|  |  * Added the ability to send and receive ETSI Advice-Of-Charge messages. | ||
|  |  * Added the ability to support call waiting calls.  (The SETUP has no B channel | ||
|  |    assigned.) | ||
|  |  * Added Malicious Call ID (MCID) event to the AMI call event class. | ||
|  |  * Added Message Waiting Indication (MWI) support for ISDN PTMP endpoints (phones). | ||
|  | 
 | ||
|  | Asterisk Manager Interface | ||
|  | -------------------------- | ||
|  |  * The Hangup action now accepts a Cause header which may be used to | ||
|  |    set the channel's hangup cause. | ||
|  |  * sslprivatekey option added to manager.conf and http.conf.  Adds the ability | ||
|  |    to specify a separate .pem file to hold a private key.  By default sslcert | ||
|  |    is used to hold both the public and private key. | ||
|  |  * Options in manager.conf and http.conf with the 'ssl' prefix have been replaced | ||
|  |    for options containing the 'tls' prefix.  For example, 'sslenable' is now | ||
|  |    'tlsenable'.  This has been done in effort to keep ssl and tls options consistent | ||
|  |    across all .conf files. All affected sample.conf files have been modified to | ||
|  |    reflect this change.  Previous options such as 'sslenable' still work, | ||
|  |    but options with the 'tls' prefix are preferred. | ||
|  |  * Added a MuteAudio AMI action for muting inbound and/or outbound audio | ||
|  |    in a channel. (res_mutestream.so) | ||
|  |  * The configuration file manager.conf now supports a channelvars option, which | ||
|  |    specifies a list of channel variables to include in each channel-oriented | ||
|  |    event. | ||
|  |  * The redirect command now has new parameters ExtraContext, ExtraExtension, | ||
|  |    and ExtraPriority to allow redirecting the second channel to a different | ||
|  |    location than the first. | ||
|  |  * Added new event "JabberStatus" in the Jabber module to monitor buddies | ||
|  |    status. | ||
|  |  * Added a "MixMonitorMute" AMI action for muting inbound and/or outbound audio | ||
|  |    in a MixMonitor recording. | ||
|  |  * The 'iax2 show peers' output is now similar to the expected output of | ||
|  |    'sip show peers'. | ||
|  |  * Added Advice-Of-Charge events (AOC-S, AOC-D, and AOC-E) in the new | ||
|  |    aoc event class. | ||
|  |  * Added Advice-Of-Charge manager action, AOCMessage, for generating AOC-D and | ||
|  |    AOC-E messages on a channel. | ||
|  |  * A DBGetComplete event now follows a DBGetResponse, to make the DBGet action | ||
|  |    conform more closely to similar events. | ||
|  |  * Added a new eventfilter option per user to allow whitelisting and blacklisting | ||
|  |    of events. | ||
|  |  * Added optional parkinglot variable for park command. | ||
|  |  * Added ConnectedLineNum and ConnectedLineName headers to AMI events/responses | ||
|  |    if CallerIDNum and CallerIDName headers are also present. | ||
|  | 
 | ||
|  | Channel Event Logging | ||
|  | --------------------- | ||
|  |  * A new interface, CEL, is introduced here. CEL logs single events, much like | ||
|  |    the AMI, but it differs from the AMI in that it logs to db backends much | ||
|  |    like CDR does; is based on the event subsystem introduced by Russell, and | ||
|  |    can share in all its benefits; allows multiple backends to operate like CDR; | ||
|  |    is specialized to event data that would be of concern to billing systems, | ||
|  |    like CDR. Backends for logging and accounting calls have been produced, | ||
|  |    but a new CDR backend is still in development. | ||
|  | 
 | ||
|  | CDR | ||
|  | --- | ||
|  |  * 'linkedid' and 'peeraccount' are new CDR fields available to CDR aficionados. | ||
|  |    linkedid is based on uniqueID, but spreads to other channels as transfers, dials, | ||
|  |    etc are performed. Thus the pieces of CDR can be grouped into multilegged sets. | ||
|  |  * Multiple files and formats can now be specified in cdr_custom.conf. | ||
|  |  * cdr_syslog has been added which allows CDRs to be written directly to syslog. | ||
|  |    See configs/cdr_syslog.conf.sample for more information. | ||
|  |  * A 'sequence' field has been added to CDRs which can be combined with | ||
|  |    linkedid or uniqueid to uniquely identify a CDR. | ||
|  |  * Handling of billsec and duration field has changed. If your table definition | ||
|  |    specifies those fields as float,double or similar they will now be logged with | ||
|  |    microsecond accuracy instead of a whole integer. | ||
|  | 
 | ||
|  | Calendaring for Asterisk | ||
|  | ------------------------ | ||
|  |  * A new set of modules were added supporting calendar integration with Asterisk. | ||
|  |    Dialplan functions for reading from and writing to calendars are included, | ||
|  |    as well as the ability to execute dialplan logic upon calendar event notifications. | ||
|  |    iCalendar, CalDAV, and Exchange Server calendars (via res_calendar_exchange for | ||
|  |    Exchange Server 2003 with no write or attendee support, and res_calendar_ews for | ||
|  |    Exchange Server 2007+ with full write and attendee support) are supported (Exchange | ||
|  |    2003 support does not support forms-based authentication). | ||
|  | 
 | ||
|  | Call Completion Supplementary Services for Asterisk | ||
|  | --------------------------------------------------- | ||
|  |  * Call completion support has been added for SIP, DAHDI/ISDN, and DAHDI/analog. | ||
|  |    DAHDI/ISDN supports call completion for the following switch types: | ||
|  |    EuroIsdn(ETSI) for PTP and PTMP modes, and Qsig. | ||
|  |    See https://wiki.asterisk.org/wiki/x/2ABQ for details. | ||
|  | 
 | ||
|  | Multicast RTP Support | ||
|  | --------------------- | ||
|  |  * A new RTP engine and channel driver have been added which supports Multicast RTP. | ||
|  |    The channel driver can be used with the Page application to perform multicast RTP | ||
|  |    paging. The dial string format is: MulticastRTP/<type>/<destination>/<control address> | ||
|  |    Type can be either basic or linksys. | ||
|  |    Destination is the IP address and port for the RTP packets. | ||
|  |    Control address is specific to the linksys type and is used for sending the control | ||
|  |    packets unique to them. | ||
|  | 
 | ||
|  | Security Events Framework | ||
|  | ------------------------- | ||
|  |  * Asterisk has a new C API for reporting security events.  The module res_security_log | ||
|  |    sends these events to the "security" logger level.  Currently, AMI is the only | ||
|  |    Asterisk component that reports security events.  However, SIP support will be | ||
|  |    coming soon.  For more information on the security events framework, see the | ||
|  |    "Asterisk Security Framework" section of the Asterisk wiki at | ||
|  |    https://wiki.asterisk.org/wiki/x/wgBQ | ||
|  |  * SIP support was added in Asterisk 10 | ||
|  |  * This API now supports IPv6 addresses | ||
|  | 
 | ||
|  | Fax | ||
|  | --- | ||
|  |  * A technology independent fax frontend (res_fax) has been added to Asterisk. | ||
|  |  * A spandsp based fax backend (res_fax_spandsp) has been added. | ||
|  |  * The app_fax module has been deprecated in favor of the res_fax module and | ||
|  |    the new res_fax_spandsp backend. | ||
|  |  * The SendFAX and ReceiveFAX applications now send their log messages to a | ||
|  |    'fax' logger level, instead of to the generic logger levels. To see these | ||
|  |    messages, the system's logger.conf file will need to direct the 'fax' logger | ||
|  |    level to one or more destinations; the logger.conf.sample file includes an | ||
|  |    example of how to do this. Note that if the 'fax' logger level is *not* | ||
|  |    directed to at least one destination, log messages generated by these | ||
|  |    applications will be lost, and that if the 'fax' logger level is directed to | ||
|  |    the console, the 'core set verbose' and 'core set debug' CLI commands will | ||
|  |    have no effect on whether the messages appear on the console or not. | ||
|  | 
 | ||
|  | Miscellaneous | ||
|  | ------------- | ||
|  |  * The transmit_silence_during_record option in asterisk.conf.sample has been removed. | ||
|  |    Now, in order to enable transmitting silence during record the transmit_silence | ||
|  |    option should be used.  transmit_silence_during_record remains a valid option, but | ||
|  |    defaults to the behavior of the transmit_silence option. | ||
|  |  * Addition of the Unit Test Framework API for managing registration and execution | ||
|  |    of unit tests with the purpose of verifying the operation of C functions. | ||
|  |  * SendText is now implemented in chan_gtalk and chan_jingle. It will simply send | ||
|  |    XMPP text messages to the remote JID. | ||
|  |  * Modules.conf has a new option - "require" - that marks a module as critical for | ||
|  |    the execution of Asterisk. | ||
|  |    If one of the required modules fail to load, Asterisk will exit with a return | ||
|  |    code set to 2. | ||
|  |  * An 'X' option has been added to the asterisk application which enables #exec support. | ||
|  |    This allows #exec to be used in asterisk.conf. | ||
|  |  * jabber.conf supports a new option auth_policy that toggles auto user registration. | ||
|  |  * A new lockconfdir option has been added to asterisk.conf to protect the | ||
|  |    configuration directory (/etc/asterisk by default) during reloads. | ||
|  |  * The parkeddynamic option has been added to features.conf to enable the creation | ||
|  |    of dynamic parkinglots. | ||
|  |  * chan_dahdi now supports reporting alarms over AMI either by channel or span via | ||
|  |    the reportalarms config option. | ||
|  |  * chan_dahdi supports dialing configuring and dialing by device file name. | ||
|  |    DAHDI/span-name!local!1 will use /dev/dahdi/span-name/local/1 . Likewise | ||
|  |    it may appear in chan_dahdi.conf as 'channel => span-name!local!1'. | ||
|  |  * A new options for chan_dahdi.conf: 'ignore_failed_channels'. Boolean. | ||
|  |    False by default. If set, chan_dahdi will ignore failed 'channel' entries. | ||
|  |    Handy for the above name-based syntax as it does not depend on | ||
|  |    initialization order. | ||
|  |  * The Realtime dialplan switch now caches entries for 1 second.  This provides a | ||
|  |    significant increase in performance (about 3X) for installations using this switchtype. | ||
|  |  * Distributed devicestate now supports the use of the XMPP protocol, in addition to | ||
|  |    AIS.  For more information, please see the Distributed Device State section of the | ||
|  |    Asterisk wiki at https://wiki.asterisk.org/wiki/x/jw4iAQ | ||
|  |  * The addition of G.719 pass-through support. | ||
|  |  * Added support for 16khz Speex audio.  This can be enabled by using 'allow=speex16' | ||
|  |    during device configuration. | ||
|  |  * The UNISTIM channel driver (chan_unistim) has been updated to support devices that | ||
|  |    have less than 3 lines on the LCD. | ||
|  |  * Realtime now supports database failover.  See the sample extconfig.conf for details. | ||
|  |  * The addition of improved translation path building for wideband codecs.  Sample | ||
|  |    rate changes during translation are now avoided unless absolutely necessary. | ||
|  |  * The addition of the res_stun_monitor module for monitoring and reacting to network | ||
|  |    changes while behind a NAT. | ||
|  |  * DTMF: Normal and Reverse Twist acceptance values can be set in dsp.conf. | ||
|  |    DTMF Valid/Invalid number of hits/misses can be set in dsp.conf. | ||
|  |    These allow support for any Administration. Default is AT&T values. | ||
|  | 
 | ||
|  | CLI Changes | ||
|  | ----------- | ||
|  |  * The 'core set debug' and 'core set verbose' commands, in previous versions, could | ||
|  |    optionally accept a filename, to apply the setting only to the code generated from | ||
|  |    that source file when Asterisk was built. However, there are some modules in Asterisk | ||
|  |    that are composed of multiple source files, so this did not result in the behavior | ||
|  |    that users expected. In this version, 'core set debug' and 'core set verbose' | ||
|  |    can optionally accept *module* names instead (with or without the .so extension), | ||
|  |    which applies the setting to the entire module specified, regardless of which source | ||
|  |    files it was built from. | ||
|  |  * New 'manager show settings' command showing the current settings loaded from | ||
|  |    manager.conf. | ||
|  |  * Added 'all' keyword to the CLI command "channel request hangup" so that you can send | ||
|  |    the channel hangup request to all channels. | ||
|  |  * Added a "core reload" CLI command that executes a global reload of Asterisk. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 1.6.1 to Asterisk 1.6.2  ------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | SIP Changes | ||
|  | ----------- | ||
|  |  * Added support for SUBSCRIBE/NOTIFY with dialog-info based call pickups. | ||
|  |    Snom phones use this for call pickup of extensions that the phone is | ||
|  |    subscribed to. | ||
|  |  * Added support for setting the domain in the URI for caller of an | ||
|  |    outbound call by using the SIPFROMDOMAIN channel variable. | ||
|  |  * Added a new configuration option "remotesecret" for authentication to | ||
|  |    remote services. For backwards compatibility, "secret" still has the | ||
|  |    same function as before, but now you can configure both a remote secret and a | ||
|  |    local secret for mutual authentication. | ||
|  |  * If the channel variable  ATTENDED_TRANSFER_COMPLETE_SOUND is set, | ||
|  |    the sound will be played to the target of an attended transfer | ||
|  |  * Added two new configuration options, "qualifygap" and "qualifypeers", which allow | ||
|  |    finer control over how many peers Asterisk will qualify and the gap between them | ||
|  |    when all peers need to be qualified at the same time. | ||
|  |  * Added a new 'ignoresdpversion' option to sip.conf.  When this is enabled | ||
|  |    (either globally or for a specific peer), chan_sip will treat any SDP data | ||
|  |    it receives as new data and update the media stream accordingly.  By | ||
|  |    default, Asterisk will only modify the media stream if the SDP session | ||
|  |    version received is different from the current SDP session version.  This | ||
|  |    option is required to interoperate with devices that have non-standard SDP | ||
|  |    session version implementations (observed with Microsoft OCS).  This option | ||
|  |    is disabled by default. | ||
|  |  * The parsing of register => lines in sip.conf has been modified to allow a port | ||
|  |    to be present in the "user" portion. Please see the sip.conf.sample file for more | ||
|  |    information | ||
|  |  * Added support for subscribing to MWI on a remote server and making the status available | ||
|  |    as a mailbox. Please see the sip.conf.sample file for more information. | ||
|  |  * Added a function to remove SIP headers added in the dialplan before the | ||
|  |    first INVITE is generated - SIPRemoveHeader() | ||
|  |  * Channel variables set with setvar= in a device configuration is now | ||
|  |    set both for inbound and outbound calls. | ||
|  |  * Added support for ITU G.722.1 and G.722.1C (Siren7 and Siren14) media streams. | ||
|  | 
 | ||
|  | IAX2 changes | ||
|  | ------------ | ||
|  |   * Added immediate option to iax.conf | ||
|  |   * Added forceencryption option to iax.conf | ||
|  |   * Added Encryption and Trunk status to manager command "iaxpeers" | ||
|  | 
 | ||
|  | Skinny Changes | ||
|  | -------------- | ||
|  |  * The configuration file now holds separate sections for devices and lines. | ||
|  |    Please have a look at configs/skinny.conf.sample and change your skinny.conf | ||
|  |    accordingly. | ||
|  | 
 | ||
|  | DAHDI Changes | ||
|  | ------------- | ||
|  |  * chan_dahdi now supports MFC/R2 signaling when Asterisk is compiled with | ||
|  |    support for LibOpenR2.  http://www.libopenr2.org/ | ||
|  |  * The UK option waitfordialtone has been added for use with BT analog | ||
|  |    lines. | ||
|  |  * Added a 'faxbuffers' configuration option to chan_dahdi.conf.  This option | ||
|  |    is used in conjunction with the 'faxdetect' configuration option.  When | ||
|  |    'faxbuffers' is used and fax tones are detected, the channel will dynamically | ||
|  |    switch to the configured faxbuffers policy.  For example, to use 6 buffers | ||
|  |    and a 'full' buffer policy for a fax transmission, add: | ||
|  |      faxbuffers=>6,full | ||
|  |    The faxbuffers configuration will be in affect until the call is torn down. | ||
|  |  * Added service message support for 4ESS/5ESS switches. | ||
|  | 
 | ||
|  | Dialplan Functions | ||
|  | ------------------ | ||
|  |  * For DAHDI channels, the CHANNEL() dialplan function now | ||
|  |    supports changing the channel's buffer policy (for the current | ||
|  |    call only), using this syntax: | ||
|  | 
 | ||
|  |    exten => s,n,Set(CHANNEL(buffers)=6,full) | ||
|  | 
 | ||
|  |    This would change the channel to the 'full' buffer policy and | ||
|  |    6 (six) buffers. Possible options for this setting are the same | ||
|  |    as those in chan_dahdi.conf. | ||
|  |  * Added a new dialplan function, CURLOPT, which permits setting various | ||
|  |    options that may be useful with the CURL dialplan function, such as | ||
|  |    cookies, proxies, connection timeouts, passwords, etc. | ||
|  |  * Permit the syntax and synopsis fields of the corresponding dialplan | ||
|  |    functions to be individually set from func_odbc.conf. | ||
|  |  * Added debugging CLI functions to func_odbc, 'odbc read' and 'odbc write'. | ||
|  |  * func_odbc now may specify an insert query to execute, when the write query | ||
|  |    affects 0 rows (usually indicating that no such row exists). | ||
|  |  * Added a new dialplan function, LISTFILTER, which permits removing elements | ||
|  |    from a set list, by name.  Uses the same general syntax as the existing CUT | ||
|  |    and FIELDQTY dialplan functions, which also manage lists. | ||
|  |  * Added REALTIME_FIELD and REALTIME_HASH, which should aid users in better | ||
|  |    obtaining realtime data from the dialplan. | ||
|  |  * Added LOCAL_PEEK, which allows access to variables in any stack frame within | ||
|  |    a subroutine when using the GoSub() and Return() applications. | ||
|  |  * Added AUDIOHOOK_INHERIT. For information on its use, please see the output | ||
|  |    of "core show function AUDIOHOOK_INHERIT" from the CLI | ||
|  |  * Added AES_ENCRYPT. For information on its use, please see the output | ||
|  |    of "core show function AES_ENCRYPT" from the CLI | ||
|  |  * Added AES_DECRYPT. For information on its use, please see the output | ||
|  |    of "core show function AES_DECRYPT" from the CLI | ||
|  |  * func_odbc now supports database transactions across multiple queries. | ||
|  | 
 | ||
|  | Applications | ||
|  | ------------ | ||
|  |  * Scheduled meetme conferences may now have their end times extended by | ||
|  |    using MeetMeAdmin. | ||
|  |  * app_authenticate now gives the ability to select a prompt other than | ||
|  |    the default. | ||
|  |  * app_directory now pays attention to the searchcontexts setting in | ||
|  |    voicemail.conf and will look through all contexts, if no context is | ||
|  |    specified in the initial argument. | ||
|  |  * A new application, Originate, has been introduced, that allows asynchronous | ||
|  |    call origination from the dialplan. | ||
|  |  * Voicemail now permits setting the emailsubject and emailbody per mailbox, | ||
|  |    in addition to the setting in the "general" context. | ||
|  |  * Added ConfBridge dialplan application which does conference bridges without | ||
|  |    DAHDI. For information on its use, please see the output of | ||
|  |    "core show application ConfBridge" from the CLI. | ||
|  | 
 | ||
|  | Miscellaneous | ||
|  | ------------- | ||
|  |  * The Asterisk CLI has a new command, "channel redirect", which is similar in | ||
|  |    operation to the AMI Redirect action. | ||
|  |  * extensions.conf now allows you to use keyword "same" to define an extension | ||
|  |    without actually specifying an extension.  It uses exactly the same pattern | ||
|  |    as previously used on the last "exten" line.  For example: | ||
|  |      exten => 123,1,NoOp(something) | ||
|  |      same  =>     n,SomethingElse() | ||
|  |  * musiconhold.conf classes of type 'files' can now use relative directory paths, | ||
|  |    which are interpreted as relative to the astvarlibdir setting in asterisk.conf. | ||
|  |  * All deprecated CLI commands are removed from the sourcecode. They are now handled | ||
|  |    by the new clialiases module. See cli_aliases.conf.sample file. | ||
|  |  * Times within timespecs are now accurate down to the minute.  This is a change | ||
|  |    from historical Asterisk, which only provided timespecs rounded to the nearest | ||
|  |    even (read: evenly divisible by 2) minute mark. | ||
|  |  * The realtime switch now supports an option flag, 'p', which disables searches for | ||
|  |    pattern matches. | ||
|  |  * In addition to a time range and date range, timespecs now accept a 5th optional | ||
|  |    argument, timezone.  This allows you to perform time checks on alternate | ||
|  |    timezones, especially if those daylight savings time ranges vary from your | ||
|  |    machine's native timezone.  See GotoIfTime, ExecIfTime, IFTIME(), and timed | ||
|  |    includes. | ||
|  |  * The contrib/scripts/ directory now has a script called sip_nat_settings that will | ||
|  |    give you the correct output for an asterisk box behind nat. It will give you the | ||
|  |    externhost and localnet settings. | ||
|  |  * The Asterisk core now supports ITU G.722.1 and G.722.1C media streams, and | ||
|  |    can connect calls in passthrough mode, as well as record and play back files. | ||
|  |  * Successful and unsuccessful call pickup can now be alerted through sounds, by | ||
|  |    using pickupsound and pickupfailsound in features.conf. | ||
|  |  * ASTVARRUNDIR is now set to $(localstatedir)/run/asterisk by default. | ||
|  |    This means the asterisk pid file will now be in /var/run/asterisk/asterisk.pid on LINUX | ||
|  |    instead of the /var/run/asterisk.pid where it used to be. This will make | ||
|  |    installs as non-root easier to manage. | ||
|  | 
 | ||
|  | CDR | ||
|  | --- | ||
|  | 
 | ||
|  | * The cdr.conf file must exist and be correctly programmed in order for CDR records to | ||
|  |   be written; they will no longer be explicitly written. | ||
|  | 
 | ||
|  | Asterisk Manager Interface | ||
|  | -------------------------- | ||
|  |  * When using the AMI over HTTP, you can now include a 'SuppressEvents' header (with | ||
|  |    a non-empty value) in your request. If you do this, any pending AMI events will | ||
|  |    *not* be included in the response to your request as they would normally, but | ||
|  |    will be left in the event queue for the next request you make to retrieve. For | ||
|  |    some applications, this will allow you to guarantee that you will only see | ||
|  |    events in responses to 'WaitEvent' actions, and can better know when to expect them. | ||
|  |    To know whether the Asterisk server supports this header or not, your client can | ||
|  |    inspect the first response back from the server to see if it includes this header: | ||
|  | 
 | ||
|  |    Pragma: SuppressEvents | ||
|  | 
 | ||
|  |    If this is included, the server supports event suppression. | ||
|  | 
 | ||
|  |  * Added 4 new Actions to list skinny device(s) and line(s) | ||
|  |    SKINNYdevices | ||
|  |    SKINNYshowdevice | ||
|  |    SKINNYlines | ||
|  |    SKINNYshowline | ||
|  | 
 | ||
|  | LDAP Schema File Additions | ||
|  | -------------------------- | ||
|  |  * Added AsteriskDialplan, AsteriskAccount and AsteriskMailbox  objectClasses | ||
|  |    to allow standalone dialplan, account and mailbox entries (STRUCTURAL) | ||
|  |  * Added new Fields: | ||
|  |    - AstAccountLanguage, AstAccountTransport, AstAccountPromiscRedir, | ||
|  |    - AstAccountAccountCode, AstAccountSetVar, AstAccountAllowOverlap, | ||
|  |    - AstAccountVideoSupport, AstAccountIgnoreSDPVersion | ||
|  |  * Removed redundant IPaddr (there's already IPAddress) | ||
|  |    - Gives more configuration Flags for SIP-Users available (tested) | ||
|  |    - Allows to create Asterisk Attributes in defined Asterisk ObjectClasses | ||
|  |      without extensibleObject (which really should be the last resort); gives | ||
|  |      also additional possibilities for LDAP-filter | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 1.6.0 to Asterisk 1.6.1  ------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | Device State Handling | ||
|  | --------------------- | ||
|  |  * The event infrastructure in Asterisk got another big update to help support | ||
|  |    distributed events.  It currently supports distributed device state and | ||
|  |    distributed Voicemail MWI (Message Waiting Indication).  A new module has | ||
|  |    been merged, res_ais, which facilitates communicating events between servers. | ||
|  |    It uses the SAForum AIS (Service Availability Forum Application Interface | ||
|  |    Specification) CLM (Cluster Management) and EVT (Event) services to maintain | ||
|  |    a cluster of Asterisk servers, and to share events between them.  For more | ||
|  |    information on setting this up, refer to the Distributed Device State section | ||
|  |    of the Asterisk wiki at https://wiki.asterisk.org/wiki/x/jw4iAQ | ||
|  | 
 | ||
|  | Dialplan Functions | ||
|  | ------------------ | ||
|  |  * Added a new dialplan function, AST_CONFIG(), which allows you to access | ||
|  |    variables from an Asterisk configuration file. | ||
|  |  * The JACK_HOOK function now has a c() option to supply a custom client name. | ||
|  |  * Added two new dialplan functions from libspeex for audio gain control and | ||
|  |    denoise, AGC() and DENOISE(). Both functions can be applied to the tx and | ||
|  |    rx directions of a channel from the dialplan. | ||
|  |  * The SMDI_MSG_RETRIEVE function now has the ability to search for SMDI messages | ||
|  |    based on other parameters.  The default is still to search based on the | ||
|  |    forwarding station ID.  However, there are new options that allow you to search | ||
|  |    based on the message desk terminal ID, or the message desk number. | ||
|  |  * TIMEOUT() has been modified to be accurate down to the millisecond. | ||
|  |  * ENUM*() functions now include the following new options: | ||
|  |      - 'u' returns the full URI and does not strip off the URI-scheme. | ||
|  |      - 's' triggers ISN specific rewriting | ||
|  |      - 'i' looks for branches into an Infrastructure ENUM tree | ||
|  |      - 'd' for a direct DNS lookup without any flipping of digits. | ||
|  |  * TXCIDNAME() has a new zone-suffix parameter (which defaults to 'e164.arpa') | ||
|  |  * CHANNEL() now has options for the maximum, minimum, and standard or normal | ||
|  |    deviation of jitter, rtt, and loss for a call using chan_sip. | ||
|  | 
 | ||
|  | DAHDI channel driver (chan_dahdi) Changes | ||
|  | ---------------------------------------- | ||
|  |  * Channels can now be configured using named sections in chan_dahdi.conf, just | ||
|  |    like other channel drivers, including the use of templates. | ||
|  |  * The default for pridialplan has changed from 'national' to 'unknown'. | ||
|  | 
 | ||
|  | PBX Changes | ||
|  | ----------- | ||
|  |  * It is now possible to specify a pattern match as a hint. Once a phone subscribes | ||
|  |    to something that matches the pattern a hint will be created using the contents | ||
|  |    and variables evaluated. | ||
|  |  * Dialplan matching has been extended to allow an extension to return to the | ||
|  |    PBX core to wait for more digits.  This is done by using the new dialplan | ||
|  |    application called "Incomplete".  This will permit a whole new level of | ||
|  |    extension control, by giving the administrator more control over early | ||
|  |    matches employing one of the short-circuit pattern match operators.  Note | ||
|  |    that custom applications can trigger this same behavior by returning the | ||
|  |    special value AST_PBX_INCOMPLETE. | ||
|  | 
 | ||
|  | Application Changes | ||
|  | ------------------- | ||
|  |  * Directory now permits both first and last names to be matched at the same | ||
|  |    time.  In addition, the number of digits to enter of the name can be set in | ||
|  |    the arguments to Directory; previously, you could enter only 3, regardless | ||
|  |    of how many names are in your company.  For large companies, this should be | ||
|  |    quite helpful. | ||
|  |  * Voicemail now permits a mailbox setting to wrap around from first to last | ||
|  |    messages, if the "messagewrap" option is set to a true value. | ||
|  |  * Voicemail now permits an external script to be run, for password validation. | ||
|  |    The script should output "VALID" or "INVALID" on stdout, depending upon the | ||
|  |    wish to validate or invalidate the password given.  Arguments are: | ||
|  |    "mailbox" "context" "oldpass" "newpass".  See the sample voicemail.conf for | ||
|  |    more details | ||
|  |  * Dial has a new option: F(context^extension^pri), which permits a callee to | ||
|  |    continue in the dialplan, at the specified label, if the caller hangs up. | ||
|  |  * ChanSpy and ExtenSpy have a new option, 's' which suppresses speaking the | ||
|  |    technology name (e.g. SIP, IAX, etc) of the channel being spied on. | ||
|  |  * The Jack application now has a c() option to supply a custom client name. | ||
|  |  * Chanspy has a new option, 'B', which can be used to "barge" on a call. This is | ||
|  |    like the pre-existing whisper mode, except that the spy can also talk to the | ||
|  |    participant on the bridged channel as well. | ||
|  |  * Chanspy has a new option, 'n', which will allow for the spied-on party's name | ||
|  |    to be spoken instead of the channel name or number. For more information on the | ||
|  |    use of this option, issue the command "core show application ChanSpy" from the | ||
|  |    Asterisk CLI. | ||
|  |  * Chanspy has a new option, 'd', which allows the spy to use DTMF to swap between | ||
|  |    spy modes. Use of this feature overrides the typical use of numeric DTMF. In other | ||
|  |    words, if using the 'd' option, it is not possible to enter a number to append to | ||
|  |    the first argument to Chanspy(). Pressing 4 will change to spy mode, pressing 5 will | ||
|  |    change to whisper mode, and pressing 6 will change to barge mode. | ||
|  |  * ExternalIVR now takes several options that affect the way it performs, as | ||
|  |    well as having several new commands.  Please see the External IVR page on the Asterisk | ||
|  |    wiki for complete documentation: https://wiki.asterisk.org/wiki/x/oQBB | ||
|  |  * Added ability to communicate over a TCP socket instead of forking a child process for the | ||
|  |    ExternalIVR application. | ||
|  |  * ChanIsAvail has a new option, 'a', which will return all available channels instead | ||
|  |    of just the first one if you give the function more then one channel to check. | ||
|  |  * PrivacyManager now takes an option where you can specify a context where the | ||
|  |    given number will be matched. This way you have more control over who is allowed | ||
|  |    and it stops the people who blindly enter 10 digits. | ||
|  |  * ForkCDR has new options: 'a' updates the answer time on the new CDR; 'A' locks | ||
|  |    answer times, disposition, on orig CDR against updates; 'D' Copies the disposition | ||
|  |    from the orig CDR to the new CDR after reset; 'e' sets the 'end' time on the | ||
|  |    original CDR; 'R' prevents the new CDR from being reset; 's(var=val)' adds/changes | ||
|  |    the 'var' variable on the original CDR; 'T' forces ast_cdr_end(), ast_cdr_answer(), | ||
|  |    obey the LOCKED flag on cdr's in the chain, and also the ast_cdr_setvar() func. | ||
|  |  * The Dial() application no longer copies the language used by the caller to the callee's | ||
|  |    channel. If you desire for the caller's channel's language to be used for file playback | ||
|  |    to the callee, then the file specified may be prepended with "${CHANNEL(language)}/" . | ||
|  |  * SendImage() no longer hangs up the channel on error; instead, it sets the | ||
|  |    status variable SENDIMAGESTATUS to one of 'SUCCESS', 'FAILURE', or | ||
|  |    'UNSUPPORTED'.  This change makes SendImage() more consistent with other | ||
|  |    applications. | ||
|  |  * Park has a new option, 's', which silences the announcement of the parking space number. | ||
|  |  * A non-numeric, zero, or negative timeout specified to Dial() will now be interpreted as | ||
|  |    invalid input and will be assumed to mean that no timeout is desired. | ||
|  | 
 | ||
|  | SIP Changes | ||
|  | ----------- | ||
|  |  * Added DNS manager support to registrations for peers referencing peer entries. | ||
|  |    DNS manager runs in the background which allows DNS lookups to be run asynchronously | ||
|  |    as well as periodically updating the IP address. These properties allow for | ||
|  |    better performance as well as recovery in the event of an IP change. | ||
|  |  * Performance improvements via using hash tables (astobj2) and doubly-linked lists to improve | ||
|  |    load/reload of large numbers of peers/users by ~40x (for large lists of peers). | ||
|  |    These changes also provide performance improvements for call setup and tear down. | ||
|  |  * Added ability to specify registration expiry time on a per registration basis in | ||
|  |    the register line. | ||
|  |  * Added support for T140 RED - redundancy in T.140 to prevent text loss due to | ||
|  |    lost packets. | ||
|  |  * Added t38pt_usertpsource option. See sip.conf.sample for details. | ||
|  |  * Added SIPnotify AMI command, for sending arbitrary SIP notify commands. | ||
|  |  * 'sip show peers' and 'sip show users' display their entries sorted in | ||
|  |     alphabetical order, as opposed to the order they were in, in the config | ||
|  |     file or database. | ||
|  |  * Videosupport now supports an additional option, "always", which always sets | ||
|  |     up video RTP ports, even on clients that don't support it.  This helps with | ||
|  |     callfiles and certain transfers to ensure that if two video phones are | ||
|  |     connected, they will always share video feeds. | ||
|  | 
 | ||
|  | IAX Changes | ||
|  | ----------- | ||
|  |  * Existing DNS manager lookups extended to check for SRV records. | ||
|  |  * IAX2 encryption support has been improved to support periodic key rotation | ||
|  |    within a call for enhanced security.  The option "keyrotate" has been | ||
|  |    provided to disable this functionality to preserve backwards compatibility | ||
|  |    with older versions of IAX2 that do not support key rotation. | ||
|  | 
 | ||
|  | CLI Changes | ||
|  | ----------- | ||
|  |   * New CLI command, "data get <path> [<search> [<filter>]]" which retrieves the | ||
|  |      data tree based on the given <path>. | ||
|  |   * New CLI command "data show providers" that will display all the registered | ||
|  |      callbacks. | ||
|  |   * New CLI command, "config reload <file.conf>" which reloads any module that | ||
|  |      references that particular configuration file.  Also added "config list" | ||
|  |      which shows which configuration files are in use. | ||
|  |   * New CLI commands, "pri show version" and "ss7 show version" that will | ||
|  |      display which version of libpri and libss7 are being used, respectively. | ||
|  |      A new API call was added so trunk will now have to be compiled against | ||
|  |      a versions of libpri and libss7 that have them or it will not know that | ||
|  |      these libraries exist. | ||
|  |   * The commands "core show globals", "core set global" and "core set chanvar" has | ||
|  |      been deprecated in favor of the more semantically correct "dialplan show globals", | ||
|  |      "dialplan set chanvar" and "dialplan set global". | ||
|  |   * New CLI command "dialplan show chanvar" to list all variables associated | ||
|  |     with a given channel. | ||
|  | 
 | ||
|  | DNS manager changes | ||
|  | ------------------- | ||
|  |   * Addresses managed by DNS manager now can check to see if there is a DNS | ||
|  |     SRV record for a given domain and will use that hostname/port if present. | ||
|  | 
 | ||
|  | AMI - The manager (TCP/TLS/HTTP) | ||
|  | -------------------------------- | ||
|  |   * The Status command now takes an optional list of variables to display | ||
|  |     along with channel status. | ||
|  |   * The QueueEntry event now also includes the channel's uniqueid | ||
|  | 
 | ||
|  | ODBC Changes | ||
|  | ------------ | ||
|  |   * res_odbc no longer has a limit of 1023 total possible unshared connections, | ||
|  |     as some people were running into this limit.  This limit has been increased | ||
|  |     to 4.2 billion. | ||
|  | 
 | ||
|  | Queue changes | ||
|  | ------------- | ||
|  |   * The TRANSFER queue log entry now includes the the caller's original | ||
|  |     position in the transferred-from queue. | ||
|  |   * A new configuration option, "timeoutpriority" has been added. Please see the section labeled | ||
|  |     "QUEUE TIMING OPTIONS" in configs/queues.conf.sample for a detailed explanation of the option | ||
|  |     as well as an explanation about timeout options in general | ||
|  |   * Added a new option - C - for forcing the "answered elsewhere" flag on | ||
|  |     cancellation of calls in to members of the queue. This is to avoid the | ||
|  |     call to a member of a queue having the call listed as a "missed call". | ||
|  | 
 | ||
|  | Realtime changes | ||
|  | ---------------- | ||
|  |   * Several (ODBC, Postgres, MySQL, SQLite) realtime drivers have been given | ||
|  |     adaptive capabilities.  What this means in practical terms is that if your | ||
|  |     realtime table lacks critical fields, Asterisk will now emit warnings to | ||
|  |     that effect.  Also, some of the realtime drivers have the ability (if | ||
|  |     configured) to automatically add those columns to the table with the | ||
|  |     correct type and length. | ||
|  | 
 | ||
|  | Miscellaneous | ||
|  | ------------- | ||
|  |   * The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND can now be set using | ||
|  |     the 'setvar' option to cause a given audio file to be played upon completion | ||
|  |     of an attended transfer.  Currently it works for DAHDI, IAX2, SIP, and | ||
|  |     Skinny channels only. | ||
|  |   * You can now compile Asterisk against the Hoard Memory Allocator, see the | ||
|  |     Hoard page on the Asterisk wiki for more information: | ||
|  |     https://wiki.asterisk.org/wiki/x/pQBB | ||
|  |   * Config file variables may now be appended to, by using the '+=' append | ||
|  |     operator.  This is most helpful when working with long SQL queries in | ||
|  |     func_odbc.conf, as the queries no longer need to be specified on a single | ||
|  |     line. | ||
|  |   * CDR config file, cdr.conf, has an added option, "initiatedseconds", | ||
|  |     which will add a second to the billsec when the ending | ||
|  |     time is set, if the number in the microseconds field of the end time is | ||
|  |     greater than the number of microseconds in the answer time. This allows | ||
|  |     users to count the 'initiated' seconds in their billing records. | ||
|  | 
 | ||
|  | ------------------------------------------------------------------------------ | ||
|  | --- Functionality changes from Asterisk 1.4.X to Asterisk 1.6.0  ------------- | ||
|  | ------------------------------------------------------------------------------ | ||
|  | 
 | ||
|  | AMI - The manager (TCP/TLS/HTTP) | ||
|  | -------------------------------- | ||
|  |   * Manager has undergone a lot of changes, all of them documented | ||
|  |     on the Asterisk wiki at https://wiki.asterisk.org/wiki/x/tQBB | ||
|  |   * Manager version has changed to 1.1 | ||
|  |   * Added a new action 'CoreShowChannels' to list currently defined channels | ||
|  |      and some information about them. | ||
|  |   * Added a new action 'SIPshowregistry' to list SIP registrations. | ||
|  |   * Added TLS support for the manager interface and HTTP server | ||
|  |   * Added the URI redirect option for the built-in HTTP server | ||
|  |   * The output of CallerID in Manager events is now more consistent. | ||
|  |      CallerIDNum is used for number and CallerIDName for name. | ||
|  |   * Enable https support for builtin web server. | ||
|  |      See configs/http.conf.sample for details. | ||
|  |   * Added a new action, GetConfigJSON, which can return the contents of an | ||
|  |      Asterisk configuration file in JSON format.  This is intended to help | ||
|  |      improve the performance of AJAX applications using the manager interface | ||
|  |      over HTTP. | ||
|  |   * SIP and IAX manager events now use "ChannelType" in all cases where we | ||
|  |      indicate channel driver. Previously, we used a mixture of "Channel" | ||
|  |      and "ChannelDriver" headers. | ||
|  |   * Added a "Bridge" action which allows you to bridge any two channels that | ||
|  |      are currently active on the system. | ||
|  |   * Added a "ListAllVoicemailUsers" action that allows you to get a list of all | ||
|  |      the voicemail users setup. | ||
|  |   * Added 'DBDel' and 'DBDelTree' manager commands. | ||
|  |   * cdr_manager now reports events via the "cdr" level, separating it from | ||
|  |      the very verbose "call" level. | ||
|  |   * Manager users are now stored in memory. If you change the manager account | ||
|  |     list (delete or add accounts) you need to reload manager. | ||
|  |   * Added Masquerade manager event for when a masquerade happens between | ||
|  |      two channels. | ||
|  |   * Added "manager reload" command for the CLI | ||
|  |   * Lots of commands that only provided information are now allowed under the | ||
|  |      Reporting privilege, instead of only under Call or System. | ||
|  |   * The IAX* commands now require either System or Reporting privilege, to | ||
|  |      mirror the privileges of the SIP* commands. | ||
|  |   * Added ability to retrieve list of categories in a config file. | ||
|  |   * Added ability to retrieve the content of a particular category. | ||
|  |   * Added ability to empty a context. | ||
|  |   * Created new action to create a new file. | ||
|  |   * Updated delete action to allow deletion by line number with respect to category. | ||
|  |   * Added new action insert to add new variable to category at specified line. | ||
|  |   * Updated action newcat to allow new category to be inserted in file above another | ||
|  |     existing category. | ||
|  |   * Added new event "JitterBufStats" in the IAX2 channel | ||
|  |   * Originate now requires the Originate privilege and, if you want to call out | ||
|  |     to a subshell, it requires the System privilege, as well.  This was done to | ||
|  |     enhance manager security. | ||
|  |   * Originate now accepts codec settings with "Codecs: alaw, ulaw, h264" | ||
|  |   * New command: Atxfer. See https://wiki.asterisk.org/wiki/x/uABB for more details | ||
|  |     or manager show command Atxfer from the CLI | ||
|  |   * New command: IAXregistry. See https://wiki.asterisk.org/wiki/x/uABB for more | ||
|  |     details or manager show command IAXregistry from the CLI | ||
|  | 
 | ||
|  | Dialplan functions | ||
|  | ------------------ | ||
|  |   * Added the DEVICE_STATE() dialplan function which allows retrieving any device | ||
|  |      state in the dialplan, as well as creating custom device states that are | ||
|  |      controllable from the dialplan. | ||
|  |   * Extend CALLERID() function with "pres" and "ton" parameters to | ||
|  |      fetch string representation of calling number presentation indicator | ||
|  |      and numeric representation of type of calling number value. | ||
|  |   * MailboxExists converted to dialplan function | ||
|  |   * A new option to Dial() for telling IP phones not to count the call | ||
|  |      as "missed" when dial times out and cancels. | ||
|  |   * Added LOCK(), TRYLOCK(), and UNLOCK(), which provide a single level dialplan | ||
|  |      mutex.  No deadlocks are possible, as LOCK() only allows a single lock to be | ||
|  |      held for any given channel.  Also, locks are automatically freed when a | ||
|  |      channel is hung up. | ||
|  |   * Added HINT() dialplan function that allows retrieving hint information. | ||
|  |      Hints are mappings between extensions and devices for the sake of | ||
|  |      determining the state of an extension.  This function can retrieve the list | ||
|  |      of devices or the name associated with a hint. | ||
|  |   * Added EXTENSION_STATE() dialplan function which allows retrieving the state | ||
|  |     of any extension. | ||
|  |   * Added SYSINFO() dialplan function which allows retrieval of system information | ||
|  |   * Added a new dialplan function, DIALPLAN_EXISTS(), which allows you to check for | ||
|  |      the existence of a dialplan target. | ||
|  |   * Added two new dialplan functions, TOUPPER and TOLOWER, which convert a string to | ||
|  |      upper and lower case, respectively. | ||
|  |   * When bridging, Asterisk sets the BRIDGEPVTCALLID to the channel drivers unique | ||
|  |      ID for the call (not the Asterisk call ID or unique ID), provided that the | ||
|  |      channel driver supports this. For SIP, you get the SIP call-ID for the | ||
|  |      bridged channel which you can store in the CDR with a custom field. | ||
|  | 
 | ||
|  | CLI Changes | ||
|  | ----------- | ||
|  |   * Added CLI permissions, config file: cli_permissions.conf | ||
|  |      default is to allow all commands for every local user/group. | ||
|  |      Also this new feature added three new CLI commands: | ||
|  |       - cli check permissions {<username>|@<groupname>|<username>@<groupname>} [<command>] | ||
|  |       - cli reload permissions | ||
|  |       - cli show permissions | ||
|  |   * New CLI command "core show hint" (usage: core show hint <exten>) | ||
|  |   * New CLI command "core show settings" | ||
|  |   * Added 'core show channels count' CLI command. | ||
|  |   * Added the ability to set the core debug and verbose values on a per-file basis. | ||
|  |   * Added 'queue pause member' and 'queue unpause member' CLI commands | ||
|  |   * Ability to set process limits ("ulimit") without restarting Asterisk | ||
|  |   * Enhanced "agi debug" to print the channel name as a prefix to the debug | ||
|  |      output to make debugging on busy systems much easier. | ||
|  |   * New CLI commands "dialplan set extenpatternmatching true/false" | ||
|  |   * New CLI command: "core set chanvar" to set a channel variable from the CLI. | ||
|  |   * Added an easy way to execute Asterisk CLI commands at startup.  Any commands | ||
|  |     listed in the startup_commands section of cli.conf will get executed. | ||
|  |   * Added a CLI command, "devstate change", which allows you to set custom device | ||
|  |      states from the func_devstate module that provides the DEVICE_STATE() function | ||
|  |      and handling of the "Custom:" devices. | ||
|  |   * New CLI command: "sip show sched" which shows all ast_sched entries for sip, | ||
|  |     sorted into the different possible callbacks, with the number of entries | ||
|  |     currently scheduled for each. Gives you a feel for how busy the sip channel | ||
|  |     driver is. | ||
|  |   * Added 'skinny show lines verbose' CLI command. This will show the subs for every channel. | ||
|  |   * Cleanup another bunch of CLI commands. Now all modules follow the same schema. | ||
|  |     (Done by lmadsen, junky and mvanbaak during the devcon 2008) | ||
|  | 
 | ||
|  | SIP changes | ||
|  | ----------- | ||
|  |  * Added a new 'faxdetect=yes|no' configuration option to sip.conf.  When this | ||
|  |     option is enabled, Asterisk will watch for a CNG tone in the incoming audio | ||
|  |     for a received call.  If it is detected, the channel will jump to the | ||
|  |     'fax' extension in the dialplan. | ||
|  |   * The default SIP useragent= identifier now includes the Asterisk version | ||
|  |   * A new option, match_auth_username in sip.conf changes the matching of incoming requests. | ||
|  |      If set, and the incoming request carries authentication info, | ||
|  |      the username to match in the users list is taken from the Digest header | ||
|  |      rather than from the From: field. This feature is considered experimental. | ||
|  |   * The "musiconhold" and "musicclass" settings in sip.conf are now removed, | ||
|  |      since they where replaced by "mohsuggest" and "mohinterpret" in version 1.4 | ||
|  |   * The "localmask" setting was removed in version 1.2 and the reminder about it | ||
|  |      being removed is now also removed. | ||
|  |   * A new option "busylevel" for setting a level of calls where asterisk reports | ||
|  |      a device as busy, to separate it from call-limit. This value is also added | ||
|  |      to the SIP_PEER dialplan function. | ||
|  |   * A new realtime family called "sipregs" is now supported to store SIP registration | ||
|  |      data. If this family is defined, "sippeers" will be used for configuration and | ||
|  |      "sipregs" for registrations. If it's not defined, "sippeers" will be used for | ||
|  |      registration data, as before. | ||
|  |   * The SIPPEER function have new options for port address, call and pickup groups | ||
|  |   * Added support for T.140 realtime text in SIP/RTP | ||
|  |   * The "checkmwi" option has been removed from sip.conf, as it is no longer | ||
|  |      required due to the restructuring of how MWI is handled.  See the descriptions | ||
|  |      in this file of the "pollmailboxes" and "pollfreq" options to voicemail.conf | ||
|  |      for more information. | ||
|  |   * Added rtpdest option to CHANNEL() dialplan function. | ||
|  |   * Added SIPREFERRINGCONTEXT and SIPREFERREDBYHDR variables which are set when a transfer takes place. | ||
|  |   * SIP now adds a header to the CANCEL if the call was answered by another phone | ||
|  |      in the same dial command, or if the new c option in dial() is used. | ||
|  |   * The new default is that 100 Trying is not sent on REGISTER attempts as the RFC specifically | ||
|  |      states it is not needed. For phones, however, that do require it the "registertrying" option | ||
|  |      has been added so it can be enabled. | ||
|  |   * A new option called "callcounter" (global/peer/user level) enables call counters needed | ||
|  |      for better status reports needed for queues and SIP subscriptions. (Call-Limit was previously | ||
|  |      used to enable this functionality). | ||
|  |   * New settings for timer T1 and timer B on a global level or per device. This makes it | ||
|  |      possible to force timeout faster on non-responsive SIP servers. These settings are | ||
|  |      considered advanced, so don't use them unless you have a problem. | ||
|  |   * Added a dial string option to be able to set the To: header in an INVITE to any | ||
|  |      SIP uri. | ||
|  |   * Added a new global and per-peer option, qualifyfreq, which allows you to configure | ||
|  |      the qualify frequency. | ||
|  |   * Added SIP Session Timers support (RFC 4028).  This prevents stuck SIP sessions that | ||
|  |      were not properly torn down due to network or endpoint failures during an established | ||
|  |      SIP session. | ||
|  |   * Added experimental TCP and TLS support for SIP.  See https://wiki.asterisk.org/wiki/x/ygBB | ||
|  |      and configs/sip.conf.sample for more information on how it is used. | ||
|  |   * Added a new configuration option "authfailureevents" that enables manager events when | ||
|  |     a peer can't authenticate properly. | ||
|  |   * Added DNS manager support to registrations for peers not referencing a peer entry. | ||
|  | 
 | ||
|  | IAX2 changes | ||
|  | ------------ | ||
|  |   * Added the trunkmaxsize configuration option to chan_iax2. | ||
|  |   * Added the srvlookup option to iax.conf | ||
|  |   * Added support for OSP.  The token is set and retrieved through the CHANNEL() | ||
|  |      dialplan function. | ||
|  | 
 | ||
|  | XMPP Google Talk/Jingle changes | ||
|  | ------------------------------- | ||
|  |   * Added the bindaddr option to gtalk.conf. | ||
|  | 
 | ||
|  | Skinny changes | ||
|  | ------------- | ||
|  |   * Added skinny show device, skinny show line, and skinny show settings CLI commands. | ||
|  |   * Proper codec support in chan_skinny. | ||
|  |   * Added settings for IP and Ethernet QoS requests | ||
|  | 
 | ||
|  | MGCP changes | ||
|  | ------------ | ||
|  |   * Added separate settings for media QoS in mgcp.conf | ||
|  | 
 | ||
|  | Console Channel Driver changes | ||
|  | ------------------------------ | ||
|  |   * Added experimental support for video send & receive to chan_oss. | ||
|  |     This requires SDL and ffmpeg/avcodec, plus Video4Linux or X11 to act as | ||
|  |     a video source. | ||
|  | 
 | ||
|  | Phone channel changes (chan_phone) | ||
|  | ---------------------------------- | ||
|  |   * Added G729 passthrough support to chan_phone for Sigma Designs boards. | ||
|  | 
 | ||
|  | H.323 channel Changes | ||
|  | --------------------- | ||
|  |   * H323 remote hold notification support added (by NOTIFY message | ||
|  |      and/or H.450 supplementary service) | ||
|  | 
 | ||
|  | Local channel changes | ||
|  | --------------------- | ||
|  |   * The device state functionality in the Local channel driver has been updated | ||
|  |      to indicate INUSE or NOT_INUSE when a Local channel is being used as opposed | ||
|  |      to just UNKNOWN if the extension exists. | ||
|  |   * Added jitterbuffer support for chan_local.  This allows you to use the | ||
|  |      generic jitterbuffer on incoming calls going to Asterisk applications. | ||
|  |      For example, this would allow you to use a jitterbuffer for an incoming | ||
|  |      SIP call to Voicemail by putting a Local channel in the middle.  This | ||
|  |      feature is enabled by using the 'j' option in the Dial string to the Local | ||
|  |      channel in conjunction with the existing 'n' option for local channels. | ||
|  |   * A 'b' option has been added which causes chan_local to return the actual channel | ||
|  |      that is behind it when queried. This is useful for transfer scenarios as the | ||
|  |      actual channel will be transferred, not the Local channel. | ||
|  | 
 | ||
|  | Agent channel changes | ||
|  | ---------------------- | ||
|  |   * The ackcall and endcall options are now supplemented with options acceptdtmf | ||
|  |     and enddtmf. These allow for the DTMF keypress to be configurable. The options | ||
|  |     default to their old hard-coded values ('#' and '*' respectively) so this should | ||
|  |     not break any existing agent installations. | ||
|  | 
 | ||
|  | DAHDI channel driver (chan_dahdi) Changes | ||
|  | ---------------------------------------- | ||
|  |   * SS7 support (via libss7 library) | ||
|  |   * In India, some carriers transmit CID via dtmf. Some code has been added | ||
|  |      that will handle some situations. The cidstart=polarity_IN choice has been added for | ||
|  |      those carriers that transmit CID via dtmf after a polarity change. | ||
|  |   * CID matching information is now shown when doing 'dialplan show'. | ||
|  |   * Added dahdi show version CLI command. | ||
|  |   * Added setvar support to chan_dahdi.conf channel entries. | ||
|  |   * Added two new options: mwimonitor and mwimonitornotify.  These options allow | ||
|  |      you to enable MWI monitoring on FXO lines.  When the MWI state changes, | ||
|  |      the script specified in the mwimonitornotify option is executed.  An internal | ||
|  |      event indicating the new state of the mailbox is also generated, so that | ||
|  |      the normal MWI facilities in Asterisk work as usual. | ||
|  |   * Added signalling type 'auto', which attempts to use the same signalling type | ||
|  |      for a channel as configured in DAHDI. This is primarily designed for analog | ||
|  |      ports, but will also work for digital ports that are configured for FXS or FXO | ||
|  |      signalling types. This mode is also the default now, so if your chan_dahdi.conf | ||
|  |      does not specify signalling for a channel (which is unlikely as the sample | ||
|  |      configuration file has always recommended specifying it for every channel) then | ||
|  |      the 'auto' mode will be used for that channel if possible. | ||
|  |   * Added a 'dahdi set dnd' command to allow CLI control of the Do-Not-Disturb | ||
|  |      state for a channel; also ensured that the DNDState Manager event is | ||
|  |      emitted no matter how the DND state is set or cleared. | ||
|  | 
 | ||
|  | New Channel Drivers | ||
|  | ------------------- | ||
|  |   * Added a new channel driver, chan_unistim.  See the Asterisk wiki at | ||
|  |      https://wiki.asterisk.org/wiki/x/vgsiAQ and configs/unistim.conf.sample | ||
|  |      for details.  This new channel driver allows you to use Nortel i2002, | ||
|  |      i2004, and i2050 phones with Asterisk. | ||
|  |   * Added a new channel driver, chan_console, which uses portaudio as a cross | ||
|  |      platform audio interface.  It was written as a channel driver that would | ||
|  |      work with Mac CoreAudio, but portaudio supports a number of other audio | ||
|  |      interfaces, as well. Note that this channel driver requires v19 or higher | ||
|  |      of portaudio; older versions have a different API. | ||
|  | 
 | ||
|  | DUNDi changes | ||
|  | ------------- | ||
|  |   * Added the ability to specify arguments to the Dial application when using | ||
|  |      the DUNDi switch in the dialplan. | ||
|  |   * Added the ability to set weights for responses dynamically.  This can be | ||
|  |      done using a global variable or a dialplan function.  Using the SHELL() | ||
|  |      function would allow you to have an external script set the weight for | ||
|  |      each response. | ||
|  |   * Added two new dialplan functions, DUNDIQUERY and DUNDIRESULT.  These | ||
|  |      functions will allow you to initiate a DUNDi query from the dialplan, | ||
|  |      find out how many results there are, and access each one. | ||
|  |   * Added the ability to specify a port for a dundi peer. | ||
|  | 
 | ||
|  | ENUM changes | ||
|  | ------------ | ||
|  |   * Added two new dialplan functions, ENUMQUERY and ENUMRESULT.  These | ||
|  |      functions will allow you to initiate an ENUM lookup from the dialplan, | ||
|  |      and Asterisk will cache the results.  ENUMRESULT can be used to access | ||
|  |      the results without doing multiple DNS queries. | ||
|  | 
 | ||
|  | Voicemail Changes | ||
|  | ----------------- | ||
|  |   * Added the ability to customize which sound files are used for some of the | ||
|  |      prompts within the Voicemail application by changing them in voicemail.conf | ||
|  |   * Added the ability for the "voicemail show users" CLI command to show users | ||
|  |      configured by the dynamic realtime configuration method. | ||
|  |   * MWI (Message Waiting Indication) handling has been significantly | ||
|  |      restructured internally to Asterisk.  It is now totally event based | ||
|  |      instead of polling based.  The voicemail application will notify other | ||
|  |      modules that have subscribed to MWI events when something in the mailbox | ||
|  |      changes. | ||
|  |     This also means that if any other entity outside of Asterisk is changing | ||
|  |      the contents of mailboxes, then the voicemail application still needs to | ||
|  |      poll for changes.  Examples of situations that would require this option | ||
|  |      are web interfaces to voicemail or an email client in the case of using | ||
|  |      IMAP storage.  So, two new options have been added to voicemail.conf | ||
|  |      to account for this: "pollmailboxes" and "pollfreq".  See the sample | ||
|  |      configuration file for details. | ||
|  |   * Added "tw" language support | ||
|  |   * Added support for storage of greetings using an IMAP server | ||
|  |   * Added ability to customize forward, reverse, stop, and pause keys for message playback | ||
|  |   * SMDI is now enabled in voicemail using the smdienable option. | ||
|  |   * A "lockmode" option has been added to asterisk.conf to configure the file | ||
|  |      locking method used for voicemail, and potentially other things in the | ||
|  |      future.  The default is the old behavior, lockfile.  However, there is a | ||
|  |      new method, "flock", that uses a different method for situations where the | ||
|  |      lockfile will not work, such as on SMB/CIFS mounts. | ||
|  |   * Added the ability to backup deleted messages, to ease recovery in the case | ||
|  |      that a user accidentally deletes a message, and discovers that they need it. | ||
|  |   * Reworked the SMDI interface in Asterisk.  The new way to access SMDI information | ||
|  |      is through the new functions, SMDI_MSG_RETRIEVE() and SMDI_MSG().  The file | ||
|  |      smdi.conf can now be configured with options to map SMDI station IDs to Asterisk | ||
|  |      voicemail boxes.  The SMDI interface can also poll for MWI changes when some | ||
|  |      outside entity is modifying the state of the mailbox (such as IMAP storage or | ||
|  |      a web interface of some kind). | ||
|  |   * Added the support for marking messages as "urgent." There are two methods to accomplish | ||
|  |      this. One is to pass the 'U' option to VoiceMail(). Another way to mark a message as urgent | ||
|  |      is to specify "review=yes" in voicemail.conf. Doing this will cause allow the user to mark | ||
|  |      the message as urgent after he has recorded a voicemail by following the voice instructions. | ||
|  |     When listening to voicemails using VoiceMailMain urgent messages will be presented before other | ||
|  |      messages | ||
|  |   * Added "is" language support | ||
|  | 
 | ||
|  | Queue changes | ||
|  | ------------- | ||
|  |   * Added the general option 'shared_lastcall' so that member's wrapuptime may be | ||
|  |      used across multiple queues. | ||
|  |   * Added QUEUE_VARIABLES function to set queue variables added setqueuevar and | ||
|  |      setqueueentryvar options for each queue, see queues.conf.sample for details. | ||
|  |   * Added keepstats option to queues.conf which will keep queue | ||
|  |      statistics during a reload. | ||
|  |   * setinterfacevar option in queues.conf also now sets a variable | ||
|  |      called MEMBERNAME which contains the member's name. | ||
|  |   * Added 'Strategy' field to manager event QueueParams which represents | ||
|  |      the queue strategy in use. | ||
|  |   * Added option to run macro when a queue member is connected to a caller, | ||
|  |      see queues.conf.sample for details. | ||
|  |   * app_queue now has a 'loose' option which is almost exactly like 'strict' except it | ||
|  |      does not count paused queue members as unavailable. | ||
|  |   * Added min-announce-frequency option to queues.conf which allows you to control the | ||
|  |      minimum amount of time between queue announcements for use when the caller's queue | ||
|  |      position changes frequently. | ||
|  |   * Added additional information to EXITWITHTIMEOUT and EXITWITHKEY events in the | ||
|  |      queue log. | ||
|  |   * Added ability for non-realtime queues to have realtime members | ||
|  |   * Added the "linear" strategy to queues. | ||
|  |   * Added the "wrandom" strategy to queues. | ||
|  |   * Added new channel variable QUEUE_MIN_PENALTY | ||
|  |   * QUEUE_MAX_PENALTY and QUEUE_MIN_PENALTY may be adjusted in mid-call by defining | ||
|  |      rules in queuerules.conf. See configs/queuerules.conf.sample for details | ||
|  |   * Added a new parameter for member definition, called state_interface. This may be | ||
|  |     used so that a member may be called via one interface but have a different interface's | ||
|  |     device state reported. | ||
|  |   * Added new CLI and Manager commands relating to reloading queues. From the CLI, see | ||
|  |     "queue reload", "queue reset stats". Also see "manager show command QueueReload" and | ||
|  |     "manager show command QueueReset." | ||
|  |   * New configuration option: randomperiodicannounce. If a list of periodic announcements is | ||
|  |     specified by the periodic-announce option, then one will be chosen randomly when it is time | ||
|  |     to play a periodic announcment | ||
|  |   * New configuration options: announce-position now takes two more values in addition to "yes" and | ||
|  |     "no." Two new options, "limit" and "more," are allowed. These are tied to another option, | ||
|  |     announce-position-limit. By setting announce-position to "limit" callers will only have their | ||
|  |     position announced if their position is less than what is specified by announce-position-limit. | ||
|  |     If announce-position is set to "more" then callers beyond the position specified by announce-position-limit | ||
|  |     will be told that their are more than announce-position-limit callers waiting. | ||
|  |   * Two new queue log events have been added. An ADDMEMBER event will be logged | ||
|  |     when a realtime queue member is added and a REMOVEMEMBER event will be logged | ||
|  |     when a realtime queue member is removed. Since there is no calling channel associated | ||
|  |     with these events, the string "REALTIME" is placed where the channel's unique id | ||
|  |     is typically placed. | ||
|  |   * The configuration method for the "joinempty" and "leavewhenempty" options has | ||
|  |     changed to a comma-separated list of methods of determining member availability | ||
|  |     instead of vague terms such as "yes," "loose," "no," and "strict." These old four | ||
|  |     values are still accepted for backwards-compatibility, though. | ||
|  |   * The average talktime is now calculated on queues. This information is reported via the | ||
|  |     CLI commands "queue show" and "queues show"; through the AMI events AgentComplete, QueueSummary, | ||
|  |     and QueueParams; and through the channelvariable QUEUETALKTIME if setinterfacevar=yes is set for | ||
|  |     the queue. | ||
|  | 
 | ||
|  | MeetMe Changes | ||
|  | -------------- | ||
|  |   * The 'o' option to provide an optimization has been removed and its functionality | ||
|  |      has been enabled by default. | ||
|  |   * When a conference is created, the UNIQUEID of the channel that caused it to be | ||
|  |      created is stored.  Then, every channel that joins the conference will have the | ||
|  |      MEETMEUNIQUEID channel variable set with this ID.  This can be used to relate | ||
|  |      callers that come and go from long standing conferences. | ||
|  |   * Added a new application, MeetMeChannelAdmin, which is similar to MeetMeAdmin, | ||
|  |      except it does operations on a channel by name, instead of number in a conference. | ||
|  |      This is a very useful feature in combination with the 'X' option to ChanSpy. | ||
|  |   * Added 'C' option to Meetme which causes a caller to continue in the dialplan | ||
|  |      when kicked out. | ||
|  |   * Added new RealTime functionality to provide support for scheduled conferencing. | ||
|  |      This includes optional messages to the caller if they attempt to join before | ||
|  |      the schedule start time, or to allow the caller to join the conference early. | ||
|  |      Also included is optional support for limiting the number of callers per | ||
|  |      RealTime conference. | ||
|  |   * Added the S() and L() options to the MeetMe application.  These are pretty | ||
|  |      much identical to the S() and L() options to Dial().  They let you set | ||
|  |      timeouts for the conference, as well as have warning sounds played to | ||
|  |      let the caller know how much time is left, and when it is running out. | ||
|  |   * Added the ability to do "meetme concise" with the "meetme" CLI command. | ||
|  |      This extends the concise capabilities of this CLI command to include | ||
|  |      listing all conferences, instead of an addition to the other sub commands | ||
|  |      for the "meetme" command. | ||
|  |   * Added the ability to specify the music on hold class used to play into the | ||
|  |      conference when there is only one member and the M option is used. | ||
|  |   * Added MEETME_INFO dialplan function which provides a way to query | ||
|  |      various properties of a Meetme conference. | ||
|  |   * Added new admin features: *81: Roll call, *82: eject all, *83: mute all, | ||
|  |      and *84: record in-conf | ||
|  | 
 | ||
|  | Other Dialplan Application Changes | ||
|  | ---------------------------------- | ||
|  |   * Argument support for Gosub application | ||
|  |   * From the to-do lists: straighten out the app timeout args: | ||
|  |      Wait() app now really does 0.3 seconds- was truncating arg to an int. | ||
|  |      WaitExten() same as Wait(). | ||
|  |      Congestion() - Now takes floating pt. argument. | ||
|  |      Busy() - now takes floating pt. argument. | ||
|  |      Read() - timeout now can be floating pt. | ||
|  |      WaitForRing() now takes floating pt timeout arg. | ||
|  |      SpeechBackground() -- clarified in the docstrings that the timeout is an integer seconds. | ||
|  |   * Added 's' option to Page application. | ||
|  |   * Added an optional timeout argument to the Page application. | ||
|  |   * Added 'E', 'V', and 'P' commands to ExternalIVR. | ||
|  |   * Added 'o' and 'X' options to Chanspy. | ||
|  |   * Added a new dialplan application, Bridge, which allows you to bridge the | ||
|  |      calling channel to any other active channel on the system. | ||
|  |   * Added the ability to specify a music on hold class to play instead of ringing | ||
|  |      for the SLATrunk application. | ||
|  |   * The Read application no longer exits the dialplan on error.  Instead, it sets | ||
|  |      READSTATUS to ERROR, which you can catch and handle separately. | ||
|  |   * Added 'm' option to Directory, which lists out names, 8 at a time, instead | ||
|  |      of asking for verification of each name, one at a time. | ||
|  |   * Privacy() no longer uses privacy.conf, as all options are specifiable as | ||
|  |      direct options to the app. | ||
|  |   * AMD() has a new "maximum word length" option. "show application AMD" from the CLI | ||
|  |      for more details | ||
|  |   * GotoIfTime() now may branch based on a "false" condition, like other Goto-related applications | ||
|  |   * The ChannelRedirect application no longer exits the dialplan if the given channel | ||
|  |      does not exist. It will now set the CHANNELREDIRECT_STATUS variable to SUCCESS upon success | ||
|  |      or NOCHANNEL if the given channel was not found. | ||
|  |   * The silencethreshold setting that was previously configurable in multiple | ||
|  |      applications is now settable globally via dsp.conf. | ||
|  | 
 | ||
|  | Music On Hold Changes | ||
|  | --------------------- | ||
|  |   * A new option, "digit", has been added for music on hold classes in | ||
|  |      musiconhold.conf.  If this is set for a music on hold class, a caller | ||
|  |      listening to music on hold can press this digit to switch to listening | ||
|  |      to this music on hold class. | ||
|  |   * Support for realtime music on hold has been added. | ||
|  |   * In conjunction with the realtime music on hold, a general section has | ||
|  |      been added to musiconhold.conf, its sole variable is cachertclasses. If this | ||
|  |      is set, then music on hold classes found in realtime will be cached in memory. | ||
|  | 
 | ||
|  | AEL Changes | ||
|  | ----------- | ||
|  |   * AEL upgraded to use the Gosub with Arguments instead | ||
|  |      of Macro application, to hopefully reduce the problems | ||
|  |      seen with the artificially low stack ceiling that | ||
|  |      Macro bumps into. Macros can only call other Macros | ||
|  |      to a depth of 7. Tests run using gosub, show depths | ||
|  |      limited only by virtual memory. A small test demonstrated | ||
|  |      recursive call depths of 100,000 without problems. | ||
|  |      -- in addition to this, all apps that allowed a macro | ||
|  |      to be called, as in Dial, queues, etc, are now allowing | ||
|  |      a gosub call in similar fashion. | ||
|  |   * AEL now generates LOCAL(argname) declarations when it | ||
|  |      Set()'s the each arg name to the value of ${ARG1}, ${ARG2), | ||
|  |      etc. That makes the arguments local in scope. The user | ||
|  |      can define their own local variables in macros, now, | ||
|  |      by saying "local myvar=someval;"  or using Set() in this | ||
|  |      fashion:  Set(LOCAL(myvar)=someval);  ("local" is now | ||
|  |      an AEL keyword). | ||
|  |   * utils/conf2ael introduced. Will convert an extensions.conf | ||
|  |      file into extensions.ael. Very crude and unfinished, but | ||
|  |      will be improved as time goes by. Should be useful for a | ||
|  |      first pass at conversion. | ||
|  |   * aelparse will now read extensions.conf to see if a referenced | ||
|  |      macro or context is there before issuing a warning. | ||
|  |   * AEL parser sets a local channel variable ~~EXTEN~~, to | ||
|  |     preserve the value of ${EXTEN} thru switch statements. | ||
|  |   * New operator in $[...] expressions: the ~~ operator serves | ||
|  |     as a concatenation operator. AT THE MOMENT, it is really only | ||
|  |     necessary and useful in AEL, especially in if() expressions. | ||
|  |     Operation: ${a} ~~ ${b|  with force both a and b to strings, strip | ||
|  |     any enclosing double-quotes, and evaluate to the value of a | ||
|  |     concatenated with the value of b.  For example if a is set to | ||
|  |     "xyz"  and b has the value "abc", then ${a} ~~ ${b| would | ||
|  |     evaluate to xyzabc . | ||
|  | 
 | ||
|  | 
 | ||
|  | Call Features (res_features) Changes | ||
|  | ------------------------------------ | ||
|  |   * Added the parkedcalltransfers option to features.conf | ||
|  |   * Added parkedcallparking option to control one touch parking w/ parking | ||
|  |     pickup | ||
|  |   * Added parkedcallhangup option to control disconnect feature w/ parking | ||
|  |     pickup | ||
|  |   * Added parkedcallrecording option to control one-touch record w/ parking | ||
|  |     pickup | ||
|  |   * Added parkedcallparking, parkedcallhangup, parkedcallrecording, and | ||
|  |     parkedcalltransfers option support for multiple parking lots. | ||
|  |   * Added BRIDGE_FEATURES variable to set available features for a channel | ||
|  |   * The built-in method for doing attended transfers has been updated to | ||
|  |      include some new options that allow you to have the transferee sent | ||
|  |      back to the person that did the transfer if the transfer is not successful. | ||
|  |      See the options "atxferdropcall", "atxferloopdelay", and "atxfercallbackretries" | ||
|  |      in features.conf.sample. | ||
|  |   * Added support for configuring named groups of custom call features in | ||
|  |      features.conf.  This means that features can be written a single time, and | ||
|  |      then mapped into groups of features for different key mappings or easier | ||
|  |      access control. | ||
|  |   * Updated the ParkedCall application to allow you to not specify a parking | ||
|  |      extension.  If you don't specify a parking space to pick up, it will grab | ||
|  |      the first one available. | ||
|  |   * Added cli command 'features reload' to reload call features from features.conf | ||
|  |   * Moved into core asterisk binary. | ||
|  |   * Changed the default setting for featuredigittimeout to 2000 ms from 500 ms. | ||
|  |   * Added the ability for custom parking lots to be configured with their own | ||
|  |     parking extension with the parkext option. | ||
|  | 
 | ||
|  | Language Support Changes | ||
|  | ------------------------ | ||
|  |   * Brazilian Portuguese (pt-BR) in VM, and say.c was added | ||
|  |   * Added support for the Hungarian language for saying numbers, dates, and times. | ||
|  | 
 | ||
|  | AGI Changes | ||
|  | ----------- | ||
|  |   * Added SPEECH commands for speech recognition. A complete listing can be found | ||
|  |     using agi show. | ||
|  |   * If app_stack is loaded, GOSUB is a native AGI command that may be used to | ||
|  |     invoke subroutines in the dialplan.  Note that calling EXEC with Gosub | ||
|  |     does not behave as expected; the native command needs to be used, instead. | ||
|  |   * Added the ability to perform SRV lookups on fast AGI calls. To use this | ||
|  |     feature, simply use hagi: instead of agi: as the protocol portion | ||
|  |     of the URI parameter to the AGI function call in your dial plan. Also note | ||
|  |     that specifying a port number in the AGI URI will disable SRV lookups, | ||
|  |     even if you use the hagi: protocol. | ||
|  |   * No longer support MSG_OOB flag on HANGUP. | ||
|  | 
 | ||
|  | Logger changes | ||
|  | -------------- | ||
|  |   * Added rotatestrategy option to logger.conf, along with two new options: | ||
|  |      "timestamp" which will use the time to name the logger files instead of | ||
|  |      sequence number; and "rotate", which rotates the names of the log files, | ||
|  |      similar to the way syslog rotates files. | ||
|  |   * Added exec_after_rotate option to logger.conf, which allows a system | ||
|  |      command to be run after rotation.  This is primarily useful with | ||
|  |      rotatestrategy=rotate, to allow a limit on the number of log files kept | ||
|  |      and to ensure that the oldest log file gets deleted. | ||
|  |   * Added realtime support for the queue log | ||
|  | 
 | ||
|  | Call Detail Records | ||
|  | ------------------- | ||
|  |   * The cdr_manager module has a [mappings] feature, like cdr_custom, | ||
|  |     to add fields to the manager event from the CDR variables. | ||
|  |   * Added cdr_adaptive_odbc, a new module that adapts to the structure of your | ||
|  |      backend database CDR table.  Specifically, additional, non-standard | ||
|  |      columns are supported, merely by setting the corresponding CDR variable in | ||
|  |      your dialplan.  In addition, you may alias any column to another name (for | ||
|  |      example, if you want the 'src' CDR variable to be column 'ANI' in the DB, | ||
|  |      simply "alias src => ANI" in the configuration file).  Records may be | ||
|  |      posted to more than one backend, simply by specifying multiple categories | ||
|  |      in the configuration file.  And finally, you may filter which CDRs get | ||
|  |      posted to each backend, by specifying a filter (which the record must | ||
|  |      match) for the particular category.  Filters are additive (meaning all | ||
|  |      rules must match to post that CDR). | ||
|  |   * The Postgres CDR module now supports some features of the cdr_adaptive_odbc | ||
|  |      module.  Specifically, you may add additional columns into the table and | ||
|  |      they will be set, if you set the corresponding CDR variable name.  Also, | ||
|  |      if you omit columns in your database table, they will be silently skipped | ||
|  |      (but a record will still be inserted, based on what columns remain).  Note | ||
|  |      that the other two features from cdr_adaptive_odbc (alias and filter) are | ||
|  |      not currently supported. | ||
|  |   * The ResetCDR application now has an 'e' option that re-enables a CDR if it | ||
|  |      has been disabled using the NoCDR application. | ||
|  | 
 | ||
|  | Miscellaneous New Modules | ||
|  | ------------------------- | ||
|  |   * Added a new CDR module, cdr_sqlite3_custom. | ||
|  |   * Added a new realtime configuration module, res_config_sqlite | ||
|  |   * Added a new codec translation module, codec_resample, which re-samples | ||
|  |      signed linear audio between 8 kHz and 16 kHz to help support wideband | ||
|  |      codecs. | ||
|  |   * Added a new module, res_phoneprov, which allows auto-provisioning of phones | ||
|  |      based on configuration templates that use Asterisk dialplan function and | ||
|  |      variable substitution.  It should be possible to create phone profiles and | ||
|  |      templates that work for the majority of phones provisioned over http. It | ||
|  |      is currently only intended to provision a single user account per phone. | ||
|  |      An example profile and set of templates for Polycom phones is provided. | ||
|  |      NOTE: Polycom firmware is not included, but should be placed in | ||
|  |      AST_DATA_DIR/phoneprov/configs to match up with the included templates. | ||
|  |   * Added a new module, app_jack, which provides interfaces to JACK, the Jack | ||
|  |      Audio Connection Kit (http://www.jackaudio.org/).  Two interfaces are | ||
|  |      provided; there is a JACK() application, and a JACK_HOOK() function.  Both | ||
|  |      interfaces create an input and output JACK port.  The application makes | ||
|  |      these ports the endpoint of the call.  The audio coming from the channel | ||
|  |      goes out the output port and whatever comes back in on the input port is | ||
|  |      what gets sent to the channel.  The JACK_HOOK() function turns on a JACK | ||
|  |      audiohook on the channel.  This lets you run the audio coming from a | ||
|  |      channel through JACK, and whatever comes back in is what gets forwarded | ||
|  |      on as the channel's audio.  This is very useful for building custom | ||
|  |      vocoders or doing recording or analysis of the channel's audio in another | ||
|  |      application. | ||
|  |   * Added a new module, res_config_curl, which permits using a HTTP POST url | ||
|  |      to retrieve, create, update, and delete realtime information from a remote | ||
|  |      web server.  Note that this module requires func_curl.so to be loaded for | ||
|  |      backend functionality. | ||
|  |   * Added a new module, res_config_ldap, which permits the use of an LDAP | ||
|  |      server for realtime data access. | ||
|  |   * Added support for writing and running your dialplan in lua using the pbx_lua | ||
|  |      module.  See configs/extensions.lua.sample for examples of how to do this. | ||
|  | 
 | ||
|  | Miscellaneous | ||
|  | ------------- | ||
|  |   * Ability to use libcap to set high ToS bits when non-root | ||
|  |      on Linux. If configure is unable to find libcap then you | ||
|  |      can use --with-cap to specify the path. | ||
|  |   * Added maxfiles option to options section of asterisk.conf which allows you to specify | ||
|  |      what Asterisk should set as the maximum number of open files when it loads. | ||
|  |   * Added the jittertargetextra configuration option. | ||
|  |   * Added support for setting the CoS for VLAN traffic (802.1p).  See the sample | ||
|  |      configuration files for the IP channel drivers.  The new option is "cos". | ||
|  |      This information is also documented on the Asterisk wiki at | ||
|  |      https://wiki.asterisk.org/wiki/x/EYBG | ||
|  |   * When originating a call using AMI or pbx_spool that fails the reason for failure | ||
|  |      will now be available in the failed extension using the REASON dialplan variable. | ||
|  |   * Added support for reading the TOUCH_MONITOR_PREFIX channel variable. | ||
|  |      It allows you to configure a prefix for auto-monitor recordings. | ||
|  |   * A new extension pattern matching algorithm, based on a trie, is introduced | ||
|  |      here, that could noticeably speed up mid-sized to large dialplans. | ||
|  |      It is NOT used by default, as duplicating the behaviour of the old pattern | ||
|  |      matcher is still under development. A config file option, in extensions.conf, | ||
|  |      in the [general] section, called "extenpatternmatchingnew", is by default | ||
|  |      set to false; setting that to true will force the use of the new algorithm. | ||
|  |      Also, the cli commands "dialplan set extenpatternmatchingnew true/false" can | ||
|  |      be used to switch the algorithms at run time. | ||
|  |   * A new option when starting a remote asterisk (rasterisk, asterisk -r) for | ||
|  |      specifying which socket to use to connect to the running Asterisk daemon | ||
|  |      (-s) | ||
|  |   * Performance enhancements to the sched facility, which is used in | ||
|  |     the channel drivers, etc. Added hashtabs and doubly-linked lists | ||
|  |     to speed up deletion; start at the beginning or end of list to | ||
|  |     speed up insertion. | ||
|  |   * Added Doubly-linked lists after the fashion of linkedlists.h. They are in | ||
|  |     dlinkedlists.h. Doubly-linked lists feature fast deletion times. | ||
|  |     Added regression tests to the tests/ dir, also. | ||
|  |   * Added a refcount trace feature to astobj2 for those trying to balance | ||
|  |     object creation, deletion; work, play; space and time. See the | ||
|  |     notes in astobj2.h. Also, see utils/refcounter as well, as a | ||
|  |     quick way to find unbalanced refcounts in what could be a sea | ||
|  |     of objects that were balanced. | ||
|  |   * Added logging to 'make update' command.  See update.log | ||
|  |   * Added strictrtp option to rtp.conf. If enabled this will drop RTP packets that | ||
|  |      do not come from the remote party. | ||
|  |   * Added the 'n' option to the SpeechBackground application to tell it to not | ||
|  |      answer the channel if it has not already been answered. | ||
|  |   * Added a compiler flag, CHANNEL_TRACE, which permits channel tracing to be | ||
|  |      turned on, via the CHANNEL(trace) dialplan function.  Could be useful for | ||
|  |      dialplan debugging. | ||
|  |   * iLBC source code no longer included (see UPGRADE.txt for details) | ||
|  |   * If compiled with DETECT_DEADLOCKS enabled and if you have glibc, then if | ||
|  |      deadlock is detected, a backtrace of the stack which led to the lock calls | ||
|  |      will be output to the CLI. | ||
|  |   * If compiled with DEBUG_THREADS enabled and if you have glibc, then issuing | ||
|  |      the "core show locks" CLI command will give lock information output as well | ||
|  |      as a backtrace of the stack which led to the lock calls. | ||
|  |   * users.conf now sports an optional alternateexts property, which permits | ||
|  |     allocation of additional extensions which will reach the specified user. | ||
|  |   * A new option for the configure script, --enable-internal-poll, has been added | ||
|  |     for use with systems which may have a buggy implementation of the poll system | ||
|  |     call. If you notice odd behavior such as the CLI being unresponsive on remote | ||
|  |     consoles, you may want to try using this option. This option is enabled by default | ||
|  |     on Darwin systems since it is known that the Darwin poll() implementation has | ||
|  |     odd issues. | ||
|  | 
 | ||
|  | Timer Changes | ||
|  | -------------------- | ||
|  | * In addition to timing from DAHDI, there is a new timing module called | ||
|  |   res_timing_timerfd. In order to use this, you must be running Linux with | ||
|  |   a kernel version 2.6.25 or newer as well as glibc 2.8 or newer. The configure | ||
|  |   script will be able to tell if you have the requirements. From menuselect, select | ||
|  |   res_timing_timerfd from the Resource Modules menu. |