diff --git a/CHANGES b/CHANGES deleted file mode 100644 index 401a886c62..0000000000 --- a/CHANGES +++ /dev/null @@ -1,8263 +0,0 @@ -============================================================================== -=== -=== 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 20.1.0 to Asterisk 20.2.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 20.0.0 to Asterisk 20.1.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 19.0.0 to Asterisk 20.0.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 19.0.0 to Asterisk 20.0.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). - -db ------------------- - * The DBPrefixGet AMI action now allows retrieving - all of the DB keys beginning with a particular - prefix. - -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 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. - - Added 4 built-in profiles: - "" - "" - "" - "" - 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. - -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 - -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. - -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. - -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. - -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. - -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. - -ami ------------------- - * An AMI event now exists for "Wink". - - * AMI events can now be globally disabled using - the disabledevents [general] setting. - -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. - - * 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_dtmfstore ------------------- - * New application which collects digits - dialed and stores them into - a specified variable. - -app_mf ------------------- - * Adds MF receiver and sender applications to support - the R1 MF signaling protocol, including integration - with the Dial application. - - * Adds an option to ReceiveMF to cap the - number of digits read at a user-specified - maximum. - -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_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 ------------------- - * 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. - - * 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. - - * 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 - - * 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. - - * The m option now allows an override music on hold - class to be specified for the Queue application - within the dialplan. - -app_queue.c ------------------- - * Allow multiple files to be streamed for agent announcement. - -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_read ------------------- - * A new option allows the digit '#' to be read literally, - rather than used exclusively as the input terminator - character. - -app_sendtext ------------------- - * A ReceiveText application has been added that can be - used in conjunction with the SendText application. - -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. - - * 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 - - * The r option has been added, which prevents deletion - of messages from VoiceMailMain, which can be - useful for shared mailboxes. - -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. - -ari ------------------- - * Expose channel driver's unique id (which is the Call-ID for SIP/PJSIP) - to ARI channel resources as 'protocol_id'. - - ASTERISK-30027 - -ast_coredumper ------------------- - * New options: - --pid= - Allows specification of an Asterisk instance when trying to - and the script can't determine it itself. - --libdir= - 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. - -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_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. - - * A POLARITY function is now available that allows - getting or setting the polarity on a channel - from the dialplan. - -chan_iax2 ------------------- - * ANI2 (OLI) is now transmitted over IAX2 calls - as an information element. - - * Both a secret and an outkey may be specified at dial time, - since encryption is possible with RSA authentication. - -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(). - - * 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 - -chan_sip.c ------------------- - * resolve issue with pickup on device that uses "183" and not "180" - -channel_internal_api ------------------- - * CHANNEL(lastcontext) and CHANNEL(lastexten) - are now available for use in the dialplan. - -cli ------------------- - * The "module refresh" command has been added, - which allows unloading and then loading a - module with a single command. - - * 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_channel ------------------- - * Adds the CHANNEL_EXISTS function to check for the existence - of a channel by name or unique ID. - -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_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_evalexten ------------------- - * This adds the EVAL_EXTEN function which may be - used to evaluate data at dialplan extensions. - -func_framedrop ------------------- - * New function to selectively drop specified frames - in either direction on a channel. - -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. - -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. - -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. - -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_agi ------------------- - * Agi command 'exec' can now be enabled - to evaluate dialplan functions and variables - by setting the variable AGIEXECFULL to yes. - -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_fax_spandsp ------------------- - * Adds support for spandsp 3.0.0. - -res_geolocation ------------------- - * Added res_geolocation which creates the core capabilities - to manipulate Geolocation information on SIP INVITEs. - -res_parking ------------------- - * An m option to Park and ParkAndAnnounce now allows - specifying a music on hold class override. - -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_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. - -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. - -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. - -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. - -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.0.0 to Asterisk 19.0.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. - -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[: [] ...] - - 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. - - * 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. - - The default location for astcachedir is now /var/cache/asterisk - instead of /tmp, please make sure to manually cleanup and/or - migrate the temporary files in /tmp after upgrading. - -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. - -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_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". - -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_dial announcement option ------------------- - * The A option for Dial now supports - playing audio to the caller as well - as the called party. - -app_mixmonitor ------------------- - * app_mixmonitor now sends manager events MixMonitorStart, MixMonitorStop and - MixMonitorMute when the channel monitoring is started, stopped and muted (or - unmuted) respectively. - -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. - - * You can now customize the "beep" tone or omit it entirely. - -chan_iax2 ------------------- - * You can now specify a default "auth" method in the - [general] section of iax.conf - -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. - -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_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_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. - -func_volume now can be read ------------------- - * The VOLUME function can now also be used - to read existing values previously set. - -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 - - * 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.' - - * 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. - -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". - ------------------------------------------------------------------------------- ---- 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 - ":" as an alternative to ":" 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 - - When used this will create a pcap file containing the incoming - and outgoing SIP packets, in unencrypted form. - - pjsip set logger console - - This allows you to toggle logging to console on and off. - - pjsip set logger host 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 '), 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-'. 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 "" instead of "". - -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 : - Display detailed information about a registered ARI application. - - ari set debug : - 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/[/[]] - Where is something like '127.0.0.1:5060'. - Where are in standard Asterisk flag options format: - c() - Specify which codec/format to use such as 'ulaw'. - e() - 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//[/[][/[]]] - Where can be either 'basic' or 'linksys'. - Where is something like '224.0.0.3:5060'. - Where is something like '127.0.0.1:5060'. - Where are in standard Asterisk flag options format: - c() - Specify which codec/format to use such as 'ulaw'. - i(
) - Specify the interface address from which multicast RTP - is sent. - l() - 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() - 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 ' - show all cached media files, or details about - one particular cached media file - - 'media cache refresh ' - force a refresh of a particular media file - in the cache - - 'media cache delete ' - remove an item from the cache - - 'media cache create ' - 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 ' - 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 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, "" 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: 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 ' will also show the parked calls in a specific - parking lot. - - * The CLI command 'parkedcalls' is now deprecated in favor of - 'parking show '. - - * 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// - 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 - /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" - 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 " 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 [,[,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,) 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= 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:' to - retrieve state for a particular bridge, where 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" 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() - 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() - dialing option. Dial(DAHDI/g1/[extension]/K()) - 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 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 [ []]" which retrieves the - data tree based on the given . - * New CLI command "data show providers" that will display all the registered - callbacks. - * New CLI command, "config reload " 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 {|@|@} [] - - cli reload permissions - - cli show permissions - * New CLI command "core show hint" (usage: core show hint ) - * 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. diff --git a/UPGRADE.txt b/UPGRADE.txt deleted file mode 100644 index 972e4fb17a..0000000000 --- a/UPGRADE.txt +++ /dev/null @@ -1,3022 +0,0 @@ -=========================================================== -=== -=== THIS FILE IS AUTOMATICALLY GENERATED DURING THE RELEASE -=== PROCESS. DO NOT MAKE CHANGES HERE. INSTEAD, REFER TO -=== doc/UPGRADE-staging/README.md FOR MORE DETAILS. -=== -=== Information for upgrading between Asterisk versions -=== -=== This file documents all the changes that MUST be taken -=== into account when upgrading between certain Asterisk -=== versions. These changes may require that you modify -=== your configuration files, dialplan or (in some cases) -=== source code if you have your own Asterisk modules or -=== patches. This file also includes advance notice of any -=== functionality that has been marked as 'deprecated' and -=== may be removed in a future release, along with the -=== suggested replacement functionality. -=== -=========================================================== - ------------------------------------------------------------------------------- ---- Functionality changes from Asterisk 20.1.0 to Asterisk 20.2.0 ------------ ------------------------------------------------------------------------------- - -app_playback ------------------- - * In Asterisk 11, if a channel was redirected away during Playback(), - the PLAYBACKSTATUS variable would be set to SUCCESS. In Asterisk 12 - (specifically commit 7d9871b3940fa50e85039aef6a8fb9870a7615b9) that - behavior was inadvertently changed and the same operation would result - in the PLAYBACKSTATUS variable being set to FAILED. The Asterisk 11 - behavior has been restored. - ------------------------------------------------------------------------------- ---- Functionality changes from Asterisk 20.0.0 to Asterisk 20.1.0 ------------ ------------------------------------------------------------------------------- - -AMI (Asterisk Manager Interface) ------------------- - * Previously, GetConfig and UpdateConfig were able to access files outside of - the Asterisk configuration directory. Now this access is put behind the - live_dangerously configuration option in asterisk.conf, which is disabled by - default. If access to configuration files outside of the Asterisk configuation - directory is required via AMI, then the live_dangerously configuration option - must be set to yes. - ------------------------------------------------------------------------------- ---- Functionality changes from Asterisk 19.0.0 to Asterisk 20.0.0 ------------ ------------------------------------------------------------------------------- - -res_crypto ------------------- - * In addition to only paying attention to files ending with .key or .pub - in the keys directory, we now also ignore any files which aren't regular - files. - ------------------------------------------------------------------------------- ---- New functionality introduced in Asterisk 20.0.0 -------------------------- ------------------------------------------------------------------------------- - -res_monitor ------------------- - * This module is no longer built by default in - accordance with the Module Deprecation Policy. - If you require this functionality you will need - to enable it for building in menuselect. Note - that in the future res_monitor will be removed. - ------------------------------------------------------------------------------- ---- Functionality changes from Asterisk 19.0.0 to Asterisk 20.0.0 ------------ ------------------------------------------------------------------------------- - -AMI ------------------- - * The XML Manager Event Interface (amxml) now generates attribute names - that are compliant with the XML 1.1 specification. Previously, an - attribute name that started with a digit would be rendered as-is, even - though attribute names must not begin with a digit. We now prefix - attribute names that start with a digit with an underscore ('_') to - prevent XML validation failures. - -STIR/SHAKEN ------------------- - * The STIR/SHAKEN configuration option has been split into - 4 different choices: off, attest, verify, and on. Off and - on behave the same way as before. Attest will only perform - attestation on the endpoint, and verify will only perform - verification on the endpoint. - -chan_iax2 ------------------- - * Encryption is now supported for RSA authentication. - - Currently, these auth configurations will cause a crash: - auth = md5,rsa - auth = plaintext,md5,rsa - - With a patched peer, the following will cause a crash: - auth = rsa - auth = md5,rsa - auth = plaintext,md5,rsa - - If both the peer and user are patches, no crash occurs. - Existing good configurations should continue to work. - -res_http_media_cache ------------------- - * When fetching a file for playback from a URL, Asterisk will now first - use the value of the Content-Type header in the HTTP response to - determine the format of the audio data, and only if it is unable to do - that will it attempt to parse the URL and extract the extension from - the path portion. Previously Asterisk would first look at the end of - the URL, which may have included query string parameters or a URL - fragment, which was error prone. - -res_pjsip ------------------- - * The 'async_operations' setting on transports is no longer - obeyed and instead is always set to 1. This is due to the - functionality not being applicable to Asterisk and causing - excess unnecessary memory usage. This setting will now be - ignored but can also be removed from the configuration file. - ------------------------------------------------------------------------------- ---- New functionality introduced in Asterisk 19.0.0 -------------------------- ------------------------------------------------------------------------------- - -Log Rotate ------------------- - * The sample logger files have been changed to have .log as their file - extension. This was done so that when attached to issues on the issue - tracker, they are able to be opened in the browser for convenience. - Because of this, the asterisk.logrotate script has been updated to look - for .log extensions instead of no extension for files such as full - and messages. - -chan_sip ------------------- - * chan_sip is no longer built by default. To build it, make sure to - enable it when running 'make menuselect' - ------------------------------------------------------------------------------- ---- Functionality changes from Asterisk 18.0.0 to Asterisk 19.0.0 ------------ ------------------------------------------------------------------------------- - -STIR/SHAKEN ------------------- - * The configuration option public_key_url in stir_shaken.conf - has been renamed to public_cert_url to better fit what it - contains. Only the name has changed - functionality is the - same. - - * STIR/SHAKEN originally needed an origid to be specified in - stir_shaken.conf under the certificate config object in - order to work. Now, one is automatically created by - generating a UUID, as recommended by RFC8588. Any origid - you have in your stir_shaken.conf will need to be removed - for the module to read in certificates. - -menuselect ------------------- - * menuselect --enable, --disable, --enable-category and --disable-category will - now fail with a non-zero exit code instead of silently failing if an invalid - option or category is specified. - -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". - ------------------------------------------------------------------------------- ---- New functionality introduced in Asterisk 18.0.0 -------------------------- ------------------------------------------------------------------------------- - -Core ------------------- - * The ast_format_cap_from_stream_topology() function has been renamed - to ast_stream_topology_get_formats(). - -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. - -app_mixmonitor ------------------- - * In Asterisk 13.29, a new option flag was added to MixMonitor (the 'S' - option) that when combined with the r() or t() options would inject - silence into these files if audio was going to be written to one and - not that other. This allowed the files specified by r() and t() to - subsequently be mixed outside of Asterisk and be appropriately - synchronized. This behavior is now the default, and a new option has - been added to disable this behavior if desired (the 'n' option). - -app_queue ------------------- - * The 'Reason' header in the QueueMemberPause AMI Event has been - removed. The 'PausedReason' header should be used instead. - - * If they are not specified in [general], "shared_lastcall" and "autofill" - now always default to OFF. Before this version, they would be off ('no') if - queues.conf did not have a [general] section, but on ('yes') if it did. - -app_voicemail ------------------- - * The MessageExists dialplan application and the MESSAGE_EXISTS dialplan - function were removed. The were deprecated in Asterisk 1.6.0 and - Asterisk 11.0.0 respectively. The VM_INFO() dialplan function is the - supported mechanism to query the status of a given mailbox. - ------------------------------------------------------------------------------- ---- Functionality changes from Asterisk 17.0.0 to Asterisk 18.0.0 ------------ ------------------------------------------------------------------------------- - -AMI ------------------- - * The AMI Originate action, which optionally takes a dialplan application as - an argument, no longer accepts "Originate" as the application due to - security concerns. - -ARI ------------------- - * The "TextMessageReceived" event used to include a list of "TextMessageVariable" - objects as part of its output. Due to a couple of bugs in Asterisk a list of - received variables was never included even if ones were available. However, - variables set to send would be (which they should have not been), but would - fail validation due to the bad formatting. - - So basically there was no way to get a "TextMessageReceived" event with - variables. Due to this the API has changed. The "TextMessageVariable" object - no longer exists. "TextMessageReceived" now returns a JSON object of key/value - pairs. So for instance instead of a list of "TextMessageVariable" objects: - - [ TextMessageVariable, TextMessageVariable, TextMessageVariable] - - where a TextMessageVariable was supposed to be: - - { "key": "", "value":, "" } - - The output is now just: - - { "": "" } - - This aligns more with how variables are specified when sending a message, as - well as other variable lists in ARI. - -Core ------------------- - * The streams API function ast_stream_get_formats is - now defined as returning the format capabilities const. - This has always been the case but was never enforced - through the API itself. Any consumer of this API that - is not treating the formats as immutable should update - their code to create a new format capabilities and set - it on the stream instead. - -res_stasis ------------------- - * The "TextMessageReceived" event used to include a list of "TextMessageVariable" - objects as part of its output. Due to a couple of bugs in Asterisk a list of - received variables was never included even if ones were available. However, - variables set to send would be (which they should have not been), but would - fail validation due to the bad formatting. - - So basically there was no way to get a "TextMessageReceived" event with - variables. Due to this the API has changed. The "TextMessageVariable" object - no longer exists. "TextMessageReceived" now returns a JSON object of key/value - pairs. So for instance instead of a list of "TextMessageVariable" objects: - - [ TextMessageVariable, TextMessageVariable, TextMessageVariable] - - where a TextMessageVariable was supposed to be: - - { "key": "", "value":, "" } - - The output is now just: - - { "": "" } - - This aligns more with how variables are specified when sending a message, as - well as other variable lists in ARI. - -res_stir_shaken ------------------- - * A new directory has been added under the default (e.g., /var/lib/asterisk) - - inside the 'keys' directory - named 'stir_shaken'. This directory will - hold public keys that have been downloaded for STIR/SHAKEN verification. - ------------------------------------------------------------------------------- ---- New functionality introduced in Asterisk 17.0.0 -------------------------- ------------------------------------------------------------------------------- - -Applications ------------------- - * The JabberStatus application, deprecated in Asterisk 12, has been removed. - -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. - -Build ------------------- - * Asterisk headers are no longer installed and uninstalled automatically when - performing a "make install" or a "make uninstall". To install/uninstall the - headers, use "make install-headers" and "make uninstall-headers". The headers - also continue to be uninstalled when performing a "make uninstall-all". - -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 - -func_callerid ------------------- - * The CALLERPRES() dialplan function, deprecated in Asterisk 1.8, has been - removed. - -res_parking ------------------- - * The PARKINGSLOT channel variable, deprecated in Asterisk 12 in favor of the - PARKING_SPACE channel variable, will no longer be set. - -res_xmpp ------------------- - * The JabberStatus application, deprecated in Asterisk 12, has been removed. - ------------------------------------------------------------------------------- ---- Functionality changes from Asterisk 16.0.0 to Asterisk 17.0.0 ------------ ------------------------------------------------------------------------------- - -Core ------------------- - * res_pjsip_pubsub is now required so call transfer progress can be monitored - and reported in the channel variable TRANSFERSTATUS. - -app_voicemail.c ------------------- - * The "Voicemail Build Options" section of menuselect has been removed along with - the FILE_STORAGE, ODBC_STORAGE and IMAP_STORAGE menuselect options. All 3 variants - of the voicemail app can now be built at the same by enabling app_voicemail, - app_voicemail_imap, and app_voicemail_odbc under the "Applications" section. - By default, only app_voicemail is enabled. Also, the modules.conf sample has - been updated to "noload" app_voicemail_imap and app_voicemail_odbc should they - all be built. Packagers must update their build scripts appropriately. - -chan_pjsip ------------------- - * res_pjsip_pubsub is now required so call transfer progress can be monitored - and reported in the channel variable TRANSFERSTATUS. - -New in 16.0.0: - -app_fax: - - The app_fax module is now deprecated, users should migrate to the - replacement module res_fax. - -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. - -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 ContactStatus event will no longer be sent by PJSIP when a device - refreshes its registration. - - 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. - -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`. - -chan_dahdi: - - Timeouts for reading digits from analog phones are now configurable in - chan_dahdi.conf: firstdigit_timeout, interdigit_timeout, matchdigit_timeout. - -cdr_syslog: - - The cdr_syslog module is now deprecated and by default it is no longer - built. - -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. - -Core: - - libedit is no longer available as an embedded library and must be provided - by the system. - - 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. - -From 15.2.0 to 15.3.0: - -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. - -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. - -New in 15.0.0: - -Build System: - - '--with-pjproject-bundled' is now the default when running ./configure - It can be disabled with '--without-pjproject-bundled'. - -Core: - - Multi-stream support has been added so a channel can have multiple - streams of the same type such as audio and video. - - - The 'Data Retrieval API' has been removed. This API was not actively - maintained, was not added to new modules (such as res_pjsip), and there - exist better alternatives to acquire the same information, such as the - ARI. As a result, the 'DataGet' AMI action as well as the 'data get' - CLI command have been removed. - -From 14.6.0 to 14.7.0: - -Core: - - ast_app_parse_timelen now returns an error if it encounters extra characters - at the end of the string to be parsed. - -From 14.4.0 to 14.5.0: - -Core: - - Support for embedded modules has been removed. This has not worked in - many years. LOADABLE_MODULES menuselect option is also removed as - loadable module support is now always enabled. - -From 14.3.0 to 14.4.0: - -res_rtp_asterisk: - - The RTP layer of Asterisk now has support for RFC 5761: "Multiplexing RTP - Data and Control Packets on a Single Port." For the PJSIP channel driver, - chan_pjsip, you can set "rtcp_mux = yes" on a PJSIP endpoint in pjsip.conf - to enable the feature. For chan_sip you can set "rtcp_mux = yes" either - globally or on a per-peer basis in sip.conf. - -New in 14.0.0 - -ARI: - - The policy for when to send "Dial" events has changed. Previously, "Dial" - events were sent on the calling channel's topic. However, starting in Asterisk - 14, if there is no calling channel on which to send the event, the event is - instead sent on the called channel's topic. Note that for the ARI channels - resource's dial operation, this means that the "Dial" events will always be - sent on the called channel's topic. - -Channel Drivers: - -chan_dahdi: - - For users using the FXO port (FXS signaling) distinctive ring detection - feature, you will need to adjust the dringX count values. The count - values now only record ring end events instead of any DAHDI event. A - ring-ring-ring pattern would exceed the pattern limits and stop - Caller-ID detection. - -chan_sip: - - The SIP dial string has been extended past the [!dnid] option by another - exclamation mark: [!dnid[!fromuri]. An exclamation mark in the To-URI - will now mean changes to the From-URI. - -Core: - - The REF_DEBUG compiler flag is now used to enable refdebug by default. - The setting can be overridden in asterisk.conf by setting refdebug in - the options category. No recompile is required to enable/disable it. - - - 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. - -AMI: - - The 'ModuleCheck' Action's Version key will no longer show the module - version. The value will always be blank. - -CLI: - - The 'core show file version' command has been removed. When Asterisk - moved to Git, the source control version support was removed. As a - result, the CLi command was no longer useful and was removed as well. - -Logging: - - The first callid created is now 1 instead of 0. The value 0 - is now reserved to represent a lack of callid. - -AMI: - - The Command action now sends the output from the CLI command as a series - of Output headers for each line instead of as a block of text with the - --END COMMAND-- delimiter to match the output from other actions. - - Commands that fail to execute (no such command, invalid syntax etc.) now - return an Error response instead of Success. - -app_amd: - - The 'maximum_number_of_words' configuration option and parameter to the AMD - application previously did not match the documented functionality + variable - name. In Asterisk 13, a value of '3' would mean that if '3' words were detected, - the result would be detection as a 'MACHINE'. As of this version, the value - reflects the maximum words that if EXCEEDED (rather than reached), would - result in detection as a machine. This means that you should update this - value to be one higher than your previos value, if your previous value - was working well for you. - -From 12 to 13: - -General Asterisk Changes: - - The asterisk command line -I option and the asterisk.conf internal_timing - option are removed and always enabled if any timing module is loaded. - - - The per console verbose level feature as previously implemented caused a - large performance penalty. The fix required some minor incompatibilities - if the new rasterisk is used to connect to an earlier version. If the new - rasterisk connects to an older Asterisk version then the root console verbose - level is always affected by the "core set verbose" command of the remote - console even though it may appear to only affect the current console. If - an older version of rasterisk connects to the new version then the - "core set verbose" command will have no effect. - - - The asterisk compatibility options in asterisk.conf have been removed. - These options enabled certain backwards compatibility features for - pbx_realtime, res_agi, and app_set that made their behaviour similar to - Asterisk 1.4. Users who used these backwards compatibility settings should - update their dialplans to use ',' instead of '|' as a delimiter, and should - use the Set dialplan application instead of the MSet dialplan application. - -Build System: - - Sample config files have been moved from configs/ to a subfolder 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. - - - Added a new Compiler Flag, REF_DEBUG. 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. - -Applications: - -ConfBridge: - - The sound_place_into_conference sound used in Confbridge is now deprecated - and is no longer functional since it has been broken since its inception - and the fix involved using a different method to achieve the same goal. The - new method to achieve this functionality is by using sound_begin to play - a sound to the conference when waitmarked users are moved into the conference. - - - Added 'Admin' header to ConfbridgeJoin, ConfbridgeLeave, ConfbridgeMute, - ConfbridgeUnmute, and ConfbridgeTalking AMI events. - -ControlPlayback: - - The ControlPlayback and 'control stream file' AGI command will no longer - implicitly answer the channel. If you do not answer the channel prior to - using either this application or AGI command, you must send Progress - first. - -Queue: - - Queue rules provided in queuerules.conf can no longer be named "general". - -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. - -CDR Backends: - - The cdr_sqlite module was deprecated and has been removed. Users of this - module should use the cdr_sqlite3_custom module instead. - -Channel Drivers: - -chan_dahdi: - - SS7 support now requires libss7 v2.0 or later. - - - Added the inband_on_setup_ack compatibility option to chan_dahdi.conf to - deal with switches that don't send an inband progress indication in the - SETUP ACKNOWLEDGE message. - Default is now no. - -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 a 'force_avp' option to chan_pjsip which will force the usage of - 'RTP/AVP', 'RTP/AVPF', 'RTP/SAVP', or 'RTP/SAVPF' as the media transport type - in SDP offers depending on settings, even when DTLS is used for media - encryption. - - - Added a 'media_use_received_transport' option to chan_pjsip which will - cause the SDP answer to use the media transport as received in the SDP - offer. - -chan_sip: - - Made set SIPREFERREDBYHDR as inheritable for better chan_pjsip - interoperability. - - - 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. - - - Added a 'force_avp' option for chan_sip. When enabled this option will - cause the media transport in the offer or answer SDP to be 'RTP/AVP', - 'RTP/AVPF', 'RTP/SAVP', or 'RTP/SAVPF' even if a DTLS stream has been - configured. This option can be set to improve interoperability with WebRTC - clients that don't use the RFC defined transport for DTLS. - - - The 'dtlsverify' option in chan_sip now has additional values besides - 'yes' and 'no'. If 'yes' is specified both the certificate and fingerprint - will be verified. If 'no' is specified then neither the certificate or - fingerprint is verified. If 'certificate' is specified then only the - certificate is verified. If 'fingerprint' is specified then only the - fingerprint is verified. - - - A 'dtlsfingerprint' option has been added to chan_sip which allows the - hash to be specified for the DTLS fingerprint placed in SDP. Supported - values are 'sha-1' and 'sha-256' with 'sha-256' being the default. - - - The 'progressinband=never' option is now more zealous in the persecution of - progress messages coming from Asterisk. Channels bridged with a SIP channel - that has 'progressinband=never' set will not be able to forward their - progress indications through to the SIP device. chan_sip will now turn such - progress indications into a 180 Ringing (if a 180 has not yet been - transmitted) if 'progressinband=never'. - - - The codec preference order in an SDP during an offer is slightly different - than previous releases. Prior to Asterisk 13, the preference order of - codecs used to be: - (1) Our preferred codec - (2) Our configured codecs - (3) Any non-audio joint codecs - - One of the ways the new media format architecture in Asterisk 13 improves - performance is by reference counting formats, such that they can be reused - in many places without additional allocation. To not require a large - amount of locking, an instance of a format is immutable by convention. - This works well except for formats with attributes. Since a media format - with an attribute is a different object than the same format without an - attribute, we have to carry over the formats with attributes from an - inbound offer so that the correct attributes are offered in an outgoing - INVITE request. This requires some subtle tweaks to the preference order - to ensure that the media format with attributes is offered to a remote - peer, as opposed to the same media format (but without attributes) that - may be stored in the peer object. - - All of this means that our offer offer list will now be: - (1) Our preferred codec - (2) Any joint codecs offered by the inbound offer - (3) All other codecs that are not the preferred codec and not a joint - codec offered by the inbound offer - -chan_unistim: - - The unistim.conf 'dateformat' has changed meaning of options values to conform - values used inside Unistim protocol - - - Added 'dtmf_duration' option with changing default operation to disable - received dtmf playback on unistim phone - -Core: - -Account Codes: - - accountcode behavior changed somewhat to add functional peeraccount - support. The main change is that local channels now cross accountcode - and peeraccount across the special bridge between the ;1 and ;2 channels - just like channels between normal bridges. See the CHANGES file for - more information. - -ARI: - - The ARI version has been changed to 1.5.0. This is to reflect backwards - compatible changes made since 12.0.0 was released. - - - 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. - - - 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. - - - A bug fix in bridge creation has caused a behavioural change in how - subscriptions are created for bridges. A bridge created through ARI, does - not, by itself, have a subscription created for any particular Stasis - application. When a channel in a Stasis application joins a bridge, an - implicit event subscription is created for that bridge as well. Previously, - when a channel left such a bridge, the subscription was leaked; this allowed - for later bridge events to continue to be pushed to the subscribed - applications. That leak has been fixed; as a result, bridge events that were - delivered after a channel left the bridge are no longer delivered. An - application must subscribe to a bridge through the applications resource if - it wishes to receive all events related to a bridge. - -AMI: - - The AMI version has been changed to 2.5.0. This is to reflect backwards - compatible changes made since 12.0.0 was released. - - - The DialStatus field in the DialEnd event can now have additional values. - This includes ABORT, CONTINUE, and GOTO. - - - The res_mwi_external_ami module can, if loaded, provide additional AMI - actions and events that convey MWI state within Asterisk. This includes - the MWIGet, MWIUpdate, and MWIDelete actions, as well as the MWIGet and - MWIGetComplete events that occur in response to an MWIGet action. - - - AMI now contains a new class authorization, 'security'. This is used with - the following new events: FailedACL, InvalidAccountID, SessionLimit, - MemoryLimit, LoadAverageLimit, RequestNotAllowed, AuthMethodNotAllowed, - RequestBadFormat, SuccessfulAuth, UnexpectedAddress, ChallengeResponseFailed, - InvalidPassword, ChallengeSent, and InvalidTransport. - - - 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 - - - MixMonitor AMI actions now require users to have authorization classes. - * MixMonitor - system - * MixMonitorMute - call or system - * StopMixMonitor - call or system - - - Removed the undocumented manager.conf block-sockets option. It interferes with - TCP/TLS inactivity timeouts. - - - The response to the PresenceState AMI action has historically contained two - Message keys. The first of these is used as an informative message regarding - the success/failure of the action; the second contains a Presence state - specific message. Having two keys with the same unique name in an AMI - message is cumbersome for some client; hence, the Presence specific Message - has been deprecated. The message will now contain a PresenceMessage key - for the presence specific information; the Message key containing presence - information will be removed in the next major version of AMI. - - - The manager.conf 'eventfilter' now takes an "extended" regular expression - instead of a "basic" one. - -CDRs: - - The "endbeforehexten" setting now defaults to "yes", instead of "no". - When set to "no", yhis setting will cause a new CDR to be generated when a - channel enters into hangup logic (either the 'h' extension or a hangup - handler subroutine). In general, this is not the preferred default: this - causes extra CDRs to be generated for a channel in many common dialplans. - -CLI commands: - - "core show settings" now lists the current console verbosity in addition - to the root console verbosity. - - - "core set verbose" has not been able to support the by module verbose - logging levels since verbose logging levels were made per console. That - syntax is now removed and a silence option added in its place. - -Logging: - - The 'verbose' setting in logger.conf still takes an optional argument, - specifying the verbosity level for each logging destination. However, - the default is now to once again follow the current root console level. - As a result, using the AMI Command action with "core set verbose" could - again set the root console verbose level and affect the verbose level - logged. - -HTTP: - - Added http.conf session_inactivity timer option to close HTTP connections - that aren't doing anything. - - - Added support for persistent HTTP connections. To enable persistent - HTTP connections configure the keep alive time between HTTP requests. The - keep alive time between HTTP requests is configured in http.conf with the - session_keep_alive parameter. - -Realtime Configuration: - - WARNING: The database migration script that adds the 'extensions' table for - realtime had to be modified due to an error when installing for MySQL. The - 'extensions' table's 'id' column was changed to be a primary key. This could - potentially cause a migration problem. If so, it may be necessary to - manually alter the affected table/column to bring it back in line with the - migration scripts. - - - New columns have been added to realtime tables for 'support_path' on - ps_registrations and ps_aors and for 'path' on ps_contacts for the new - SIP Path support in chan_pjsip. - - - The following new tables have been added for pjsip realtime: 'ps_systems', - 'ps_globals', 'ps_tranports', 'ps_registrations'. - - - The following columns were added to the 'ps_aors' realtime table: - 'maximum_expiration', 'outbound_proxy', and 'support_path'. - - - The following columns were added to the 'ps_contacts' realtime table: - 'outbound_proxy', 'user_agent', and 'path'. - - - New columns have been added to the ps_endpoints realtime table for the - 'media_address', 'redirect_method' and 'set_var' options. Also the - 'mwi_fromuser' column was renamed to 'mwi_from_user'. A new column - 'message_context' was added to let users configure how MESSAGE requests are - routed to the dialplan. - - - A new column was added to the 'ps_globals' realtime table for the 'debug' - option. - - - PJSIP endpoint columns 'tos_audio' and 'tos_video' have been changed from - yes/no enumerators to string values. 'cos_audio' and 'cos_video' have been - changed from yes/no enumerators to integer values. PJSIP transport column - 'tos' has been changed from a yes/no enumerator to a string value. 'cos' has - been changed from a yes/no enumerator to an integer value. - - - The 'queues' and 'queue_members' realtime tables have been added to the - config Alembic scripts. - - - 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. - - - A new upgrade script has been added that adds a 'queue_rules' table for - app_queue. Users of app_queue can store queue rules in a database. It is - important to note that app_queue only looks for this table on module load or - module reload; for more information, see the CHANGES file. - -Resources: - -res_odbc: -- The compatibility setting, allow_empty_string_in_nontext, has been removed. - Empty column values will be stored as empty strings during realtime updates. - -res_jabber: - - This module was deprecated and has been removed. Users of this module should - use res_xmpp instead. - -res_http_websocket: - - Added a compatibility option to ari.conf, sip.conf, and pjsip.conf - 'websocket_write_timeout'. When a websocket connection exists where Asterisk - writes a substantial amount of data to the connected client, and the connected - client is slow to process the received data, the socket may be disconnected. - In such cases, it may be necessary to adjust this value. - Default is 100 ms. -Scripts: - -safe_asterisk: - - The safe_asterisk script was previously not installed on top of an existing - version. This caused bug-fixes in that script not to be deployed. If your - safe_asterisk script is customized, be sure to keep your changes. Custom - values for variables should be created in *.sh file(s) inside - ASTETCDIR/startup.d/. See ASTERISK-21965. - - - Changed a log message in safe_asterisk and the $NOTIFY mail subject. If - you use tools to parse either of them, update your parse functions - accordingly. The changed strings are: - - "Exited on signal $EXITSIGNAL" => "Asterisk exited on signal $EXITSIGNAL." - - "Asterisk Died" => "Asterisk on $MACHINE died (sig $EXITSIGNAL)" - -Utilities: - - The refcounter program has been removed in favor of the refcounter.py script - in contrib/scripts. - -From 11 to 12: - -There are many significant architectural changes in Asterisk 12. It is -recommended that you not only read through this document for important -changes that affect an upgrade, but that you also read through the CHANGES -document in depth to better understand the new options available to you. - -Additional information on the architectural changes made in Asterisk can be -found on the Asterisk wiki (https://wiki.asterisk.org) - -Of particular note, the following systems in Asterisk underwent significant -changes. Documentation for the changes and a specification for their -behavior in Asterisk 12 is also available on the Asterisk wiki. - - AMI: Many events were changed, and the semantics of channels and bridges - were defined. In particular, how channels and bridges behave under - transfer scenarios and situations involving multiple parties has - changed significantly. See https://wiki.asterisk.org/wiki/x/dAFRAQ - for more information. - - CDR: CDR logic was extracted from the many locations it existed in across - Asterisk and implemented as a consumer of Stasis message bus events. - As a result, consistency of records has improved significantly and the - behavior of CDRs in transfer scenarios has been defined in the CDR - specification. However, significant behavioral changes in CDRs resulted - from the transition. The most significant change is the addition of - CDR entries when a channel who is the Party A in a CDR leaves a bridge. - See https://wiki.asterisk.org/wiki/x/pwpRAQ for more information. - - CEL: Much like CDRs, CEL was removed from the many locations it existed in - across Asterisk and implemented as a consumer of Stasis message bus - events. It now closely follows the Bridging API model of channels and - bridges, and has a much closer consistency of conveyed events as AMI. - For the changes in events, see https://wiki.asterisk.org/wiki/x/4ICLAQ. - -Build System: - - 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 depends on libjansson, libuuid and optionally (but recommended) - libxslt and uriparser. - - - 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 use with Asterisk. - -AgentLogin and chan_agent: - - Along with AgentRequest, this application has been modified to be a - replacement for chan_agent. The chan_agent module and the Agent channel - driver have been removed from Asterisk, as the concept of a channel driver - proxying in front of another channel driver was incompatible with the new - architecture (and has had numerous problems through past versions of - Asterisk). 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. - - - 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. - - - 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. - - - The AGENTUPDATECDR channel variable has also been removed, for the same - reason as the updatecdr option. - - - 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. - -AgentMonitorOutgoing - - This application has been removed. It was a holdover from when - AgentCallbackLogin was removed. - -Answer - - It is no longer possible to bypass updating the CDR when answering a - channel. CDRs are based on the channel state and will be updated when - the channel is Answered. - -ControlPlayback - - The channel variable CPLAYBACKSTATUS may now return the value - 'REMOTESTOPPED' when playback is stopped by an external entity. - -DISA - - This application now has a dependency on the app_cdr module. It uses this - module to hide the CDR created prior to execution of the DISA application. - -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: - - Nearly every parameter in ForkCDR has been updated and changed to reflect - the changes in CDRs. Please see the documentation for the ForkCDR - application, as well as the CDR specification on the Asterisk wiki. - -NoCDR: - - The NoCDR application has been deprecated. Please use the CDR_PROP function - to disable CDRs on a channel. - -ParkAndAnnounce: - - The app_parkandannounce module has been removed. The application - ParkAndAnnounce is now provided by the res_parking module. See the - Parking changes for more information. - -ResetCDR: - - 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. - - The 'e' option is deprecated. Please use the CDR_PROP function to enable - CDRs on a channel that they were previously disabled on. - - The ResetCDR application is no longer a part of core Asterisk, and instead - is now delivered as part of app_cdr. - -Queues: - - Queue strategy rrmemory now has a predictable order similar to strategy - rrordered. Members will be called in the order that they are added to the - queue. - - - Removed the queues.conf check_state_unknown option. It is no longer - necessary. - - - It is now possible to play the Queue prompts to the first user waiting in a - call queue. Note that this may impact the ability for agents to talk with - users, as a prompt may still be playing when an agent connects to the user. - This ability is disabled by default but can be enabled on an individual - queue using the 'announce-to-first-user' option. - - - 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. - -SetAMAFlags - - This application is deprecated in favor of CHANNEL(amaflags). - -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. Systems - using voicemail with realtime should update their schemas accordingly. - -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_bridge - - chan_bridge is removed and its functionality is incorporated into ConfBridge - itself. - -chan_dahdi: - - Analog port dialing and deferred DTMF dialing for PRI now distinguishes - between 'w' and 'W'. The 'w' pauses dialing for half a second. The 'W' - pauses dialing for one second. - - - The default for inband_on_proceeding has changed to no. - - - 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. - - - 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. - - - ignore_failed_channels now defaults to True: the channel will continue to - be configured even if configuring it has failed. This is generally a - better setup for systems with not more than one DAHDI device or with DAHDI - >= 2.8.0 . - -chan_local: - - The /b option has been removed. - - - chan_local moved into the system core and is no longer a loadable module. - -chan_sip: - - 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. - - - 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. - -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, "" 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. - - - The following channel variables have changed behavior which is described in - the CHANGES file: TRANSFER_CONTEXT, BRIDGEPEER, BRIDGEPVTCALLID, - ATTENDED_TRANSFER_COMPLETE_SOUND, DYNAMIC_FEATURENAME, and DYNAMIC_PEERNAME. - -AMI (Asterisk Manager Interface): - - Version 1.4 - The details of what happens to a channel when a masquerade - happens (transfers, parking, etc) have changed. - - The Masquerade event now includes the Uniqueid's of the clone and original - channels. - - Channels no longer swap Uniqueid's as a result of the masquerade. - - Instead of a shell game of renames, there's now a single rename, appending - to the name of the original channel. - - - *Major* changes were made to both the syntax as well as the semantics of the - AMI protocol. In particular, AMI events have been substantially modified - and improved in this version of Asterisk. The major event changes are listed - below. - - NewPeerAccount has been removed. NewAccountCode is raised instead. - - Reload events have been consolidated and standardized. - - ModuleLoadReport has been removed. - - FaxSent is now SendFAX; FaxReceived is now ReceiveFAX. This standardizes - app_fax and res_fax events. - - MusicOnHold has been replaced with MusicOnHoldStart and MusicOnHoldStop. - - JabberEvent has been removed. - - Hold is now in the core and will now raise Hold and Unhold events. - - Join is now QueueCallerJoin. - - Leave is now QueueCallerLeave. - - Agentlogin/Agentlogoff is now AgentLogin/AgentLogoff, respectively. - - ChannelUpdate has been removed. - - Local channel optimization is now conveyed via LocalOptimizationBegin and - LocalOptimizationEnd. - - BridgeAction and BridgeExec have been removed. - - BlindTransfer and AttendedTransfer events were added. - - Dial is now DialBegin and DialEnd. - - DTMF is now DTMFBegin and DTMFEnd. - - Bridge has been replaced with BridgeCreate, BridgeEnter, BridgeLeave, and - BridgeDestroy - - MusicOnHold has been replaced with MusicOnHoldStart and MusicOnHoldStop - - AGIExec is now AGIExecStart and AGIExecEnd - - AsyncAGI is now AsyncAGIStart, AsyncAGIExec, and AsyncAGIEnd - - - 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 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been - renamed "DAHDIChannel" since it does not convey an Asterisk channel name. - - - All AMI events now contain a 'SystemName' field, if available. - - - 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 '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. - - - The deprecated use of | (pipe) as a separator in the channelvars setting in - manager.conf has been removed. - - - The SIP SIPqualifypeer action now sends a response indicating it will qualify - a peer once a peer has been found to qualify. Once the qualify has been - completed it will now issue a SIPqualifypeerdone event. - - - 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 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 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. - -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. - -CEL: - - The Uniqueid field for a channel is now a stable identifier, and will not - change due to transfers, parking, etc. - - - 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. A summary of the affected events is below: - - 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. - - BLINDTRANSFER/ATTENDEDTRANSFER events now report the peer as NULL and - additional information in the extra string field. - -Dialplan Functions: - - - Certain dialplan functions have been marked as 'dangerous', and may only be - executed from the dialplan. Execution from extenal sources (AMI's GetVar and - SetVar actions; etc.) may be inhibited by setting live_dangerously in the - [options] section of asterisk.conf to no. SHELL(), channel locking, and - direct file read/write functions are marked as dangerous. DB_DELETE() and - REALTIME_DESTROY() are marked as dangerous for reads, but can now safely - accept writes (which ignore the provided value). - - The default value for live_dangerously was changed from yes (in Asterisk 11 - and earlier) to no (in Asterisk 12 and greater). - -Dialplan: - - All channel and global variable names are evaluated in a case-sensitive - manner. In previous versions of Asterisk, variables created and evaluated in - the dialplan were evaluated case-insensitively, but built-in variables and - variable evaluation done internally within Asterisk was done - case-sensitively. - - - Asterisk has always had code to ignore dash '-' characters that are not - part of a character set in the dialplan extensions. The code now - consistently ignores these characters when matching dialplan extensions. - - - BRIDGE_FEATURES channel variable is now casesensitive for feature letter - codes. Uppercase variants apply them to the calling party while lowercase - variants apply them to the called party. - -Features: - - The features.conf [applicationmap] ActivatedBy option is - no longer honored. The feature is always activated by the channel that has - DYNAMIC_FEATURES defined on it when it enters the bridge. Use predial to set - different values of DYNAMIC_FEATURES on the channels - - - Executing a dynamic feature on the bridge peer in a multi-party bridge will - execute it on all peers of the activating channel. - - - There is no longer an explicit 'features reload' CLI command. Features can - still be reloaded using 'module reload features'. - - - 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. - -Parking: - - Parking has been extracted from the Asterisk core as a loadable module, - res_parking. - - - Configuration is found in res_parking.conf. It is no longer supported in - features.conf - - - The arguments for the Park, ParkedCall, and ParkAndAnnounce applications - have been modified significantly. See the application documents for - specific details. - - - Numerous changes to Parking related applications, AMI and CLI commands and - internal inter-workings have been made. Please read the CHANGES file for - the detailed list. - -Security Events Framework: - - Security Event timestamps now use ISO 8601 formatted date/time instead of - the "seconds-microseconds" format that it was using previously. - -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. - -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. - -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/. - -From 11.6 to 11.7: -ConfBridge - - 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. -chan_sip - Clarify The "sip show peers" Forcerport Column And Add Comedia - - Under the "Forcerport" column, the "N" used to mean NAT (i.e. Yes). With - the additon of auto_* NAT settings, the meaning changed and there was a - certain combination of letters added to indicate the current setting. The - combination of using "Y", "N", "A" or "a", can be confusing. Therefore, we - now display clearly what the current Forcerport setting is: "Yes", "No", - "Auto (Yes)", "Auto (No)". - - Since we are clarifying the Forcerport column, we have added a column to - display the Comedia setting since this is useful information as well. We - no longer have a simple "NAT" setting like other versions before 11. - -From 11.5 to 11.6: -* res_agi will now properly indicate if there was an error in streaming an - audio file. The result code will be -1 and the result returned from the - the function will be RESULT_FAILURE instead of the prior behavior of always - returning RESULT_SUCCESS even if there was an error. - -From 11.4 to 11.5: -* The default settings for chan_sip are now overriden properly by the general - settings in sip.conf. Please look over your settings upon upgrading. - -From 11.3 to 11.4: -* 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. - -* The Registry AMI event for SIP registrations will now always include the - Username field. A previous bug fix missed an instance where it was not - included; that has been corrected in this release. - -From 11.2.0 to 11.2.1: -* Asterisk would previously not output certain error messages when a remote - console attempted to connect to Asterisk and no instance of Asterisk was - running. This error message is displayed on stderr; as a result, some - initialization scripts that used remote consoles to test for the presence - of a running Asterisk instance started to display erroneous error messages. - The init.d scripts and the safe_asterisk have been updated in the contrib - folder to account for this. - -From 11.2 to 11.3: - -* Now by default, when Asterisk is installed in a path other than /usr, the - Asterisk binary will search for shared libraries in ${libdir} in addition to - searching system libraries. This allows Asterisk to find its shared - libraries without having to specify LD_LIBRARY_PATH. This can be disabled by - passing --disable-rpath to configure. - -From 10 to 11: - -Voicemail: - - All voicemails now have a "msg_id" which uniquely identifies a message. For - users of filesystem and IMAP storage of voicemail, this should be transparent. - For users of ODBC, you will need to add a "msg_id" column to your voice mail - messages table. This should be a string capable of holding at least 32 characters. - All messages created in old Asterisk installations will have a msg_id added to - them when required. This operation should be transparent as well. - -Parking: - - The comebacktoorigin setting must now be set per parking lot. The setting in - the general section will not be applied automatically to each parking lot. - - The BLINDTRANSFER channel variable is deleted from a channel when it is - bridged to prevent subtle bugs in the parking feature. The channel - variable is used by Asterisk internally for the Park application to work - properly. If you were using it for your own purposes, copy it to your - own channel variable before the channel is bridged. - -res_ais: - - Users of res_ais in versions of Asterisk prior to Asterisk 11 must change - to use the res_corosync module, instead. OpenAIS is deprecated, but - Corosync is still actively developed and maintained. Corosync came out of - the OpenAIS project. - -Dialplan Functions: - - MAILBOX_EXISTS has been deprecated. Use VM_INFO with the 'exists' parameter - instead. - - 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. - - The REDIRECTING function now supports the redirecting original party id - and reason. - - The HANGUPCAUSE and HANGUPCAUSE_KEYS functions have been introduced to - provide a replacement for the SIP_CAUSE hash. The HangupCauseClear - application has also been introduced to remove this data from the channel - when necessary. - - -func_enum: - - ENUM query functions now return a count of -1 on lookup error to - differentiate between a failed query and a successful query with 0 results - matching the specified type. - -CDR: - - cdr_adaptive_odbc now supports specifying a schema so that Asterisk can - connect to databases that use schemas. - -Configuration Files: - - Files listed below have been updated to be more consistent with how Asterisk - parses configuration files. This makes configuration files more consistent - with what is expected across modules. - - - cdr.conf: [general] and [csv] sections - - dnsmgr.conf - - dsp.conf - - - The 'verbose' setting in logger.conf now takes an optional argument, - specifying the verbosity level for each logging destination. The default, - if not otherwise specified, is a verbosity of 3. - -AMI: - - DBDelTree now correctly returns an error when 0 rows are deleted just as - the DBDel action does. - - The IAX2 PeerStatus event now sends a 'Port' header. In Asterisk 10, this was - erroneously being sent as a 'Post' header. - -CCSS: - - Macro is deprecated. Use cc_callback_sub instead of cc_callback_macro - in channel configurations. - -app_meetme: - - The 'c' option (announce user count) will now work even if the 'q' (quiet) - option is enabled. - -app_followme: - - Answered outgoing calls no longer get cut off when the next step is started. - You now have until the last step times out to decide if you want to accept - the call or not before being disconnected. - -chan_gtalk: - - chan_gtalk has been deprecated in favor of the chan_motif channel driver. It is recommended - that users switch to using it as it is a core supported module. - -chan_jingle: - - chan_jingle has been deprecated in favor of the chan_motif channel driver. It is recommended - that users switch to using it as it is a core supported module. - -SIP -=== - - A new option "tonezone" for setting default tonezone for the channel driver - or individual devices - - A new manager event, "SessionTimeout" has been added and is triggered when - a call is terminated due to RTP stream inactivity or SIP session timer - expiration. - - SIP_CAUSE is now deprecated. It has been modified to use the same - mechanism as the HANGUPCAUSE function. Behavior should not change, but - performance should be vastly improved. The HANGUPCAUSE function should now - be used instead of SIP_CAUSE. Because of this, the storesipcause option in - sip.conf is also deprecated. - - The sip paramater for Originating Line Information (oli, isup-oli, and - ss7-oli) is now parsed out of the From header and copied into the channel's - ANI2 information field. This is readable from the CALLERID(ani2) dialplan - function. - - ICE support has been added and is enabled by default. Some endpoints may have - problems with the ICE candidates within the SDP. If this is the case ICE support - can be disabled globally or on a per-endpoint basis using the icesupport - configuration option. Symptoms of this include one way media or no media flow. - -chan_unistim - - Due to massive update in chan_unistim phone keys functions and on-screen - information changed. - -users.conf: - - A defined user with hasvoicemail=yes now finally uses a Gosub to stdexten - as documented in extensions.conf.sample since v1.6.0 instead of a Macro as - documented in v1.4. Set the asterisk.conf stdexten=macro parameter to - invoke the stdexten the old way. - -res_jabber - - This module has been deprecated in favor of the res_xmpp module. The res_xmpp - module is backwards compatible with the res_jabber configuration file, dialplan - functions, and AMI actions. The old CLI commands can also be made available using - the res_clialiases template for Asterisk 11. - -From 1.8 to 10: - -cel_pgsql: - - This module now expects an 'extra' column in the database for data added - using the CELGenUserEvent() application. - -ConfBridge - - ConfBridge's dialplan arguments have changed and are not - backwards compatible. - -File Interpreters - - The format interpreter formats/format_sln16.c for the file extension - '.sln16' has been removed. The '.sln16' file interpreter now exists - in the formats/format_sln.c module along with new support for sln12, - sln24, sln32, sln44, sln48, sln96, and sln192 file extensions. - -HTTP: - - A bindaddr must be specified in order for the HTTP server - to run. Previous versions would default to 0.0.0.0 if no - bindaddr was specified. - -Gtalk: - - The default value for 'context' and 'parkinglots' in gtalk.conf has - been changed to 'default', previously they were empty. - -chan_dahdi: - - The mohinterpret=passthrough setting is deprecated in favor of - moh_signaling=notify. - -pbx_lua: - - Execution no longer continues after applications that do dialplan jumps - (such as app.goto). Now when an application such as app.goto() is called, - control is returned back to the pbx engine and the current extension - function stops executing. - - the autoservice now defaults to being on by default - - autoservice_start() and autoservice_start() no longer return a value. - -Queue: - - Mark QUEUE_MEMBER_PENALTY Deprecated it never worked for realtime members - - QUEUE_MEMBER is now R/W supporting setting paused, ignorebusy and penalty. - -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. If - moving back from Asterisk 10 to Asterisk 1.8, the astdb2bdb utility can be used - to create a Berkeley DB copy of the SQLite3 astdb that Asterisk 10 uses. - -Manager: - - The AMI protocol version was incremented to 1.2 as a result of changing two - instances of the Unlink event to Bridge events. This change was documented - as part of the AMI 1.1 update, but two Unlink events were inadvertently left - unchanged. - -Module Support Level - - All modules in the addons, apps, bridge, cdr, cel, channels, codecs, - formats, funcs, pbx, and res have been updated to include MODULEINFO data - that includes tags with a value of core, extended, or deprecated. - More information is available on the Asterisk wiki at - https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States - - Deprecated modules are now marked to not build by default and must be explicitly - enabled in menuselect. - -chan_sip: - - Setting of HASH(SIP_CAUSE,) on channels is now disabled - by default. It can be enabled using the 'storesipcause' option. This feature - has a significant performance penalty. - -UDPTL: - - The default UDPTL port range in udptl.conf.sample differed from the defaults - in the source. If you didn't have a config file, you got 4500 to 4599. Now the - default is 4000 to 4999. - -From 10.4 to 10.5: - -* The complex processor detection and optimization has been removed from - the makefile in favor of using native optimization support when available. - BUILD_NATIVE can be disabled via menuselect under "Compiler Flags". - -From 10.2 to 10.3: - -* If no transport is specified in sip.conf, transport will default to UDP. - Also, if multiple transport= lines are used, only the last will be used. - -From 1.8 to 10: - -cel_pgsql: - - This module now expects an 'extra' column in the database for data added - using the CELGenUserEvent() application. - -ConfBridge - - ConfBridge's dialplan arguments have changed and are not - backwards compatible. - -File Interpreters - - The format interpreter formats/format_sln16.c for the file extension - '.sln16' has been removed. The '.sln16' file interpreter now exists - in the formats/format_sln.c module along with new support for sln12, - sln24, sln32, sln44, sln48, sln96, and sln192 file extensions. - -HTTP: - - A bindaddr must be specified in order for the HTTP server - to run. Previous versions would default to 0.0.0.0 if no - bindaddr was specified. - -Gtalk: - - The default value for 'context' and 'parkinglots' in gtalk.conf has - been changed to 'default', previously they were empty. - -chan_dahdi: - - The mohinterpret=passthrough setting is deprecated in favor of - moh_signaling=notify. - -pbx_lua: - - Execution no longer continues after applications that do dialplan jumps - (such as app.goto). Now when an application such as app.goto() is called, - control is returned back to the pbx engine and the current extension - function stops executing. - - the autoservice now defaults to being on by default - - autoservice_start() and autoservice_start() no longer return a value. - -Queue: - - Mark QUEUE_MEMBER_PENALTY Deprecated it never worked for realtime members - - QUEUE_MEMBER is now R/W supporting setting paused, ignorebusy and penalty. - -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. - -Module Support Level - - All modules in the addons, apps, bridge, cdr, cel, channels, codecs, - formats, funcs, pbx, and res have been updated to include MODULEINFO data - that includes tags with a value of core, extended, or deprecated. - More information is available on the Asterisk wiki at - https://wiki.asterisk.org/wiki/display/AST/Asterisk+Module+Support+States - - Deprecated modules are now marked to not build by default and must be explicitly - enabled in menuselect. - -From 1.8.13 to 1.8.14: -* permitdirectmedia/denydirectmedia now controls whether peers can be - bridged via directmedia by comparing the ACL to the bridging peer's - address rather than its own address. - -From 1.8.12 to 1.8.13: -* The complex processor detection and optimization has been removed from - the makefile in favor of using native optimization support when available. - BUILD_NATIVE can be disabled via menuselect under "Compiler Flags". - -From 1.8.10 to 1.8.11: - -* If no transport is specified in sip.conf, transport will default to UDP. - Also, if multiple transport= lines are used, only the last will be used. - -From 1.6.2 to 1.8: - -* chan_sip no longer sets HASH(SIP_CAUSE,) on channels by default. - This must now be enabled by setting 'sipstorecause' to 'yes' in sip.conf. - This carries a performance penalty. - -* Asterisk now requires libpri 1.4.11+ for PRI support. - -* A couple of CLI commands in res_ais were changed back to their original form: - "ais show clm members" --> "ais clm show members" - "ais show evt event channels" --> "ais evt show event channels" - -* The default value for 'autofill' and 'shared_lastcall' in queues.conf has - been changed to 'yes'. - -* The default value for the alwaysauthreject option in sip.conf has been changed - from "no" to "yes". - -* The behavior of the 'parkedcallstimeout' has changed slightly. The formulation - of the extension name that a timed out parked call is delivered to when this - option is set to 'no' was modified such that instead of converting '/' to '0', - the '/' is converted to an underscore '_'. See the updated documentation in - features.conf.sample for more information on the behavior of the - 'parkedcallstimeout' option. - -* Asterisk-addons no longer exists as an independent package. Those modules - now live in the addons directory of the main Asterisk source tree. They - are not enabled by default. For more information about why modules live in - addons, see README-addons.txt. - -* The rarely used 'event_log' and LOG_EVENT channel have been removed; the few - users of this channel in the tree have been converted to LOG_NOTICE or removed - (in cases where the same message was already generated to another channel). - -* The usage of RTP inside of Asterisk has now become modularized. This means - the Asterisk RTP stack now exists as a loadable module, res_rtp_asterisk. - If you are not using autoload=yes in modules.conf you will need to ensure - it is set to load. If not, then any module which uses RTP (such as chan_sip) - will not be able to send or receive calls. - -* The app_dahdiscan.c file has been removed, but the dialplan app DAHDIScan still - remains. It now exists within app_chanspy.c and retains the exact same - functionality as before. - -* The default behavior for Set, AGI, and pbx_realtime has been changed to implement - 1.6 behavior by default, if there is no [compat] section in asterisk.conf. In - prior versions, the behavior defaulted to 1.4 behavior, to assist in upgrades. - Specifically, that means that pbx_realtime and res_agi expect you to use commas - to separate arguments in applications, and Set only takes a single pair of - a variable name/value. The old 1.4 behavior may still be obtained by setting - app_set, pbx_realtime, and res_agi each to 1.4 in the [compat] section of - asterisk.conf. - -* The PRI channels in chan_dahdi can no longer change the channel name if a - different B channel is selected during call negotiation. To prevent using - the channel name to infer what B channel a call is using and to avoid name - collisions, the channel name format is changed. - The new channel naming for PRI channels is: - DAHDI/i/[:]- - -* Added CHANNEL(dahdi_span), CHANNEL(dahdi_channel), and CHANNEL(dahdi_type) - so the dialplan can determine the B channel currently in use by the channel. - Use CHANNEL(no_media_path) to determine if the channel even has a B channel. - -* Added AMI event DAHDIChannel to associate a DAHDI channel with an Asterisk - channel so AMI applications can passively determine the B channel currently - in use. Calls with "no-media" as the DAHDIChannel do not have an associated - B channel. No-media calls are either on hold or call-waiting. - -* The ChanIsAvail application has been changed so the AVAILSTATUS variable - no longer contains both the device state and cause code. The cause code - is now available in the AVAILCAUSECODE variable. If existing dialplan logic - is written to expect AVAILSTATUS to contain the cause code it needs to be - changed to use AVAILCAUSECODE. - -* ExternalIVR will now send Z events for invalid or missing files, T events - now include the interrupted file and bugs in argument parsing have been - fixed so there may be arguments specified in incorrect ways that were - working that will no longer work. Please see - https://wiki.asterisk.org/wiki/display/AST/External+IVR+Interface for details. - -* OSP lookup application changes following variable names: - OSPPEERIP to OSPINPEERIP - OSPTECH to OSPOUTTECH - OSPDEST to OSPDESTINATION - OSPCALLING to OSPOUTCALLING - OSPCALLED to OSPOUTCALLED - OSPRESULTS to OSPDESTREMAILS - -* The Manager event 'iax2 show peers' output has been updated. It now has a - similar output of 'sip show peers'. - -* VoiceMailMain and VMAuthenticate, if a '*' is entered in the first position - of a Mailbox or Password, will, if it exists, jump to the 'a' extension in - the current dialplan context. - -* The CALLERPRES() dialplan function is deprecated in favor of - CALLERID(num-pres) and CALLERID(name-pres). - -* Environment variables that start with "AST_" are reserved to the system and - may no longer be set from the dialplan. - -* When a call is redirected inside of a Dial, the app and appdata fields of the - CDR will now be set to "AppDial" and "(Outgoing Line)" instead of being blank. - -* The 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. - -* chan_sip will no longer set up a local call forward when receiving a - 482 Loop Detected response. The dialplan will just continue from where it - left off. - -* The 'stunaddr' option has been removed from chan_sip. This feature did not - behave as expected, had no correct use case, and was not RFC compliant. The - removal of this feature will hopefully be followed by a correct RFC compliant - STUN implementation in chan_sip in the future. - -* The default value for the pedantic option in sip.conf has been changed - from "no" to "yes". - -* The ConnectedLineNum and ConnectedLineName headers were added to many AMI - events/responses if the CallerIDNum/CallerIDName headers were also present. - The addition of connected line support changes the behavior of the channel - caller ID somewhat. The channel caller ID value no longer time shares with - the connected line ID on outgoing call legs. The timing of some AMI - events/responses output the connected line ID as caller ID. These party ID's - are now separate. - -* The Dial application d and H options do not automatically answer the call - anymore. It broke DTMF attended transfers. Since many SIP and ISDN phones - cannot send DTMF before a call is connected, you need to answer the call - leg to those phones before using Dial with these options for them to have - any effect before the dialed party answers. - -* The outgoing directory (where .call files are read) now uses inotify to - detect file changes instead of polling the directory on a regular basis. - If your outgoing folder is on a NFS mount or another network file system, - changes to the files will not be detected. You can revert to polling the - directory by specifying --without-inotify to configure before compiling. - -* The 'sipusers' realtime table has been removed completely. Use the 'sippeers' - table with type 'user' for user type objects. - -* The sip.conf allowoverlap option now accepts 'dtmf' as a value. If you - are using the early media DTMF overlap dialing method you now need to set - allowoverlap=dtmf. - -From 1.6.1 to 1.6.2: - -* SIP no longer sends the 183 progress message for early media by - default. Applications requiring early media should use the - progress() dialplan app to generate the progress message. - -* The firmware for the IAXy has been removed from Asterisk. It can be - downloaded from http://downloads.digium.com/pub/iaxy/. To have Asterisk - install the firmware into its proper location, place the firmware in the - contrib/firmware/iax/ directory in the Asterisk source tree before running - "make install". - -* T.38 FAX error correction mode can no longer be configured in udptl.conf; - instead, it is configured on a per-peer (or global) basis in sip.conf, with - the same default as was present in udptl.conf.sample. - -* T.38 FAX maximum datagram size can no longer be configured in updtl.conf; - instead, it is either supplied by the application servicing the T.38 channel - (for a FAX send or receive) or calculated from the bridged endpoint's - maximum datagram size (for a T.38 FAX passthrough call). In addition, sip.conf - allows for overriding the value supplied by a remote endpoint, which is useful - when T.38 connections are made to gateways that supply incorrectly-calculated - maximum datagram sizes. - -* There have been some changes to the IAX2 protocol to address the security - concerns documented in the security advisory AST-2009-006. Please see the - IAX2 security document, doc/IAX2-security.pdf, for information regarding - backwards compatibility with versions of Asterisk that do not contain these - changes to IAX2. - -* The 'canreinvite' option support by the SIP, MGCP and Skinny channel drivers - has been renamed to 'directmedia', to better reflect what it actually does. - In the case of SIP, there are still re-INVITEs issued for T.38 negotiation, - starting and stopping music-on-hold, and other reasons, and the 'canreinvite' - option never had any effect on these cases, it only affected the re-INVITEs - used for direct media path setup. For MGCP and Skinny, the option was poorly - named because those protocols don't even use INVITE messages at all. For - backwards compatibility, the old option is still supported in both normal - and Realtime configuration files, but all of the sample configuration files, - Realtime/LDAP schemas, and other documentation refer to it using the new name. - -* The default console now will use colors according to the default background - color, instead of forcing the background color to black. If you are using a - light colored background for your console, you may wish to use the option - flag '-W' to present better color choices for the various messages. However, - if you'd prefer the old method of forcing colors to white text on a black - background, the compatibility option -B is provided for this purpose. - -* SendImage() no longer hangs up the channel on transmission error or on - any other error; in those cases, a FAILURE status is stored in - SENDIMAGESTATUS and dialplan execution continues. The possible - return values stored in SENDIMAGESTATUS are: SUCCESS, FAILURE, and - UNSUPPORTED. ('OK' has been replaced with 'SUCCESS', and 'NOSUPPORT' - has been replaced with 'UNSUPPORTED'). This change makes the - SendImage application more consistent with other applications. - -* skinny.conf now has separate sections for lines and devices. - Please have a look at configs/skinny.conf.sample and update - your skinny.conf. - -* Queue names previously were treated in a case-sensitive manner, - meaning that queues with names like "sales" and "sALeS" would be - seen as unique queues. The parsing logic has changed to use - case-insensitive comparisons now when originally hashing based on - queue names, meaning that now the two queues mentioned as examples - earlier will be seen as having the same name. - -* The SPRINTF() dialplan function has been moved into its own module, - func_sprintf, and is no longer included in func_strings. If you use this - function and do not use 'autoload=yes' in modules.conf, you will need - to explicitly load func_sprintf for it to be available. - -* The res_indications module has been removed. Its functionality was important - enough that most of it has been moved into the Asterisk core. - Two applications previously provided by res_indications, PlayTones and - StopPlayTones, have been moved into a new module, app_playtones. - -* Support for Taiwanese was incorrectly supported with the "tw" language code. - In reality, the "tw" language code is reserved for the Twi language, native - to Ghana. If you were previously using the "tw" language code, you should - switch to using either "zh" (for Mandarin Chinese) or "zh_TW" for Taiwan - specific localizations. Additionally, "mx" should be changed to "es_MX", - Georgian was incorrectly specified as "ge" but should be "ka", and Czech is - "cs", not "cz". - -* DAHDISendCallreroutingFacility() parameters are now comma-separated, - instead of the old pipe. - -* res_jabber: autoprune has been disabled by default, to avoid misconfiguration - that would end up being interpreted as a bug once Asterisk started removing - the contacts from a user list. - -* The cdr.conf file must exist and be configured correctly in order for CDR - records to be written. - -* cdr_pgsql now assumes the encoding of strings it is handed are in LATIN9, - which should cover most uses of the extended ASCII set. If your strings - use a different encoding in Asterisk, the "encoding" parameter may be set - to specify the correct character set. - -From 1.6.0.1 to 1.6.1: - -* The ast_agi_register_multiple() and ast_agi_unregister_multiple() - API calls were added in 1.6.0, so that modules that provide multiple - AGI commands could register/unregister them all with a single - step. However, these API calls were not implemented properly, and did - not allow the caller to know whether registration or unregistration - succeeded or failed. They have been redefined to now return success - or failure, but this means any code using these functions will need - be recompiled after upgrading to a version of Asterisk containing - these changes. In addition, the source code using these functions - should be reviewed to ensure it can properly react to failure - of registration or unregistration of its API commands. - -* The ast_agi_fdprintf() API call has been renamed to ast_agi_send() - to better match what it really does, and the argument order has been - changed to be consistent with other API calls that perform similar - operations. - -From 1.6.0.x to 1.6.1: - -* In previous versions of Asterisk, due to the way objects were arranged in - memory by chan_sip, the order of entries in sip.conf could be adjusted to - control the behavior of matching against peers and users. The way objects - are managed has been significantly changed for reasons involving performance - and stability. A side effect of these changes is that the order of entries - in sip.conf can no longer be relied upon to control behavior. - -* The following core commands dealing with dialplan have been deprecated: 'core - show globals', 'core set global' and 'core set chanvar'. Use the equivalent - 'dialplan show globals', 'dialplan set global' and 'dialplan set chanvar' - instead. - -* In the dialplan expression parser, the logical value of spaces - immediately preceding a standalone 0 previously evaluated to - true. It now evaluates to false. This has confused a good many - people in the past (typically because they failed to realize the - space had any significance). Since this violates the Principle of - Least Surprise, it has been changed. - -* While app_directory has always relied on having a voicemail.conf or users.conf file - correctly set up, it now is dependent on app_voicemail being compiled as well. - -* SIP: All of the functionality in SIPCHANINFO() has been implemented in CHANNEL(), - and you should start using that function instead for retrieving information about - the channel in a technology-agnostic way. - -* If you have any third party modules which use a config file variable whose - name ends in a '+', please note that the append capability added to this - version may now conflict with that variable naming scheme. An easy - workaround is to ensure that a space occurs between the '+' and the '=', - to differentiate your variable from the append operator. This potential - conflict is unlikely, but is documented here to be thorough. - -* The "Join" event from app_queue now uses the CallerIDNum header instead of - the CallerID header to indicate the CallerID number. - -* If you use ODBC storage for voicemail, there is a new field called "flag" - which should be a char(8) or larger. This field specifies whether or not a - message has been designated to be "Urgent", "PRIORITY", or not. - -From 1.4 to 1.6: - -AEL: - -* Macros are now implemented underneath with the Gosub() application. - Heaven Help You if you wrote code depending on any aspect of this! - Previous to 1.6, macros were implemented with the Macro() app, which - provided a nice feature of auto-returning. The compiler will do its - best to insert a Return() app call at the end of your macro if you did - not include it, but really, you should make sure that all execution - paths within your macros end in "return;". - -* The conf2ael program is 'introduced' in this release; it is in a rather - crude state, but deemed useful for making a first pass at converting - extensions.conf code into AEL. More intelligence will come with time. - -Core: - -* The 'languageprefix' option in asterisk.conf is now deprecated, and - the default sound file layout for non-English sounds is the 'new - style' layout introduced in Asterisk 1.4 (and used by the automatic - sound file installer in the Makefile). - -* The ast_expr2 stuff has been modified to handle floating-point numbers. - Numbers of the format D.D are now acceptable input for the expr parser, - Where D is a string of base-10 digits. All math is now done in "long double", - if it is available on your compiler/architecture. This was half-way between - a bug-fix (because the MATH func returns fp by default), and an enhancement. - Also, for those counting on, or needing, integer operations, a series of - 'functions' were also added to the expr language, to allow several styles - of rounding/truncation, along with a set of common floating point operations, - like sin, cos, tan, log, pow, etc. The ability to call external functions - like CDR(), etc. was also added, without having to use the ${...} notation. - -* The delimiter passed to applications has been changed to the comma (','), as - that is what people are used to using within extensions.conf. If you are - using realtime extensions, you will need to translate your existing dialplan - to use this separator. To use a literal comma, you need merely to escape it - with a backslash ('\'). Another possible side effect is that you may need to - remove the obscene level of backslashing that was necessary for the dialplan - to work correctly in 1.4 and previous versions. This should make writing - dialplans less painful in the future, albeit with the pain of a one-time - conversion. If you would like to avoid this conversion immediately, set - pbx_realtime=1.4 in the [compat] section of asterisk.conf. After - transitioning, set pbx_realtime=1.6 in the same section. - -* For the same purpose as above, you may set res_agi=1.4 in the [compat] - section of asterisk.conf to continue to use the '|' delimiter in the EXEC - arguments of AGI applications. After converting to use the ',' delimiter, - change this option to res_agi=1.6. - -* As a side effect of the application delimiter change, many places that used - to need quotes in order to get the proper meaning are no longer required. - You now only need to quote strings in configuration files if you literally - want quotation marks within a string. - -* Any applications run that contain the pipe symbol but not a comma symbol will - get a warning printed to the effect that the application delimiter has changed. - However, there are legitimate reasons why this might be useful in certain - situations, so this warning can be turned off with the dontwarn option in - asterisk.conf. - -* The logger.conf option 'rotatetimestamp' has been deprecated in favor of - 'rotatestrategy'. This new option supports a 'rotate' strategy that more - closely mimics the system logger in terms of file rotation. - -* The concise versions of various CLI commands are now deprecated. We recommend - using the manager interface (AMI) for application integration with Asterisk. - -Voicemail: - -* The voicemail configuration values 'maxmessage' and 'minmessage' have - been changed to 'maxsecs' and 'minsecs' to clarify their purpose and - to make them more distinguishable from 'maxmsgs', which sets folder - size. The old variables will continue to work in this version, albeit - with a deprecation warning. - -* If you use any interface for modifying voicemail aside from the built in - dialplan applications, then the option "pollmailboxes" *must* be set in - voicemail.conf for message waiting indication (MWI) to work properly. This - is because Voicemail notification is now event based instead of polling - based. The channel drivers are no longer responsible for constantly manually - checking mailboxes for changes so that they can send MWI information to users. - Examples of situations that would require this option are web interfaces to - voicemail or an email client in the case of using IMAP storage. - -Applications: - - -* ChanIsAvail() now has a 't' option, which allows the specified device - to be queried for state without consulting the channel drivers. This - performs mostly a 'ChanExists' sort of function. - -* ChannelRedirect() will not terminate the channel that fails to do a - channelredirect as it has done previously. Instead CHANNELREDIRECT_STATUS - will reflect if the attempt was successful of not. - -* SetCallerPres() has been replaced with the CALLERPRES() dialplan function - and is now deprecated. - -* DISA()'s fifth argument is now an options argument. If you have previously - used 'NOANSWER' in this argument, you'll need to convert that to the new - option 'n'. - -* Macro() is now deprecated. If you need subroutines, you should use the - Gosub()/Return() applications. To replace MacroExclusive(), we have - introduced dialplan functions LOCK(), TRYLOCK(), and UNLOCK(). You may use - these functions in any location where you desire to ensure that only one - channel is executing that path at any one time. The Macro() applications - are deprecated for performance reasons. However, since Macro() has been - around for a long time and so many dialplans depend heavily on it, for the - sake of backwards compatibility it will not be removed . It is also worth - noting that using both Macro() and GoSub() at the same time is _heavily_ - discouraged. - -* Read() now sets a READSTATUS variable on exit. It does NOT automatically - return -1 (and hangup) anymore on error. If you want to hangup on error, - you need to do so explicitly in your dialplan. - -* Privacy() no longer uses privacy.conf, so any options must be specified - directly in the application arguments. - -* MusicOnHold application now has duration parameter which allows specifying - timeout in seconds. - -* WaitMusicOnHold application is now deprecated in favor of extended MusicOnHold. - -* SetMusicOnHold is now deprecated. You should use Set(CHANNEL(musicclass)=...) - instead. - -* The arguments in ExecIf changed a bit, to be more like other applications. - The syntax is now ExecIf(?appiftrue(args):appiffalse(args)). - -* The behavior of the Set application now depends upon a compatibility option, - set in asterisk.conf. To use the old 1.4 behavior, which allowed Set to take - multiple key/value pairs, set app_set=1.4 in [compat] in asterisk.conf. To - use the new behavior, which permits variables to be set with embedded commas, - set app_set=1.6 in [compat] in asterisk.conf. Note that you can have both - behaviors at the same time, if you switch to using MSet if you want the old - behavior. - -Dialplan Functions: - -* QUEUE_MEMBER_COUNT() has been deprecated in favor of the QUEUE_MEMBER() function. For - more information, issue a "show function QUEUE_MEMBER" from the CLI. - -CDR: - -* The cdr_sqlite module has been marked as deprecated in favor of - cdr_sqlite3_custom. It will potentially be removed from the tree - after Asterisk 1.6 is released. - -* The cdr_odbc module now uses res_odbc to manage its connections. The - username and password parameters in cdr_odbc.conf, therefore, are no - longer used. The dsn parameter now points to an entry in res_odbc.conf. - -* The uniqueid field in the core Asterisk structure has been changed from a - maximum 31 character field to a 149 character field, to account for all - possible values the systemname prefix could be. In the past, if the - systemname was too long, the uniqueid would have been truncated. - -* The cdr_tds module now supports all versions of FreeTDS that contain - the db-lib frontend. It will also now log the userfield variable if - the target database table contains a column for it. - -Formats: - -* format_wav: The GAIN preprocessor definition and source code that used it - is removed. This change was made in response to user complaints of - choppiness or the clipping of loud signal peaks. To increase the volume - of voicemail messages, use the 'volgain' option in voicemail.conf - -Channel Drivers: - -* SIP: a small upgrade to support the "Record" button on the SNOM360, - which sends a sip INFO message with a "Record: on" or "Record: off" - header. If Asterisk is set up (via features.conf) to accept "One Touch Monitor" - requests (by default, via '*1'), then the user-configured dialpad sequence - is generated, and recording can be started and stopped via this button. The - file names and formats are all controlled via the normal mechanisms. If the - user has not configured the automon feature, the normal "415 Unsupported media type" - is returned, and nothing is done. - -* SIP: The "call-limit" option is marked as deprecated. It still works in this version of - Asterisk, but will be removed in the following version. Please use the groupcount functions - in the dialplan to enforce call limits. The "limitonpeer" configuration option is - now renamed to "counteronpeer". - -* SIP: The "username" option is now renamed to "defaultuser" to match "defaultip". - These are used only before registration to call a peer with the uri - sip:defaultuser@defaultip - The "username" setting still work, but is deprecated and will not work in - the next version of Asterisk. - -* SIP: The old "insecure" options, deprecated in 1.4, have been removed. - "insecure=very" should be changed to "insecure=port,invite" - "insecure=yes" should be changed to "insecure=port" - Be aware that some telephony providers show the invalid syntax in their - sample configurations. - -* chan_local.c: the comma delimiter inside the channel name has been changed to a - semicolon, in order to make the Local channel driver compatible with the comma - delimiter change in applications. - -* H323: The "tos" setting has changed name to "tos_audio" and "cos" to "cos_audio" - to be compatible with settings in sip.conf. The "tos" and "cos" configuration - is deprecated and will stop working in the next release of Asterisk. - -* Console: A new console channel driver, chan_console, has been added to Asterisk. - This new module can not be loaded at the same time as chan_alsa or chan_oss. The - default modules.conf only loads one of them (chan_oss by default). So, unless you - have modified your modules.conf to not use the autoload option, then you will need - to modify modules.conf to add another "noload" line to ensure that only one of - these three modules gets loaded. - -* DAHDI: The chan_zap module that supported PSTN interfaces using - Zaptel has been renamed to chan_dahdi, and only supports the DAHDI - telephony driver package for PSTN interfaces. See the - Zaptel-to-DAHDI.txt file for more details on this transition. - -* DAHDI: The "msdstrip" option has been deprecated, as it provides no value over - the method of stripping digits in the dialplan using variable substring syntax. - -Configuration: - -* pbx_dundi.c: tos parameter changed to use new values. Old values like lowdelay, - lowcost and other is not acceptable now. Look into qos.tex for description of - this parameter. - -* queues.conf: the queue-lessthan sound file option is no longer available, and the - queue-round-seconds option no longer takes '1' as a valid parameter. - -Manager: - -* Manager has been upgraded to version 1.1 with a lot of changes. - Please check doc/manager_1_1.txt for information - -* The IAXpeers command output has been changed to more closely resemble the - output of the SIPpeers command. - -* cdr_manager now reports at the "cdr" level, not at "call" You may need to - change your manager.conf to add the level to existing AMI users, if they - want to see the CDR events generated. - -* The Originate command now requires the Originate write permission. For - Originate with the Application parameter, you need the additional System - privilege if you want to do anything that calls out to a subshell. - -iLBC Codec: - -* Previously, the Asterisk source code distribution included the iLBC - encoder/decoder source code, from Global IP Solutions - (http://www.gipscorp.com). This code is not licensed for - distribution, and thus has been removed from the Asterisk source - code distribution. If you wish to use codec_ilbc to support iLBC - channels in Asterisk, you can run the contrib/scripts/get_ilbc_source.sh - script to download the source and put it in the proper place in - the Asterisk build tree. Once that is done you can follow your normal - steps of building Asterisk. You will need to run 'menuselect' and enable - the iLBC codec in the 'Codec Translators' category. - -From 1.2 to 1.4: - -Build Process (configure script): - -Asterisk now uses an autoconf-generated configuration script to learn how it -should build itself for your system. As it is a standard script, running: - -$ ./configure --help - -will show you all the options available. This script can be used to tell the -build process what libraries you have on your system (if it cannot find them -automatically), which libraries you wish to have ignored even though they may -be present, etc. - -You must run the configure script before Asterisk will build, although it will -attempt to automatically run it for you with no options specified; for most -users, that will result in a similar build to what they would have had before -the configure script was added to the build process (except for having to run -'make' again after the configure script is run). Note that the configure script -does NOT need to be re-run just to rebuild Asterisk; you only need to re-run it -when your system configuration changes or you wish to build Asterisk with -different options. - -Build Process (module selection): - -The Asterisk source tree now includes a basic module selection and build option -selection tool called 'menuselect'. Run 'make menuselect' to make your choices. -In this tool, you can disable building of modules that you don't care about, -turn on/off global options for the build and see which modules will not -(and cannot) be built because your system does not have the required external -dependencies installed. - -The resulting file from menuselect is called 'menuselect.makeopts'. Note that -the resulting menuselect.makeopts file generally contains which modules *not* -to build. The modules listed in this file indicate which modules have unmet -dependencies, a present conflict, or have been disabled by the user in the -menuselect interface. Compiler Flags can also be set in the menuselect -interface. In this case, the resulting file contains which CFLAGS are in use, -not which ones are not in use. - -If you would like to save your choices and have them applied against all -builds, the file can be copied to '~/.asterisk.makeopts' or -'/etc/asterisk.makeopts'. - -Build Process (Makefile targets): - -The 'valgrind' and 'dont-optimize' targets have been removed; their functionality -is available by enabling the DONT_OPTIMIZE setting in the 'Compiler Flags' menu -in the menuselect tool. - -It is now possible to run most make targets against a single subdirectory; from -the top level directory, for example, 'make channels' will run 'make all' in the -'channels' subdirectory. This also is true for 'clean', 'distclean' and 'depend'. - -Sound (prompt) and Music On Hold files: - -Beginning with Asterisk 1.4, the sound files and music on hold files supplied for -use with Asterisk have been replaced with new versions produced from high quality -master recordings, and are available in three languages (English, French and -Spanish) and in five formats (WAV (uncompressed), mu-Law, a-Law, GSM and G.729). -In addition, the music on hold files provided by opsound.org Music are now available -in the same five formats, but no longer available in MP3 format. - -The Asterisk 1.4 tarball packages will only include English prompts in GSM format, -(as were supplied with previous releases) and the opsound.org MOH files in WAV format. -All of the other variations can be installed by running 'make menuselect' and -selecting the packages you wish to install; when you run 'make install', those -packages will be downloaded and installed along with the standard files included -in the tarball. - -If for some reason you expect to not have Internet access at the time you will be -running 'make install', you can make your package selections using menuselect and -then run 'make sounds' to download (only) the sound packages; this will leave the -sound packages in the 'sounds' subdirectory to be used later during installation. - -WARNING: Asterisk 1.4 supports a new layout for sound files in multiple languages; -instead of the alternate-language files being stored in subdirectories underneath -the existing files (for French, that would be digits/fr, letters/fr, phonetic/fr, -etc.) the new layout creates one directory under /var/lib/asterisk/sounds for the -language itself, then places all the sound files for that language under that -directory and its subdirectories. This is the layout that will be created if you -select non-English languages to be installed via menuselect, HOWEVER Asterisk does -not default to this layout and will not find the files in the places it expects them -to be. If you wish to use this layout, make sure you put 'languageprefix=yes' in your -/etc/asterisk/asterisk.conf file, so that Asterisk will know how the files were -installed. - -PBX Core: - -* The (very old and undocumented) ability to use BYEXTENSION for dialing - instead of ${EXTEN} has been removed. - -* Builtin (res_features) transfer functionality attempts to use the context - defined in TRANSFER_CONTEXT variable of the transferer channel first. If - not set, it uses the transferee variable. If not set in any channel, it will - attempt to use the last non macro context. If not possible, it will default - to the current context. - -* The autofallthrough setting introduced in Asterisk 1.2 now defaults to 'yes'; - if your dialplan relies on the ability to 'run off the end' of an extension - and wait for a new extension without using WaitExten() to accomplish that, - you will need set autofallthrough to 'no' in your extensions.conf file. - -Command Line Interface: - -* 'show channels concise', designed to be used by applications that will parse - its output, previously used ':' characters to separate fields. However, some - of those fields can easily contain that character, making the output not - parseable. The delimiter has been changed to '!'. - -Applications: - -* In previous Asterisk releases, many applications would jump to priority n+101 - to indicate some kind of status or error condition. This functionality was - marked deprecated in Asterisk 1.2. An option to disable it was provided with - the default value set to 'on'. The default value for the global priority - jumping option is now 'off'. - -* The applications Cut, Sort, DBGet, DBPut, SetCIDNum, SetCIDName, SetRDNIS, - AbsoluteTimeout, DigitTimeout, ResponseTimeout, SetLanguage, GetGroupCount, - and GetGroupMatchCount were all deprecated in version 1.2, and therefore have - been removed in this version. You should use the equivalent dialplan - function in places where you have previously used one of these applications. - -* The application SetGlobalVar has been deprecated. You should replace uses - of this application with the following combination of Set and GLOBAL(): - Set(GLOBAL(name)=value). You may also access global variables exclusively by - using the GLOBAL() dialplan function, instead of relying on variable - interpolation falling back to globals when no channel variable is set. - -* The application SetVar has been renamed to Set. The syntax SetVar was marked - deprecated in version 1.2 and is no longer recognized in this version. The - use of Set with multiple argument pairs has also been deprecated. Please - separate each name/value pair into its own dialplan line. - -* app_read has been updated to use the newer options codes, using "skip" or - "noanswer" will not work. Use s or n. Also there is a new feature i, for - using indication tones, so typing in skip would give you unexpected results. - -* OSPAuth is added to authenticate OSP tokens in in_bound call setup messages. - -* The CONNECT event in the queue_log from app_queue now has a second field - in addition to the holdtime field. It contains the unique ID of the - queue member channel that is taking the call. This is useful when trying - to link recording filenames back to a particular call from the queue. - -* The old/current behavior of app_queue has a serial type behavior - in that the queue will make all waiting callers wait in the queue - even if there is more than one available member ready to take - calls until the head caller is connected with the member they - were trying to get to. The next waiting caller in line then - becomes the head caller, and they are then connected with the - next available member and all available members and waiting callers - waits while this happens. This cycle continues until there are - no more available members or waiting callers, whichever comes first. - The new behavior, enabled by setting autofill=yes in queues.conf - either at the [general] level to default for all queues or - to set on a per-queue level, makes sure that when the waiting - callers are connecting with available members in a parallel fashion - until there are no more available members or no more waiting callers, - whichever comes first. This is probably more along the lines of how - one would expect a queue should work and in most cases, you will want - to enable this new behavior. If you do not specify or comment out this - option, it will default to "no" to keep backward compatability with the old - behavior. - -* Queues depend on the channel driver reporting the proper state - for each member of the queue. To get proper signalling on - queue members that use the SIP channel driver, you need to - enable a call limit (could be set to a high value so it - is not put into action) and also make sure that both inbound - and outbound calls are accounted for. - - Example: - - [general] - limitonpeer = yes - - [peername] - type=friend - call-limit=10 - - -* The app_queue application now has the ability to use MixMonitor to - record conversations queue members are having with queue callers. Please - see configs/queues.conf.sample for more information on this option. - -* The app_queue application strategy called 'roundrobin' has been deprecated - for this release. Users are encouraged to use 'rrmemory' instead, since it - provides more 'true' round-robin call delivery. For the Asterisk 1.6 release, - 'rrmemory' will be renamed 'roundrobin'. - -* The app_queue application option called 'monitor-join' has been deprecated - for this release. Users are encouraged to use 'monitor-type=mixmonitor' instead, - since it provides the same functionality but is not dependent on soxmix or some - other external program in order to mix the audio. - -* app_meetme: The 'm' option (monitor) is renamed to 'l' (listen only), and - the 'm' option now provides the functionality of "initially muted". - In practice, most existing dialplans using the 'm' flag should not notice - any difference, unless the keypad menu is enabled, allowing the user - to unmute themselves. - -* ast_play_and_record would attempt to cancel the recording if a DTMF - '0' was received. This behavior was not documented in most of the - applications that used ast_play_and_record and the return codes from - ast_play_and_record weren't checked for properly. - ast_play_and_record has been changed so that '0' no longer cancels a - recording. If you want to allow DTMF digits to cancel an - in-progress recording use ast_play_and_record_full which allows you - to specify which DTMF digits can be used to accept a recording and - which digits can be used to cancel a recording. - -* ast_app_messagecount has been renamed to ast_app_inboxcount. There is now a - new ast_app_messagecount function which takes a single context/mailbox/folder - mailbox specification and returns the message count for that folder only. - This addresses the deficiency of not being able to count the number of - messages in folders other than INBOX and Old. - -* The exit behavior of the AGI applications has changed. Previously, when - a connection to an AGI server failed, the application would cause the channel - to immediately stop dialplan execution and hangup. Now, the only time that - the AGI applications will cause the channel to stop dialplan execution is - when the channel itself requests hangup. The AGI applications now set an - AGISTATUS variable which will allow you to find out whether running the AGI - was successful or not. - - Previously, there was no way to handle the case where Asterisk was unable to - locally execute an AGI script for some reason. In this case, dialplan - execution will continue as it did before, but the AGISTATUS variable will be - set to "FAILURE". - - A locally executed AGI script can now exit with a non-zero exit code and this - failure will be detected by Asterisk. If an AGI script exits with a non-zero - exit code, the AGISTATUS variable will be set to "FAILURE" as opposed to - "SUCCESS". - -* app_voicemail: The ODBC_STORAGE capability now requires the extended table format - previously used only by EXTENDED_ODBC_STORAGE. This means that you will need to update - your table format using the schema provided in doc/odbcstorage.txt - -* app_waitforsilence: Fixes have been made to this application which changes the - default behavior with how quickly it returns. You can maintain "old-style" behavior - with the addition/use of a third "timeout" parameter. - Please consult the application documentation and make changes to your dialplan - if appropriate. - -Manager: - -* After executing the 'status' manager action, the "Status" manager events - included the header "CallerID:" which was actually only the CallerID number, - and not the full CallerID string. This header has been renamed to - "CallerIDNum". For compatibility purposes, the CallerID parameter will remain - until after the release of 1.4, when it will be removed. Please use the time - during the 1.4 release to make this transition. - -* The AgentConnect event now has an additional field called "BridgedChannel" - which contains the unique ID of the queue member channel that is taking the - call. This is useful when trying to link recording filenames back to - a particular call from the queue. - -* app_userevent has been modified to always send Event: UserEvent with the - additional header UserEvent: . Also, the Channel and UniqueID - headers are not automatically sent, unless you specify them as separate - arguments. Please see the application help for the new syntax. - -* app_meetme: Mute and Unmute events are now reported via the Manager API. - Native Manager API commands MeetMeMute and MeetMeUnmute are provided, which - are easier to use than "Action Command:". The MeetMeStopTalking event has - also been deprecated in favor of the already existing MeetmeTalking event - with a "Status" of "on" or "off" added. - -* OriginateFailure and OriginateSuccess events were replaced by event - OriginateResponse with a header named "Response" to indicate success or - failure - -Variables: - -* The builtin variables ${CALLERID}, ${CALLERIDNAME}, ${CALLERIDNUM}, - ${CALLERANI}, ${DNID}, ${RDNIS}, ${DATETIME}, ${TIMESTAMP}, ${ACCOUNTCODE}, - and ${LANGUAGE} have all been deprecated in favor of their related dialplan - functions. You are encouraged to move towards the associated dialplan - function, as these variables will be removed in a future release. - -* The CDR-CSV variables uniqueid, userfield, and basing time on GMT are now - adjustable from cdr.conf, instead of recompiling. - -* OSP applications exports several new variables, ${OSPINHANDLE}, - ${OSPOUTHANDLE}, ${OSPINTOKEN}, ${OSPOUTTOKEN}, ${OSPCALLING}, - ${OSPINTIMELIMIT}, and ${OSPOUTTIMELIMIT} - -* Builtin transfer functionality sets the variable ${TRANSFERERNAME} in the new - created channel. This variables holds the channel name of the transferer. - -* The dial plan variable PRI_CAUSE will be removed from future versions - of Asterisk. - It is replaced by adding a cause value to the hangup() application. - -Functions: - -* The function ${CHECK_MD5()} has been deprecated in favor of using an - expression: $[${MD5()} = ${saved_md5}]. - -* The 'builtin' functions that used to be combined in pbx_functions.so are - now built as separate modules. If you are not using 'autoload=yes' in your - modules.conf file then you will need to explicitly load the modules that - contain the functions you want to use. - -* The ENUMLOOKUP() function with the 'c' option (for counting the number of - records), but the lookup fails to match any records, the returned value will - now be "0" instead of blank. - -* The REALTIME() function is now available in version 1.4 and app_realtime has - been deprecated in favor of the new function. app_realtime will be removed - completely with the version 1.6 release so please take the time between - releases to make any necessary changes - -* The QUEUEAGENTCOUNT() function has been deprecated in favor of - QUEUE_MEMBER_COUNT(). - -The IAX2 channel: - -* It is possible that previous configurations depended on the order in which - peers and users were specified in iax.conf for forcing the order in which - chan_iax2 matched against them. This behavior is going away and is considered - deprecated in this version. Avoid having ambiguous peer and user entries and - to make things easy on yourself, always set the "username" option for users - so that the remote end can match on that exactly instead of trying to infer - which user you want based on host. - - If you would like to go ahead and use the new behavior which doesn't use the - order in the config file to influence matching order, then change the - MAX_PEER_BUCKETS define in chan_iax2.c to a value greater than one. An - example is provided there. By changing this, you will get *much* better - performance on systems that do a lot of peer and user lookups as they will be - stored in memory in a much more efficient manner. - -* The "mailboxdetail" option has been deprecated. Previously, if this option - was not enabled, the 2 byte MSGCOUNT information element would be set to all - 1's to indicate there there is some number of messages waiting. With this - option enabled, the number of new messages were placed in one byte and the - number of old messages are placed in the other. This is now the default - (and the only) behavior. - -The SIP channel: - -* The "incominglimit" setting is replaced by the "call-limit" setting in - sip.conf. - -* OSP support code is removed from SIP channel to OSP applications. ospauth - option in sip.conf is removed to osp.conf as authpolicy. allowguest option - in sip.conf cannot be set as osp anymore. - -* The Asterisk RTP stack has been changed in regards to RFC2833 reception - and transmission. Packets will now be sent with proper duration instead of all - at once. If you are receiving calls from a pre-1.4 Asterisk installation you - will want to turn on the rfc2833compensate option. Without this option your - DTMF reception may act poorly. - -* The $SIPUSERAGENT dialplan variable is deprecated and will be removed - in coming versions of Asterisk. Please use the dialplan function - SIPCHANINFO(useragent) instead. - -* The ALERT_INFO dialplan variable is deprecated and will be removed - in coming versions of Asterisk. Please use the dialplan application - sipaddheader() to add the "Alert-Info" header to the outbound invite. - -* The "canreinvite" option has changed. canreinvite=yes used to disable - re-invites if you had NAT=yes. In 1.4, you need to set canreinvite=nonat - to disable re-invites when NAT=yes. This is propably what you want. - The settings are now: "yes", "no", "nonat", "update". Please consult - sip.conf.sample for detailed information. - -The Zap channel: - -* Support for MFC/R2 has been removed, as it has not been functional for some - time and it has no maintainer. - -The Agent channel: - -* Callback mode (AgentCallbackLogin) is now deprecated, since the entire function - it provided can be done using dialplan logic, without requiring additional - channel and module locks (which frequently caused deadlocks). An example of - how to do this using AEL dialplan is in doc/queues-with-callback-members.txt. - -The G726-32 codec: - -* It has been determined that previous versions of Asterisk used the wrong codeword - packing order for G726-32 data. This version supports both available packing orders, - and can transcode between them. It also now selects the proper order when - negotiating with a SIP peer based on the codec name supplied in the SDP. However, - there are existing devices that improperly request one order and then use another; - Sipura and Grandstream ATAs are known to do this, and there may be others. To - be able to continue to use these devices with this version of Asterisk and the - G726-32 codec, a configuration parameter called 'g726nonstandard' has been added - to sip.conf, so that Asterisk can use the packing order expected by the device (even - though it requested a different order). In addition, the internal format number for - G726-32 has been changed, and the old number is now assigned to AAL2-G726-32. The - result of this is that this version of Asterisk will be able to interoperate over - IAX2 with older versions of Asterisk, as long as this version is told to allow - 'g726aal2' instead of 'g726' as the codec for the call. - -Installation: - -* On BSD systems, the installation directories have changed to more "FreeBSDish" - directories. On startup, Asterisk will look for the main configuration in - /usr/local/etc/asterisk/asterisk.conf - If you have an old installation, you might want to remove the binaries and - move the configuration files to the new locations. The following directories - are now default: - ASTLIBDIR /usr/local/lib/asterisk - ASTVARLIBDIR /usr/local/share/asterisk - ASTETCDIR /usr/local/etc/asterisk - ASTBINDIR /usr/local/bin/asterisk - ASTSBINDIR /usr/local/sbin/asterisk - -Music on Hold: - -* The music on hold handling has been changed in some significant ways in hopes - to make it work in a way that is much less confusing to users. Behavior will - not change if the same configuration is used from older versions of Asterisk. - However, there are some new configuration options that will make things work - in a way that makes more sense. - - Previously, many of the channel drivers had an option called "musicclass" or - something similar. This option set what music on hold class this channel - would *hear* when put on hold. Some people expected (with good reason) that - this option was to configure what music on hold class to play when putting - the bridged channel on hold. This option has now been deprecated. - - Two new music on hold related configuration options for channel drivers have - been introduced. Some channel drivers support both options, some just one, - and some support neither of them. Check the sample configuration files to see - which options apply to which channel driver. - - The "mohsuggest" option specifies which music on hold class to suggest to the - bridged channel when putting them on hold. The only way that this class can - be overridden is if the bridged channel has a specific music class set that - was done in the dialplan using Set(CHANNEL(musicclass)=something). - - The "mohinterpret" option is similar to the old "musicclass" option. It - specifies which music on hold class this channel would like to listen to when - put on hold. This music class is only effective if this channel has no music - class set on it from the dialplan and the bridged channel putting this one on - hold had no "mohsuggest" setting. - - The IAX2 and Zap channel drivers have an additional feature for the - "mohinterpret" option. If this option is set to "passthrough", then these - channel drivers will pass through the HOLD message in signalling instead of - starting music on hold on the channel. An example for how this would be - useful is in an enterprise network of Asterisk servers. When one phone on one - server puts a phone on a different server on hold, the remote server will be - responsible for playing the hold music to its local phone that was put on - hold instead of the far end server across the network playing the music. - -CDR Records: - -* The behavior of the "clid" field of the CDR has always been that it will - contain the callerid ANI if it is set, or the callerid number if ANI was not - set. When using the "callerid" option for various channel drivers, some - would set ANI and some would not. This has been cleared up so that all - channel drivers set ANI. If you would like to change the callerid number - on the channel from the dialplan and have that change also show up in the - CDR, then you *must* set CALLERID(ANI) as well as CALLERID(num). - -API: - -* There are some API functions that were not previously prefixed with the 'ast_' - prefix but now are; these include the ADSI, ODBC and AGI interfaces. If you - have a module that uses the services provided by res_adsi, res_odbc, or - res_agi, you will need to add ast_ prefixes to the functions that you call - from those modules. - -Formats: - -* format_wav: The GAIN preprocessor definition has been changed from 2 to 0 - in Asterisk 1.4. This change was made in response to user complaints of - choppiness or the clipping of loud signal peaks. The GAIN preprocessor - definition will be retained in Asterisk 1.4, but will be removed in a - future release. The use of GAIN for the increasing of voicemail message - volume should use the 'volgain' option in voicemail.conf - -From 1.0 to 1.2: - -Compiling: - -* The Asterisk 1.2 source code now uses C language features - supported only by 'modern' C compilers. Generally, this means GCC - version 3.0 or higher, although some GCC 2.96 releases will also - work. Some non-GCC compilers that support C99 and the common GCC - extensions (including anonymous structures and unions) will also - work. All releases of GCC 2.95 do _not_ have the requisite feature - support; systems using that compiler will need to be upgraded to - a more recent compiler release. - -Dialplan Expressions: - -* The dialplan expression parser (which handles $[ ... ] constructs) - has gone through a major upgrade, but has one incompatible change: - spaces are no longer required around expression operators, including - string comparisons. However, you can now use quoting to keep strings - together for comparison. For more details, please read the - doc/README.variables file, and check over your dialplan for possible - problems. - -Agents: - -* The default for ackcall has been changed to "no" instead of "yes" - because of a bug which caused the "yes" behavior to generally act like - "no". You may need to adjust the value if your agents behave - differently than you expect with respect to acknowledgement. - -* The AgentCallBackLogin application now requires a second '|' before - specifying an extension@context. This is to distinguish the options - string from the extension, so that they do not conflict. See - 'show application AgentCallbackLogin' for more details. - -Parking: - -* Parking behavior has changed slightly; when a parked call times out, - Asterisk will attempt to deliver the call back to the extension that - parked it, rather than the 's' extension. If that extension is busy - or unavailable, the parked call will be lost. - -Dialing: - -* The Caller*ID of the outbound leg is now the extension that was - called, rather than the Caller*ID of the inbound leg of the call. The - "o" flag for Dial can be used to restore the original behavior if - desired. Note that if you are looking for the originating callerid - from the manager event, there is a new manager event "Dial" which - provides the source and destination channels and callerid. - -IAX: - -* The naming convention for IAX channels has changed in two ways: - 1. The call number follows a "-" rather than a "/" character. - 2. The name of the channel has been simplified to IAX2/peer-callno, - rather than IAX2/peer@peer-callno or even IAX2/peer@peer/callno. - -SIP: - -* The global option "port" in 1.0.X that is used to set which port to - bind to has been changed to "bindport" to be more consistent with - the other channel drivers and to avoid confusion with the "port" - option for users/peers. - -* The "Registry" event now uses "Username" rather than "User" for - consistency with IAX. - -Applications: - -* With the addition of dialplan functions (which operate similarly - to variables), the SetVar application has been renamed to Set. - -* The CallerPres application has been removed. Use SetCallerPres - instead. It accepts both numeric and symbolic names. - -* The applications GetGroupCount, GetGroupMatchCount, SetGroup, and - CheckGroup have been deprecated in favor of functions. Here is a - table of their replacements: - - GetGroupCount([groupname][@category] GROUP_COUNT([groupname][@category]) Set(GROUPCOUNT=${GROUP_COUNT()}) - GroupMatchCount(groupmatch[@category]) GROUP_MATCH_COUNT(groupmatch[@category]) Set(GROUPCOUNT=${GROUP_MATCH_COUNT(SIP/.*)}) - SetGroup(groupname[@category]) GROUP([category])=groupname Set(GROUP()=test) - CheckGroup(max[@category]) N/A GotoIf($[ ${GROUP_COUNT()} > 5 ]?103) - - Note that CheckGroup does not have a direct replacement. There is - also a new function called GROUP_LIST() which will return a space - separated list of all of the groups set on a channel. The GROUP() - function can also return the name of the group set on a channel when - used in a read environment. - -* The applications DBGet and DBPut have been deprecated in favor of - functions. Here is a table of their replacements: - - DBGet(foo=family/key) Set(foo=${DB(family/key)}) - DBPut(family/key=${foo}) Set(DB(family/key)=${foo}) - -* The application SetLanguage has been deprecated in favor of the - function LANGUAGE(). - - SetLanguage(fr) Set(LANGUAGE()=fr) - - The LANGUAGE function can also return the currently set language: - - Set(MYLANG=${LANGUAGE()}) - -* The applications AbsoluteTimeout, DigitTimeout, and ResponseTimeout - have been deprecated in favor of the function TIMEOUT(timeouttype): - - AbsoluteTimeout(300) Set(TIMEOUT(absolute)=300) - DigitTimeout(15) Set(TIMEOUT(digit)=15) - ResponseTimeout(15) Set(TIMEOUT(response)=15) - - The TIMEOUT() function can also return the currently set timeouts: - - Set(DTIMEOUT=${TIMEOUT(digit)}) - -* The applications SetCIDName, SetCIDNum, and SetRDNIS have been - deprecated in favor of the CALLERID(datatype) function: - - SetCIDName(Joe Cool) Set(CALLERID(name)=Joe Cool) - SetCIDNum(2025551212) Set(CALLERID(number)=2025551212) - SetRDNIS(2024561414) Set(CALLERID(RDNIS)=2024561414) - -* The application Record now uses the period to separate the filename - from the format, rather than the colon. - -* The application VoiceMail now supports a 'temporary' greeting for each - mailbox. This greeting can be recorded by using option 4 in the - 'mailbox options' menu, and 'change your password' option has been - moved to option 5. - -* The application VoiceMailMain now only matches the 'default' context if - none is specified in the arguments. (This was the previously - documented behavior, however, we didn't follow that behavior.) The old - behavior can be restored by setting searchcontexts=yes in voicemail.conf. - -Queues: - -* A queue is now considered empty not only if there are no members but if - none of the members are available (e.g. agents not logged on). To - restore the original behavior, use "leavewhenempty=strict" or - "joinwhenempty=strict" instead of "=yes" for those options. - -* It is now possible to use multi-digit extensions in the exit context - for a queue (although you should not have overlapping extensions, - as there is no digit timeout). This means that the EXITWITHKEY event - in queue_log can now contain a key field with more than a single - character in it. - -Extensions: - -* By default, there is a new option called "autofallthrough" in - extensions.conf that is set to yes. Asterisk 1.0 (and earlier) - behavior was to wait for an extension to be dialed after there were no - more extensions to execute. "autofallthrough" changes this behavior - so that the call will immediately be terminated with BUSY, - CONGESTION, or HANGUP based on Asterisk's best guess. If you are - writing an extension for IVR, you must use the WaitExten application - if "autofallthrough" is set to yes. - -AGI: - -* AGI scripts did not always get SIGHUP at the end, previously. That - behavior has been fixed. If you do not want your script to terminate - at the end of AGI being called (e.g. on a hangup) then set SIGHUP to - be ignored within your application. - -* CallerID is reported with agi_callerid and agi_calleridname instead - of a single parameter holding both. - -Music On Hold: - -* The preferred format for musiconhold.conf has changed; please see the - sample configuration file for the new format. The existing format - is still supported but will generate warnings when the module is loaded. - -chan_modem: - -* All the chan_modem channel drivers (aopen, bestdata and i4l) are deprecated - in this release, and will be removed in the next major Asterisk release. - Please migrate to chan_misdn for ISDN interfaces; there is no upgrade - path for aopen and bestdata modem users. - -MeetMe: - -* The conference application now allows users to increase/decrease their - speaking volume and listening volume (independently of each other and - other users); the 'admin' and 'user' menus have changed, and new sound - files are included with this release. However, if a user calling in - over a Zaptel channel that does NOT have hardware DTMF detection - increases their speaking volume, it is likely they will no longer be - able to enter/exit the menu or make any further adjustments, as the - software DTMF detector will not be able to recognize the DTMF coming - from their device. - -GetVar Manager Action: - -* Previously, the behavior of the GetVar manager action reported the value - of a variable in the following manner: - > name: value - This has been changed to a manner similar to the SetVar action and is now - > Variable: name - > Value: value