8652320c42629aa355d2e555124649c9dfb288f8
[asterisk/asterisk.git] / UPGRADE-12.txt
1 ===========================================================
2 ===
3 === Information for upgrading between Asterisk versions
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 include 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 === UPGRADE-1.4.txt -- Upgrade info for 1.2 to 1.4
17 === UPGRADE-1.6.txt -- Upgrade info for 1.4 to 1.6
18 === UPGRADE-1.8.txt -- Upgrade info for 1.6 to 1.8
19 === UPGRADE-10.txt  -- Upgrade info for 1.8 to 10
20 === UPGRADE-11.txt  -- Upgrade info for 10 to 11
21 ===
22 ===========================================================
23
24 There are many significant architectural changes in Asterisk 12. It is
25 recommended that you not only read through this document for important
26 changes that affect an upgrade, but that you also read through the CHANGES
27 document in depth to better understand the new options available to you.
28 chan_sip - Clarify The "sip show peers" Forcerport Column And Add Comedia
29  - Under the "Forcerport" column, the "N" used to mean NAT (i.e. Yes).  With
30    the additon of auto_* NAT settings, the meaning changed and there was a
31    certain combination of letters added to indicate the current setting. The
32    combination of using "Y", "N", "A" or "a", can be confusing.  Therefore, we
33    now display clearly what the current Forcerport setting is: "Yes", "No",
34    "Auto (Yes)", "Auto (No)".
35  - Since we are clarifying the Forcerport column, we have added a column to
36    display the Comedia setting since this is useful information as well.  We
37    no longer have a simple "NAT" setting like other versions before 11.
38
39 Additional information on the architectural changes made in Asterisk can be
40 found on the Asterisk wiki (https://wiki.asterisk.org)
41
42 Of particular note, the following systems in Asterisk underwent significant
43 changes. Documentation for the changes and a specification for their
44 behavior in Asterisk 12 is also available on the Asterisk wiki.
45  - AMI: Many events were changed, and the semantics of channels and bridges
46         were defined. In particular, how channels and bridges behave under
47         transfer scenarios and situations involving multiple parties has
48         changed significantly. See https://wiki.asterisk.org/wiki/x/dAFRAQ
49         for more information.
50  - CDR: CDR logic was extracted from the many locations it existed in across
51         Asterisk and implemented as a consumer of Stasis message bus events.
52         As a result, consistency of records has improved significantly and the
53         behavior of CDRs in transfer scenarios has been defined in the CDR
54         specification. However, significant behavioral changes in CDRs resulted
55         from the transition. The most significant change is the addition of
56         CDR entries when a channel who is the Party A in a CDR leaves a bridge.
57         See https://wiki.asterisk.org/wiki/x/pwpRAQ for more information.
58  - CEL: Much like CDRs, CEL was removed from the many locations it existed in
59         across Asterisk and implemented as a consumer of Stasis message bus
60         events. It now closely follows the Bridging API model of channels and
61         bridges, and has a much closer consistency of conveyed events as AMI.
62         For the changes in events, see https://wiki.asterisk.org/wiki/x/4ICLAQ.
63
64 Build System:
65  - Removed the CHANNEL_TRACE development mode build option. Certain aspects of
66    the CHANNEL_TRACE build option were incompatible with the new bridging
67    architecture.
68
69  - Asterisk now depends on libjansson, libuuid and optionally (but recommended)
70    libxslt and uriparser.
71
72  - The new SIP stack and channel driver uses a particular version of PJSIP.
73    Please see https://wiki.asterisk.org/wiki/x/J4GLAQ for more information on
74    configuring and installing PJSIP for use with Asterisk.
75
76 AgentLogin and chan_agent:
77  - Along with AgentRequest, this application has been modified to be a
78    replacement for chan_agent. The chan_agent module and the Agent channel
79    driver have been removed from Asterisk, as the concept of a channel driver
80    proxying in front of another channel driver was incompatible with the new
81    architecture (and has had numerous problems through past versions of
82    Asterisk). The act of a channel calling the AgentLogin application places the
83    channel into a pool of agents that can be requested by the AgentRequest
84    application. Note that this application, as well as all other agent related
85    functionality, is now provided by the app_agent_pool module.
86
87  - This application no longer performs agent authentication. If authentication
88    is desired, the dialplan needs to perform this function using the
89    Authenticate or VMAuthenticate application or through an AGI script before
90    running AgentLogin.
91
92  - The agents.conf schema has changed. Rather than specifying agents on a
93    single line in comma delineated fashion, each agent is defined in a separate
94    context. This allows agents to use the power of context templates in their
95    definition.
96
97  - A number of parameters from agents.conf have been removed. This includes
98    maxloginretries, autologoffunavail, updatecdr, goodbye, group, recordformat,
99    urlprefix, and savecallsin. These options were obsoleted by the move from
100    a channel driver model to the bridging/application model provided by
101    app_agent_pool.
102
103  - The AGENTUPDATECDR channel variable has also been removed, for the same
104    reason as the updatecdr option.
105
106  - The endcall and enddtmf configuration options are removed.  Use the
107    dialplan function CHANNEL(dtmf-features) to set DTMF features on the agent
108    channel before calling AgentLogin.
109
110 AgentMonitorOutgoing
111  - This application has been removed. It was a holdover from when
112    AgentCallbackLogin was removed.
113
114 ControlPlayback
115  - The channel variable CPLAYBACKSTATUS may now return the value
116    'REMOTESTOPPED' when playback is stopped by an external entity.
117
118 DumpChan:
119  - The output of DumpChan no longer includes the DirectBridge or IndirectBridge
120    fields. Instead, if a channel is in a bridge, it includes a BridgeID field
121    containing the unique ID of the bridge that the channel happens to be in.
122
123 ForkCDR:
124  - Nearly every parameter in ForkCDR has been updated and changed to reflect
125    the changes in CDRs. Please see the documentation for the ForkCDR
126    application, as well as the CDR specification on the Asterisk wiki.
127
128 NoCDR:
129  - The NoCDR application has been deprecated. Please use the CDR_PROP function
130    to disable CDRs on a channel.
131
132 ParkAndAnnounce:
133  - The app_parkandannounce module has been removed. The application
134    ParkAndAnnounce is now provided by the res_parking module. See the
135    Parking changes for more information.
136
137 ResetCDR:
138  - The 'w' and 'a' options have been removed. Dispatching CDRs to registered
139    backends occurs on an as-needed basis in order to preserve linkedid
140    propagation and other needed behavior.
141  - The 'e' option is deprecated. Please use the CDR_PROP function to enable
142    CDRs on a channel that they were previously disabled on.
143  - The ResetCDR application is no longer a part of core Asterisk, and instead
144    is now delivered as part of app_cdr.
145
146 Queues:
147  - Queue strategy rrmemory now has a predictable order similar to strategy
148    rrordered. Members will be called in the order that they are added to the
149    queue.
150
151  - Removed the queues.conf check_state_unknown option.  It is no longer
152    necessary.
153
154  - It is now possible to play the Queue prompts to the first user waiting in a
155    call queue. Note that this may impact the ability for agents to talk with
156    users, as a prompt may still be playing when an agent connects to the user.
157    This ability is disabled by default but can be enabled on an individual
158    queue using the 'announce-to-first-user' option.
159
160  - The configuration options eventwhencalled and eventmemberstatus have been
161    removed.  As a result, the AMI events QueueMemberStatus, AgentCalled,
162    AgentConnect, AgentComplete, AgentDump, and AgentRingNoAnswer will always be
163    sent.  The "Variable" fields will also no longer exist on the Agent* events.
164    These events can be filtered out from a connected AMI client using the
165    eventfilter setting in manager.conf.
166
167  - The queue log now differentiates between blind and attended transfers. A
168    blind transfer will result in a BLINDTRANSFER message with the destination
169    context and extension. An attended transfer will result in an
170    ATTENDEDTRANSFER message. This message will indicate the method by which
171    the attended transfer was completed: "BRIDGE" for a bridge merge, "APP"
172    for running an application on a bridge or channel, or "LINK" for linking
173    two bridges together with local channels. The queue log will also now detect
174    externally initiated blind and attended transfers and record the transfer
175    status accordingly.
176
177  - When performing queue pause/unpause on an interface without specifying an
178    individual queue, the PAUSEALL/UNPAUSEALL event will only be logged if at
179    least one member of any queue exists for that interface.
180
181 SetAMAFlags
182  - This application is deprecated in favor of CHANNEL(amaflags).
183
184 VoiceMail:
185  - The voicemail.conf configuration file now has an 'alias' configuration
186    parameter for use with the Directory application. The voicemail realtime
187    database table schema has also been updated with an 'alias' column. Systems
188    using voicemail with realtime should update their schemas accordingly.
189
190 Channel Drivers:
191  - When a channel driver is configured to enable jiterbuffers, they are now
192    applied unconditionally when a channel joins a bridge. If a jitterbuffer
193    is already set for that channel when it enters, such as by the JITTERBUFFER
194    function, then the existing jitterbuffer will be used and the one set by
195    the channel driver will not be applied.
196
197 chan_bridge
198  - chan_bridge is removed and its functionality is incorporated into ConfBridge
199    itself.
200
201 chan_dahdi:
202  - Analog port dialing and deferred DTMF dialing for PRI now distinguishes
203    between 'w' and 'W'.  The 'w' pauses dialing for half a second.  The 'W'
204    pauses dialing for one second.
205
206  - The default for inband_on_proceeding has changed to no.
207
208  - The CLI command 'dahdi destroy channel' is now 'dahdi destroy channels'.
209    A range of channels can be specified to be destroyed. Note that this command
210    should only be used if you understand the risks it entails.
211
212 chan_local:
213  - The /b option has been removed.
214
215  - chan_local moved into the system core and is no longer a loadable module.
216
217 chan_sip:
218  - The 'callevents' parameter has been removed. Hold AMI events are now raised
219    in the core, and can be filtered out using the 'eventfilter' parameter
220    in manager.conf.
221
222  - Dynamic realtime tables for SIP Users can now include a 'path' field. This
223    will store the path information for that peer when it registers. Realtime
224    tables can also use the 'supportpath' field to enable Path header support.
225
226  - LDAP realtime configurations for SIP Users now have the AstAccountPathSupport
227    objectIdentifier. This maps to the supportpath option in sip.conf.
228
229 Core:
230  - Masquerades as an operation inside Asterisk have been effectively hidden
231    by the migration to the Bridging API. As such, many 'quirks' of Asterisk
232    no longer occur. This includes renaming of channels, "<ZOMBIE>" channels,
233    dropping of frame/audio hooks, and other internal implementation details
234    that users had to deal with. This fundamental change has large implications
235    throughout the changes documented for this version. For more information
236    about the new core architecture of Asterisk, please see the Asterisk wiki.
237
238  - The following channel variables have changed behavior which is described in
239    the CHANGES file: TRANSFER_CONTEXT, BRIDGEPEER, BRIDGEPVTCALLID,
240    ATTENDED_TRANSFER_COMPLETE_SOUND, DYNAMIC_FEATURENAME, and DYNAMIC_PEERNAME.
241
242 AMI (Asterisk Manager Interface):
243  - Version 1.4 - The details of what happens to a channel when a masquerade
244    happens (transfers, parking, etc) have changed.
245    - The Masquerade event now includes the Uniqueid's of the clone and original
246      channels.
247    - Channels no longer swap Uniqueid's as a result of the masquerade.
248    - Instead of a shell game of renames, there's now a single rename, appending
249      <ZOMBIE> to the name of the original channel.
250
251  - *Major* changes were made to both the syntax as well as the semantics of the
252    AMI protocol. In particular, AMI events have been substantially modified
253    and improved in this version of Asterisk. The major event changes are listed
254    below.
255    - NewPeerAccount has been removed. NewAccountCode is raised instead.
256    - Reload events have been consolidated and standardized.
257    - ModuleLoadReport has been removed.
258    - FaxSent is now SendFAX; FaxReceived is now ReceiveFAX. This standardizes
259      app_fax and res_fax events.
260    - MusicOnHold has been replaced with MusicOnHoldStart and MusicOnHoldStop.
261    - JabberEvent has been removed.
262    - Hold is now in the core and will now raise Hold and Unhold events.
263    - Join is now QueueCallerJoin.
264    - Leave is now QueueCallerLeave.
265    - Agentlogin/Agentlogoff is now AgentLogin/AgentLogoff, respectively.
266    - ChannelUpdate has been removed.
267    - Local channel optimization is now conveyed via LocalOptimizationBegin and
268      LocalOptimizationEnd.
269    - BridgeAction and BridgeExec have been removed.
270    - BlindTransfer and AttendedTransfer events were added.
271    - Dial is now DialBegin and DialEnd.
272    - DTMF is now DTMFBegin and DTMFEnd.
273    - Bridge has been replaced with BridgeCreate, BridgeEnter, BridgeLeave, and
274      BridgeDestroy
275    - MusicOnHold has been replaced with MusicOnHoldStart and MusicOnHoldStop
276    - AGIExec is now AGIExecStart and AGIExecEnd
277    - AsyncAGI is now AsyncAGIStart, AsyncAGIExec, and AsyncAGIEnd
278
279  - The 'MCID' AMI event now publishes a channel snapshot when available and
280    its non-channel-snapshot parameters now use either the "MCallerID" or
281    'MConnectedID' prefixes with Subaddr*, Name*, and Num* suffixes instead
282    of 'CallerID' and 'ConnectedID' to avoid confusion with similarly named
283    parameters in the channel snapshot.
284
285  - The 'Channel' key used in the 'AlarmClear', 'Alarm', and 'DNDState' has been
286    renamed "DAHDIChannel" since it does not convey an Asterisk channel name.
287
288  - All AMI events now contain a 'SystemName' field, if available.
289
290  - Local channel information in events is now prefixed with 'LocalOne' and
291    'LocalTwo'. This replaces the suffix of '1' and '2' for the two halves of
292    the Local channel. This affects the 'LocalBridge', 'LocalOptimizationBegin',
293    and 'LocalOptimizationEnd' events.
294
295  - The 'RTCPSent'/'RTCPReceived' events have been significantly modified from
296    previous versions. They now report all SR/RR packets sent/received, and
297    have been restructured to better reflect the data sent in a SR/RR. In
298    particular, the event structure now supports multiple report blocks.
299
300  - The deprecated use of | (pipe) as a separator in the channelvars setting in
301    manager.conf has been removed.
302
303  - The SIP SIPqualifypeer action now sends a response indicating it will qualify
304    a peer once a peer has been found to qualify.  Once the qualify has been
305    completed it will now issue a SIPqualifypeerdone event.
306
307  - The AMI event 'Newexten' field 'Extension' is deprecated, and may be removed
308    in a future release. Please use the common 'Exten' field instead.
309
310  - The AMI events 'ParkedCall', 'ParkedCallTimeOut', 'ParkedCallGiveUp', and
311    'UnParkedCall' have changed significantly in the new res_parking module.
312    - The 'Channel' and 'From' headers are gone. For the channel that was parked
313      or is coming out of parking, a 'Parkee' channel snapshot is issued and it
314      has a number of fields associated with it. The old 'Channel' header relayed
315      the same data as the new 'ParkeeChannel' header.
316    - The 'From' field was ambiguous and changed meaning depending on the event.
317      for most of these, it was the name of the channel that parked the call
318      (the 'Parker'). There is no longer a header that provides this channel name,
319      however the 'ParkerDialString' will contain a dialstring to redial the
320      device that parked the call.
321    - On UnParkedCall events, the 'From' header would instead represent the
322      channel responsible for retrieving the parkee. It receives a channel
323      snapshot labeled 'Retriever'. The 'from' field is is replaced with
324      'RetrieverChannel'.
325    - Lastly, the 'Exten' field has been replaced with 'ParkingSpace'.
326
327  - The AMI event 'Parkinglot' (response to 'Parkinglots' command) in a similar
328    fashion has changed the field names 'StartExten' and 'StopExten' to
329    'StartSpace' and 'StopSpace' respectively.
330
331  - The AMI 'Status' response event to the AMI Status action replaces the
332    'BridgedChannel' and 'BridgedUniqueid' headers with the 'BridgeID' header to
333    indicate what bridge the channel is currently in.
334
335 CDR (Call Detail Records)
336  - Significant changes have been made to the behavior of CDRs. The CDR engine
337    was effectively rewritten and built on the Stasis message bus. For a full
338    definition of CDR behavior in Asterisk 12, please read the specification
339    on the Asterisk wiki (wiki.asterisk.org).
340
341  - CDRs will now be created between all participants in a bridge. For each
342    pair of channels in a bridge, a CDR is created to represent the path of
343    communication between those two endpoints. This lets an end user choose who
344    to bill for what during bridge operations with multiple parties.
345
346  - The duration, billsec, start, answer, and end times now reflect the times
347    associated with the current CDR for the channel, as opposed to a cumulative
348    measurement of all CDRs for that channel.
349
350 CEL:
351  - The Uniqueid field for a channel is now a stable identifier, and will not
352    change due to transfers, parking, etc.
353
354  - CEL has undergone significant rework in Asterisk 12, and is now built on the
355    Stasis message bus. Please see the specification for CEL on the Asterisk
356    wiki at https://wiki.asterisk.org/wiki/x/4ICLAQ for more detailed
357    information. A summary of the affected events is below:
358    - BRIDGE_START, BRIDGE_END, BRIDGE_UPDATE, 3WAY_START, 3WAY_END, CONF_ENTER,
359      CONF_EXIT, CONF_START, and CONF_END events have all been removed. These
360      events have been replaced by BRIDGE_ENTER/BRIDGE_EXIT.
361    - BLINDTRANSFER/ATTENDEDTRANSFER events now report the peer as NULL and
362      additional information in the extra string field.
363
364 Dialplan:
365  - All channel and global variable names are evaluated in a case-sensitive
366    manner. In previous versions of Asterisk, variables created and evaluated in
367    the dialplan were evaluated case-insensitively, but built-in variables and
368    variable evaluation done internally within Asterisk was done
369    case-sensitively.
370
371  - Asterisk has always had code to ignore dash '-' characters that are not
372    part of a character set in the dialplan extensions.  The code now
373    consistently ignores these characters when matching dialplan extensions.
374
375  - BRIDGE_FEATURES channel variable is now casesensitive for feature letter
376    codes. Uppercase variants apply them to the calling party while lowercase
377    variants apply them to the called party.
378
379 Features:
380  - The features.conf [applicationmap] <FeatureName>  ActivatedBy option is
381    no longer honored.  The feature is always activated by the channel that has
382    DYNAMIC_FEATURES defined on it when it enters the bridge. Use predial to set
383    different values of DYNAMIC_FEATURES on the channels
384
385  - Executing a dynamic feature on the bridge peer in a multi-party bridge will
386    execute it on all peers of the activating channel.
387
388  - There is no longer an explicit 'features reload' CLI command. Features can
389    still be reloaded using 'module reload features'.
390
391  - It is no longer necessary (or possible) to define the ATXFER_NULL_TECH in
392    features.c for atxferdropcall=no to work properly. This option now just
393    works.
394
395 Parking:
396  - Parking has been extracted from the Asterisk core as a loadable module,
397    res_parking.
398
399  - Configuration is found in res_parking.conf. It is no longer supported in
400    features.conf
401
402  - The arguments for the Park, ParkedCall, and ParkAndAnnounce applications 
403    have been modified significantly. See the application documents for 
404    specific details.
405
406  - Numerous changes to Parking related applications, AMI and CLI commands and
407    internal inter-workings  have been made. Please read the CHANGES file for 
408    the detailed list.
409
410 Security Events Framework:
411  - Security Event timestamps now use ISO 8601 formatted date/time instead of
412    the "seconds-microseconds" format that it was using previously.
413
414 AGENT:
415  - The password option has been disabled, as the AgentLogin application no
416    longer provides authentication.
417
418 AUDIOHOOK_INHERIT:
419  - Due to changes in the Asterisk core, this function is no longer needed to
420    preserve a MixMonitor on a channel during transfer operations and dialplan
421    execution. It is effectively obsolete.
422
423 CDR: (function)
424  - The 'amaflags' and 'accountcode' attributes for the CDR function are
425    deprecated. Use the CHANNEL function instead to access these attributes.
426
427  - The 'l' option has been removed. When reading a CDR attribute, the most
428    recent record is always used. When writing a CDR attribute, all non-finalized
429    CDRs are updated.
430
431  - The 'r' option has been removed, for the same reason as the 'l' option.
432
433  - The 's' option has been removed, as LOCKED semantics no longer exist in the
434    CDR engine.
435
436 res_rtp_asterisk:
437  - ICE/STUN/TURN support in res_rtp_asterisk has been made optional. To enable
438    them, an Asterisk-specific version of PJSIP needs to be installed.
439    Tarballs are available from https://github.com/asterisk/pjproject/tags/.
440
441
442 ===========================================================
443 ===========================================================