Transferring a telephone call

Many voice applications give the caller the option of speaking to a real person. Blueworx Voice Response has a number of different transfer capabilities, and can use the facilities of the telephone switch, a computer telephony integration (CTI) link, or its own ability to join two calls together. These capabilities are not included in the CCXML standard, therefore they are made available by using the <send> element to send platform specific messages to Blueworx Voice Response.

There are a number of different transfer options your CCXML application can use. Your application can either transfer blind (without checking that an agent is available), or it can check before transferring the call. When the <send> element is used to transfer calls, its attributes must be set as follows:

target

The connectionid of the channel being transferred.

name
The type of event being sent. It is specified as a string beginning with ibmwvr. and is used to represent the transfer option required:
ibmwvr.transfer
Transfers a call without checking that an agent is available (blind transfer).
ibmwvr.conference
Sets up a conference call without checking that the other party is available (blind conference). Requires a telephony service with CTI capability.
ibmwvr.consult
Puts a call on hold while connecting to an agent. The connection to the agent (or other third party) is monitored for its outcome in what is known as a screened transfer.
If this value is used for the name attribute, the following variables should be included in the namelist attribute:
purpose
The variable named purpose declares the purpose of the consult and should be set to a value of either "conference" or "transfer". On some platforms it is not possible to complete a transfer from a consult where the purpose was "conference" (or to complete a consult from a transfer).
wait_for_answer
The variable named wait_for_answer indicates at what stage a consult is considered to be successful and should be set to the value of either "true" or "false". If wait_for_answer="true", the consulted connection must reach the connected state before the consult request returns a ibmwvr.consult.successful event. If wait_for_answer="false", an ibmwvr.consult.successful will be returned as soon as the consultation call has been started. Some line signaling types do not support wait_for_answer="true".
ibmwvr.consult.transfer
Transfers a held call to an agent.
ibmwvr.consult.conference
Sets up a conference call between the held party and the consulted party. Requires a telephony service with CTI capability.
ibmwvr.consult.retrieve
Returns to a held call in the event of an agent being busy.
namelist
This is used to pass further information to the platform, such as the telephone number to which a call is to be transferred.
Note: The variable named wait_for_answer should be set to the value of either true or false. wait_for_answer indicates at what stage a consult is considered to be successful. If wait_for_answer="true", the consulted connection must reach the CONNECTED state before the consult request returns a ibmwvr.consult.successful event. If wait_for_answer="false" an ibmwvr.consult.successful will be returned as soon as the consultation call has been started. Some line signaling types do not support wait_for_answer="true".
targettype
For call transfer, this attribute must be set to "'connection'".
To transfer a connected telephone call to an agent, or to set up a conference call, your CCXML document must use a <send> element within a <transition> element. For example, to transfer a call without checking that an agent is available:
<transition event="connection.connected" name="evt">
	<var name="target" expr="'tel:+441234567890'"/>
	<send target="evt.connectionid" name="'ibmwvr.transfer'" 
	      namelist="target" targettype="'connection'"/>
</transition>
Refer to the Blueworx Voice Response for AIX: Deploying and Managing VoiceXML and Java Applications information for information on using telephone URLs.
To set up a conference call, your CCXML document must use a <send> element within a <transition> element. For example, to set up a conference call without checking that a participant is available:
<transition event="connection.connected" name="evt">
	<var name="target" expr="'tel:+441234567890'"/>
	<send target="evt.connectionid" name="'ibmwvr.conference'"
	      namelist="target" targettype="'connection'"/>
</transition>
Refer to the Blueworx Voice Response for AIX: Deploying and Managing VoiceXML and Java Applications information for information on using telephone URLs.
Note: The base Blueworx Voice Response for AIX system does not support call conference. To use ibmwvr.conference or ibmwvr.consult.conference, you must have a telephony service with CTI capability. To use a telephony service, follow the instructions in “Adding Telephony Capability”, in Blueworx Voice Response for AIX: Deploying and Managing VoiceXML and Java Applications.
To set up a conference call, after first checking that the other party is available:
  1. Use <send target="evt.connectionid" name="'ibmwvr.consult'" namelist="target" targettype="'connection'"/> to establish a new call.
  2. Use <send target="evt.connectionid" name="'ibmwvr.consult.conference'" namelist="target" targettype="'connection'"/> to connect the held party and the consulted party.

Call transfer events

The result of attempting a <send> is given by a subsequent success or failure event that can be used to execute a <transition> that handles success or failure. The failure event that is generated when an attempted action fails is formed by pre-pending the string error. to the string used as the name attribute in the <send>. For example a blind transfer failure is indicated by an error.ibmwvr.transfer event. The success event that is generated when an attempted action is successful is formed by appending the string .successful to the string used as the name attribute in the <send>. For example a blind transfer success is indicated by an ibmwvr.transfer.successful event.

If for some reason a SIP blind or attended transfer operation using a telephony service with CTI capability (such as Genesys CTI) cannot be completed satisfactorily, perhaps because there is a problem with the CTI server, it is possible to specify that the transfer is made by Blueworx Voice Response instead. To do this, set the usewvrtransfer parameter to true in a namelist variable, for example:
<transition event="connection.connected">
   <var name="usewvrtransfer" expr="'true'"/>
   <send target="event$.connectionid" name="'ibmwvr.transfer'"
         namelist="usewvrtransfer" targettype="'connection'"/>
</transition>
Note: Blueworx Voice Response does not support call conference, so conference call transfers cannot be re-routed through it. Consequently name="'ibmwvr.conference'" or name="'ibmwvr.consult.conference'" cannot be used with the usewvrtransfer parameter set to true.