Transfers the caller to another phone number. There are 3 types of transfer:
IMPORTANT: The Developer/SpeechGenie platforms do not allow the use of <transfer>; attempting to make a transfer on those platforms will generate an error.
<transfer
name="string"
expr="ECMAScript_Expression"
cond="ECMAScript_Expression"
dest="URI"
destexpr="ECMAScript_Expression"
bridge="boolean"
type="bridge" | "blind" | "consultation"
method="string"
connecttimeout="time_interval"
maxtime="time_interval"
transferaudio="URI"
analysis="boolean"
connectwhen="analysis" | "answered" | "immediate"
detectansweringmachine="boolean"
aai="string"
aaiexpr="ECMAScript_Expression"
signalvar="ECMAScript_Object"
consultexpr="ECMAScript_Expression">
child elements
</transfer>
|
|
Attribute |
Description |
|
name |
The name of this transfer. This variable stores the result of the transfer, and can be referenced anywhere within the transfer's form. Optional. (Defaults to an inaccessible internal variable.)
Note: If the transfer request is unacceptable and the transfer is not initiated at all, the transfer variable will not be set and the platform will throw an error, instead. |
|
expr |
An ECMAScript expression to be evaluated and used as the initial value of this transfer. This transfer will be visited only if the expression evaluates to |
|
cond |
An ECMAScript expression to be evaluated and used as a boolean condition. This transfer will be visited only if the expression evaluates to |
|
dest |
The URI of the destination phone. Optional. Exactly one of dest and destexpr may be specified. In a PSTN environment, the format is:
In a VoIP environment, the format to call a phone number through an IP/PSTN gateway is:
In a VoIP environment, the format to call a VoIP endpoint device directly is:
In any of the above, forward slashes can optionally follow the protocol, although that is not standard for telephone URIs. For example, In any of the above,
The format is extended to adhere to RFC 2806. This includes support for ";postd=extension" and the "p" (pause) wait-character within |
|
destexpr |
An ECMAScript expression to be evaluated and used as the URI of the destination phone, as documented under |
|
bridge |
Determines what to do after the call is connected. Refer to the element description, above, for explanations of the 3 types of transfer. Optional.
|
|
type |
Specifies the transfer behaviour (from the VoiceXML application's perspective). Optional.
If |
|
method |
The transfer method to be used by the call manager; this is the actual mechanism to be used to perform the transfer at the telephony layer. All platforms support the "bridge" method. If additional methods are supported (and configured) as well, they will be listed under the following parameters in the Call Manager configuration:
The value is not case-sensitive. The empty string is treated as the default. Optional. (Default value depends on Call Manager configuration.) A platform extension. |
|
connecttimeout |
The time to wait while trying to connect the call before returning, and setting the transfer variable to 'noanswer'. Minimum value allowed is 5s. This attribute only affects the VoiceXML application behaviour in the cases of bridge or consultation transfers. Optional. (Defaults to 30s.) |
|
maxtime |
The maximum time that the call is allowed to last. Minimum value is 30 seconds; maximum is one week. A value of 0 represents no limit. This attribute only applies for bridge transfers. Optional. (Defaults to 0.) |
|
transferaudio |
The URI of an audio file to be played while connecting the call. Transfer audio cannot be played if |
|
analysis |
Specifies whether or not the platform is enabled to detect who/what answered the call. Optional. If this attribute is set to true, and the call is answered, the behaviour is as follows:
If this attribute is set to false, and the call is answered, the platform will not be able to differentiate between an answering machine, fax machine, or human. The original caller will be connected to the called endpoint in all three cases, and the transfer variable will be set when the call is disconnected (the value will depend on how the connection is terminated). Note that in some telephony environments, (Defaults to true) A platform extension. |
|
connectwhen |
Controls when the call is connected to the end point. See Limitation, below. Optional.
If A platform extension. |
|
detectansweringmachine |
This feature is only supported if A platform extension. |
|
aai |
A string containing Application-to-Application Information (AAI) data to be sent to an application on the far-end. For example, if a AAI data is a string of limited length which is sent over the PSTN. If the intent is to have the called party access this string, they must have a device that is capable of retrieving the sent data. If you are looking for a way to allow the called party to access application data (possibly by hearing a message or audio file), try using VoiceGenie's call control features, instead. Note: If neither |
|
aaiexpr |
An ECMAScript expression evaluating to the Application-to-Application Information (AAI) data string, to be sent to an application on the far-end, as documented under Note: If neither |
|
signalvar |
Sends an ECMAScript object containing a variable number of parameters associated with the call with the call request. Optional. Note: To make use of these outgoing signaling variables, the called party must have a switch that is capable of delivering the information. A platform extension. |
|
consultexpr |
Use of this attribute specifies that the transfer should be multiphase. Contains an ECMAScript expression evaluating to the URI (possibly including a If this attribute is empty ("") or set to the empty string literal ("''"), the attribute will be ignored and the transfer will not be multiphase. If this attribute is non-empty and the expression evaluates to an empty string (''), then the current VoiceXML page will be used. For a list of transfer methods that this feature is supported with, please see the VoiceGenie Media Platform User's Guide (look for the section "Whisper Transfer"). Note that it is not supported with:
Note: When performing a multiphase transfer with Optional. A platform extension. |
error event may be thrown if a reserved ECMAScript word is used as the name.error.badfetch event is thrown if more or less than one of dest and destexpr are specified, or if more than one of aai and aaiexpr are specified.For each <transfer> whose name attribute is set to <name>, there is a shadow variable <name>$ (in the same scope as the transfer name variable), containing the following properties after the transfer completes:
|
Property |
Description |
|
<name>$.duration |
The duration of the call in seconds. The duration is 0 if a call attempt was terminated by the caller (using a DTMF command) prior to being answered. Note that in the case where the caller hangs up before the transfer is connected, the duration is timed from when the transfer request was made, and therefore will be greater than 0. |
|
<name>$.inputmode |
The mode (dtmf) of the input, if input terminated the transfer; otherwise, |
|
<name>$.disconnect_reason |
(VoiceGenie extension) The disconnect reason (ISDN disconnect cause code) passed back from the call manager after the outbound bridge transfer disconnects. |
|
<name>$.result.<vari> |
(VoiceGenie extension) These only exist with multiphase transfers (i.e. when |
|
<name>$.markname |
(VoiceXML 2.1 feature) The name of the mark last executed by the SSML processor before barge-in occurred or the end of audio playback occurred. If no mark was executed, this variable is |
|
<name>$.marktime |
(VoiceXML 2.1 feature) The number of milliseconds that elapsed since the last mark was executed by the SSML processor, until barge-in occurred or the end of audio playback occurred. If no mark was executed, this variable is |
undefined.The following events can be thrown during the execution of the <transfer> element:
Audio Catch Error Filled Grammar Help Noinput Nomatch Prompt Property Value #PCDATA
method attribute.analysis attribute.connectwhen attribute.detectansweringmachine attribute.signalvar attribute.consultexpr attribute.error.connection.nolicense events.<transfer>; attempting to make a transfer on those platforms will generate an error.number,,,extension) as a workaround to dial extensions will only work for hookflash transfers.transferaudio will not play in the case of blind transfers.connectwhen attribute to "immediate". This is due to the fact that the dialed DTMF tones may echo in an analog environment and cause unintended barge-in events in the VoiceXML application.type="blind" (or "unsupervised") would make sense. Also, some transfer methods may not be supported for all transfer types, due to the transfer methods' mechanisms. See the System Reference Guide for a list of the method-type value combinations supported for each telephony technology.Note: The Developer/SpeechGenie platforms do not allow the use of <transfer>, and running the example below on those platforms will generate an error.
<?xml version="1.0"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
<form>
<transfer name="newcall" dest="tel:4167360905x111" bridge="true">
<filled>
Your call lasted <value expr="newcall$.duration"/> seconds.
<if cond="newcall == 'busy'">
All our customer care agents are currently busy.
Please call back later.
</if>
</filled>
</transfer>
</form>
</vxml>
|