The section explains how a VoiceXML dialog, started by a CCXML application using the dialogstart
element, can perform a call transfer or bridge two calls together.
The VoiceXML dialog will have been started by the CCXML application using a dialogstart
element.
When the VoiceXML dialog wishes to transfer or bridge the call, it uses a transfer element
with:
- type - set to blind transfer, consultation transfer or bridge depending on the type of transfer
it wishes to perform:
- dest - set to the SIP URI of the transfer/bridge destination.
A sample ccxml transfer/bridge application (transfer_sample.ccxml) is provided in
/opt/blueworx/vr/sample/ccxml. The VoiceXML dialog it starts, asks the caller to specify which type
of transfer they would like to test. In order for the application to work the dest variable must be
set in transfer_sample.vxml. This is used as the destination for the blind and consult transfers and
the bridge. Initially it is set to "sip:addressHereOrThisWillNotWork".
In each case the VoiceXML dialog uses the transfer element to trigger a dialog.transfer event
into the CCXML application. For blind and consultation transfers CCXML provides messages that can be
sent to trigger the transfer. These are "bvr.transfer" and "bvr.consult" .
In the case of a blind transfer the VoiceXML transfer element will always
complete with success.
In the case of a consultation transfer the VoiceXML transfer element will complete reflecting the
success of the transfer.
- In the success case a "connection.disconnect.transfer" event will be
received.
- In the failure case the transfer element will be filled with a failure reason such as
"busy" or "unknown".
In the case of a bridge transfer, there is no automatic transfer performed by CCXML. It is up to
the CCXML application to perform the transfer action using the CCXML createcall and join elements or
createcall with a joinid attribute as shown in the example below. It is also the responsibility of
the CCXML application to reflect the success or failure of the transfer back to the VoiceXML dialog.
It does this by sending the BVR specific message "bvr.bridge.result" whose namelist attribute takes
a single variable "successful". "successful" is set to "true" in the case of a successful bridge and
"false" in the case of a failure.
- In the failure case, the "bvr.bridge.result" message should be sent immediately that failure is
detected. It is reported in the VoiceXML dialog by the transfer element being filled with
"unknown".
- In the success case the "bvr.bridge.result" message should not be sent when the
conference.joined event is detected but rather when the connection.disconnnected event is returned
for the bridged to party. It is reported in the VoiceXML dialog by the transfer element being filled
with "far_end_disconnect".