BVR Specific Messages and Events for Call Transfer

Many voice applications give the caller the option of speaking to a real person. Blueworx Voice Response uses the facilities provided by SIP. 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 two 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:
bvr.transfer
Transfers a call without checking that an agent is available (blind transfer).
bvr.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".
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, for example, an agent, 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="'sip:247093@test.blueworx.com'"/>
	<send target="evt.connectionid" name="'bvr.transfer'" 
	      namelist="target" targettype="'connection'"/>
</transition>
To use a consult transfer, your CCXML document must use a <send> element within a <transition> element. For example, to perform a consult transfer that completes when the transfer has started, rather than completed:
<transition event="connection.connected" name="evt">
	<var name="target" expr="'sip:247093@test.blueworx.com'"/>
	<send target="evt.connectionid" name="'bvr.consult'"
	      namelist="target" targettype="'connection'"/>
</transition>

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.bvr.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 bvr.transfer.successful event.