Genesys CTI with VoiceXML

When Genesys CTI is configured, Blueworx Voice Response will automatically communicate with Genesys when a call is answered by Blueworx Voice Response by using the Genesys NewCall API function

Two additional Genesys API functions that support user data being set on the requests are also available:
AccessNumGet
This request is used in external routing to prepare a call for inter switch transfers. This is used to transfer a call (with call data) between switches on different sites.
RouteRequest
This request is used to make the Genesys Universal Routing Server (URS) route the call. It is used to signal that the call has finished being processed by Blueworx Voice Response and should now be routed.

Both of these Genesys API functions are accessed by using the VoiceXML <object> element

Some Genesys properties have to be configured before using any of these API functions:

This table describes for each property, whether or not it is optional, and shows details of its usage.

Property Optional Usage
setGCTIActionToInvoke No The Genesys API function to invoke: RouteRequest or AccessNumGet
setGCTIUData Yes User data to be set on the Genesys API call and subsequently stored in the Genesys Framework.
setGCTIUDataSeparatorCharacter Yes Valid separator characters for use in the user data specified by setGCTIUData are:
: ; , . | ! ^ * + - ~ #
The default value is a colon (:).

The user data is specified in a key value pair, the key and value are delimited by the equals. Multiple key value pairs can be specified, and these must be delimited by one valid separator character defined by the setGCTIUDataSeparatorCharacter property. The default is a colon. For example:

key1=value1:key2=value2:key3=value3

AccessNumGet

The AccessNum request is used in external routing to prepare a call for inter-switch transfers. It is used to transfer a call (with call data) between switches on different sites. Each value in the VoiceXML definition is mapped across to an object property as shown in the following table:

Table 1. AccessNumGet object property mappings
Property VoiceXML Value Optional Notes
setGCTIAccessNumDestDN DestDN No  
setGCTIAccessNumLocation Location No  
setGCTIAccessNumXRouteType XRouteType Yes If not present a value of Default is used.

If the value of XRouteType is DirectUUI, UUI_Number must also be set.

setGCTIAccessNumUUINumber UUI_Number Yes This must only be present if the value of XRouteType is DirectUUI

The value of XRouteType depends on the routing being performed but it must be one of the following case-sensitive values:

The number to route to is returned in the variable routeNumber in the VoiceXML object. For example, if the VoiceXML object name is gcti, the number to route to is assigned to the gcti.routeNumber variable.

The AccessNum function returns a completion code which is stored in the VoiceXML object. The variable is completionCode and can either be 0 for success or another number for failure. For example, if the VoiceXML object is gcti, the completion code is assigned to the gcti.completionCode variable.

AccessNumGet Default XRouteType

<form id="gcti_accessnum_default">
  <object name="gcti" classid="method://com.blueworx.vr.cti.gcti.NativeAppSupport/invokeGCTI"
          type="javacode-ext">
    <param name="setGCTIActionToInvoke" value="AccessNum"/>
    <param name="setGCTIAccessNumDestDN" value="3000"/>
    <param name="setGCTIAccessNumLocation" value="Location"/>
    <filled>
      <log>Number is: <value expr="gcti.routeNumber"/></log>
    </filled>
  </object>
  <block>
    <log>Completion code is: <value expr="gcti.completionCode"/></log>
  </block>
</form>

AccessNumGet Default XRouteType with user data

This example sets up the following key value pairs of data:

<form id="gcti_accessnum_default_udata">
  <object name="gcti" classid="method://com.blueworx.vr.cti.gcti.NativeAppSupport/invokeGCTI"
          type="javacode-ext">
    <param name="setGCTIActionToInvoke" value="AccessNum"/>
    <param name="setGCTIUData" value="First=John:Last=Smith:Service=Gas"/>
    <param name="setGCTIAccessNumDestDN" value="3000"/>
    <param name="setGCTIAccessNumLocation" value="Location"/>
    <filled>
      <log>Number is: <value expr="gcti.routeNumber"/></log>
    </filled>
  </object>
  <block>
    <log>Completion code is: <value expr="gcti.completionCode"/></log>
  </block>
