Voicexml TR
Voicexml TR
Voicexml TR
2019 R2
Generated:
10-June-2019
Abstract
This document is a technical reference for the PureConnect VoiceXML
system. VoiceXML, the Voice Extensible Markup Language, is an XML-
based language used to create audio dialogs.
For the latest version of this document, see the PureConnect
Documentation Library at: http://help.genesys.com/cic.
1
Table of Contents
Table of Contents 2
Introduction 4
Other VoiceXML Documentation 5
PureConnect Installation and Configuration Guide 5
VoiceXML Installation and Configuration Guide 5
CIC VoiceXML Integration with Nuance Dialog Modules Version 5.2 5
CIC VoiceXML Integration with Nuance Dialog Modules Version 6.1 5
Customer Interaction Center Architecture 6
VoiceXML Architecture 7
1xN Architecture 8
Switchover Environment 8
Handlers and VoiceXML Tools 10
VoiceXML Initiate 10
VoiceXML Async Initiate 12
VoiceXML Initiate Document 12
VoiceXML Async Initiate Document 14
Logging/Tracing 14
Tracing 14
System Event Log 15
VoiceXML Host Server 16
Load Balancing 16
Logging/Tracing 16
ININ Tracing 16
System Event Log 16
Notifier Messages 16
Serviced Notifier Messages 17
Utilized Notifier Messages 17
Determining Connected VoiceXML Interpreter Servers 17
License Management 17
VoiceXML Interpreter Server 18
Configuration 18
The Windows Registry 18
The Configuration File 19
Optional Parameters 19
The I3runvxml.cfg file 20
The I3defaults.xml file 20
Logging/Tracing 20
ININ Tracing 20
BladewareVXML Tracing 20
System Event Log 21
Notifier Messages 21
Serviced Notifier Messages 21
Utilized Notifier Messages 22
VoiceXML Interpreter Server Web Configuration Interface 22
Accessing the Web Configuration Interface 22
About 22
Server Status 23
Checking Active Document Sessions 23
Configuring the VoiceXML Interpreter Server 24
Servers 24
Connecting a VoiceXML Interpreter Server to a CIC server 24
Taking a VoiceXML Interpreter Server Offline 25
Bringing a VoiceXML Interpreter Server Online 25
Parameters 25
Administration 26
Managing a VoiceXML Interpreter Server 27
Stopping VoiceXML Interpreter Server 27
Starting VoiceXML Interpreter Server 28
VoiceXML Data Security 29
VoiceXML Interpreter Logging 29
Prompt-related Traces 29
2
Special Cases 29
Recognition-related Traces 29
Result-related Traces 30
Special Cases 30
BladewareVXML Diagnostic Traces 30
<log> Element Traces 30
VoiceXML Interpreter's Use of Secure Sessions 30
VoiceXML Host Server Logging 30
IP Logging 31
Enable Secure Input in Interaction Administrator 31
Using the com.inin.securedata property 32
Usage Considerations 32
Example 32
The VoiceXML Example Pack 36
Prerequisites 36
Obtaining the Example Pack 36
Running a VoiceXML Script 36
Creating a Handler 37
Modifying the Custom Subroutine Handler 37
Testing the Handler 39
Setting up Interaction Attendant 39
Experimenting with Other Scripts 40
General VoiceXML Considerations 41
Session Variables 41
ININ Specific Errors 42
<log> Messages 42
Passing data between VoiceXML and Handlers 42
Input Parameters 43
Output Parameters 44
Using VoiceXML without ASR 45
File-based Grammar Types 46
Change Log 47
3
Introduction
The purpose of this document is to serve as a technical reference for the Genesys PureConnect VoiceXML system.
The Genesys VoiceXML Interpreter uses Commetrex’s BladewareVXML library which is written to the VoiceXML 2.1 specification
published by the World Wide Web Consortium (W3C).
The latest VoiceXML 2.0 specification (dated 16 March 2004 as of this writing) can be found here:
http://www.w3.org/TR/voicexml20/
The latest VoiceXML 2.1 specification (an addendum to the VoiceXML 2.0 specification, dated 19 June 2007 as of this writing) can
be found here:
http://www.w3.org/TR/voicexml21/
4
Other VoiceXML Documentation
The following documentation provides more information on Interactive Intelligence’s VoiceXML system.
5
Customer Interaction Center Architecture
The CIC system is a collection of processes that communicate with one another through the Notifier process. Processes connect
to the Notifier to either make requests, to service requests, or both.
The Interaction Processor (IP) process allows users to access many of CIC’s capabilities by constructing handlers (using a set of
handler tools) that communicate with the Notifier. These handlers in turn provide access to CIC’s VoiceXML facilities.
6
VoiceXML Architecture
CIC's VoiceXML architecture consists of two main components: A VoiceXML Host Server and a VoiceXML Interpreter Server.
VoiceXML Description
Component
Handler Tools The VoiceXML Handler Tools are the means to direct a call to use the VoiceXML Interpreter.
Host Server The VoiceXML Host Server manages all of the VoiceXML sessions, in addition to the resources that the
VoiceXML Interpreters need while interacting with CIC.
Interpreter The VoiceXML Interpreter Server interprets the VoiceXML document and uses CIC’s capabilities to perform the
Server actions described in that VoiceXML document.The Interpreter can access grammar files, prompt files, and
VoiceXML script files from local disc, network disc, or web server. The Interpreter works with the Telephony
Services (TS) subsystem to provide telephony capabilities, and with the Voice Recognition (Reco) subsystem to
provide voice recognition capabilities.
These components are described in more detail in later sections.
7
1xN Architecture
Each VoiceXML Interpreter Server can only be connected to one CIC server at a time, but more than one VoiceXML Interpreter
Server can be associated with any given CIC server. As more traffic is routed through the VoiceXML Interpreters, more VoiceXML
Interpreters can be brought online and used. Bringing more Interpreters online does not automatically increase the number of
VoiceXML licenses in use. In fact, the number of licenses in use is independent of the number of VoiceXML Interpreters in use.
Instead, bringing more interpreters online just brings more processing power to bear in servicing VoiceXML document requests.
8
Switchover Environment
Because a VoiceXML Interpreter can be set up to communicate with a maximum of only one CIC server at a time, using VoiceXML
in a switchover environment requires special configuration. Each VoiceXML system must be duplicated for each CIC server in a
switchover pair. If the user VoiceXML traffic merits having two VoiceXML Interpreters connected to the primary CIC Server, then
two VoiceXML Interpreters must be configured to work with the backup CIC server.
9
Handlers and VoiceXML Tools
Handlers process incoming calls and decide whether a call goes through a VoiceXML application. If a handler decides an incoming
call must go through a VoiceXML application, it initiates a tool that transfers the call to the VoiceXML subsystem. At this point, a
VoiceXML session is then activated and the session activation tool specifies the URL of the VoiceXML document and which dialog
to start. The VoiceXML Interpreter then attempts to load and parse the document, and if it is successful, the Interpreter takes
ownership of the call.
A handler activates a VoiceXML session using one of the four tools available from the Interaction Designer Tools palette. This
palette is on the VoiceXML page. The four VoiceXML tools are
VoiceXML Initiate
VoiceXML Async Initiate
VoiceXML Initiate Document
VoiceXML Async Initiate Document
Each of these tools is described in detail in the following sections.
10
VoiceXML Initiate
The VoiceXML Initiate tool sends a request to the VoiceXML subsystem to start a session with the specified interaction and the
initial VoiceXML document URL is given as an argument. This tool issues a synchronous Notifier request
(eVoiceXMLRequest_InterpretURL), and then waits for a response from the VoiceXML subsystem.
The VoiceXML Initiate tool can use the parameters shown in the following table:
Force Interaction IN Check Check box for the VoiceXML interpreter to force the interaction ownership.
Ownership box
Unselected: Default. The VoiceXML interpreter only acquires ownership if the handler
currently owns the interaction.
Selected: The VoiceXML interpreter always acquires the interaction ownership.
Return Value OUT String Result of the ‘expr’ expression of the <exit> element. Empty string if no return value.
Result Data OUT XMLNode Element of the result data of the session. (“namelist” argument of the <exit> element)
NULL node if no result data.
Event Name OUT String VoiceXML event that caused the interpreter to exit, or reason for session initiation
failure.
Empty string if the session exited through <exit> element.
Event Message OUT String Additional message text associated with the VoiceXML event (‘_message’ property).
The VoiceXML Initiate tool can take the exit paths shown in the following table:
Exit Description
Success VoiceXML session completed successfully and the return value and/or result data (XML node) are valid.
11
VoiceXML Async Initiate
The VoiceXML Async Initiate tool sends a request to the VoiceXML subsystem to start a session with the specified interaction, and
the initial VoiceXML document URL is given as an argument. This tool issues an asynchronous Notifier request
(eVoiceXMLRequest_InterpretURL), and does not wait for a response from the VoiceXML subsystem.
The VoiceXML Async Initiate tool can use the parameters shown in the following table:
Argument Values IN StringList Optional. List of argument values corresponding to the arguments named in the
‘Argument Names’ parameter
These arguments are available in VoiceXML through ‘session.name’ or ‘name’.
Force Interaction IN Check Check box for the VoiceXML interpreter to force the interaction ownership.
Ownership box
Unselected: Default. The VoiceXML interpreter only acquires ownership if the handler
currently owns the interaction.
Selected: The VoiceXML interpreter always acquires the interaction ownership.
Event Name OUT String VoiceXML event that caused the interpreter to exit, or reason for session initiation
failure.
Event Message OUT String Additional message text associated with the VoiceXML event (‘_message’ property).
The Async Initiate tool can take the exit paths shown in the following table:
Exit Description
Success VoiceXML session completed successfully and the return value and/or result data (XML node) are valid.
Disconnected Interaction has already been disconnected before the session started.
Lost Ownership The VoiceXML interpreter could not obtain ownership of the interaction as another entity has already taken it
away.
Invalid VoiceXML interpreter does not support the interaction type.
Interaction
Failure An error occurred.If the initial document fails to load, an ‘error.badfetch’ event with potentially more
decorations, such as ‘error.badfetch.http.404’, is returned.
The ‘Event Message’ parameter usually contains more information about what went wrong.
12
VoiceXML Initiate Document
This tool sends a request to the VoiceXML subsystem to start a session with the specified interaction, and the initial VoiceXML
document is given as an argument. This tool is most useful to interpret dynamically generated VoiceXML documents or documents
read from a database. This tool issues a synchronous Notifier request (eVoiceXMLRequest_InterpretDocument), and then waits for
a response from the VoiceXML subsystem.
The VoiceXML Initiate Document tool can use the parameters shown in the following table:
Force Interaction IN Check Check box for the VoiceXML interpreter to force the interaction ownership.
Ownership box
Unselected: Default. The VoiceXML interpreter only acquires ownership if the handler
currently owns the interaction.
Selected: The VoiceXML interpreter always acquires the interaction ownership.
Return Value OUT String Result of the ‘expr’ expression of the <exit> element. Empty string if no return value.
Result Data OUT XMLNode Element of the result data of the session.(“namelist” argument of the <exit> element).
NULL node if no result data.
Event Name OUT String VoiceXML event that caused the interpreter to exit or reason for session initiation
failure.
Event Message OUT String Additional message text associated with the VoiceXML event (‘_message’ property).
The Initiate Document tool can take the exit paths shown in the following table:
Exit Description
Success VoiceXML session completed successfully and the return value and/or result data (XML node) are valid.
Disconnected The interaction disconnected during the session.
Transferred The interaction was transferred to another destination during the session through the <transfer> element.
Lost Ownership Some other entity has taken the ownership of the interaction away during the VoiceXML session.
Invalid VoiceXML interpreter does not support the interaction type.
Interaction
Unhandled Event This exit is taken if the session quit because some event other than “error” is thrown during the session and
not handled by the VoiceXML application. The ‘Event Name’ output parameter contains the name of the event
and ‘Event Message’ may contain more information.
Failure An error occurred.That usually means an “error” event was thrown but not caught in the VoiceXML
document.The name of the event is returned in ‘Event Name’.If the initial document fails to load, an
error.badfetch event with potentially more decorations, such as error.badfetch.http.404, is returned.
The ‘Event Message’ parameter usually contains more information about what went wrong.
13
VoiceXML Async Initiate Document
The VoiceXML Async Initiate Document tool sends a request to the VoiceXML subsystem to start a session with the specified
interaction and the initial VoiceXML document is given as an argument. This tool is most useful to interpret dynamically generated
VoiceXML documents or documents read from a database. This tool issues an asynchronous Notifier request
(eVoiceXMLRequest_InterpretDocument) and does wait for a response from the VoiceXML subsystem.
The VoiceXML Async Initiate Document tool can use the parameters shown in the following table:
Exit Description
Success VoiceXML session completed successfully and the return value and/or result data (XML node) are valid.
Disconnected Interaction has already been disconnected before the session started.
Lost Ownership Some other entity has taken the ownership of the interaction away during the VoiceXML session.
Invalid VoiceXML interpreter does not support the interaction type.
Interaction
Failure An error occurred. If the initial document fails to load, an ‘error.badfetch’ event with potentially more
decorations, such as‘error.badfetch.http.404’, is returned.
The ‘Event Message’ parameter usually contains more information about what went wrong.
Logging/Tracing
The VoiceXML Handler Tools generate log and trace messages to help you to track down and troubleshoot issues.
Tracing
The VoiceXML Handler Tools generate diagnostic trace messages in the ip.ininlog file located in the PureConnect logging
directory of the CIC server. These messages all have a topic of I3_VoiceXmlTools.
14
System Event Log
The VoiceXML Handler Tools can generate the following messages in the Windows System Event log on the CIC server system:
Message Category
MSG_VXML_TOOLS_STD_EXCEPTION (43500) VoiceXML Tools (IC 3.0 99 / IC 4.0 -100)
15
VoiceXML Host Server
The VoiceXML Host Server (VXMLHostSvr) is a server process that initially receives all VoiceXML interpret document requests and
forwards the requests to a VoiceXML Interpreter Server for processing. The VoiceXML Interpreter Server makes requests back to
the VoiceXML Host Server to upload resources, such as prompts and grammars, to the CIC server.
The VoiceXML Host server resides on the CIC server and performs the following tasks:
Accepts a logon from a VoiceXML Host Server and creates an Interpreter session
Stops an Interpreter session
Reserves a file name for use by the requesting VoiceXML Host Server
Uploads files from the requesting VoiceXML Host Server to the VXML Host Server's cache
Downloads files from the VXML Host Server's cache to the requesting VoiceXML Host Server
Releases files from the VXML Host Server's cache
Passes all VoiceXML interpret document requests to a VoiceXML Interpreter Server determined by a load balancing algorithm
Load Balancing
The VoiceXML Host Server uses a simple form of load balancing to determine which VoiceXML Interpreter Server to use for a
specified request to interpret a document. When a request is received, the VoiceXML Host Server looks through all of the
interpreters currently accepting requests and determines how many requests each is processing. The VoiceXML Host Server then
selects the interpreter which is processing the fewest number of requests to process the document. The selection does not
account for how complicated any particular request is or for how much CPU load the interpreter is using.
Logging/Tracing
The VoiceXML Host Server generates log and trace messages to help you to track down and troubleshoot issues.
ININ Tracing
The VoiceXML Host Server generates diagnostic trace messages in the “voicexml host server.ininlog” file located in the ININ
logging directory of the CIC server.
Message Category
MSG_VXML_HOST_STARTED_INFO (43600) VoiceXML Host Server (IC 3.0 100 / IC 4.0 -101)
MSG_VXML_HOST_START_ERROR (43601) VoiceXML Host Server (IC 3.0 100 / IC 4.0 -101)
MSG_VXML_HOST_STOPPED_INFO (43602) VoiceXML Host Server (IC 3.0 100 / IC 4.0 -101)
MSG_VXML_HOST_STD_EXCEPTION (43610) VoiceXML Host Server (IC 3.0 100 / IC 4.0 -101)
MSG_VXML_HOST_MFC_EXCEPTION (43611) VoiceXML Host Server (IC 3.0 100 / IC 4.0 -101)
MSG_VXML_HOST_UNKNOWN_EXCEPTION (43612) VoiceXML Host Server (IC 3.0 100 / IC 4.0 -101)
MSG_VXML_HOST_NOTIFIER_ERROR (43613) VoiceXML Host Server (IC 3.0 100 / IC 4.0 -101)
Notifier Messages
The VoiceXML Host Server interacts with the Notifier process of a CIC system where it both services a number of Notifier
messages and uses a number of Notifier messages.
16
Serviced Notifier Messages
The VoiceXML Host Server services the Notifier messages described in the following table:
License Management
In addition to these other tasks, the VoiceXML Host Server process manages the usage of VoiceXML licenses. Each running
VoiceXML session uses one VoiceXML license, no matter which VoiceXML interpreter is selected to process that session.
17
VoiceXML Interpreter Server
The VoiceXML Interpreter Server interprets VoiceXML documents. This server:
Accepts requests to start a session
Interprets the VoiceXML document
Starts requests to play user prompts and accept user input
Closes the session
Configuration
The VoiceXML Interpreter Server gets its configuration parameters from a number of different sources.
Value Description
WebConfigLoginName The login name to use when entering the web configuration pages. The login name is not encrypted
by the install, but it is encrypted if modified via the web configuration pages.
WebConfigLoginPassword The login password to use when entering the web configuration pages. The login password is not
encrypted by the install, but it is encrypted if modified via the web configuration pages.
WebConfigServerPort The port used when entering the web configuration pages.
18
The Configuration File
The configuration file (specified in the ConfigFile registry value) contains a number of configuration parameters, shown in the table
below. While you can adjust the parameters by editing the file, we recommended that you use the VoiceXML Interpreter Server Web
Configuration Interface to change these parameters.
Parameter Description
cacheCleanupInterval The number of seconds the Interpreter Server waits before deleting a locally cached VXML resource.The
minimum that can be specified is 15 seconds and the maximum is 120 seconds. The default value (30
seconds) can remain unchanged.
cachepath The directory used to store cached VXML resources. The default value can remain unchanged.
recMaxTimeSecs The maximum time of a recording in seconds. This default value can remain unchanged.
recoValueSlotName The element name to use for the value slot in returned NLSML recognition results. If none is specified,
the default name is “value.”
ttsMRCP Setting this parameter to true tells the VoiceXML Interpreter that the TTS engine supports the MRCP
protocol. If the TTS engine does not support MRCP, set this parameter to false. The default setting is
false.
ttsSSML By default, this parameter is set to true since the default SAPI engine can support SSML and the MRCP
servers must support SSML. When set to true, this parameter tells the VoiceXML Interpreter that the TTS
engine supports SSML text handling. If the TTS engine does not support SSML, set this parameter to
false.
vxiConfigFile Path to the VoiceXML library configuration file. The default value can remain unchanged.
Optional Parameters
There are four optional parameters, shown in the table below, that are not included in the default configuration file, but you can add
them if you discover that they are necessary.
Parameters Description
defaultGrammarMimeType This parameter can be used to specify the default grammar type to use if no type is specified
for a grammar.
ignoreGrammarFileMimeType Setting this parameter to true tells the VoiceXML Interpreter to ignore a grammar file’s
MimeType when determining a grammar file’s grammar type. If this parameter is set to false,
then the grammar file’s MimeType is used as the grammar type.
keepRecoSession When a VoiceXML session ends, VoiceXML calls RecoRelease. This means the ASR session is
immediately closed and any additional ASR will require a new session.The assumption is that
no further ASR will occur when the VoiceXML session ends, but that's not necessarily true if
handlers will perform additional ASR work, or another VoiceXML session is created for
additional processing.
Setting this parameter to true tells the VoiceXML Interpreter to keep the Recognition session
alive when a VoiceXML session ends. The Reco session will have to be released outside of the
VoiceXML Interpreter.
grammarCaching Setting this parameter to true instructs the VoiceXML interpreter to cache grammar files.
Setting the parameter to false instructs the VoiceXML interpreter to NOT cache grammar files.
If this parameter is not set, the default is true.
To add any of the optional parameters to the VoiceXML Interpreter Server, you must do so by editing the configuration file. Once
you add an optional parameter to the configuration file and restart the VoiceXML Interpreter Server, the optional parameter will be
accessible from the VoiceXML Interpreter Server Web Configuration Interface. If you must adjust an optional parameter at a later
time, we recommend that you use the VoiceXML Interpreter Server Web Configuration Interface to do so.
19
The I3runvxml.cfg file
The I3runvxml.cfg file is a configuration file for the BladewareVXML library used by the Genesys PureConnect VoiceXML Interpreter.
We recommend leaving the settings in this file in their default state.
Some of the settings in this file include:
Cache settings
ECMAScript settings
BladewareVXML logging settings
The location of the VoiceXML defaults XML
Logging/Tracing
The VoiceXML Interpreter Server generates log and trace messages to help you to track down and troubleshoot issues.
ININ Tracing
The VoiceXML Interpreter Server generates diagnostic trace messages in the “voicexmlserver.ininlog” file located in the ININ
logging directory of the VoiceXML Server.
BladewareVXML Tracing
The BladewareVXML library has various status messages that it can output. These messages are routed into the ININ trace log
under the “VXILogTopic” topic. Here are the trace levels and the types of output associated with each trace level:
20
System Event Log
The VoiceXML Interpreter Server can generate the following messages in the Windows System Event log:
Message Category
MSG_VXML_HOST_STARTED_INFO (43600) VoiceXML Host Server (IC 3.0 101 / IC 4.0 -102)
MSG_VXML_INTERP_STARTED_INFO (43700) VoiceXML Host Server (IC 3.0 101 / IC 4.0 -102)
MSG_VXML_INTERP_START_ERROR (43701) VoiceXML Host Server (IC 3.0 101 / IC 4.0 -102)
MSG_VXML_INTERP_STOPPED_INFO (43702) VoiceXML Host Server (IC 3.0 101 / IC 4.0 -102)
MSG_VXML_INTERP_STD_EXCEPTION (43710) VoiceXML Host Server (IC 3.0 101 / IC 4.0 -102)
MSG_VXML_INTERP_UNKNOWN_EXCEPTION (43711) VoiceXML Host Server (IC 3.0 101 / IC 4.0 -102)
MSG_VXML_INTERP_NOTIFIER_ERROR (43712) VoiceXML Host Server (IC 3.0 101 / IC 4.0 -102)
MSG_VXML_INTERP_PROCESS_DOCUMENT_ERROR (43720) VoiceXML Host Server (IC 3.0 101 / IC 4.0 -102)
MSG_VXML_INTERP_PROCESS_DOCUMENT_URL_ERROR (43721) VoiceXML Host Server (IC 3.0 101 / IC 4.0 -102)
MSG_VXML_INTERP_PARSE_DOCUMENT_ERROR (43722) VoiceXML Host Server (IC 3.0 101 / IC 4.0 -102)
Notifier Messages
The VoiceXML Interpreter Server interacts with the Notifier process of a CIC system and both services a number of Notifier
messages and uses a number of Notifier messages.
21
Utilized Notifier Messages
The VoiceXML Interpreter Server uses the Notifier messages listed in this section.
About
On the About tab you'll find the name of the VoiceXML Interpreter Server, the file version, and the IP address of the system you are
using to access the Web Configuration interface.
22
Server Status
The Server Status tab lists all the VoiceXML sessions that are currently running.
At any time, you can manually update the information on this screen by clicking Refresh. If you prefer, you can select the Auto-
refresh every 10s check box and the information on this page will reload every 10 seconds.
Created The date and time that the document became active.
Servers
On the Servers tab you'll see the CIC server to which the VoiceXML Interpreter Server is connected and can determine whether the
VoiceXML Interpreter Server is accepting VoiceXML sessions from that CIC server.
Clicking the Server button will allow you to connect a VoiceXML Interpreter Server to an CIC server as well as bring a VoiceXML
Interpreter Server online or take it offline by changing the Accept Sessions setting.
24
The Configuration of Server page contains the following fields:
Field Description
Notifier Host Enter the name of a CIC server.
Notifier User Enter the user name of the Customer Interaction Center user account that the VoiceXML Interpreter Server will
ID use to log on to the CIC server.
Notifier Enter the password for the user name specified above.
Password
Accept This field is set to Yes by default. The Yes setting configures the VoiceXML Interpreter Server to accept
Sessions document sessions.
When you finish configuring the server, click Apply Changes.
Note: A VoiceXML Interpreter Server can only be associated with one CIC server at a time.
Parameters
To configure the VoiceXML Interpreter Server Parameters, select the Parameters tab. Once you make changes to the parameters,
click Apply Changes.
25
The Parameters tab contains the following fields:
Parameter Description
cacheCleanupInterval The number of seconds the Interpreter Server waits before deleting a locally cached VXML resource.The
minimum that can be specified is 15 seconds and the maximum is 120 seconds. The default value (30
seconds) can remain unchanged.
cachepath The directory used to store cached VXML resources. The default value can remain unchanged.
recMaxTimeSecs The maximum time of a recording in seconds. This default value can remain unchanged.
recoValueSlotName The element name to use for the value slot in returned NLSML recognition results. If none is specified, the
default name is “value.”
ttsMRCP Setting this parameter to true tells the VoiceXML Interpreter that the TTS engine supports the MRCP
protocol. If the TTS engine does not support MRCP, set this parameter to false. The default setting is
false.
ttsSSML Setting this parameter to true tells the VoiceXML Interpreter that the TTS engine supports SSML text
handling. If the TTS engine does not support SSML, set this parameter to false. The default setting is
false.
vxiConfigFile Path to the VoiceXML library configuration file. The default value can remain unchanged.
If you add any of the available Optional Parameters to the configuration file and restart the VoiceXML Interpreter Server, those
optional parameters will be accessible and can be changed from the VoiceXML Interpreter Server Web Configuration Interface.
Note: These are the same parameters that exist in The Configuration File .
Administration
You can use the controls on the Administration tab to change your login credentials and control external access.
To change your login credentials, you must first enter your old user name and password. Then, enter a new username and new
password twice. To complete the operation, click Apply.
To change how you access the Web Configuration Interface, you'll use the control in the HTTP/HTTPS Server panel.
If you want to be able to access Web Configuration Interface from a web browser running on any workstation on your network,
make sure that the setting status shows
26
External access is currently enabled.
If you only want to be able to access the Web Configuration Interface from a web browser running on the VoiceXML Interpreter
Server, make sure that the setting status shows
External access is currently disabled.
The label of the button in the HTTP/HTTPS Server panel will toggle between Enable and Disable depending upon the status of
the setting.
Note: If you stop the VoiceXML Interpreter Server service before taking the server offline and documents are still being
processed, the interpreter waits for a maximum of 5 minutes for the processing to finish. At the end of the 5 minutes, any
running document sessions are forcibly closed, which could cause problems.
27
Starting VoiceXML Interpreter Server
To start the VoiceXML Interpreter Server in the Services tool, select the ININ VoiceXML Server service in the list of services and
click the Start Service icon on the toolbar.
28
VoiceXML Data Security
By default, VoiceXML 2.0/2.1 specifcation doesn't provide a methodology for differentiating between normal and sensitive data. To
add data security to Genesys PureConnect's implementation of VoiceXML, we have created a custom property named
com.inin.securedata. This new property will allow you to implement secure sessions for both recorded and logged data.
If the property is set to true, the VoiceXML interpreter will assume that it is handling sensitive data, and so recognition handling
and trace logging will be protected by obfuscating the data.
If the property is set to false (or any other value but True), then the VoiceXML interpreter will assume that it is handling normal
data.
Note: Keep in mind that for recordings to be properly secure during the input of sensitive data, you must Enable Secure Input in
Interaction Administrator.
Prompt-related Traces
Confirmation prompts can contain sensitive data, so the majority of the traces containing prompt text are protected. The following
methods contain such trace messages:
VXIPromptImpl::Queue()
PromptResource::queueToSystemLocalCache()
SessionResourceCache::queuePromptToSession()
GlobalResourceCache::getResource()
GlobalResourceCache::handleResFromRemote()
GlobalResourceCache::readResource()
GlobalResourceCache::uploadResToxIC()
GlobalResourceCache::cleanUpResources()
Special Cases
cleanUpResources()
This method can trace out prompt file names from the cache, but they are not tied to a particular VoiceXML session. Furthermore,
this method does not have access to the com.inin.securedata property, but it is not practical to completely remove these traces. As
such, these log messages are only traced when the trace level is set to Verbose or higher.
Recognition-related Traces
Speech recognition results can contain sensitive data, so traces containing the results from recognition requests are protected.
The following methods contain such trace messages:
VXIRecognitionImpl::RecognizeMain()
VXILogImpl::ContentWrite()
29
Result-related Traces
Information provided as VoiceXML document results can contain sensitive data, so traces containing such information are
protected. The following method contains such trace messages:
VXISession::translateDocResultToResults()
Special Cases
VXISession::ProcessDocument( url )
VXISession::ProcessDocument( document )
These two methods are only going to trace sensitive data if the handler passes the sensitive data into the document in the input
name/value pairs.These traces are done before the VoiceXML document is actually entered, so we can't use the
com.inin.securedata property to determine how to treat this data. As such, we will trace the incoming variables at the Verbose trace
level and allow the logging trace level determine what gets logged.
31
Using the com.inin.securedata property
To use the com.inin.securedata property, you will set the value to true or false using the following syntax:
<property name="com.inin.securedata" value="true"/>
If the property is set to true, the VoiceXML interpreter will assume that it is handling sensitive data, and so recognition handling
and trace logging will be protected by obfuscating the data.
If the property is set to false (or any other value but true), then the VoiceXML interpreter will assume that it is handling normal
data.
The com.inin.securedata property adheres to the same rules set out for all VoiceXML properties as outlined in Section 6.3 Property
Element in the VoiceXML 2.0 Specification. (http://www.w3.org/TR/voicexml20/#dml6.3)
Properties may be defined for the whole application, for the whole document at the <vxml> level, for a particular dialog at the
<form> or <menu> level, or for a particular form item. Properties apply to their parent element and all the descendants of the
parent. A property at a lower level overrides a property at a higher level. When different values for a property are specified at the
same level, the last one in document order applies. Properties specified in the application root document provide default values
for properties in every document in the application; properties specified in an individual document override property values
specified in the application root document.
Usage Considerations
When using the com.inin.securedata property, there are several subtleties that you will need to be aware of:
Any <prompt> contents that are queued in com.inin.securedata as true are not necessarily output right away. They can be
output at the next user input stage or at the end of the document. As such, if the value of com.inin.securedata changes to false
while the <prompt> contents are still in the queue and not yet output, then the contents of the prompt are not treated as
sensitive data.Trace logs should be secure, but if the call is being recorded by the CIC server, that recording won't treat the data
as sensitive.
If sensitive data is passed back to the calling handler from an <exit> element, it is important to make sure that
com.inin.securedata has a value of true when the <exit> is executed.Don't pass sensitive data in an <exit> element in a <form>
where com.inin.securedata has a value of false.
If sensitive information is handled in ECMAScript, it is important that this is done when com.inin.securedata has a value of true.
Remember that a <subdialog> runs in a separate context from the calling document and the value of the com.inin.securedata
property is not inherited from the calling document.The <subdialog> will either need to set the value of the com.inin.securedata
property itself, or inherit it from a value set in the I3defaults.xml document. This can be inconvenient for those applications that
use the Nuance NDM facilities, as they employ <subdialog> elements heavily.
Example
In order to help you effectively use the com.inin.securedata property in your VoiceXML documents, the following example script,
which performs a simple output/input test while treating some data as secure, illustrates how the property is used.
<?xml version="1.0" encoding="UTF-8"?>
<!--
File:WhichDrink_secure.vxml
Date:07/03/2014
Author:WEB
Desc:This document does a simple output/input test whilst treating some data as secure.
Basic Steps:
- Play a text prompt
- Define an inline grammar
- Get input
- Play back the choice
-->
<vxml xmlns="http://www.w3.org/2001/vxml"
32
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/vxml
http://www.w3.org/TR/voicexml20/vxml.xsd"
version="2.0">
<var name="answer1"/>
<var name="answer2"/>
<var name="answer3"/>
<form>
<property name="com.inin.securedata" value="true"/>
<!--
We want to treat the "number", "drink" and "delight" information as sensitive data.
-->
<field name="number">
<prompt>
<audio src="http://billbairdpc4:8080/my-files/Suzanna.wav">
Alternative text for Suzanna prompt.
</audio>
Punch a two digit number.
</prompt>
<grammar src="builtin:dtmf/digits?minlength=2;maxlength=2"/>
</field>
<field name="drink">
<prompt>Would you like coffee, tea, milk, or nothing?</prompt>
<grammar version="1.0" mode="voice" root="drinklist">
<rule id="drinklist" scope="public">
<one-of>
<item>coffee</item>
<item>tea</item>
<item>milk</item>
<item>nothing</item>
</one-of>
</rule>
</grammar>
</field>
<field name="delight">
<prompt>What kind of tasty delight would you like?</prompt>
<grammar version="1.0" mode="voice" root="delightlist">
<rule id="delightlist" scope="public">
<one-of>
<item>cookies</item>
<item>crumpets</item>
<item>biscuits</item>
<item>nothing</item>
</one-of>
33
</rule>
</grammar>
</field>
<filled>
<prompt>You chose <value expr="number"/>, <value expr="drink"/> and <value
expr="delight"/>.</prompt>
<assign name="answer1" expr="drink"/>
<assign name="answer2" expr="delight"/>
<goto next="#weather"/>
</filled>
</form>
<form id="weather">
<property name="com.inin.securedata" value="false"/>
<!--
The weather information obtained in this form is not sensitive data.
Note that the <prompt> queued above ("You chose xxx and yyy.") is not actually issued until the
recognition input generated by the <form> below, and so is not treated as sensitive data.
Trace logs should be secure, but if the call is being recorded by the CIC server, then it won't
be secure.
-->
<field name="temperature">
<prompt>Is the weather hot or cold?</prompt>
<grammar version="1.0" mode="voice" root="templist">
<rule id="templist" scope="public">
<one-of>
<item>hot</item>
<item>cold</item>
</one-of>
</rule>
</grammar>
</field>
<field name="state">
<property name="com.inin.securedata" value="true"/>
<prompt>In which state do you live?</prompt>
<grammar version="1.0" mode="voice" root="statelist">
<rule id="statelist" scope="public">
<one-of>
<item>Indiana</item>
<item>Ohio</item>
</one-of>
</rule>
</grammar>
</field>
<field name="number2">
<prompt>
Punch a three digit number.
34
</prompt>
<grammar src="builtin:dtmf/digits?minlength=3;maxlength=3"/>
</field>
<filled>
<prompt>The weather is <value expr="temperature"/>.</prompt>
<assign name="answer3" expr="temperature"/>
<prompt>You entered <value expr="number2"/>.</prompt>
<goto next="#the_end"/>
</filled>
</form>
<form id="the_end">
<property name="com.inin.securedata" value="true"/>
<block>
<!--
answer1 and answer2 contain sensitive data, and since we want to pass this
information back to the handler, we must make sure that we <exit> from a
secure form.
-->
<prompt>Your answers are <value expr="answer1"/>, <value expr="answer2"/> and <value
expr="answer3"/>.</prompt>
<log>I am logging sensitive data (Suzanna): (<value expr="answer1"/> and <value
expr="answer2"/>)</log>
<exit namelist="answer1 answer2 answer3"/>
</block>
</form>
</vxml>
35
The VoiceXML Example Pack
The VoiceXML Example Pack contains simple examples that illustrate different aspects of working with the IC VoiceXML
Interpreter. The ReadMe.doc file, included in the VoiceXML Example Pack, describes the example files provided in the
VoicexmlExampleFiles.zip file. The files included in the pack are illustrations of simple VoiceXML concepts and how to access
VoiceXML in the PureConnect environment.
This section describes the basic steps to run the VoiceXML scripts provided in the VoiceXML Example Pack. More detailed
information about VoiceXML handler tools, host servers, interpreter servers, and other considerations are available in this
document.
Prerequisites
The following are the prerequisites for running the VoiceXML scripts, available in the Example Pack:
The VoiceXML feature is installed and configured, as documented in the VoiceXML Installation and Configuration Guide
The user knows Interaction Designer and has permission to publish handlers
The user has permission to run Interaction Attendant
Access to the VoiceXML Example Pack zip file, VoicexmlExampleFiles.zip
36
Creating a Handler
To create a Handler, you'll use Interaction Designer, which accesses one of the previous tools and calls a VoiceXML script.
To begin:
1. Start Interaction Designer
2. From the File menu, select Open, and then navigate to the folder containing the Example Pack files
3. Select the file Thor.ihd and click Open.
Notice that this handler uses a Subroutine Initiator and calls the VoiceXML Initiate toolstep
4. Publish this handler by selecting the Activate Handler check box and choosing Custom as the Subroutine category
5. To verify that the Thor subroutine was successfully created, select the Subroutines tab at the bottom of the dialog, and choose the
Custom page, as shown below, then, look for Thor in the list.
37
1. From the File menu, click Open, and then navigate to the
CustomSubroutineInitiatorRouter.ihd file, which can be
found in the CIC install path in the \Handlers\40Handlers
folder, and click Open.
Note: Your CIC install path will be either \I3\IC or
\Program Files (x86)\Interactive Intelligence
2. In the Selection toolstep, add a StrEqlNoCase(“Thor6,”
p_sSubroutineName ) statement.
3. Add a Thor subroutine toolstep into the handler.
4. Connect the StrEqlNoCase statement with the Thor
subroutine that you just added.
5. On the Outputs page, select p_bTransferred from the
Transferred drop down.
38
Testing the Handler
To test the Thor Handler, make a call.
1. Dial into your main IVR (press * from your workstation)
2. At the main IVR prompt, press 6
3. The executing script plays, "Hello World"
39
Experimenting with Other Scripts
Now that you have created a Handler to run a VoiceXML script, you can start experimenting with other VoiceXML scripts available
from the Example Pack. Or you can use your own VoiceXML scripts. Here's how to run more scripts:
1. Start Interaction Designer
2. From the File menu, click Open and then navigate to the CustomSubroutineInitiatorRouter.ihd file and click Open.
3. Edit the Thor toolstep as follows:
On the Inputs page, set Document URI to “file://c:/VoiceXMLDocs/XXX.vxml" (the exact path depends on where files in the
Example Pack have been extracted)
4. Publish the Handler
40
General VoiceXML Considerations
In this section, you'll find general information that pertains to using VoiceXML.
Session Variables
The following table lists the session variables that are supported, and from where their data is obtained:
session.connection.protocol.version ''
41
ININ Specific Errors
In addition to the "standard" errors that are specified in the VoiceXML 2.1 standard, VoiceXML Interpreter can return a number of
ININ-specific errors.
ININ-specific errors include:
error.com.inin.lostownership
error.com.inin.processdoc
error.com.inin.initiation.session
error.com.inin.hostsvr.deserialize.vxiinterpretdocreq
error.com.inin.hostsvr.deserialize.vxiinterpreturlreq
error.com.inin.hostsvr.interpretermgr.nosessions
error.com.inin.hostsvr.interpretermgr.nullsession
error.com.inin.hostsvr.interpretermgr.sessionnotfound
error.com.inin.hostsvr.interpretermgr.loginfailed
error.com.inin.hostsvr.interpretermgr.deserialize.vxiacceptsessionsreq
error.com.inin.hostsvr.interpretermgr.deserialize.vxiloginreq
error.com.inin.hostsvr.interpretermgr.deserialize.vxilogoutreq
error.com.inin.hostsvr.interpreterssn.deserialize.vxiuploadfilereq
error.com.inin.hostsvr.interpreterssn.deserialize.vxidownloadfilereq
error.com.inin.hostsvr.interpreterssn.deserialize.vxiexchangestreamendpoints
error.com.inin.hostsvr.interpreterssn.deserialize.vxireservefilenamereq
error.com.inin.hostsvr.interpreterssn.deserialize.vxireleasefilereq
error.com.inin.hostsvr.interpreterssn.nolicense
error.com.inin.hostsvr.interpreterssn.interpreturl.vxiserver
error.com.inin.hostsvr.interpreterssn.upload.fileNotReserved
error.com.inin.hostsvr.interpreterssn.upload.streamopenfailure
error.com.inin.hostsvr.interpreterssn.upload.createfilefailure
error.com.inin.hostsvr.interpreterssn.upload.transferfailure
<log> Messages
The output from VoiceXML <log> tags is sent to the voicexmlserver.ininlog trace log file “voicexmlserver.ininlog” under the
“VXILogTopic.” Because BladewareVXML considers these <log> messages as “Diagnostic” messages, set the trace level to 90
(Verbose Notes) or higher to see these messages in the trace log file.
42
Input Parameters
The VoiceXML handler tools have two input parameters used to pass information into a VoiceXML script:
Parameter Description
Argument Values An optional string list of argument names.
Argument Names An optional string list of argument values.
Together the arguments are taken to form a set of name/value pairs that are available to the VoiceXML script as variables of the
form “session.name” or just “name.” So, if a handler loads the following strings into the Argument Names parameter:
“Person”
“Description”
and the following strings into the Argument Values parameter:
“Suzanna”
“a beautiful young lady”
before calling the VoiceXML Initiate tool, then the following two variables are available to the designated VoiceXML script:
session.Person(or just Person)
session.Description(or just Description)
Here is an example of a VoiceXML script using these variables:
<form>
<block>
Good morning, <value expr="Person"/>
is <value expr="Description"/>.
</block>
<block>
Good afternoon, <value expr="session.Person"/>
is <value expr="session.Description"/>.
</block>
</form>
The example handler Thor.ihd and the VoiceXML script file TestVars.vxml from the VoiceXML Example Pack illustrate this scenario.
43
Output Parameters
The VoiceXML handler tools have two output parameters that are used to receive information from a VoiceXML script:
Parameter Description
Return Value A string that is the result of the expr attribute of the <exit> element
Result Data An XMLNode created from the data specified in the namelist element of the <exist>
element.
So if the following VoiceXML script is running:
<form>
<field name="drink">
<prompt>Would you like coffee, tea, milk, or nothing?</prompt>
<grammar type="application/srgs+xml" src="drink.grxml"/>
</field>
<filled>
<prompt>You chose <value expr="drink"/>.</prompt>
<exit expr="drink"/>
</filled>
</form>
then when the <exit> element is executed, the information in the drink variable-for example, "tea"-would be returned in the Return
Value output parameter of the calling handler tool.
The VoiceXML script file WhichDrink2a.vxml (the Beverage Test) illustrates this concept.
If the following VoiceXML script is executed:
<filled>
<prompt>You have ordered <value expr="number"/> <value expr="size"/> pizzas with <value
expr="toppings"/>.
</prompt>
<exit namelist="number size toppings"/>
</filled>
then when the <exit> element is executed, the information in the number, size, and toppings variables is returned in XMLNode form.
For example:
<ResultData>
<toppings>pepperoni</toppings>
<number>3</number>
<size>large</size>
</ResultData>
in the Result Data output parameter of the calling handler tool.
The VoiceXML script file zoran_test.vxml (the Pizza Test) illustrates this concept.
44
Using VoiceXML without ASR
If you are not using an ASR server, you can configure the VoiceXML interpreter to only accept DTMF input by changing a couple of
input mode settings in Interaction Administrator and by altering the input mode setting in your VoiceXML scripts.
To set DTMF as the input mode in Interaction Administrator:
1. On the CIC server, open Interaction Administrator.
2. In the left pane of the Interaction Administrator window, select the System Configuration\Recognition container.
3. In the right pane, under the System Configuration column, double-click Configuration.
4. When you see the Recognition Configuration dialog box, select the General tab.
5. Select dtmf from both the Input Modes Mask and Default Input Modes drop downs.
Note: These settings affect all recognition, not just recognition related to VoiceXML.
To set DTMF as the input mode in VoiceXML scripts, set the inputmodes property to "dtmf":
<property name="inputmodes" value="dtmf"/>
<prompt>
For news press 1, For weather press 2, For sports press 3.
</prompt>
45
File-based Grammar Types
The grammar type that VoiceXML tells the Reco subsystem about for a file-based grammar is determined as follows:
1. If the type is specified in the <grammar> element in the VoiceXML script, then that type is used as the grammar type.
2. If ignoreGrammarFileMimeType is false or unspecified,
a. If the file has a MimeType associated with it, that MimeType is used as the grammar type
b. If the file does NOT have a MimeType associated with it, the configured defaultGrammarMimeType is used as the grammar
type.
3. If ignoreGrammarFileMimeType is true, the configured defaultGrammarMimeType is used as the grammar type.
Note: If the Reco subsystem is familiar with the type of Voice grammar (application/srgs and application/srgs+xml), it tries to
parse them. For types that it doesn’t know, the Reco subsystem sends the grammars on to the recognition engine for parsing.
For DTMF grammars, the Reco subsystem tries to parse the grammar, and if the type is one with which it is not familiar, it
objects.It never passes DTMF grammars on to the recognition engine.
46
Change Log
The following table summarizes the changes made to the VoiceXML Technical Reference.
Date Changes
13-August-2012 Document created-version 1.0
04-October-2012 Added descriptions of the default GrammarMimeType and ignore GrammarFileMimeType parameters
29-January-2013 Document Version: 1.0.1 released for CIC 4.0 SU3
19-July-2013 Merged Developer's TR with Overview TR, reformatted document design, updated cross-references, edited to
conform to MMOS
05-June-2014 Updated Copyright page.
Added information about the ability to disable external accessibility to the web configuration page of a
VoiceXML server.
01-August-2014 Updated documentation to reflect changes required in the transition from version 4.0 SU# to CIC 2015 R1, such
as updates to product version numbers, system requirements, installation procedures, references to
Interactive Intelligence Product Information site URLs, and copyright and trademark information.
10-February-2015 Updated Copyright page.
Reorganized the document layout.
Added a section containing information about adding Data Security to VoiceXML scripts via the
com.inin.securedata custom property.
12-June-2015 Added optional grammarCaching parameter to the VoiceXML server configuration file.
Updated cover page to reflect new color scheme and logo. Updated copyright and trademark information.
47