Convert this branch to Opsound music-on-hold.
[asterisk/asterisk.git] / UPGRADE-1.4.txt
1 =========================================================
2 ===
3 === Information for upgrading from Asterisk 1.2 to 1.4
4 ===
5 === These files document all the changes that MUST be taken
6 === into account when upgrading between the Asterisk
7 === versions listed below. These changes may require that
8 === you modify your configuration files, dialplan or (in
9 === some cases) source code if you have your own Asterisk
10 === modules or patches. These files also includes advance
11 === notice of any functionality that has been marked as
12 === 'deprecated' and may be removed in a future release,
13 === along with the suggested replacement functionality.
14 ===
15 === UPGRADE-1.2.txt -- Upgrade info for 1.0 to 1.2
16 ===
17 =========================================================
18
19 Build Process (configure script):
20
21 Asterisk now uses an autoconf-generated configuration script to learn how it
22 should build itself for your system. As it is a standard script, running:
23
24 $ ./configure --help
25
26 will show you all the options available. This script can be used to tell the
27 build process what libraries you have on your system (if it cannot find them
28 automatically), which libraries you wish to have ignored even though they may
29 be present, etc.
30
31 You must run the configure script before Asterisk will build, although it will
32 attempt to automatically run it for you with no options specified; for most
33 users, that will result in a similar build to what they would have had before
34 the configure script was added to the build process (except for having to run
35 'make' again after the configure script is run). Note that the configure script
36 does NOT need to be re-run just to rebuild Asterisk; you only need to re-run it
37 when your system configuration changes or you wish to build Asterisk with 
38 different options.
39
40 Build Process (module selection):
41
42 The Asterisk source tree now includes a basic module selection and build option
43 selection tool called 'menuselect'. Run 'make menuselect' to make your choices.
44 In this tool, you can disable building of modules that you don't care about,
45 turn on/off global options for the build and see which modules will not 
46 (and cannot) be built because your system does not have the required external
47 dependencies installed.
48
49 The resulting file from menuselect is called 'menuselect.makeopts'. Note that
50 the resulting menuselect.makeopts file generally contains which modules *not*
51 to build. The modules listed in this file indicate which modules have unmet
52 dependencies, a present conflict, or have been disabled by the user in the
53 menuselect interface. Compiler Flags can also be set in the menuselect
54 interface.  In this case, the resulting file contains which CFLAGS are in use,
55 not which ones are not in use.
56
57 If you would like to save your choices and have them applied against all
58 builds, the file can be copied to '~/.asterisk.makeopts' or 
59 '/etc/asterisk.makeopts'.
60
61 Build Process (Makefile targets):
62
63 The 'valgrind' and 'dont-optimize' targets have been removed; their functionality
64 is available by enabling the DONT_OPTIMIZE setting in the 'Compiler Flags' menu
65 in the menuselect tool.
66
67 It is now possible to run most make targets against a single subdirectory; from
68 the top level directory, for example, 'make channels' will run 'make all' in the
69 'channels' subdirectory. This also is true for 'clean', 'distclean' and 'depend'.
70
71 Sound (prompt) and Music On Hold files:
72
73 Beginning with Asterisk 1.4, the sound files and music on hold files supplied for
74 use with Asterisk have been replaced with new versions produced from high quality
75 master recordings, and are available in three languages (English, French and
76 Spanish) and in five formats (WAV (uncompressed), mu-Law, a-Law, GSM and G.729).
77 In addition, the music on hold files provided by opsound.org Music are now available
78 in the same five formats, but no longer available in MP3 format.
79
80 The Asterisk 1.4 tarball packages will only include English prompts in GSM format,
81 (as were supplied with previous releases) and the opsound.org MOH files in WAV format.
82 All of the other variations can be installed by running 'make menuselect' and
83 selecting the packages you wish to install; when you run 'make install', those
84 packages will be downloaded and installed along with the standard files included
85 in the tarball.
86
87 If for some reason you expect to not have Internet access at the time you will be
88 running 'make install', you can make your package selections using menuselect and
89 then run 'make sounds' to download (only) the sound packages; this will leave the
90 sound packages in the 'sounds' subdirectory to be used later during installation.
91
92 WARNING: Asterisk 1.4 supports a new layout for sound files in multiple languages;
93 instead of the alternate-language files being stored in subdirectories underneath
94 the existing files (for French, that would be digits/fr, letters/fr, phonetic/fr,
95 etc.) the new layout creates one directory under /var/lib/asterisk/sounds for the
96 language itself, then places all the sound files for that language under that
97 directory and its subdirectories. This is the layout that will be created if you
98 select non-English languages to be installed via menuselect, HOWEVER Asterisk does
99 not default to this layout and will not find the files in the places it expects them
100 to be. If you wish to use this layout, make sure you put 'languageprefix=yes' in your
101 /etc/asterisk/asterisk.conf file, so that Asterisk will know how the files were
102 installed.
103
104 PBX Core:
105
106 * The (very old and undocumented) ability to use BYEXTENSION for dialing
107   instead of ${EXTEN} has been removed.
108   
109 * Builtin (res_features) transfer functionality attempts to use the context
110   defined in TRANSFER_CONTEXT variable of the transferer channel first. If
111   not set, it uses the transferee variable. If not set in any channel, it will 
112   attempt to use the last non macro context. If not possible, it will default
113   to the current context.
114
115 * The autofallthrough setting introduced in Asterisk 1.2 now defaults to 'yes';
116   if your dialplan relies on the ability to 'run off the end' of an extension
117   and wait for a new extension without using WaitExten() to accomplish that,
118   you will need set autofallthrough to 'no' in your extensions.conf file.
119  
120 Command Line Interface:
121
122 * 'show channels concise', designed to be used by applications that will parse
123   its output, previously used ':' characters to separate fields. However, some
124   of those fields can easily contain that character, making the output not
125   parseable. The delimiter has been changed to '!'.
126
127 Applications:
128
129 * In previous Asterisk releases, many applications would jump to priority n+101
130   to indicate some kind of status or error condition.  This functionality was
131   marked deprecated in Asterisk 1.2.  An option to disable it was provided with
132   the default value set to 'on'.  The default value for the global priority
133   jumping option is now 'off'.
134
135 * The applications Cut, Sort, DBGet, DBPut, SetCIDNum, SetCIDName, SetRDNIS,
136   AbsoluteTimeout, DigitTimeout, ResponseTimeout, SetLanguage, GetGroupCount,
137   and GetGroupMatchCount were all deprecated in version 1.2, and therefore have
138   been removed in this version.  You should use the equivalent dialplan
139   function in places where you have previously used one of these applications.
140
141 * The application SetGlobalVar has been deprecated.  You should replace uses
142   of this application with the following combination of Set and GLOBAL():
143   Set(GLOBAL(name)=value).  You may also access global variables exclusively by
144   using the GLOBAL() dialplan function, instead of relying on variable
145   interpolation falling back to globals when no channel variable is set.
146
147 * The application SetVar has been renamed to Set.  The syntax SetVar was marked
148   deprecated in version 1.2 and is no longer recognized in this version.  The
149   use of Set with multiple argument pairs has also been deprecated.  Please
150   separate each name/value pair into its own dialplan line.
151
152 * app_read has been updated to use the newer options codes, using "skip" or
153   "noanswer" will not work.  Use s or n.  Also there is a new feature i, for
154   using indication tones, so typing in skip would give you unexpected results.
155
156 * OSPAuth is added to authenticate OSP tokens in in_bound call setup messages.
157
158 * The CONNECT event in the queue_log from app_queue now has a second field 
159   in addition to the holdtime field. It contains the unique ID of the 
160   queue member channel that is taking the call. This is useful when trying 
161   to link recording filenames back to a particular call from the queue.  
162
163 * The old/current behavior of app_queue has a serial type behavior
164   in that the queue will make all waiting callers wait in the queue
165   even if there is more than one available member ready to take
166   calls until the head caller is connected with the member they
167   were trying to get to. The next waiting caller in line then
168   becomes the head caller, and they are then connected with the
169   next available member and all available members and waiting callers
170   waits while this happens. This cycle continues until there are
171   no more available members or waiting callers, whichever comes first.
172   The new behavior, enabled by setting autofill=yes in queues.conf
173   either at the [general] level to default for all queues or 
174   to set on a per-queue level, makes sure that when the waiting 
175   callers are connecting with available members in a parallel fashion 
176   until there are no more available members or no more waiting callers,
177   whichever comes first. This is probably more along the lines of how
178   one would expect a queue should work and in most cases, you will want 
179   to enable this new behavior. If you do not specify or comment out this 
180   option, it will default to "no" to keep backward compatability with the old 
181   behavior.
182
183 * Queues depend on the channel driver reporting the proper state
184   for each member of the queue. To get proper signalling on
185   queue members that use the SIP channel driver, you need to
186   enable a call limit (could be set to a high value so it
187   is not put into action) and also make sure that both inbound
188   and outbound calls are accounted for.
189
190   Example:
191
192        [general]
193        limitonpeer = yes
194
195        [peername]
196        type=friend
197        call-limit=10
198
199
200 * The app_queue application now has the ability to use MixMonitor to 
201   record conversations queue members are having with queue callers. Please
202   see configs/queues.conf.sample for more information on this option.
203
204 * The app_queue application strategy called 'roundrobin' has been deprecated
205   for this release. Users are encouraged to use 'rrmemory' instead, since it
206   provides more 'true' round-robin call delivery. For the Asterisk 1.6 release,
207   'rrmemory' will be renamed 'roundrobin'.
208
209 * The app_queue application option called 'monitor-join' has been deprecated
210   for this release. Users are encouraged to use 'monitor-type=mixmonitor' instead,
211   since it provides the same functionality but is not dependent on soxmix or some
212   other external program in order to mix the audio.
213
214 * app_meetme: The 'm' option (monitor) is renamed to 'l' (listen only), and
215   the 'm' option now provides the functionality of "initially muted". 
216   In practice, most existing dialplans using the 'm' flag should not notice
217   any difference, unless the keypad menu is enabled, allowing the user 
218   to unmute themsleves.
219
220 * ast_play_and_record would attempt to cancel the recording if a DTMF
221   '0' was received.  This behavior was not documented in most of the
222   applications that used ast_play_and_record and the return codes from
223   ast_play_and_record weren't checked for properly.
224   ast_play_and_record has been changed so that '0' no longer cancels a
225   recording.  If you want to allow DTMF digits to cancel an
226   in-progress recording use ast_play_and_record_full which allows you
227   to specify which DTMF digits can be used to accept a recording and
228   which digits can be used to cancel a recording.
229
230 * ast_app_messagecount has been renamed to ast_app_inboxcount.  There is now a
231   new ast_app_messagecount function which takes a single context/mailbox/folder
232   mailbox specification and returns the message count for that folder only.
233   This addresses the deficiency of not being able to count the number of
234   messages in folders other than INBOX and Old.
235
236 * The exit behavior of the AGI applications has changed. Previously, when
237   a connection to an AGI server failed, the application would cause the channel
238   to immediately stop dialplan execution and hangup. Now, the only time that
239   the AGI applications will cause the channel to stop dialplan execution is
240   when the channel itself requests hangup. The AGI applications now set an
241   AGISTATUS variable which will allow you to find out whether running the AGI
242   was successful or not.
243
244   Previously, there was no way to handle the case where Asterisk was unable to
245   locally execute an AGI script for some reason. In this case, dialplan
246   execution will continue as it did before, but the AGISTATUS variable will be
247   set to "FAILURE".
248
249   A locally executed AGI script can now exit with a non-zero exit code and this
250   failure will be detected by Asterisk. If an AGI script exits with a non-zero
251   exit code, the AGISTATUS variable will be set to "FAILURE" as opposed to
252   "SUCCESS".
253
254 * app_voicemail: The ODBC_STORAGE capability now requires the extended table format
255   previously used only by EXTENDED_ODBC_STORAGE. This means that you will need to update
256   your table format using the schema provided in doc/odbcstorage.txt
257
258 * app_waitforsilence: Fixes have been made to this application which changes the 
259   default behavior with how quickly it returns. You can maintain "old-style" behavior
260   with the addition/use of a third "timeout" parameter.
261   Please consult the application documentation and make changes to your dialplan 
262   if appropriate.
263
264 Manager:
265
266 * After executing the 'status' manager action, the "Status" manager events
267   included the header "CallerID:" which was actually only the CallerID number,
268   and not the full CallerID string.  This header has been renamed to
269   "CallerIDNum".  For compatibility purposes, the CallerID parameter will remain
270   until after the release of 1.4, when it will be removed.  Please use the time
271   during the 1.4 release to make this transition.
272
273 * The AgentConnect event now has an additional field called "BridgedChannel" 
274   which contains the unique ID of the queue member channel that is taking the 
275   call. This is useful when trying to link recording filenames back to 
276   a particular call from the queue.
277
278 * app_userevent has been modified to always send Event: UserEvent with the
279   additional header UserEvent: <userspec>.  Also, the Channel and UniqueID
280   headers are not automatically sent, unless you specify them as separate
281   arguments.  Please see the application help for the new syntax.
282
283 * app_meetme: Mute and Unmute events are now reported via the Manager API.
284   Native Manager API commands MeetMeMute and MeetMeUnmute are provided, which
285   are easier to use than "Action Command:". The MeetMeStopTalking event has
286   also been deprecated in favor of the already existing MeetmeTalking event
287   with a "Status" of "on" or "off" added.
288
289 * OriginateFailure and OriginateSuccess events were replaced by event
290   OriginateResponse with a header named "Response" to indicate success or
291   failure
292
293 Variables:
294
295 * The builtin variables ${CALLERID}, ${CALLERIDNAME}, ${CALLERIDNUM},
296   ${CALLERANI}, ${DNID}, ${RDNIS}, ${DATETIME}, ${TIMESTAMP}, ${ACCOUNTCODE},
297   and ${LANGUAGE} have all been deprecated in favor of their related dialplan
298   functions.  You are encouraged to move towards the associated dialplan
299   function, as these variables will be removed in a future release.
300
301 * The CDR-CSV variables uniqueid, userfield, and basing time on GMT are now 
302   adjustable from cdr.conf, instead of recompiling.
303
304 * OSP applications exports several new variables, ${OSPINHANDLE},
305   ${OSPOUTHANDLE}, ${OSPINTOKEN}, ${OSPOUTTOKEN}, ${OSPCALLING},
306   ${OSPINTIMELIMIT}, and ${OSPOUTTIMELIMIT}
307   
308 * Builtin transfer functionality sets the variable ${TRANSFERERNAME} in the new
309   created channel. This variables holds the channel name of the transferer.
310
311 * The dial plan variable PRI_CAUSE will be removed from future versions 
312   of Asterisk.
313   It is replaced by adding a cause value to the hangup() application.
314
315 Functions:
316
317 * The function ${CHECK_MD5()} has been deprecated in favor of using an
318   expression: $[${MD5(<string>)} = ${saved_md5}].
319
320 * The 'builtin' functions that used to be combined in pbx_functions.so are
321   now built as separate modules. If you are not using 'autoload=yes' in your
322   modules.conf file then you will need to explicitly load the modules that
323   contain the functions you want to use.
324
325 * The ENUMLOOKUP() function with the 'c' option (for counting the number of 
326   records), but the lookup fails to match any records, the returned value will 
327   now be "0" instead of blank.
328
329 * The REALTIME() function is now available in version 1.4 and app_realtime has
330   been deprecated in favor of the new function. app_realtime will be removed
331   completely with the version 1.6 release so please take the time between
332   releases to make any necessary changes
333
334 * The QUEUEAGENTCOUNT() function has been deprecated in favor of
335   QUEUE_MEMBER_COUNT().
336
337 The IAX2 channel:
338
339 * It is possible that previous configurations depended on the order in which
340   peers and users were specified in iax.conf for forcing the order in which
341   chan_iax2 matched against them.  This behavior is going away and is considered
342   deprecated in this version.  Avoid having ambiguous peer and user entries and
343   to make things easy on yourself, always set the "username" option for users
344   so that the remote end can match on that exactly instead of trying to infer
345   which user you want based on host.
346
347   If you would like to go ahead and use the new behavior which doesn't use the
348   order in the config file to influence matching order, then change the 
349   MAX_PEER_BUCKETS define in chan_iax2.c to a value greater than one.  An
350   example is provided there.  By changing this, you will get *much* better
351   performance on systems that do a lot of peer and user lookups as they will be
352   stored in memory in a much more efficient manner.
353
354 * The "mailboxdetail" option has been deprecated.  Previously, if this option
355   was not enabled, the 2 byte MSGCOUNT information element would be set to all
356   1's to indicate there there is some number of messages waiting.  With this
357   option enabled, the number of new messages were placed in one byte and the
358   number of old messages are placed in the other.  This is now the default
359   (and the only) behavior.
360
361 The SIP channel:
362
363 * The "incominglimit" setting is replaced by the "call-limit" setting in 
364   sip.conf.
365
366 * OSP support code is removed from SIP channel to OSP applications. ospauth 
367   option in sip.conf is removed to osp.conf as authpolicy. allowguest option
368   in sip.conf cannot be set as osp anymore. 
369
370 * The Asterisk RTP stack has been changed in regards to RFC2833 reception
371   and transmission. Packets will now be sent with proper duration instead of all
372   at once. If you are receiving calls from a pre-1.4 Asterisk installation you
373   will want to turn on the rfc2833compensate option. Without this option your
374   DTMF reception may act poorly.
375
376 * The $SIPUSERAGENT dialplan variable is deprecated and will be removed
377   in coming versions of Asterisk. Please use the dialplan function
378   SIPCHANINFO(useragent) instead.
379
380 * The ALERT_INFO dialplan variable is deprecated and will be removed
381   in coming versions of Asterisk. Please use the dialplan application
382   sipaddheader() to add the "Alert-Info" header to the outbound invite.
383
384 * The "canreinvite" option has changed. canreinvite=yes used to disable
385   re-invites if you had NAT=yes. In 1.4, you need to set canreinvite=nonat
386   to disable re-invites when NAT=yes. This is propably what you want.
387   The settings are now: "yes", "no", "nonat", "update". Please consult
388   sip.conf.sample for detailed information.
389
390 The Zap channel:
391
392 * Support for MFC/R2 has been removed, as it has not been functional for some
393   time and it has no maintainer.
394
395 The Agent channel:
396
397 * Callback mode (AgentCallbackLogin) is now deprecated, since the entire function
398   it provided can be done using dialplan logic, without requiring additional
399   channel and module locks (which frequently caused deadlocks). An example of
400   how to do this using AEL dialplan is in doc/queues-with-callback-members.txt.
401
402 The G726-32 codec:
403
404 * It has been determined that previous versions of Asterisk used the wrong codeword
405   packing order for G726-32 data. This version supports both available packing orders,
406   and can transcode between them. It also now selects the proper order when
407   negotiating with a SIP peer based on the codec name supplied in the SDP. However,
408   there are existing devices that improperly request one order and then use another;
409   Sipura and Grandstream ATAs are known to do this, and there may be others. To
410   be able to continue to use these devices with this version of Asterisk and the
411   G726-32 codec, a configuration parameter called 'g726nonstandard' has been added
412   to sip.conf, so that Asterisk can use the packing order expected by the device (even
413   though it requested a different order). In addition, the internal format number for
414   G726-32 has been changed, and the old number is now assigned to AAL2-G726-32. The
415   result of this is that this version of Asterisk will be able to interoperate over
416   IAX2 with older versions of Asterisk, as long as this version is told to allow
417   'g726aal2' instead of 'g726' as the codec for the call.
418
419 Installation:
420
421 * On BSD systems, the installation directories have changed to more "FreeBSDish"
422   directories. On startup, Asterisk will look for the main configuration in 
423   /usr/local/etc/asterisk/asterisk.conf
424   If you have an old installation, you might want to remove the binaries and 
425   move the configuration files to the new locations. The following directories 
426   are now default:
427         ASTLIBDIR       /usr/local/lib/asterisk
428         ASTVARLIBDIR    /usr/local/share/asterisk
429         ASTETCDIR       /usr/local/etc/asterisk
430         ASTBINDIR       /usr/local/bin/asterisk
431         ASTSBINDIR      /usr/local/sbin/asterisk
432
433 Music on Hold:
434
435 * The music on hold handling has been changed in some significant ways in hopes
436   to make it work in a way that is much less confusing to users. Behavior will
437   not change if the same configuration is used from older versions of Asterisk.
438   However, there are some new configuration options that will make things work
439   in a way that makes more sense.
440
441   Previously, many of the channel drivers had an option called "musicclass" or
442   something similar. This option set what music on hold class this channel
443   would *hear* when put on hold. Some people expected (with good reason) that
444   this option was to configure what music on hold class to play when putting
445   the bridged channel on hold. This option has now been deprecated.
446
447   Two new music on hold related configuration options for channel drivers have
448   been introduced. Some channel drivers support both options, some just one,
449   and some support neither of them. Check the sample configuration files to see
450   which options apply to which channel driver.
451
452   The "mohsuggest" option specifies which music on hold class to suggest to the
453   bridged channel when putting them on hold. The only way that this class can
454   be overridden is if the bridged channel has a specific music class set that
455   was done in the dialplan using Set(CHANNEL(musicclass)=something).
456
457   The "mohinterpret" option is similar to the old "musicclass" option. It
458   specifies which music on hold class this channel would like to listen to when
459   put on hold. This music class is only effective if this channel has no music
460   class set on it from the dialplan and the bridged channel putting this one on
461   hold had no "mohsuggest" setting.
462
463   The IAX2 and Zap channel drivers have an additional feature for the
464   "mohinterpret" option. If this option is set to "passthrough", then these
465   channel drivers will pass through the HOLD message in signalling instead of
466   starting music on hold on the channel. An example for how this would be
467   useful is in an enterprise network of Asterisk servers. When one phone on one
468   server puts a phone on a different server on hold, the remote server will be
469   responsible for playing the hold music to its local phone that was put on
470   hold instead of the far end server across the network playing the music.
471
472 CDR Records:
473
474 * The behavior of the "clid" field of the CDR has always been that it will
475   contain the callerid ANI if it is set, or the callerid number if ANI was not
476   set.  When using the "callerid" option for various channel drivers, some
477   would set ANI and some would not.  This has been cleared up so that all
478   channel drivers set ANI.  If you would like to change the callerid number
479   on the channel from the dialplan and have that change also show up in the 
480   CDR, then you *must* set CALLERID(ANI) as well as CALLERID(num).
481
482 API:
483
484 * There are some API functions that were not previously prefixed with the 'ast_'
485   prefix but now are; these include the ADSI, ODBC and AGI interfaces. If you
486   have a module that uses the services provided by res_adsi, res_odbc, or
487   res_agi, you will need to add ast_ prefixes to the functions that you call
488   from those modules.
489
490 Formats:
491
492 * format_wav: The GAIN preprocessor definition has been changed from 2 to 0
493   in Asterisk 1.4.  This change was made in response to user complaints of
494   choppiness or the clipping of loud signal peaks.  The GAIN preprocessor
495   definition will be retained in Asterisk 1.4, but will be removed in a 
496   future release.  The use of GAIN for the increasing of voicemail message
497   volume should use the 'volgain' option in voicemail.conf
498