</form>

AccessNumGet DirectUUI XRouteType

<form id="gcti_accessnum_directuui">
  <object name="gcti" classid="method://com.blueworx.vr.cti.gcti.NativeAppSupport/invokeGCTI"
          type="javacode-ext">
    <param name="setGCTIActionToInvoke" value="AccessNum"/>
    <param name="setGCTIAccessNumDestDN" value="3000"/>
    <param name="setGCTIAccessNumLocation" value="Location"/>
    <param name="setGCTIAccessNumXRouteType" value="DirectUUI"/>
    <param name="setGCTIAccessNumUUINumber" value="1234"/>
    <filled>
      <log>Number is: <value expr="gcti.routeNumber"/></log>
    </filled>
  </object>
  <block>
    <log>Completion code is: <value expr="gcti.completionCode"/></log>
  </block>
</form>

RouteRequest

The RouteRequest is used to make the Genesys URS route the call. It is used to signal that the call has finished being processed by Blueworx Voice Response and should now be routed.

Each value in the VoiceXML definition is mapped across to an object property as shown in the following table:

Table 2. RouteRequest object property mappings
Property VoiceXML Value Optional
setGCTIRouteDN RouteDN No
setGCTIRouteCED CED Yes

The number to route to is returned in the variable routeNumber in the VoiceXML object. For example, if the VoiceXML object name is gcti, the number to route to is assigned to the gcti.routeNumber variable.

The RouteRequest function returns a completion code which is stored in the VoiceXML object. The variable is completionCode and can either be 0 for success or another number for failure. For example, if the VoiceXML object is gcti, the completion code is assigned to the gcti.completionCode variable.

Example using RouteRequest

<form id="gcti_routerequest">}}
  <object name="gcti" classid="method://com.blueworx.vr.cti.gcti.NativeAppSupport/invokeGCTI"
          type="javacode-ext">
    <param name="setGCTIActionToInvoke" value="RouteRequest"/>
    <param name="setGCTIRouteDN" value="3000"/>
    <param name="setGCTIRouteCED" value="1234567890"/>
    <filled>
      <log>Number is: <value expr="gcti.routeNumber"/></log>
    </filled>
  </object>
  <block>
    <log>Completion code is: <value expr="gcti.completionCode"/></log>}}
  </block>
</form>

Example using RouteRequest with user data

This example sets up the following key value pairs of data:

<form id="gcti_routerequest">
  <object name="gcti" classid="method://com.blueworx.vr.cti.gcti.NativeAppSupport/invokeGCTI"
          type="javacode-ext">
    <param name="setGCTIActionToInvoke" value="RouteRequest"/>
    <param name="setGCTIUData" value="First=John:Last=Smith:Service=Gas"/>
    <param name="setGCTIRouteDN" value="3000"/>
    <param name="setGCTIRouteCED" value="1234567890"/>
    <filled>
      <log>Number is: <value expr="gcti.routeNumber"/></log>
    </filled>
  </object>
  <block>
    <log>Completion code is: <value expr="gcti.completionCode"/></log>
  </block>
</form>

Example using RouteRequest with user data and alternative separator character

<form id="gcti_routerequest">   
  <object name="gcti" classid="method://com.blueworx.vr.cti.gcti.NativeAppSupport/invokeGCTI"
          type="javacode-ext">     
    <param name="setGCTIActionToInvoke" value="RouteRequest"/>     
    <param name="setGCTIUData" value="First=John;Last=Smith;Service=Gas"/>
    <param name="setGCTIUDataSeparatorCharaCharacter" value="';'"/>
    <param name="setGCTIRouteDN" value="3000"/>
    <param name="setGCTIRouteCED" value="1234567890"/>
    <filled>       
      <log>Number is: <value expr="gcti.routeNumber"/></log>
    </filled>   
  </object>   
  <block>     
    <log>Completion code is: <value expr="gcti.completionCode"/></log>   
  </block>
</form>