officially deprecate the 'roundrobin' queue strategy in favor of 'rrmemory'
[asterisk/asterisk.git] / UPGRADE.txt
1 Information for Upgrading From Previous Asterisk Releases
2 =========================================================
3
4 Build Process (configure script):
5
6 Asterisk now uses an autoconf-generated configuration script to learn how it
7 should build itself for your system. As it is a standard script, running:
8
9 $ ./configure --help
10
11 will show you all the options available. This script can be used to tell the
12 build process what libraries you have on your system (if it cannot find them
13 automatically), which libraries you wish to have ignored even though they may
14 be present, etc.
15
16 You must run the configure script before Asterisk will build, although it will
17 attempt to automatically run it for you with no options specified; for most
18 users, that will result in a similar build to what they would have had before
19 the configure script was added to the build process (except for having to run
20 'make' again after the configure script is run). Note that the configure script
21 does NOT need to be re-run just to rebuild Asterisk; you only need to re-run it
22 when your system configuration changes or you wish to build Asterisk with 
23 different options.
24
25 Build Process (module selection):
26
27 The Asterisk source tree now includes a basic module selection and build option
28 selection tool called 'menuselect'. Run 'make menuselect' to make your choices.
29 In this tool, you can disable building of modules that you don't care about,
30 turn on/off global options for the build and see which modules will not 
31 (and cannot) be built because your system does not have the required external
32 dependencies installed.
33
34 The resulting file from menuselect is called 'menuselect.makeopts'. Note that
35 the resulting menuselect.makeopts file generally contains which modules *not*
36 to build. The modules listed in this file indicate which modules have unmet
37 dependencies, a present conflict, or have been disabled by the user in the
38 menuselect interface. Compiler Flags can also be set in the menuselect
39 interface.  In this case, the resulting file contains which CFLAGS are in use,
40 not which ones are not in use.
41
42 If you would like to save your choices and have them applied against all
43 builds, the file can be copied to '~/.asterisk.makeopts' or 
44 '/etc/asterisk.makeopts'.
45
46 PBX Core:
47
48 * The (very old and undocumented) ability to use BYEXTENSION for dialing
49   instead of ${EXTEN} has been removed.
50   
51 * Builtin (res_features) transfer functionality attempts to use the context
52   defined in TRANSFER_CONTEXT variable of the transferer channel first. If
53   not set, it uses the transferee variable. If not set in any channel, it will 
54   attempt to use the last non macro context. If not possible, it will default
55   to the current context.
56  
57 Command Line Interface:
58
59 * 'show channels concise', designed to be used by applications that will parse
60   its output, previously used ':' characters to separate fields. However, some
61   of those fields can easily contain that character, making the output not
62   parseable. The delimiter has been changed to '!'.
63
64 Applications:
65
66 * In previous Asterisk releases, many applications would jump to priority n+101
67   to indicate some kind of status or error condition.  This functionality was
68   marked deprecated in Asterisk 1.2.  An option to disable it was provided with
69   the default value set to 'on'.  The default value for the global priority
70   jumping option is now 'off'.
71
72 * The applications Cut, Sort, DBGet, DBPut, SetCIDNum, SetCIDName, SetRDNIS,
73   AbsoluteTimeout, DigitTimeout, ResponseTimeout, SetLanguage, GetGroupCount,
74   and GetGroupMatchCount were all deprecated in version 1.2, and therefore have
75   been removed in this version.  You should use the equivalent dialplan
76   function in places where you have previously used one of these applications.
77
78 * The application SetGlobalVar has been deprecated.  You should replace uses
79   of this application with the following combination of Set and GLOBAL():
80   Set(GLOBAL(name)=value).  You may also access global variables exclusively by
81   using the GLOBAL() dialplan function, instead of relying on variable
82   interpolation falling back to globals when no channel variable is set.
83
84 * The application SetVar has been renamed to Set.  The syntax SetVar was marked
85   deprecated in version 1.2 and is no longer recognized in this version.
86
87 * app_read has been updated to use the newer options codes, using "skip" or
88   "noanswer" will not work.  Use s or n.  Also there is a new feature i, for
89   using indication tones, so typing in skip would give you unexpected results.
90
91 * OSPAuth is added to authenticate OSP tokens in in_bound call setup messages.
92
93 * The CONNECT event in the queue_log from app_queue now has a second field 
94   in addition to the holdtime field. It contains the unique ID of the 
95   queue member channel that is taking the call. This is useful when trying 
96   to link recording filenames back to a particular call from the queue.  
97
98 * The old/current behavior of app_queue has a serial type behavior
99   in that the queue will make all waiting callers wait in the queue
100   even if there is more than one available member ready to take
101   calls until the head caller is connected with the member they
102   were trying to get to. The next waiting caller in line then
103   becomes the head caller, and they are then connected with the
104   next available member and all available members and waiting callers
105   waits while this happens. This cycle continues until there are
106   no more available members or waiting callers, whichever comes first.
107   The new behavior, enabled by setting autofill=yes in queues.conf
108   either at the [general] level to default for all queues or 
109   to set on a per-queue level, makes sure that when the waiting 
110   callers are connecting with available members in a parallel fashion 
111   until there are no more available members or no more waiting callers,
112   whichever comes first. This is probably more along the lines of how
113   one would expect a queue should work and in most cases, you will want 
114   to enable this new behavior. If you do not specify or comment out this 
115   option, it will default to "no" to keep backward compatability with the old 
116   behavior.
117
118 * The app_queue application now has the ability to use MixMonitor to 
119   record conversations queue members are having with queue callers. Please
120   see configs/queues.conf.sample for more information on this option.
121
122 * The app_queue application strategy called 'roundrobin' has been deprecated
123   for this release. Users are encouraged to use 'rrmemory' instead, since it
124   provides more 'true' round-robin call delivery. For the Asterisk 1.6 release,
125   'rrmemory' will be renamed 'roundrobin'.
126
127 * app_meetme: The 'm' option (monitor) is renamed to 'l' (listen only), and
128   the 'm' option now provides the functionality of "initially muted". 
129   In practice, most existing dialplans using the 'm' flag should not notice
130   any difference, unless the keypad menu is enabled, allowing the user 
131   to unmute themsleves.
132
133 * ast_play_and_record would attempt to cancel the recording if a DTMF
134   '0' was received.  This behavior was not documented in most of the
135   applications that used ast_play_and_record and the return codes from
136   ast_play_and_record weren't checked for properly.
137   ast_play_and_record has been changed so that '0' no longer cancels a
138   recording.  If you want to allow DTMF digits to cancel an
139   in-progress recording use ast_play_and_record_full which allows you
140   to specify which DTMF digits can be used to accept a recording and
141   which digits can be used to cancel a recording.
142
143 * ast_app_messagecount has been renamed to ast_app_inboxcount.  There is now a
144   new ast_app_messagecount function which takes a single context/mailbox/folder
145   mailbox specification and returns the message count for that folder only.
146   This addresses the deficiency of not being able to count the number of
147   messages in folders other than INBOX and Old.
148
149 * The exit behavior of the AGI applications has changed. Previously, when
150   a connection to an AGI server failed, the application would cause the channel
151   to immediately stop dialplan execution and hangup. Now, the only time that
152   the AGI applications will cause the channel to stop dialplan execution is
153   when the channel itself requests hangup. The AGI applications now set an
154   AGISTATUS variable which will allow you to find out whether running the AGI
155   was successful or not.
156
157   Previously, there was no way to handle the case where Asterisk was unable to
158   locally execute an AGI script for some reason. In this case, dialplan
159   execution will continue as it did before, but the AGISTATUS variable will be
160   set to "FAILURE".
161
162   A locally executed AGI script can now exit with a non-zero exit code and this
163   failure will be detected by Asterisk. If an AGI script exits with a non-zero
164   exit code, the AGISTATUS variable will be set to "FAILURE" as opposed to
165   "SUCCESS".
166
167 Manager:
168
169 * After executing the 'status' manager action, the "Status" manager events
170   included the header "CallerID:" which was actually only the CallerID number,
171   and not the full CallerID string.  This header has been renamed to
172   "CallerIDNum".  For compatibility purposes, the CallerID parameter will remain
173   until after the release of 1.4, when it will be removed.  Please use the time
174   during the 1.4 release to make this transition.
175
176 * The AgentConnect event now has an additional field called "BridgedChannel" 
177   which contains the unique ID of the queue member channel that is taking the 
178   call. This is useful when trying to link recording filenames back to 
179   a particular call from the queue.
180
181 * app_userevent has been modified to always send Event: UserEvent with the
182   additional header UserEvent: <userspec>.  Also, the Channel and UniqueID
183   headers are not automatically sent, unless you specify them as separate
184   arguments.  Please see the application help for the new syntax.
185
186 * app_meetme: Mute and Unmute events are now reported via the Manager API.
187   Native Manager API commands MeetMeMute and MeetMeUnmute are provided, which
188   are easier to use than "Action Command:". The MeetMeStopTalking event has
189   also been deprecated in favor of the already existing MeetmeTalking event
190   with a "Status" of "on" or "off" added.
191
192 Variables:
193
194 * The builtin variables ${CALLERID}, ${CALLERIDNAME}, ${CALLERIDNUM},
195   ${CALLERANI}, ${DNID}, ${RDNIS}, ${DATETIME}, ${TIMESTAMP}, ${ACCOUNTCODE},
196   and ${LANGUAGE} have all been deprecated in favor of their related dialplan
197   functions.  You are encouraged to move towards the associated dialplan
198   function, as these variables will be removed in a future release.
199
200 * The CDR-CSV variables uniqueid, userfield, and basing time on GMT are now 
201   adjustable from cdr.conf, instead of recompiling.
202
203 * OSP applications exports several new variables, ${OSPINHANDLE},
204   ${OSPOUTHANDLE}, ${OSPINTOKEN}, ${OSPOUTTOKEN}, ${OSPCALLING},
205   ${OSPINTIMELIMIT}, and ${OSPOUTTIMELIMIT}
206   
207 * Builtin transfer functionality sets the variable ${TRANSFERERNAME} in the new
208   created channel. This variables holds the channel name of the transferer.
209
210 Functions:
211
212 * The function ${CHECK_MD5()} has been deprecated in favor of using an
213   expression: $[${MD5(<string>)} = ${saved_md5}].
214
215 * The 'builtin' functions that used to be combined in pbx_functions.so are
216   now built as separate modules. If you are not using 'autoload=yes' in your
217   modules.conf file then you will need to explicitly load the modules that
218   contain the functions you want to use.
219
220 * The ENUMLOOKUP() function with the 'c' option (for counting the number of 
221   records), but the lookup fails to match any records, the returned value will 
222   now be "0" instead of blank.
223
224 * The REALTIME() function is now available in version 1.4 and app_realtime has
225   been deprecated in favor of the new function. app_realtime will be removed
226   completely with the version 1.6 release so please take the time between
227   releases to make any necessary changes
228
229 * The QUEUEAGENTCOUNT() function has been deprecated in favor of
230   QUEUE_MEMBER_COUNT().
231
232 The IAX2 channel:
233
234 * The "mailboxdetail" option has been deprecated.  Previously, if this option
235   was not enabled, the 2 byte MSGCOUNT information element would be set to all
236   1's to indicate there there is some number of messages waiting.  With this
237   option enabled, the number of new messages were placed in one byte and the
238   number of old messages are placed in the other.  This is now the default
239   (and the only) behavior.
240
241 The SIP channel:
242
243 * The "incominglimit" setting is replaced by the "call-limit" setting in 
244   sip.conf.
245
246 * OSP support code is removed from SIP channel to OSP applications. ospauth 
247   option in sip.conf is removed to osp.conf as authpolicy. allowguest option
248   in sip.conf cannot be set as osp anymore. 
249
250 The Zap channel:
251
252 * Support for MFC/R2 has been removed, as it has not been functional for some
253   time and it has no maintainer.
254
255 Installation:
256
257 * On BSD systems, the installation directories have changed to more "FreeBSDish"
258   directories. On startup, Asterisk will look for the main configuration in 
259   /usr/local/etc/asterisk/asterisk.conf
260   If you have an old installation, you might want to remove the binaries and 
261   move the configuration files to the new locations. The following directories 
262   are now default:
263         ASTLIBDIR       /usr/local/lib/asterisk
264         ASTVARLIBDIR    /usr/local/share/asterisk
265         ASTETCDIR       /usr/local/etc/asterisk
266         ASTBINDIR       /usr/local/bin/asterisk
267         ASTSBINDIR      /usr/local/sbin/asterisk
268
269 Sounds:
270
271 * The phonetic sounds directory has been removed from the asterisk-sounds
272   package because they are now included directly in Asterisk.  However, it is
273   important to note that the phonetic sounds that existed in asterisk-sounds 
274   used a different naming convention than the sounds in Asterisk.  For example,
275   instead of alpha.gsm and bravo.gsm, Asterisk has a_p.gsm and b_p.gsm.