Deprecate USERAGENT
[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 Build Process (Makefile targets):
47
48 The 'valgrind' and 'dont-optimize' targets have been removed; their functionality
49 is available by enabling the DONT_OPTIMIZE setting in the 'Compiler Flags' menu
50 in the menuselect tool.
51
52 It is now possible to run most make targets against a single subdirectory; from
53 the top level directory, for example, 'make channels' will run 'make all' in the
54 'channels' subdirectory. This also is true for 'clean', 'distclean' and 'depend'.
55
56 Sound (prompt) and Music On Hold files:
57
58 Beginning with Asterisk 1.4, the sound files and music on hold files supplied for
59 use with Asterisk have been replaced with new versions produced from high quality
60 master recordings, and are available in three languages (English, French and
61 Spanish) and in five formats (WAV (uncompressed), mu-Law, a-Law, GSM and G.729).
62 In addition, the music on hold files provided by FreePlay Music are now available
63 in the same five formats, but no longer available in MP3 format.
64
65 The Asterisk 1.4 tarball packages will only include English prompts in GSM format,
66 (as were supplied with previous releases) and the FreePlay MOH files in WAV format.
67 All of the other variations can be installed by running 'make menuselect' and
68 selecting the packages you wish to install; when you run 'make install', those
69 packages will be downloaded and installed along with the standard files included
70 in the tarball.
71
72 If for some reason you expect to not have Internet access at the time you will be
73 running 'make install', you can make your package selections using menuselect and
74 then run 'make sounds' to download (only) the sound packages; this will leave the
75 sound packages in the 'sounds' subdirectory to be used later during installation.
76
77 WARNING: Asterisk 1.4 supports a new layout for sound files in multiple languages;
78 instead of the alternate-language files being stored in subdirectories underneath
79 the existing files (for French, that would be digits/fr, letters/fr, phonetic/fr,
80 etc.) the new layout creates one directory under /var/lib/asterisk/sounds for the
81 language itself, then places all the sound files for that language under that
82 directory and its subdirectories. This is the layout that will be created if you
83 select non-English languages to be installed via menuselect, HOWEVER Asterisk does
84 not default to this layout and will not find the files in the places it expects them
85 to be. If you wish to use this layout, make sure you put 'languageprefix=yes' in your
86 /etc/asterisk/asterisk.conf file, so that Asterisk will know how the files were
87 installed.
88
89 PBX Core:
90
91 * The (very old and undocumented) ability to use BYEXTENSION for dialing
92   instead of ${EXTEN} has been removed.
93   
94 * Builtin (res_features) transfer functionality attempts to use the context
95   defined in TRANSFER_CONTEXT variable of the transferer channel first. If
96   not set, it uses the transferee variable. If not set in any channel, it will 
97   attempt to use the last non macro context. If not possible, it will default
98   to the current context.
99  
100 Command Line Interface:
101
102 * 'show channels concise', designed to be used by applications that will parse
103   its output, previously used ':' characters to separate fields. However, some
104   of those fields can easily contain that character, making the output not
105   parseable. The delimiter has been changed to '!'.
106
107 Applications:
108
109 * In previous Asterisk releases, many applications would jump to priority n+101
110   to indicate some kind of status or error condition.  This functionality was
111   marked deprecated in Asterisk 1.2.  An option to disable it was provided with
112   the default value set to 'on'.  The default value for the global priority
113   jumping option is now 'off'.
114
115 * The applications Cut, Sort, DBGet, DBPut, SetCIDNum, SetCIDName, SetRDNIS,
116   AbsoluteTimeout, DigitTimeout, ResponseTimeout, SetLanguage, GetGroupCount,
117   and GetGroupMatchCount were all deprecated in version 1.2, and therefore have
118   been removed in this version.  You should use the equivalent dialplan
119   function in places where you have previously used one of these applications.
120
121 * The application SetGlobalVar has been deprecated.  You should replace uses
122   of this application with the following combination of Set and GLOBAL():
123   Set(GLOBAL(name)=value).  You may also access global variables exclusively by
124   using the GLOBAL() dialplan function, instead of relying on variable
125   interpolation falling back to globals when no channel variable is set.
126
127 * The application SetVar has been renamed to Set.  The syntax SetVar was marked
128   deprecated in version 1.2 and is no longer recognized in this version.
129
130 * app_read has been updated to use the newer options codes, using "skip" or
131   "noanswer" will not work.  Use s or n.  Also there is a new feature i, for
132   using indication tones, so typing in skip would give you unexpected results.
133
134 * OSPAuth is added to authenticate OSP tokens in in_bound call setup messages.
135
136 * The CONNECT event in the queue_log from app_queue now has a second field 
137   in addition to the holdtime field. It contains the unique ID of the 
138   queue member channel that is taking the call. This is useful when trying 
139   to link recording filenames back to a particular call from the queue.  
140
141 * The old/current behavior of app_queue has a serial type behavior
142   in that the queue will make all waiting callers wait in the queue
143   even if there is more than one available member ready to take
144   calls until the head caller is connected with the member they
145   were trying to get to. The next waiting caller in line then
146   becomes the head caller, and they are then connected with the
147   next available member and all available members and waiting callers
148   waits while this happens. This cycle continues until there are
149   no more available members or waiting callers, whichever comes first.
150   The new behavior, enabled by setting autofill=yes in queues.conf
151   either at the [general] level to default for all queues or 
152   to set on a per-queue level, makes sure that when the waiting 
153   callers are connecting with available members in a parallel fashion 
154   until there are no more available members or no more waiting callers,
155   whichever comes first. This is probably more along the lines of how
156   one would expect a queue should work and in most cases, you will want 
157   to enable this new behavior. If you do not specify or comment out this 
158   option, it will default to "no" to keep backward compatability with the old 
159   behavior.
160
161 * The app_queue application now has the ability to use MixMonitor to 
162   record conversations queue members are having with queue callers. Please
163   see configs/queues.conf.sample for more information on this option.
164
165 * The app_queue application strategy called 'roundrobin' has been deprecated
166   for this release. Users are encouraged to use 'rrmemory' instead, since it
167   provides more 'true' round-robin call delivery. For the Asterisk 1.6 release,
168   'rrmemory' will be renamed 'roundrobin'.
169
170 * app_meetme: The 'm' option (monitor) is renamed to 'l' (listen only), and
171   the 'm' option now provides the functionality of "initially muted". 
172   In practice, most existing dialplans using the 'm' flag should not notice
173   any difference, unless the keypad menu is enabled, allowing the user 
174   to unmute themsleves.
175
176 * ast_play_and_record would attempt to cancel the recording if a DTMF
177   '0' was received.  This behavior was not documented in most of the
178   applications that used ast_play_and_record and the return codes from
179   ast_play_and_record weren't checked for properly.
180   ast_play_and_record has been changed so that '0' no longer cancels a
181   recording.  If you want to allow DTMF digits to cancel an
182   in-progress recording use ast_play_and_record_full which allows you
183   to specify which DTMF digits can be used to accept a recording and
184   which digits can be used to cancel a recording.
185
186 * ast_app_messagecount has been renamed to ast_app_inboxcount.  There is now a
187   new ast_app_messagecount function which takes a single context/mailbox/folder
188   mailbox specification and returns the message count for that folder only.
189   This addresses the deficiency of not being able to count the number of
190   messages in folders other than INBOX and Old.
191
192 * The exit behavior of the AGI applications has changed. Previously, when
193   a connection to an AGI server failed, the application would cause the channel
194   to immediately stop dialplan execution and hangup. Now, the only time that
195   the AGI applications will cause the channel to stop dialplan execution is
196   when the channel itself requests hangup. The AGI applications now set an
197   AGISTATUS variable which will allow you to find out whether running the AGI
198   was successful or not.
199
200   Previously, there was no way to handle the case where Asterisk was unable to
201   locally execute an AGI script for some reason. In this case, dialplan
202   execution will continue as it did before, but the AGISTATUS variable will be
203   set to "FAILURE".
204
205   A locally executed AGI script can now exit with a non-zero exit code and this
206   failure will be detected by Asterisk. If an AGI script exits with a non-zero
207   exit code, the AGISTATUS variable will be set to "FAILURE" as opposed to
208   "SUCCESS".
209
210 * app_voicemail: The ODBC_STORAGE capability now requires the extended table format
211   previously used only by EXTENDED_ODBC_STORAGE. This means that you will need to update
212   your table format using the schema provided in doc/odbcstorage.txt
213
214 Manager:
215
216 * After executing the 'status' manager action, the "Status" manager events
217   included the header "CallerID:" which was actually only the CallerID number,
218   and not the full CallerID string.  This header has been renamed to
219   "CallerIDNum".  For compatibility purposes, the CallerID parameter will remain
220   until after the release of 1.4, when it will be removed.  Please use the time
221   during the 1.4 release to make this transition.
222
223 * The AgentConnect event now has an additional field called "BridgedChannel" 
224   which contains the unique ID of the queue member channel that is taking the 
225   call. This is useful when trying to link recording filenames back to 
226   a particular call from the queue.
227
228 * app_userevent has been modified to always send Event: UserEvent with the
229   additional header UserEvent: <userspec>.  Also, the Channel and UniqueID
230   headers are not automatically sent, unless you specify them as separate
231   arguments.  Please see the application help for the new syntax.
232
233 * app_meetme: Mute and Unmute events are now reported via the Manager API.
234   Native Manager API commands MeetMeMute and MeetMeUnmute are provided, which
235   are easier to use than "Action Command:". The MeetMeStopTalking event has
236   also been deprecated in favor of the already existing MeetmeTalking event
237   with a "Status" of "on" or "off" added.
238
239 Variables:
240
241 * The builtin variables ${CALLERID}, ${CALLERIDNAME}, ${CALLERIDNUM},
242   ${CALLERANI}, ${DNID}, ${RDNIS}, ${DATETIME}, ${TIMESTAMP}, ${ACCOUNTCODE},
243   and ${LANGUAGE} have all been deprecated in favor of their related dialplan
244   functions.  You are encouraged to move towards the associated dialplan
245   function, as these variables will be removed in a future release.
246
247 * The CDR-CSV variables uniqueid, userfield, and basing time on GMT are now 
248   adjustable from cdr.conf, instead of recompiling.
249
250 * OSP applications exports several new variables, ${OSPINHANDLE},
251   ${OSPOUTHANDLE}, ${OSPINTOKEN}, ${OSPOUTTOKEN}, ${OSPCALLING},
252   ${OSPINTIMELIMIT}, and ${OSPOUTTIMELIMIT}
253   
254 * Builtin transfer functionality sets the variable ${TRANSFERERNAME} in the new
255   created channel. This variables holds the channel name of the transferer.
256
257 * The dial plan variable PRI_CAUSE will be removed from future versions 
258   of Asterisk.
259   It is replaced by adding a cause value to the hangup() application.
260
261 Functions:
262
263 * The function ${CHECK_MD5()} has been deprecated in favor of using an
264   expression: $[${MD5(<string>)} = ${saved_md5}].
265
266 * The 'builtin' functions that used to be combined in pbx_functions.so are
267   now built as separate modules. If you are not using 'autoload=yes' in your
268   modules.conf file then you will need to explicitly load the modules that
269   contain the functions you want to use.
270
271 * The ENUMLOOKUP() function with the 'c' option (for counting the number of 
272   records), but the lookup fails to match any records, the returned value will 
273   now be "0" instead of blank.
274
275 * The REALTIME() function is now available in version 1.4 and app_realtime has
276   been deprecated in favor of the new function. app_realtime will be removed
277   completely with the version 1.6 release so please take the time between
278   releases to make any necessary changes
279
280 * The QUEUEAGENTCOUNT() function has been deprecated in favor of
281   QUEUE_MEMBER_COUNT().
282
283 The IAX2 channel:
284
285 * The "mailboxdetail" option has been deprecated.  Previously, if this option
286   was not enabled, the 2 byte MSGCOUNT information element would be set to all
287   1's to indicate there there is some number of messages waiting.  With this
288   option enabled, the number of new messages were placed in one byte and the
289   number of old messages are placed in the other.  This is now the default
290   (and the only) behavior.
291
292 The SIP channel:
293
294 * The "incominglimit" setting is replaced by the "call-limit" setting in 
295   sip.conf.
296
297 * OSP support code is removed from SIP channel to OSP applications. ospauth 
298   option in sip.conf is removed to osp.conf as authpolicy. allowguest option
299   in sip.conf cannot be set as osp anymore. 
300
301 * The $SIPUSERAGENT dialplan variable is deprecated and will be removed
302   in coming versions of Asterisk. Please use the dialplan function
303   SIPCHANINFO(useragent) instead.
304
305 The Zap channel:
306
307 * Support for MFC/R2 has been removed, as it has not been functional for some
308   time and it has no maintainer.
309
310 The Agent channel:
311
312 * Callback mode (AgentCallbackLogin) is now deprecated, since the entire function
313   it provided can be done using dialplan logic, without requiring additional
314   channel and module locks (which frequently caused deadlocks). An example of
315   how to do this using AEL dialplan is in doc/queues-with-callback-members.txt.
316
317 The G726-32 codec:
318
319 * It has been determined that previous versions of Asterisk used the wrong codeword
320   packing order for G726-32 data. This version supports both available packing orders,
321   and can transcode between them. It also now selects the proper order when
322   negotiating with a SIP peer based on the codec name supplied in the SDP. However,
323   there are existing devices that improperly request one order and then use another;
324   Sipura and Grandstream ATAs are known to do this, and there may be others. To
325   be able to continue to use these devices with this version of Asterisk and the
326   G726-32 codec, a configuration parameter called 'g726nonstandard' has been added
327   to sip.conf, so that Asterisk can use the packing order expected by the device (even
328   though it requested a different order). In addition, the internal format number for
329   G726-32 has been changed, and the old number is now assigned to AAL2-G726-32. The
330   result of this is that this version of Asterisk will be able to interoperate over
331   IAX2 with older versions of Asterisk, as long as this version is told to allow
332   'g726aal2' instead of 'g726' as the codec for the call.
333
334 Installation:
335
336 * On BSD systems, the installation directories have changed to more "FreeBSDish"
337   directories. On startup, Asterisk will look for the main configuration in 
338   /usr/local/etc/asterisk/asterisk.conf
339   If you have an old installation, you might want to remove the binaries and 
340   move the configuration files to the new locations. The following directories 
341   are now default:
342         ASTLIBDIR       /usr/local/lib/asterisk
343         ASTVARLIBDIR    /usr/local/share/asterisk
344         ASTETCDIR       /usr/local/etc/asterisk
345         ASTBINDIR       /usr/local/bin/asterisk
346         ASTSBINDIR      /usr/local/sbin/asterisk
347
348 Music on Hold:
349
350 * The music on hold handling has been changed in some significant ways in hopes
351   to make it work in a way that is much less confusing to users. Behavior will
352   not change if the same configuration is used from older versions of Asterisk.
353   However, there are some new configuration options that will make things work
354   in a way that makes more sense.
355
356   Previously, many of the channel drivers had an option called "musicclass" or
357   something similar. This option set what music on hold class this channel
358   would *hear* when put on hold. Some people expected (with good reason) that
359   this option was to configure what music on hold class to play when putting
360   the bridged channel on hold. This option has now been deprecated.
361
362   Two new music on hold related configuration options for channel drivers have
363   been introduced. Some channel drivers support both options, some just one,
364   and some support neither of them. Check the sample configuration files to see
365   which options apply to which channel driver.
366
367   The "mohsuggest" option specifies which music on hold class to suggest to the
368   bridged channel when putting them on hold. The only way that this class can
369   be overridden is if the bridged channel has a specific music class set that
370   was done in the dialplan using Set(CHANNEL(musicclass)=something).
371
372   The "mohinterpret" option is similar to the old "musicclass" option. It
373   specifies which music on hold class this channel would like to listen to when
374   put on hold. This music class is only effective if this channel has no music
375   class set on it from the dialplan and the bridged channel putting this one on
376   hold had no "mohsuggest" setting.
377
378   The IAX2 and Zap channel drivers have an additional feature for the
379   "mohinterpret" option. If this option is set to "passthrough", then these
380   channel drivers will pass through the HOLD message in signalling instead of
381   starting music on hold on the channel. An example for how this would be
382   useful is in an enterprise network of Asterisk servers. When one phone on one
383   server puts a phone on a different server on hold, the remote server will be
384   responsible for playing the hold music to its local phone that was put on
385   hold instead of the far end server across the network playing the music.