diff --git a/CHANGES b/CHANGES index 4fd7b96cd7..b00c4b4777 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,9 @@ ============================================================================== === +=== 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 @@ -8,69 +12,6 @@ === ============================================================================== ------------------------------------------------------------------------------- ---- Functionality changes from Asterisk 16 to Asterisk 17 -------------------- ------------------------------------------------------------------------------- - -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 - -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. - -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. - ------------------------------------------------------------------------------ --- Functionality changes from Asterisk 16.2.0 to Asterisk 16.3.0 ---------- ------------------------------------------------------------------------------ diff --git a/UPGRADE-1.2.txt b/UPGRADE-1.2.txt deleted file mode 100644 index cfbff945fd..0000000000 --- a/UPGRADE-1.2.txt +++ /dev/null @@ -1,218 +0,0 @@ -========================================================= -=== -=== Information for upgrading from Asterisk 1.0 to 1.2 -=== -=== This file documents all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files 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. -=== -========================================================= - -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 diff --git a/UPGRADE-1.4.txt b/UPGRADE-1.4.txt deleted file mode 100644 index 74cb1e5b4a..0000000000 --- a/UPGRADE-1.4.txt +++ /dev/null @@ -1,497 +0,0 @@ -========================================================= -=== -=== Information for upgrading from Asterisk 1.2 to 1.4 -=== -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files 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. -=== -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== -========================================================= - -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 themsleves. - -* 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 diff --git a/UPGRADE-1.6.txt b/UPGRADE-1.6.txt deleted file mode 100644 index 4ae440147d..0000000000 --- a/UPGRADE-1.6.txt +++ /dev/null @@ -1,277 +0,0 @@ -========================================================= -=== -=== Information for upgrading from Asterisk 1.4 to 1.6 -=== -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files 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. -=== -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4 -=== -========================================================= - -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. diff --git a/UPGRADE-1.8.txt b/UPGRADE-1.8.txt deleted file mode 100644 index b01f762a58..0000000000 --- a/UPGRADE-1.8.txt +++ /dev/null @@ -1,343 +0,0 @@ -=========================================================== -=== -=== Information for upgrading between Asterisk versions -=== -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files 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. -=== -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4 -=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6 -=== -=========================================================== - -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 suppport 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. diff --git a/UPGRADE-10.txt b/UPGRADE-10.txt deleted file mode 100644 index f4b2bec829..0000000000 --- a/UPGRADE-10.txt +++ /dev/null @@ -1,92 +0,0 @@ -=========================================================== -=== -=== Information for upgrading between Asterisk versions -=== -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files also include 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. -=== -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4 -=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6 -=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8 -=== -=========================================================== - -From 10.4 to 10.5: - -* The complex processor detection and optimization has been removed from - the makefile in favor of using native optimization suppport 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. - -=========================================================== -=========================================================== diff --git a/UPGRADE-11.txt b/UPGRADE-11.txt deleted file mode 100644 index 58b70b6c10..0000000000 --- a/UPGRADE-11.txt +++ /dev/null @@ -1,280 +0,0 @@ -=========================================================== -=== -=== Information for upgrading between Asterisk versions -=== -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files also include 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. -=== -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4 -=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6 -=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8 -=== UPGRADE-10.txt -- Upgrade info for 1.8 to 10 -=== -=========================================================== - -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. - -=========================================================== -=========================================================== diff --git a/UPGRADE-12.txt b/UPGRADE-12.txt deleted file mode 100644 index 665e0168ad..0000000000 --- a/UPGRADE-12.txt +++ /dev/null @@ -1,478 +0,0 @@ -=========================================================== -=== -=== Information for upgrading between Asterisk versions -=== -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files also include 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. -=== -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4 -=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6 -=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8 -=== UPGRADE-10.txt -- Upgrade info for 1.8 to 10 -=== UPGRADE-11.txt -- Upgrade info for 10 to 11 -=== -=========================================================== - -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/. - - -=========================================================== -=========================================================== diff --git a/UPGRADE-13.txt b/UPGRADE-13.txt deleted file mode 100644 index d532d291d3..0000000000 --- a/UPGRADE-13.txt +++ /dev/null @@ -1,399 +0,0 @@ -=========================================================== -=== -=== Information for upgrading between Asterisk versions -=== -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files also include 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. -=== -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4 -=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6 -=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8 -=== UPGRADE-10.txt -- Upgrade info for 1.8 to 10 -=== UPGRADE-11.txt -- Upgrade info for 10 to 11 -=== UPGRADE-12.txt -- Upgrade info for 11 to 12 -=========================================================== - -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 - receivied 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. - -=========================================================== -=========================================================== diff --git a/UPGRADE-14.txt b/UPGRADE-14.txt deleted file mode 100644 index aaf236ba23..0000000000 --- a/UPGRADE-14.txt +++ /dev/null @@ -1,115 +0,0 @@ -=========================================================== -=== -=== Information for upgrading between Asterisk versions -=== -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files also include 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. -=== -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4 -=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6 -=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8 -=== UPGRADE-10.txt -- Upgrade info for 1.8 to 10 -=== UPGRADE-11.txt -- Upgrade info for 10 to 11 -=== UPGRADE-12.txt -- Upgrade info for 11 to 12 -=== UPGRADE-13.txt -- Upgrade info for 12 to 13 -=========================================================== - -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. - -=========================================================== -=========================================================== diff --git a/UPGRADE-15.txt b/UPGRADE-15.txt deleted file mode 100644 index d47bbe38a3..0000000000 --- a/UPGRADE-15.txt +++ /dev/null @@ -1,63 +0,0 @@ -=========================================================== -=== -=== Information for upgrading between Asterisk versions -=== -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files also include 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. -=== -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4 -=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6 -=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8 -=== UPGRADE-10.txt -- Upgrade info for 1.8 to 10 -=== UPGRADE-11.txt -- Upgrade info for 10 to 11 -=== UPGRADE-12.txt -- Upgrade info for 11 to 12 -=== UPGRADE-13.txt -- Upgrade info for 12 to 13 -=== UPGRADE-14.txt -- Upgrade info for 13 to 14 -=========================================================== - -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. diff --git a/UPGRADE-16.txt b/UPGRADE-16.txt deleted file mode 100644 index 93e4b5218b..0000000000 --- a/UPGRADE-16.txt +++ /dev/null @@ -1,86 +0,0 @@ -=========================================================== -=== -=== Information for upgrading between Asterisk versions -=== -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files also include 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. -=== -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4 -=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6 -=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8 -=== UPGRADE-10.txt -- Upgrade info for 1.8 to 10 -=== UPGRADE-11.txt -- Upgrade info for 10 to 11 -=== UPGRADE-12.txt -- Upgrade info for 11 to 12 -=== UPGRADE-13.txt -- Upgrade info for 12 to 13 -=== UPGRADE-14.txt -- Upgrade info for 13 to 14 -=== UPGRADE-15.txt -- Upgrade info for 14 to 15 -=========================================================== - -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. diff --git a/UPGRADE.txt b/UPGRADE.txt index 53e9c4a9b9..3abdb34ce2 100644 --- a/UPGRADE.txt +++ b/UPGRADE.txt @@ -1,91 +1,2635 @@ =========================================================== === +=== 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 === -=== These files document all the changes that MUST be taken -=== into account when upgrading between the Asterisk -=== versions listed below. 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. These files also include 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. +=== 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. === -=== UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2 -=== UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4 -=== UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6 -=== UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8 -=== UPGRADE-10.txt -- Upgrade info for 1.8 to 10 -=== UPGRADE-11.txt -- Upgrade info for 10 to 11 -=== UPGRADE-12.txt -- Upgrade info for 11 to 12 -=== UPGRADE-13.txt -- Upgrade info for 12 to 13 -=== UPGRADE-14.txt -- Upgrade info for 13 to 14 -=== UPGRADE-15.txt -- Upgrade info for 14 to 15 -=== UPGRADE-16.txt -- Upgrade info for 15 to 16 =========================================================== -New in 17.0.0: +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 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 + - 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. -func_callerid: - - The CALLERPRES() dialplan function, deprecated in Asterisk 1.8, has been - removed. +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. -res_parking: - - The PARKINGSLOT channel variable, deprecated in Asterisk 12 in favor of the - PARKING_SPACE channel variable, will no longer be set. + - 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. -res_xmpp: - - The JabberStatus application, deprecated in Asterisk 12, has been removed. +AMI: + - The 'ModuleCheck' Action's Version key will no longer show the module + version. The value will always be blank. -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. +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. -Applications - - The JabberStatus application, deprecated in Asterisk 12, has been removed. +Logging: + - The first callid created is now 1 instead of 0. The value 0 + is now reserved to represent a lack of callid. -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. +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 + receivied 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 suppport 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 suppport 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 themsleves. + +* 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 diff --git a/doc/CHANGES-staging/README.md b/doc/CHANGES-staging/README.md index da0df2a620..8a2407f95a 100644 --- a/doc/CHANGES-staging/README.md +++ b/doc/CHANGES-staging/README.md @@ -5,24 +5,28 @@ used by the release script to update the CHANGES file automatically. The only time that it is necessary to add something to the CHANGES-staging directory is if you are either adding a new feature to Asterisk or adding new functionality to an existing feature. The file does not need to have a meaningful name, but -it probably should. If there are multiple items that need documenting, each can -be separated with a subject line, which should always start with "Subject:", -followed by the subject of the change. This is case sensitive! For example, if -you are making a change to PJSIP, then you might add the file -"res_pjsip_my_cool_feature" to this directory, with a short description of what -it does. If you are adding multiple entries, they should be done in the same -commit to avoid merge conflicts. Here's an example: +it probably should. If there are multiple items that need documenting, you can +add multiple files, each with their own description. If the message is going to +be the same for each subject, then you can add multiple subject headers to one +file. The "Subject: xxx" line is case sensitive! For example, if you are making +a change to PJSIP, then you might add the file "res_pjsip_my_cool_feature" to +this directory, with a short description of what it does. If you are adding +multiple entries, they should be done in the same commit to avoid merge +conflicts. Here's an example: > Subject: res_pjsip +> Subject: Core > > Here's a pretty good description of my new feature that explains exactly what > it does and how to use it. + +Here's a master-only example: + +> Subject: res_ari +> Master-Only: True > -> Subject: core -> Master-Only: true -> -> Here's another description of something else I added that is a big enough -> change to warrant another entry in the CHANGES file. +> This change will only go into the master branch. The "Master-Only" header +> will never be in a change not in master. Note that the second subject has another header: "Master-Only". Changes that go into the master branch and ONLY the master branch are the only ones that should diff --git a/doc/CHANGES-staging/bridging_stasis_cache.txt b/doc/CHANGES-staging/bridging_stasis_cache.txt new file mode 100644 index 0000000000..df6b3cd103 --- /dev/null +++ b/doc/CHANGES-staging/bridging_stasis_cache.txt @@ -0,0 +1,36 @@ +Subject: Bridging +Master-Only: true + +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. diff --git a/doc/CHANGES-staging/chan_sip_deprecated.txt b/doc/CHANGES-staging/chan_sip_deprecated.txt new file mode 100644 index 0000000000..cffd1db565 --- /dev/null +++ b/doc/CHANGES-staging/chan_sip_deprecated.txt @@ -0,0 +1,7 @@ +Subject: chan_sip +Master-Only: true + +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 diff --git a/doc/CHANGES-staging/channels_stasis_cache.txt b/doc/CHANGES-staging/channels_stasis_cache.txt new file mode 100644 index 0000000000..b4dbfc3446 --- /dev/null +++ b/doc/CHANGES-staging/channels_stasis_cache.txt @@ -0,0 +1,16 @@ +Subject: Channels +Master-Only: true + +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. diff --git a/doc/UPGRADE-staging/README.md b/doc/UPGRADE-staging/README.md index 1ef93342b3..81471617a4 100644 --- a/doc/UPGRADE-staging/README.md +++ b/doc/UPGRADE-staging/README.md @@ -5,23 +5,27 @@ used by the release script to update the UPGRADE.txt file automatically. The only time that it is necessary to add something to the UPGRADE-staging directory is if you are making a breaking change to an existing feature in Asterisk. The file does not need to have a meaningful name, but it probably should. If there -are multiple items that need documenting, each can be separated with a subject -line, which should always start with "Subject:", followed by the subject of the -change. This is case sensitive! For example, if you are making a change to PJSIP, -then you might add the file "res_pjsip_breaking_change" to this directory, with -a short description of what it does. If you are adding multiple entries, they -should be done in the same commit to avoid merge conflicts. Here's an example: +are multiple items that need documenting, you can add multiple files, each with +their own description. If the message is going to be the same for each subject, +then you can add multiple subject headers to one file. The "Subject: xxx" line +is case sensitive! For example, if you are making a change to PJSIP, then you +might add the file "res_pjsip_my_cool_feature" to this directory, with a short +description of what it does. If you are adding multiple entries, they should be +done in the same commit to avoid merge conflicts. Here's an example: > Subject: res_pjsip +> Subject: Core > -> Here's a pretty good description of what I changed that explains exactly what -> it does and why it breaks things (and why they needed to be broken). +> Here's a pretty good description of my new feature that explains exactly what +> it does and how to use it. + +Here's a master-only example: + +> Subject: res_ari +> Master-Only: True > -> Subject: core -> Master-Only: true -> -> Here's another description of something else I added that is a big enough -> change to warrant another entry in the UPDATE.txt file. +> This change will only go into the master branch. The "Master-Only" header +> will never be in a change not in master. Note that the second subject has another header: "Master-Only". Changes that go into the master branch and ONLY the master branch are the only ones that should diff --git a/doc/UPGRADE-staging/applications_jabberstatus.txt b/doc/UPGRADE-staging/applications_jabberstatus.txt new file mode 100644 index 0000000000..93e411297c --- /dev/null +++ b/doc/UPGRADE-staging/applications_jabberstatus.txt @@ -0,0 +1,4 @@ +Subject: Applications +Master-Only: true + +The JabberStatus application, deprecated in Asterisk 12, has been removed. diff --git a/doc/UPGRADE-staging/bridging_stasis_cache.txt b/doc/UPGRADE-staging/bridging_stasis_cache.txt new file mode 100644 index 0000000000..df6b3cd103 --- /dev/null +++ b/doc/UPGRADE-staging/bridging_stasis_cache.txt @@ -0,0 +1,36 @@ +Subject: Bridging +Master-Only: true + +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. diff --git a/doc/UPGRADE-staging/chan_sip_deprecated.txt b/doc/UPGRADE-staging/chan_sip_deprecated.txt new file mode 100644 index 0000000000..cffd1db565 --- /dev/null +++ b/doc/UPGRADE-staging/chan_sip_deprecated.txt @@ -0,0 +1,7 @@ +Subject: chan_sip +Master-Only: true + +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 diff --git a/doc/UPGRADE-staging/channels_stasis_cache.txt b/doc/UPGRADE-staging/channels_stasis_cache.txt new file mode 100644 index 0000000000..b4dbfc3446 --- /dev/null +++ b/doc/UPGRADE-staging/channels_stasis_cache.txt @@ -0,0 +1,16 @@ +Subject: Channels +Master-Only: true + +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. diff --git a/doc/UPGRADE-staging/func_callerid_callerpres.txt b/doc/UPGRADE-staging/func_callerid_callerpres.txt new file mode 100644 index 0000000000..003d67d699 --- /dev/null +++ b/doc/UPGRADE-staging/func_callerid_callerpres.txt @@ -0,0 +1,5 @@ +Subject: func_callerid +Master-Only: true + +The CALLERPRES() dialplan function, deprecated in Asterisk 1.8, has been +removed. diff --git a/doc/UPGRADE-staging/res_parking_parkingslot.txt b/doc/UPGRADE-staging/res_parking_parkingslot.txt new file mode 100644 index 0000000000..b5b4cbc392 --- /dev/null +++ b/doc/UPGRADE-staging/res_parking_parkingslot.txt @@ -0,0 +1,5 @@ +Subject: res_parking +Master-Only: true + +The PARKINGSLOT channel variable, deprecated in Asterisk 12 in favor of the +PARKING_SPACE channel variable, will no longer be set. diff --git a/doc/UPGRADE-staging/res_xmpp_jabberstatus.txt b/doc/UPGRADE-staging/res_xmpp_jabberstatus.txt new file mode 100644 index 0000000000..4400278632 --- /dev/null +++ b/doc/UPGRADE-staging/res_xmpp_jabberstatus.txt @@ -0,0 +1,4 @@ +Subject: res_xmpp +Master-Only: true + +The JabberStatus application, deprecated in Asterisk 12, has been removed.