Blueworx Voice Response supports CCXML blind and consult call transfer operations using the messages and events in BVR Specific Messages and Events for Call Transfer
A blind transfer immediately drops the calls from Blueworx Voice Response and lets the caller handle the transfer. If the transfer fails then effectively the call has ended.
A consult transfer asks the caller to do the transfer but keeps the connection and notifies CCXML with a failure/success when it finishes the transfer attempt.
The following is an example of a CCXML application that can perform either a blind or consult transfer based on the testBlind variable setting.
<ccxml version="1.0"> <script>function makeOutboundHeader(value){ var ret = new Object(); ret.value = value; return ret; } </script> <var name="Host" expr="'siphost.blueworx.com'"/> <var name="myConnectionID"/> <var name="testBlind" expr="'false'"/> <eventprocessor> <transition event="ccxml.loaded" name="evt"> </transition> <transition event="connection.alerting"> <accept/> </transition> <transition event="connection.connected"> <log expr="'[connection.connected] on connectionid ' + event$.connectionid"/> <var name="target" expr="'sip:1003@' + Host"/> <var name="outbound" expr="new Object()"/> <var name="outbound['x-user-to-user']" expr="makeOutboundHeader('Example header value')"/> <var name="outbound['x-checksum']" expr="makeOutboundHeader('1234567890')"/> <log expr="'[connection.connected] Transfer header x-user-to-user set as ' + outbound['x-user-to-user'].value"/> <log expr="'[connection.connected] Transfer header x-checksum set as ' + outbound['x-checksum'].value"/> <if cond="testBlind == 'true'"> <!-- Blind transfer --> <send target="event$.connectionid" targettype="'connection'" name="'bvr.transfer'" namelist="target" hints="outbound"/> <else/> <!-- Consult transfer --> <var name="purpose" expr="'transfer'"/> <var name="wait_for_answer" expr="'false'"/> <send target="event$.connectionid" targettype="'connection'" name="'bvr.consult'" namelist="target purpose wait_for_answer" hints="outbound"/> </if> </transition> <transition event="connection.disconnected"> <log expr="'[connection.disconnected] on connectionid ' + event$.connectionid"/> <exit/> </transition> <transition event="bvr.transfer.successful"> <log expr="'[bvr.transfer.successful]'"/> </transition> <transition event="bvr.consult.successful"> <log expr="'[bvr.consult.successful]'"/> </transition> <transition event="error.bvr.transfer"> <log expr="'[error.bvr.transfer]'"/> </transition> <transition event="error.bvr.consult"> <log expr="'[error.bvr.consult]'"/> </transition> <transition event="error.*"> <log expr="'[error] event = ' + event$.name + ',reason = ' + event$.reason"/> </transition> <transition event="send.successful"> </transition> <transition event="*"> <log expr="'Event = ' + event$.name + ' was not caught by any transitions in the CCXML document'"/> </transition> </eventprocessor> </ccxml>