| 
									
										
										
										
											2008-02-08 16:49:19 +00:00
										 |  |  | ========================================================= | 
					
						
							| 
									
										
										
										
											2008-11-21 20:42:37 +00:00
										 |  |  | === | 
					
						
							| 
									
										
										
										
											2008-02-08 16:49:19 +00:00
										 |  |  | === Information for upgrading from Asterisk 1.0 to 1.2 | 
					
						
							|  |  |  | === | 
					
						
							| 
									
										
										
										
											2008-11-21 20:42:37 +00:00
										 |  |  | === 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. | 
					
						
							| 
									
										
										
										
											2008-02-08 16:49:19 +00:00
										 |  |  | === | 
					
						
							|  |  |  | ========================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 |