Description
Transfers the caller to another phone number. There are 3 types of transfer:
Syntax
<transfer
name="string"
expr="ECMAScript_Expression"
cond="ECMAScript_Expression"
dest="URI"
destexpr="ECMAScript_Expression"
bridge="boolean"
type="bridge" | "blind" | "consultation" | "local" | "network" | "unsupervised" | "supervised"
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> |
Attributes
|
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. Exactly one of dest and destexpr may be specified.
|
|
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.
In standards compliance mode, this attribute defaults to false. If
the If the <vxml> version
attribute is set to 2.1, both |
|
type |
Specifies the transfer behaviour (from the VoiceXML application's perspective). Optional.
The following values are deprecated, and "bridge"/"blind"/"consultation" should be used instead, wherever possible.
If |
|
method |
The transfer method to be used by the SIP stack; this is the actual mechanism to be used to perform the transfer at the telephony layer. The Dialogic IP Media Server supports bridged transfers. |
|
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 applies for 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 for unsuccessful calls, the platform will generally be able to
report the failure reasons (ex. busy, noanswer), regardless of the
In standards compliance mode, this attribute defaults to true.
If the |
|
connectwhen |
Controls when the call is connected to the end point. See Limitations below. Optional.
If |
|
detectansweringmachine |
This feature is only supported if |
|
aai |
A string containing Application-to-Application Information (AAI) data to be sent to an application on the far-end.
For example, if a 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. |
|
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. Supported with:
Unsupported with:
(In addition, this feature should work with RLT/TBCT/ECT, but those have not been tested.) Note: When performing a multiphase transfer with
|
|
longdigit |
To ensure a call transfer can be terminated with a long DTMF using the new “longdigit” attribute of <transfer> as well as using DTMF grammar under <transfer>. |
|
requri |
The SIP URI to be used as the Request-URI in an outbound INVITE. The value must be compliant with the grammar for a SIP URI. If this attribute is not present, the Request-URI will have the same value as the To header. The To URI value is determined by the dest attribute. This attribute and the requriexpr attribute enable you to route outbound calls to a proxy. The proxy will modify the request as needed based on the URI parameters placed in the INVITE and relevant network and subscriber data. |
|
requriexpr |
An ECMAscript expression that evaluates to a SIP URI. |
|
video |
It is possible to make an outbound call which supports video. The video attribute is added as an extension to specify whether the transfer should be video-enabled or not. Whether the transfer should be video-enabled or not. Valid values are:
Setting the video attribute to “allow” does not guarantee that the established transfer will have a video stream. It is up to the capabilities and configuration of the underlying platform. Setting the attribute to “suppress” will guarantee that only an audio stream will be available. In the absence of this attribute, video streams will be allowed. See RTP Codec Selection with <transfer/> for additional information. |
Attribute Notes
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. Shadow Variables
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. It is an ECMAScript number. |
| <name>$.inputmode |
The mode (dtmf) of the input, if input terminated
the transfer; otherwise, |
| <name>$.utterance |
The dtmf string of the input, if input terminated
the transfer; otherwise, |
| <name>$.disconnect_reason |
(extension) The disconnect reason passed back from the SIP stack after the outbound bridge transfer disconnects. . |
| <name>$.result.<vari> |
(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 |
| <name>$.media | The media stream connections that are established as a result
of a successful transfer. This can take on the following values:
"Audio" means that only an audio stream was established. "Audio+video" means that both an audio and a video stream were established. In the latter case, the order in which the stream names appear in the variable's value is fixed. Therefore, VoiceXML applications do not have to anticipate a value of "video+audio". The following example illustrates how this feature can be used in a VoiceXML application: <?xml version="1.0"?> <form> </vxml>
|
Shadow Variable Notes
undefined.
Events Thrown
The following events can be thrown during the execution of the
<transfer> element:
Event Notes
connection.disconnect.hangup/
telephone.disconnect.hangup is caught, the following
anonymous variable
is available within the scope of the <catch> element:
_disconnect_reason
Parents
Children
<audio>, <catch>, <dtmf>, <error>, <filled>, <grammar>, <help>, <noinput>, <nomatch>, <prompt>, <property>, <value>, #PCDATA
Extensions
type attribute.method attribute.analysis attribute.connectwhen attribute.detectansweringmachine attribute.signalvar attribute.consultexpr attribute.<dtmf> as a child, to be used like
<grammar>.
disconnect_reason and result.*
shadow variables.error.connection.nolicense/error.telephone.nolicense events.Limitations/Restrictions
<transfer>. <transfer>. Only
dtmf/grammar elements within a <transfer> can be used to
specify DTMF grammar that will terminate the transfer. DTMF grammars outside
of the scope of <transfer> are not enabled (as defined
in the W3C VoiceXML 2.0 specification). number,,,extension)
as a workaround to dial extensions will only work for hookflash transfers.
transferaudio will not play in the case of blind transfers.
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. Example
<?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> |