FAQ: Avaya Orchestration Designer

Latest Release: 8.1.2 (October 2022)

Frequently Asked Questions

This document contains Frequently Asked Questions about Avaya Orchestration Designer. Orchestration Designer combines next generation releases of what were previously known as Dialog Designer and the Service Creation Environment (SCE) for Avaya Aura Contact Center. The page is divided into sections that are grouped by topic. Individual questions are listed within each section. Click on a question to reveal its answer.

General

Yes. It will ensure that when Orchestration Designer files are edited and saved, the changes will automatically be generated in the Java code and automatically built by Eclipse.

In general, it implies that the application does not contain the document that the browser is trying to fetch (There might be other reasons). In the case of SAGE/Orchestration Designer applications, it usually indicates that the servlet could not be found. A bad fetch error is thrown often because the executable servlet files are not part of the web application (i.e. generated servlets have not been compiled).Ensure that the project is built before attempting to execute the call-flow. It is recommended to set the "Build Automatically" option.

See the questions above about the settings in the web.xml file for deploying to IR or Voice Portal, however rather than modifying the web.xml file via the export wizard pages, use the project properties to edit the settings.

Select Project/Properties/Avaya Orchestration Designer and select the Web Descriptor tab. Set the runtime-ASR and runtime-Platform correctly (see above). Select the Grammars tab and select the correct ASR value for the target platform.

Check that the license server has been configured as well: Window/Preferences/Orchestration Designer and set the host/IP address and the port of the WebLM server.

Finally on the IR/VP, configure the application URL to be http://< ipaddr>:< port>/< appname>/Start, where "ipaddr" is the IP address of the Orchestration Designer development machine, "port" is the Tomcat port (usually 8080), and "appname" is the name of the application.

NOTE: before you can go back and use the personal voice browser to simulate the application, you must set the grammar compatibility value back to SRGS when running the application in simulation mode.

Eclipse maintains a snapshot of all resources (files) in the workspace, so if the file is modified on the file system outside of Eclipse, then Eclipse will not be aware of the file state. When Eclipse attempts to access the resource, it detects that the file on the file system is modified from the version it has a snapshot of, so to prevent possible overwriting data, it fails with a "resource is out of sync" error. To correct this, select the resource (or project), and right click on it and select the Refresh menu item. This will get the Eclipse workspace in sync with the resource on the file system.

This error occurs if the project is not on the source path for Tomcat. Tomcat is the JVM running the application. To fix this, open the Window -> Preferences -> Tomcat -> Source Path and make sure that the current project is enabled.

This operation is supported only on an Avaya Interactive Response platform. TAS is not supported on Voice Portal. To invoke a TAS application from Orchestration Designer, use the VXML Object tag. Define an object tag and configure the object input/output parameters using the Object item on a call-flow node (Form). For additional information on invoking TAS scripts on Avaya Interactive Response using the VXML Object tag, refer to Avaya Interactive Response/TAS documentation. Click on the Orchestration Designer Help and follow the -> as shown below. (Help -> Application development -> Advanced application development -> Using VoiceXML -> Creating a VoiceXML application -> Using the VoiceXML <object> element interface).

Note: Simulation of the object tags and TAS scripts in Desktop mode (using AVB) is not supported.

This can be done as follows:

  1. Click on window -> preferences -> Orchestration Designer -> Proxy settings. Configure internet proxies if it is being used
  2. Click on Help -> Software updates -> Find and install.
  3. Select 'search for updates of currently installed features'. Click on Finish to download and install the latest version.

    If automatic update feature cannot be used to update to the latest version, then following steps can be followed to update manually:

    1. Using any web browser, go to http://devconnect.avaya.com .
    2. Create a username (by providing a valid email address) and password.
    3. Log in with the created username and password.
    4. Once logged in, click on 'Avaya Product Information/Documentation/SDKs' in the left hand pane.
    5. Under 'Premium Devconnect content', click on sorted by 'Avaya platform'.
    6. Under 'Avaya self services', click on 'Avaya Orchestration Designer'.
    7. Download the individual upgrade patches under 'Avaya Orchestration Designer software'. Version 3.0.16 is a major upgrade. If Version 3.0.2 of Orchestration Designer software is installed, then uninstall that version, install 3.0.16 and then proceed with installing the patches.

Yes. Select "Password" option in Window -> Preferences -> Orchestration Designer.

  1. Select Windows -> Preferences
  2. Select Orchestration Designer -> password

This issue can be resolved by re-generating the project.

  1. Right click on the Project in the Project Explorer Window.
  2. Select "Generate" from the drop-down list to generate the application.

Even after regenerating the project the error occurs, it means that they are orphaned Java classes (i.e. the node was probably removed from the flow) and are not being managed or generated by the call flow. Such orphaned files which are no longer need can be removed from the project.

No, currently there is no defined strategy for version control of Orchestration Designer speech projects.

The following can be referred as a guideline for version control:

The files under the WEB/INF/classes can be omitted; files under data/log and data/temp can be skipped. It is recommended to check in everything else present in the project folder.

If the user wishes to have a finer control over the resources then the general recommendations are as follows:

  1. Check in the Orchestration Designer metadata/project files (i.e. .flow, .prompt, .phrase, etc.)
  2. Check in project resources (typically in the data directory). Certain subdirectories from the data, particularly temp and log can be omitted.

A note about Java classes: The user can skip checking in many of the Orchestration Designer generated Java classes because their content usually will not change. But if custom code has been integrated in the Orchestration Designer generated classes then the user needs to check in those classes also.

Avaya recommends isolating custom code in stand-alone classes which are kept in a separate Java package other than the Orchestration Designer generated packages. This makes it easy to distinguish user-defined vs. generated code. The user will still need to add a little bit of code in the generated code to integrate with the custom code, but it will minimize the amount of code that the user needs to write in the Orchestration Designer generated classes.

At this point Avaya does not recommend any tools for automating testing on Orchestration Designer applications. There might be some tools that can help doing this but currently Avaya has not evaluated any.

Voice Portal does not support sending fax but Interactive Response does. To do this, from Orchestration Designer use an object tag to reference an IVR Designer based Transaction Assembly Script (TAS) application. This TAS application can use the FAX external functions palette to send a fax.

In DD, use a Report node to report/log application data values at runtime. This data is logged in the report.log file. For additional details about Report node, see Orchestration Designer Developers Guide available at Eclipse Help -> Help Contents -> Nodes and Palette Options -> Detailed Palette Option Descriptions -> Report Node.

There is no way to get DD application report data to CMS. All the report data and call data is stored on the Voice Portal Management System (VPMS).

In DD 3.x, if a node is referenced by a symbolic node, a blue dot appears in the upper right corner of that node. If the node does not have the blue dot icon, it is not referenced by any symbolic node.

No. DD uses the personal Avaya Voice Browser (AVB), which currently works only on the Microsoft platform.

To view the VXML text in the Eclipse console:

  • On the top-level menu, click on Window -> Preferences -> Orchestration Designer -> Avaya Voice Browser.
  • Select the Enable display of generated VXML check box.

The VXML text will be displayed in the Eclipse console window during simulation and will also be written to the file <project>/data/log/trace.log.

Note: In DD 4.0, the Avaya Voice Browser (AVB) has been renamed as Avaya Application Simulator.

To check this feature, type the command 'display system-parameters special-applications' in the CM SAT terminal. The SA8874 feature is enabled through licensing. Contact your Avaya representative to obtain an Avaya Communication Manager license with the SA8874 feature enabled.

This can be done by passing parameter names in the namelist attribute and parameter values in the parameters attribute of the < dialogprepar -> element in the CCXML document, as shown below.

To retrieve the parameters in a DD application, add a Capture Expression to the Root Document as shown in the screenshot below.

For more details regarding passing parameters between CCXML and the speech application, please refer to the "Auto Attendant" sample code available on the DevConnect portal (http://www.avaya.com/devconnect).

The variables can be passed from a DD speech application to a DD CCXML application using the Output parameter item. This item can be accessed in the Return node of a DD speech application. As shown in the screenshot below, the variables dialogResult and outputData are passed to the CCXML application.

Each of these variables can be retrieved in a CCXML application using event$.values.< variablenam -> in the < dialog.exi -> element of the CCXML document. For example, the variable dialogResult can be accessed using event$.values.dialogResult in the < dialog.exi -> element of CCXML document.

For more details regarding passing parameters between speech and CCXML application, please refer to the "Auto Attendant" sample code available on the DevConnect portal (http://www.avaya.com/devconnect).

To view Orchestration Designer palette, click on Window -> Show View -> Palette.

DD modules are Voice XML (VXML) sub-dialogs and according to the VXML specification, only strings can be passed to a sub-dialog. However, if a session is shared between the module and the main application, developers can use the SCESession.setProperty method to pass objects between a module and an application.

To accomplish this, create a data node just before the flow enters the module and set the object as outlined in the example code snippet shown below:

public void requestBegin(SCESession mySession)

{
mySession.setProperty("MyKey", new String("My Object"));
super.requestBegin(mySession);
}

The developer can then create another data node in the module and retrieve the object.

Orchestration Designer (DD) does not support RMI. However, a developer can have a Java servlet in the application call flow and manually write the desired RMI code there, as shown in the screenshot below.

Orchestration Designer nodes can be classified as:

  • VXML nodes
  • Backend nodes

VXML nodes are responsible for producing VXML code. Examples of VXML nodes are Prompt and Collect, Announcement, Transfer items, Record, Form, and Menu

Backend nodes execute on the application server and forward the request to the next node in the call flow. Examples of backend nodes are Data, Tracking, Subflow Invoke, Subflow Begin and Subflow Return.

At runtime, VXML interpreted by an Interactive Response or Voice Portal platform is generated from a VXML node in an application deployed on a web server. However, the Backend nodes are invisible to the platform; these nodes execute and forward request to the next node until a VXML node is encountered in the call flow.

Orchestration Designer creates a temp.folder file when it exports a project and deletes the file when the export process is complete. However, if either an error occurs during the export process or Orchestration Designer wizard shuts down in the middle of an export operation, the temp.folder file will be visible under the project folder.

No, tone masking is not supported in Orchestration Designer since VXML does not provide support for playing a tone while DTMF keys are being pressed.

Click the Record node. The maximum record time can be specified in the Max Length property field in the properties window as demonstrated in the screenshot below.

The "Event Type" editor on the Orchestration Designer palette is used to define events in Orchestration Designer. Double click on the "Event editor" icon to open it, as shown in the screenshot below.

Click and drag the "Event Type" icon and release it over the workspace. Open the "Properties" window and type in an event name as shown in the screenshot below.

Yes. The 'disconnect' node disconnects the caller from the system, effectively ending the call at that point, but maintains the application flow allowing the application to perform database operations. For example, a Orchestration Designer data node can be added after a disconnect node. This data node can contain a 'database' item which can commit transaction results to a database after the call has been disconnected.

Orchestration Designer runtime files are bundled in runtimesupport.zip, which can be obtained using any one of the following two methods:

  1. On the Export Wizard, when deploying an application, a checkbox is available to be selected to create the runtime support libraries. Selecting this checkbox will create the runtimesupport.zip file specific to the servlet container (Tomcat, WebSphere, BEA WebLogic etc.) in the output directory. For example, if Tomcat is selected then runtimesupport.zip needs to be unzipped to the <tomcat>/common directory. This step puts the required .JAR files in the lib directory and the log4j.properties file in the classes directory.
  2. Alternatively, this file can be obtained from <eclipse>/plugins/com.avaya.sce.core_<version>/runtimesupport.zip

The Orchestration Designer API document can be found at Eclipse Help -> Orchestration Designer Developer Guide -> Programmer Reference -> API Reference.

Click on the API Reference link in the left hand pane as shown below.

The hash symbol is the default terminating character for DTMF input. When this key is pressed, the system ends DTMF input recognition and returns the appropriate result. To change this character for any node, double-click on the node and drag the Property item from the Palette on the existing node. A list of properties would be displayed under the Properties tab. The terminating character can be changed from the DTMF section as per the requirements as shown in the screenshot on the following page. Valid values for this property are the numbers 0 through 9, the star (*) key, and the pound (#) key.

To modify the web.xml file via Orchestration Designer, right-click the Speech Application project and select Properties (not shown); Browse to Orchestration Designer -> Web Descriptor -> Servlets. Select the desired servlet and click on the Add button under the Parameters section to add init parameters for the servlet as shown in the screenshot below.

IVR Designer is the legacy Avaya tool for building Transaction Assembly Script (TAS) scripts that can be deployed on the Interactive Response (IR) platform. Orchestration Designer is an Avaya tool for designing VXML and CCXML applications that can be deployed on both IR and Voice Portal.

Note: TAS based applications are not supported on the Voice Portal Platform. Interactive Response platform does not support CCXML applications.

In the Orchestration Designer Navigator view, select an appropriate project for a recording script report. From the top level menu bar, select Project -> Reports -> Recording Script. For more information on Recording Script Report, refer to Orchestration Designer Help.

Orchestration Designer Application execution remains unaffected when tracing is disabled. When tracing is disabled, the application must not contain any Java code that invokes methods for tracing. For example, mySession.getTraceOutput().writeln(...)

In a Orchestration Designer application, the necessary custom .jar files should be added to the build path of the project. To add these files, right-click on a Orchestration Designer project in the Navigator view and select Properties. In the Properties dialog, click on the Java Build Path and select the Libraries tab and add the required .jar files.

The Orchestration Designer sample applications are located in the directory /Sample Applications/files/DD_<version>_SampleApplications on the Orchestration Designer product CD.

Inline generation of an Approot node in a Orchestration Designer application can be disabled by setting the vxmlrootinline property to disabled in the ddrt.properties file. The ddrt.properties file is located in the data directory of the application. (Locate the application folder (under the workspace directory) and look for /data/ddrt.properties file).

Note: By default, the value of the vxmlrootinline property is set to 'enabled'.

Note: In order to resolve this error, follow any one of the two procedures given below:

  1. Start Tomcat and from within a web browser, access Orchestration Designer Admin Console by providing the URL http://localhost:8080/runtimeconfig. The Login page is displayed. Enter the valid credentials on this page. The default credentials are 'ddadmin' for both the username and the password fields. This step will create the ddconfig.xml file in the D:\apache-tomcat-6.0.18\lib\ location (D:\apache-tomcat-6.0.18\lib\ddconfig.xml).
  2. Alternatively, restarting Eclipse will resolve this error.

Note:

  1. This error occurs when Orchestration Designer run time configuration files (runtimeconfig.war) are present in TOMCAT_HOME\webapps directory of tomcat.
  2. On restarting Eclipse, the ddconfig.xml file is created by the Orchestration Designer plug-in. This file is located in the D:\apache-tomcat-6.0.18\lib directory.

A Configurable Application Variable is defined by activating the Configurable Application Variables Pluggable Connector. Activate the Pluggable Connector as follows:

Right-click the project in the Navigator view and select Properties; on the Properties page, go to the Pluggable Connectors tab and check the checkbox for Voice Portal Configurable Application Variables.

On activating the Pluggable Connector, drag and drop the Configurable Variable into the editor area to create a Configurable Variable and use the Properties view (not shown) to complete the definition of the Configurable Variable.

Note: Configurable Application Variables are read-only.

To retrieve the parameters set in the request URL of the Orchestration Designer application, create the variables in the Orchestration Designer application with the variable names matching with each of the parameter name in the request URL. Orchestration Designer runtime framework will automatically populate the variables with the matching parameter values.

For example if the URL is http://AppServer:8080/App?var1=x&var2=y, parameters 'var1' and 'var2' can be retrieved by creating the variables with names 'var1' and 'var2' in the application.

There is no direct way to set the maximum number of rings for an outbound call in a CCXML application. However, while placing the outbound call using <createcall> CCXML element, the 'timeout' attribute can be manipulated to get the desired number of rings before a ring no answer is received.

<createcall dest="1234" connectionid="connid" timeout="18000" />

The timeout value of 18000 indicates that, if not answered the phone will ring for 18 seconds.

Note: For an outbound call, the switch (Communication Manager) or Voice Portal does not have control over the number of rings at the remote station.

Standalone VXML applications cannot be simulated using Orchestration Designer Voice Browser. However Orchestration Designer speech application can be created to wrap the standalone VXML application and simulate using Orchestration Designer Voice Browser.

To wrap the standalone VXML application in the Orchestration Designer speech application, follow the steps given below

  1. Import the standalone VXML application as a Orchestration Designer reusable module:
    • Open the Eclipse IDE.
    • From the File menu in Eclipse, select Import..., then select Avaya Speech Developmen -> Import Orchestration Designer Reusable Module.
    • Click the Next button and select 'Manually define module definition' on the Specify Import Details page
    • Click the Next button and specify details about the module on the "Set information about this module" page. The URL field on this page should point to the starting page of the standalone VXML application. For more details about the fields on the Set information about this module page, refer to the topic "Using the Reusable Module Import Wizard" in Avaya Orchestration Designer Developers Guide available at http://www.avaya.com/devconnect.

  2. Click the Finish button. This will deploy the standalone VXML application as a reusable module which will be available on the Orchestration Designer call flow editor palette as a module.
  3. Create a new Orchestration Designer speech project and add the module in a call flow.

Avaya does not license or support any custom VXML code running on Avaya Media Server.

AES Connector (previously CTI Connector)

This issue is specific only when using H.323 connection and is a known issue with early releases of Avaya Communication Manager (ACM). This issue does not exist in ACM 3.0.1 load 345 and later and release ACM 3.1. However, this issue is not observed in the T1 loop start configuration.

No. If the vector has control over the call, then it will ignore messages from the TServer.

The error message can be thrown by either a CTI or IC parser. This message does not affect the loading or simulation of the script, the error is generated as both CTI and IC parsers attempt to load the script that references the functionality for only one.

In order to eliminate the error message, add the following to the script:

  1. If using IC functionality:
    </connector>
    < connector name="CTI">
    </connector>
  2. If using only CTI functionality
    </connector>
    < connector name="IC">
    </connector>

Ensure that the following steps are completed.

  1. Right click on the project, select "properties". Click on "Dialog Designer" in the left hand pane and select the "CTI" tab under "Datasources". Ensure that the CTI box is checked.
  2. Figure 1: Accessing Dialog Designer properties

  3. Add a new CTI server or Edit an existing server details by clicking on the "Add" or "Edit" buttons in the "Tserver" section.
  4. Figure 2: Editing an existing TServer connection

  5. Click "OK" to apply the changes and close the properties box. Use the "Navigator" view and open the project directory. Scroll to the "WEB-INF/classes" directory, locate and open the "tsapi.pro" file. Open this file and verify that IPaddress=450 entry is the IP address of TSapi server.
    Note: If this file is not generated then repeat steps 1 and 2.
  6. Follow the steps below to generate the "channelmap.properties" file.
    1. Locate a file named channelmap.sh. This file can be located in the Eclipse home directory under /plugins/com.avaya.sce.cti/data folder. The channelmap.sh file is a shell script that, when executed, produces a text-based properties file that maps the channels on the application server to port numbers. The name of the resultant properties file is channelmap.properties.
    2. Copy the file named channelmap.sh to the application server for the Avaya Avaya Interactive Response system on which the even though the file can be copied to any location, Avaya recommends it be copied to a temp folder (For Example: /tmp/temp)
    3. Verify that the channelmap.sh file has "execute" permissions and run the file.
    4. Use a command prompt window to run the file. The shell script produces the channelmap.properties file in the same directory.
    5. Depending on the method of deploying this file either step F or G can be used.
    6. In order to deploy this file in the application, locate the project directory on the development machine and copy the channelmap.properties file to the /WEB-INF/classes directory under the project directory.
    7. The "channelmap.properties" file can also be deployed to the directory of the application after the project is deployed.
      1. Locate the project on the application server (where it is deployed), scroll to the projects "WEB-INF" directory for the project, create a subdirectory and name it "classes".
      2. Copy the "channelmap.properties" file to the "classes" subdirectory.

The CTI exception can be handled by catching "error.runtime" exception in "AppRoot" node file.

If more than one IR system is used then the user needs to configure the system so that there is no channel overlapping. The channel -> extension mapping can then be entered in the "extensions.properties" file.

If a combination of IR and VP systems is used then the user can enter the IR channels -> extension mappings similar to that in case of having one IR system. Then the user can enter the VP extensions and for channel extension the user needs to use a channel number that is not already taken.

CTI version 3.0 does not support multiple providers and it does not support failover either. CTI 3.1 will support both multiple providers and also failover.

The T-server details can be added in "cti_configuration.xml" file, which is located in the following path:

<TOMCAT-HOME>\webapps\cticonnector\WEB-INF\cti_configuration.xml

Currently it is not possible to consistently get UCID in a Dialog Designer application without CTI. One alternative is to use Avaya Voice Portal - SIP integration where the SIP header contains the UCID information in UUI data.

Configure the CTI Connector and enable it in the DD application. It will gather the ANI/DNIS information depending upon the provider and the switch delivering the call. The CTI App Dialog Designer sample application document explains how to set up the CTI Connector. This sample application comes bundled with the Dialog Designer 4.0 installer. The DD 4.0 installer can be downloaded from the http://www.avaya.com/devconnect. A sample application is available in the directory < InstallPath >\Sample Applications\files\DialogDesigner_3.1_SampleApplications \workspace\CTIApp.

In a CTI-Dialog Designer application, the tsapi.pro file is located at <tomcat home>\Common\Classes when using the Tomcat server, and at Home\App Server\lib\ext when using the WebSphere server. Port 450 is used to connect to AE Services.

No. It is not possible to enable or disable the Dialog Designer CTI connector at runtime.

It is important to ensure that CTI connector files are deployed and configured on the application web server machine prior to deploying the CTI based application.

Yes, Dialog Designer CTI Connectors can be used with Centre Vu Computer Telephony CVCT servers. CVCT provides the same functionality as Application Enablement Services.

This warning is logged by the CTI connector when an unencrypted AES TLINK tries to use named licensing. To use named licensing, CTI connector should be configured to use the encrypted AES TLINK. For information on configuring CTI connector, refer to the topic "Configuring CTI Settings" in Avaya Dialog Designer Developers Guide available at http://www.avaya.com/devconnect.

Note: Encrypted TLINK is only supported on AE Services 4.1 and later versions. For detailed information on encrypted TLINK, refer to FAQ "What is a Secured Tlink?" available on http://www.avaya.com/devconnect

The "CTI connector" in Dialog Designer has been renamed "AES Connector" in Orchestration Designer. The AES connector provides the same functionality that the CTI connect did in previous versions of Dialog Designer. The "cticonnector.war" file that is deployed in the runtime environment is now named "aesconnector.war".

For a CTI enabled application (such as "CTIapp" sample application) to work as a reusable module, please ensure that:

  1. The parent application also has CTI enabled. Right-click on the parent project, then select Properties -> Orchestration Designer -> Pluggable Connectors -> Avaya AES Connector.
  2. Pass the "cticallifo:callid" variable from parent application to the module. To achieve this:
    1. Add a data node in the parent call-flow. Drop a "Callinfo" operation item from "Avaya AES" Palette to the data node. Specify the "Initial Call" property to "true".
    2. Pass the value of "cticallinfo:callid" as a Module Input.
    3. In the AppRoot document of the module, define an Input Parameter with same variable name as in step 'b' above.
    4. Before performing any CTI operations in the module, add a data node in the call-flow. Drop a "Callinfo" operation item from "Avaya AES" Palette to the data node. Specify the "Initial Call" property to "false". Assign the received Input Variable to the Call ID Variable property.

Call Flow

This is one of the subtle nuances of VXML. Prompts are queued (see Prompt Queueing and Input Collection) until the browser pauses for input collection. When an application uses a lot of interactive dialog (prompt and collect), this is not obvious, however if an application does a lot of prompting before any collecting of input, then the caller experience is a long silence before a lot of prompting. To work around this feature in VXML, flush the prompt queue. Start by adding a property item to the selected node in the call-flow. In the property flow item, set the transitional audio properties--select an audio only prompt, the delay and the minimum time play. To seamlessly play audio, create an audio file that contains a small amount of silence (i.e. 5ms) and create an audio only prompt that calls this audio file. Alternatively, for a different user experience, use this mechanism to play a couple seconds of music as the transitional audio. Either mechanism will flush the prompt queue before the transitional audio is played. NOTE: The drawback to this mechanism is additional round trips by the voice browser to fetch the audio file, so this should really be used sparingly.

This is because transitional audio prompts are intended ONLY to be used as audio wav files to be played when fetching the next page in the application NOT as user interface type prompts. The primary reason for this restriction is for multiple languages because the call-flow references prompts by name, so if audio only prompts are used then it will force that prompt in all languages to only contain one audio phrase file, which may not be sufficient for other languages.

DD 3.1 (or later)

Dialog Designer 3.1 added support for this capability. A new item, "Return Event", was added to the palette (found stacked under the "Throw" item), which can be added as a child of an event handler ("Catch", etc.) and will return the caught event back to the calling application. The calling application must also add event handlers for any events that are returned by the module. The module also has the option of returning a different event back to the calling application by adding a "Throw" item as a child of "Return Event". This lets the module return different event types if desired, rather than just propagating the event.

NOTE: When working with 3rd party subdialogs or OSDMs, the subdialog/OSDM must be configured to return events otherwise the calling application will not be able to handle the event. For more details on event processing with subdialogs, refer to the VXML specification:

http://www.w3.org/TR/voicexml20/#dml2.3.4 (see the paragraph that describes how subdialogs differ from programming procedures because the calling application and subdialog contexts are independent).

DD 3.0

This feature is not supported in 3.0.16 release. There is no mechanism to pass along an event thrown from the module to the main application. However the call is always returned to the calling application even in case of a disconnect event. The best workaround is to catch the event, set a return code in the main application and depending on the return value branch the call flow accordingly. The workaround is different if on an Avaya Interactive Response platform, the ADD application detects a disconnect event in the child module. In this case instead of returning to the calling application to execute additional call-flow, copy over that section of the flow to all the modules that need to execute that call-flow in the event of a disconnect event.

The suggested method of invoking an external VXML application is through a sub-dialog call. The following methods can be used reference external applications.

  1. Non-Dialog designer applications can be imported into the module palette in the call flow by clicking on "Import" under "File". Select "Reusable Dialog Designer dialog" as shown in the figure below.

    Figure 1: Selecting "Import" option

    Figure 2: Select "Import Dialog Designer Reusable Module"

    Note:

    1. The application to be imported should be a WAR file. The Dialog Designer will detect the external application (as opposed to loading a Dialog Designer module). The starting Servlet (page) for this application as well as additional parameters and return values should be provided in the configuration box shown below in Figure 3.
    2. The external application imported must reside in the Dialog Designer development machine.
  2. In the application call flow, select a VXML Servlet from the "Servlet" node in the palette. Right click on this node and select the "Edit servletname.java" shown below in Figure 4. Override the method markupLanguageGeneration(...) and write the custom sub dialog call in this method. Refer the "UserDefinedVXML" sample application provided as part of the Dialog Designer installation package.

Figure 3: Filling in Module details (Example: ScanSoft OSDM (core))

Figure 4: Editing VXML servlet.

Another option is to use a Servlet in the call-flow and implement the servletImplementation() method and redirect the request to the VXML application on another web server using a Servlet redirect.

NOTE: Using Servlet redirect results in exiting the Dialog Designer application call-flow.

  1. Click on the Dialog Designer palette (left of the call flow workspace) and select the 'Blind Transfer' node under the Templates section. Drag this node into the call flow and double click to open the Properties view.
  2. Enter the transfer extension number in the 'Destination Number' field in Properties view of the node.
  3. Record a prompt to be played before the transfer.

Refer the online help for additional information.

This can be easily accomplished by using a 'Data' node under the 'Applications Items' tab from the palette. Drop this node in the call flow and double click to open the node. The following Sub-items should be visible in the command palette.

  1. Operations: This item can be used to perform mathematical operations (including assigning) on the project variables.
  2. Condition (If, Else): This item can be used to branch the call flow based on the input and a particular condition being met.

The Manager privilege for the application has to be set on Tomcat. A 'Manager' role, user name and password have to be assigned for the application. This can be done directly through the Dialog Designer user interface by following the steps given below:

  1. Click on Window (in the top level menu) ->Preferences -> Tomcat- >Tomcat Manager App.
  2. Enter in the 'ManagerApp url' field : http://(IP address of the machine hosting Tomcat):8080/manager
  3. In the 'ManagerApp username' enter the Dialog Designer project name (as displayed in the project navigator view - case sensitive) For example: ICICI
  4. In the 'ManagerApp password' enter a password for the application. This field can be left blank or no password.
  5. Click on the 'Add user to tomcat-users.xml' button to update this file.
  6. Click on the 'OK' button to apply, save the changes and close this form.
  7. Start/restart tomcat.
  8. Right click on the project in the navigator view -> Tomcat Project- >Reload this context
  9. If the above steps were followed in sequence then a message 'operation successful' will be displayed.

VXML engine is synchronous. Hence it is not possible to asynchronously play a prompt and perform a transaction at the same time using a Dialog Designer VXML script. It is possible to play a phrase using the announcement node before performing the transaction in the call flow.

In Dialog Designer (DD) 3.1.x, when an event is caught in a sub dialog, Return Event item can be used to return the event to the calling application. This is not supported in earlier version of DD 3.0.x

Yes this can be done by setting the "modal" flag on the field and then using a DTMF grammar on the field item. The modal flag will disable all global grammars and only leave the grammars associated with the field active.

Yes, this can be done by using a properties item and setting the DTMF timeout for the same.

Refer to the VXML spec segment on DTMF timing:

http://www.w3.org/TR/voicexml20/#dmlATiming

There is no "report generation" for call flows. Graphical Editor Framework 3.2 (Dialog Designer 3.1 or higher) supports canvas printing. So that callflow graph can be printed.

Yes, Time-of-day can be checked without java code.

Every DD application has two variables: "date" & "time" that are part of the project. These variables are set when the call is being initiated, so that these values can be checked from any Data node or even within a Prompt.

This functionality is not supported in DD 4.0. For DD to support this feature, the underlying platform (Voice Portal or Interactive Response) must first support this functionality.

No. According to the VXML specification, if the DTMF terminate is turned on, any DTMF key will terminate the recording.

For Orchestration Designer 8.0 or later:

To disable the timestamp generation in Orchestration Designer:

  • Select Window -> Preferences -> Avaya -> Orchestration Designer -> Speech
  • Clear the 'Generate timestamp during code generation' checkbox as shown in the following screenshot
  • Click Apply to apply the changes

For older releases of Dialog Designer the location of this control may be different, for example:

  • Dialog Designer, select Window -> Preference -> Dialog Designer -> Speech and clear the Generate timestamp during code generation checkbox.

The first 'goto' item is invoked when the 'Servlet' node is executed. The 'updateBranches()' function is called just before the servlet. This function enables the 'goto' elements. Note that by default all 'goto' items are enabled, so the ones that are not required in the call flow should be disabled.

The code snippet below enables a 'goto' item that points to a node called 'MyServlet'

@Override public void updateBranches(Collection branches, SCESession mySession)
                                { 
                                for(Goto aGoto : (Collection<Goto>)branches) 
                                    { 
                                        if(aGoto.getNext().equals("MyServlet"))
                                    { 
                                        aGoto.setEnabled(true);
                                    } 
                                    else
                                    {
                                        aGoto.setEnabled(false);
                                    } 
                                    } 
                                        super.updateBranches(branches, mySession);
                            }

Yes. This can be done by adding a 'Link' item specifying either a DTMF or ASR (Advanced Speech Resource) response (or both) to be recognized. This 'Link' item needs to be added to the 'AppRoot' node.

If modules are being used, the 'Link' item needs to be added to each module's 'AppRoot' node.

To use the ASR option, attach a 'Grammar' item to the 'Link' item.

To use the DTMF option, specify the required DTMF combination of key presses in the 'Link' item or attach a DTMF grammar item.

The screen shot below displays the use of the 'Link' item when the caller presses '0'.

Avaya Dialog Designer cannot be used to execute a Perl script on a UNIX box. A custom Java application needs to be written to execute the Perl script.

There are two ways to prevent deletion of temporary audio files in a Dialog Designer Speech project. They are outlined as below:

  1. The record node in the user application should be followed by a servlet : mySession.setDeleteTempFiles(false);
  2. The second method involves renaming the audio files. This renamed file will not get deleted after the application exits. Use a servlet node and add the below code snippet in the servletImplementation method to rename the audio files:
    String srcfile = session.getAbsoluteProjectFilePath() +'\\data\\temp\\'+srcfilename;
                                            session.setDeleteTempFiles(false);
                                        String renamefile = session.getAbsoluteProjectFilePath() +'\\data\\temp\\'+'Cinfo'+srcfilename;
    java.io.File audiofile = new java.io.File(srcfile);
                                            java.io.File renameaudiofile = new java.io.File
                                            (renamefile);
                                        audiofile.renameTo(renameaudiofile);

A Dialog Designer application dynamically generates Voice XML and the root document (in the call flow) could change based on user input or application variables. Hence the application fetches the AppRoot node after each node in the call flow.

An example pseudo-call flow sequence for a Dialog Designer application is shown below:

AppRoot Node -> Node A -> Node B -> Node C etc. Then the application accesses the nodes (at runtime) as follows: AppRoot Node -> Node A -> AppRoot Node -> Node B -> AppRoot Node -> Node C.

Note: The above scenario is valid only for Dialog Designer 4.1.8 and earlier versions.

'Fetch Timeout' for any Dialog Designer node can be set using the property item (from the palette) as shown in the screenshot below.

Refer to the below code snippet to retrieve a specific node name in the call flow.

The specific node name to be retrieved is stored in the user defined variable opt_Out_Form_Name in the application.

public void requestBegin(SCESession mySession) { 
                            super.requestBegin(mySession); 
                            Stack<String> callStack = new Stack<String>(); 
                            callStack.addAll(mySession.getCallStack()); 	// make a copy that
                                // we can
                                // manipulate.
                            try { 
                            callStack.pop(); // Will pop the current node 
                            callStack.pop(); // Will pop the AppRoot node 
                            String lastForm = callStack.pop(); // Will pop the previous node
                                // in the call flow.
                            mySession.getVariableField
                                (IProjectVariables.OPT_OUT_FORM_NAME).setValue(lastForm); 
                            }
                            catch (Exception e) { 
                                if(mySession.isAppTraceEnabled()) {
                                mySession.getTraceOutput().writeln
                                (ITraceInfo.TRACE_LEVEL_ERROR, "Error determining
                                    last form."); 
                                } 
                            e.printStackTrace(); 
                            }
                        }

Explanation of the above code snippet:

The stack can be popped as many times as required to retrieve a specific node. In the code snippet shown above, the stack is popped thrice:

When the pop function is executed for the first time, the current node of execution, the name of the last node executed (the nth node) is retrieved. When the stack is popped for the second time, the AppRoot node is retrieved and when the stack is popped for the third time, the previous node, i.e., the (n-1) th node in the call flow is retrieved.

Note: Dialog Designer 5.0 has an option to generate the AppRoot node "in line" i.e., during the application execution. In this scenario, the AppRoot node is visited only at the beginning of the call flow unlike applications developed using earlier Dialog Designer versions where the application visits the AppRoot node after visiting every other node in the call flow. Hence in Dialog Designer 5.0 applications, where the AppRoot node is 'inline' the code should pop the stack twice to retrieve the (n-1)th node.

Yes. In the Dialog Designer 5.0 application, event handlers can be placed on the module nodes.

To add an event handler to a Dialog Designer module node, follow the steps given below:

  1. Double click and open a module node in the Dialog Designer call flow editor; drag and drop a 'Catch' item from the palette to the module node.
  2. Use the property window to specify an event to be handled in the 'Catch' item.

The 'Return Event' item can be used to propagate an event from within a Dialog Designer module.

For more information on how to propagate an event from within a Dialog Designer module, refer to the following FAQ's available on http://www.avaya.com/devconnect.

Note: Event handlers on the module node are not supported in Dialog Designer versions prior to 5.0. Applications developed with Dialog Designer versions prior to 5.0 have to handle the events returned from the module globally in the AppRoot node of the calling application.

Confidence level is a number ranging between 0.0 and 1.0 that expresses the degree of confidence the Automated Speech Recognition (ASR) engine has that it has correctly recognized the caller utterance. For more information on the confidence level, refer to the Dialog Designer Developers Guide available at http://www.avaya.com/devconnect.

To change the default confidence level in the Dialog Designer application, follow the steps given below

  1. Double click the AppRoot node in the Call Flow editor of Dialog Designer and drag the 'Property' item from the palette to the AppRoot node in the call flow editor.
  2. Set the 'Confidence Level' property under Speech group to the desired value.

Alternatively, default confidence level for the Dialog Designer application can be changed while adding the application on the Voice Portal or changing the speech parameters of the already added application.

To change the default confidence level on the Voice Portal, follow the steps given below:

  1. Log in to the Voice Portal Management System web interface with the appropriate credentials and browse to System Configuration ->Applications. Click on the Add button to add the application or click on the application name to change the application settings.
  2. On clicking the Add button/application name, Add/Change Application page is displayed. Go to Speech Parameters section and change the 'Confidence Threshold' field.

Note: The default confidence level for ASR engine is set to 0.5 on the Voice Portal. To change the default confidence level used by all speech applications, log in to the Voice Portal Management System web interface and browse to System Configuration > MPP Servers > AVB Settings and change the 'Confidence Threshold' property

Orchestration Designer comes with a set of sample applications that provide examples of functionality. A new sample application called "Visiting Schedule" is included with Orchestration Designer that specifically focuses on the new date-time, local variables, and complex conditional logic functionality.

Orchestration Designer 6.0 supports a new element inside the data node called "Loop Collection" that allows the application to loop through a collection of data inside the data node. This allows for looping logic that previously would have needed to exit the node and loop back to itself.

Each project contains two counters, _avayaNoinputCounter and _AvayaNomatchCounter. When a No Input or No Match event is triggered, these counters are automatically updated based on what event is applicable. This information can later be used, for example, in a prompt as illustrated. The Events application, bundled with both Dialog Designer and Orchestration Designer, contains a lot of useful information about events and is a good starting point for those wishing to know more.

Yes, it is possible to invoke an Orchestration Designer application from a custom made external VXML by making use of the <submit> or < subdialog> tags. The steps to be followed are:

  1. When the call-flow in the VXML reaches the point where you need to pass the control to the Orchestration Designer application, add a <subdialog> or <submit> tag.
  2. Specify the URL of the Orchestration Designer application (e.g. http://localhost:8080/<your_app_name>/Start) in the 'next' or 'src' attribute.
  3. Deploy the VXML application on your application server (Please refer to the FAQ "How can a standalone VXML script be deployed on Voice Portal?" for more details on this step)

Note: If you intend to pass some variables to the Orchestration Designer application,

  1. Specify the space-separated list of variables in the 'namelist' attribute of <submit> or <subdialog> tag.
  2. In the AppRoot node of the Orchestration Designer application, add the "Input Parameters" with identical names to those defined in the namelist attribute.

For Example: The below VXML can be used to pass-on variables named 'language' and 'location' to an Orchestration Designer application named 'VXMLtoOD'

<?xml version="1.0" encoding="UTF-8"?> 
                            <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xml:lang="en-US"> 
                            <script><![CDATA[
                            var language='spanish'; 	
                            var location='madrid';
                            ]]> 
                            </script> 
                            <form id="transferForm"> 
                            <block> 
                            <prompt>
                            Now we will transfer control to Orchestration Designer. 
                            </prompt> 
                            </block> 
                            <subdialog name="callTransfer" src="http://<IP Address>:
                            <Port>/VXMLtoOD/Start" namelist="language location">
                            </subdialog>
                            </form> 
                            </vxml>

CCXML

Developers can register via the Avaya link http://www.recordentry.net/avaya/CCXMLreg/register.asp to receive the password and installation instructions for CCXML plug-in.

A CCXML application must send a response to the Application Interface web service (that launched this application) using the <send> tag's Avaya.launchreponse event.

<var name="status" expr="'success'"/>
                            send name="'avaya.launchresponse'" targettype="'avaya_platform'"
                            target="'avaya.launchresponse'" namelist="status" />

About the <send> tag:

The <send> tag is used to send messages containing events or other information directly to another CCXML Interpreter or other external systems using an Event I/O Processor. The various attributes of the <send> tag are explained below:

  1. The target attribute: The target attribute specifies the unique identifier of the event target that the Event I/O Processor should send the event to.
  2. The targettype attribute: The targettype attribute controls what Event I/O Processor the event should be sent to.
  3. The name attribute: The name attribute specifies an ECMA script expression that returns the name of the event.
  4. The namelist attribute: The namelist attribute specifies a space separated list of CCXML ECMA script variables to be included with the message.

Database

There are a few steps to configuring database access:

  1. Configure the preferences to point to the JDBC drivers: Window -> Preferences -> Avaya Dialog Designer -> Database
  2. Copy the JDBC drivers to <tomcat home>/common/lib.

Both steps 1 and 2 above must be executed only once. If this is not done there will be errors at runtime

Define a datasource for the project in the project properties.

Right click on the project Properties -> Avaya Dialog Designer -> Datasources and add the datasource.

The database vendor/JDBC implementation should identify this in their documentation. Here are drivers for some common databases:

SQL Server com.microsoft.jdbc.sqlserver.SQLServerDriver
ODBC Datasource sun.jdbc.odbc.JdbcOdbcDriver
Oracle oracle.jdbc.driver.OracleDriver

JDBC drivers are supplied by the database vendor. In general, 3rd party JDBC drivers may not be distributed because some vendors may have licenses, etc. for their drivers. Refer to the database vendor's website or documentation to find out how to obtain the driver.

No, such functionality is not supported. It is also not possible to manually type in a dummy table name in the Table Name box (Table names have to selected, from the drop down box for a valid database).

The documentation (Hel -> Help Content -> Dialog Designer >Working with Database Operation -> Using the Database Operation File Edito -> Database Operation File Edito -> Predicate Ta -> Setting Conditions for a Simple Database Operation) covers building various conditions for Database Operation.

This can be done in the following ways:

  1. Deploy the application using corresponding dbop file pointing to the production system datasource. Each time, while deploying the application from testing environment to production environment, edit the datanode to use the production database.
  2. Create two data nodes and change the connection each time before deploying.
  3. Use an IF statement to choose the path and base the decision on the runtime-Platform parameter which needs to change anyway (Desktop or Voice Portal or IR).
  4. Manually changing is also possible but it is not recommended, since the user needs to edit the "web.xml" and context file (if on tomcat) and then enter the password in encrypted format.

The following JAR files need to be added in >TOMCAT_HOME</common/lib,

  1. msbase.jar
  2. mssqlserver.jar
  3. msutil.jar

The following driver class has to be specified while creating a new data source in Eclipse:

"com.microsoft.sqlserver.jdbc.SQLServerDriver" (for SQL 2005).

The database connection URL for connecting to MSSQL server is "jdbc:sqlserver://< host IP address>:1434;databaseName=< Name of the database>;"
where:
< host IP addres -> is the IP address of the MSSQL server.
< Name of the databas -> is the database name to which the connection is established.

Deployment

Refer the application deployment notes. When deploying the application, on the Configure web application descriptors wizard page, Application tab, set the runtime-ASR and runtime-Platform correctly. Set runtime-Platform to IR.

DD 4.0

Use the application configuration web application ("runtimeconfig") to configure the application server-wide parameters like license server information, proxy settings, etc. See application deployment notes in the Dialog Designer documentation for information on deploying the runtimeconfig application.

DD3.1/3.0

If using Avaya Interactive Response for the runtime-Platform setting set the sage.general.project.licenseserverhosturi to the url of a valid WebLM license server that has an installed Dialog Designer license.

Refer application deployment notes. When deploying the application on the Configure web application descriptors wizard page, Application tab, set the runtime-ASR and runtime-Platform correctly. Set the runtime-Platform to Voice Portal.

DD 4.0

Use the application configuration web application (?runtimeconfig?) to configure the application server-wide parameters like license server information, proxy settings, etc. See application deployment notes in the Dialog Designer documentation for information on deploying the runtimeconfig application.

DD 3.1/3.0

If using Voice Portal for the runtime-Platform setting set sage.general.project.licenseserverhosturi to the URL of a valid WebLM license server with an installed Dialog Designer license. In addition to having a valid license server, the VPMS will need to have a web service for logging. When an application is started by the MPP, the MPP passes the location of the report web service in the query string variable session_reporturl. The actual web service must be installed on the VPMS and have a URL similar to http://localhost:8080/axis/services/Report (except the host name may not be localhost). See Voice Portal documentation for additional reporting web service information.

This is usually because Dialog Designer is unable to communicate with the Avaya Personal Voice Browser (AVB) or some ports that the simulator is trying to use are being used up by other apps. In some cases, the AVB process does not terminate properly and can lead to a build up of these processes running in the background. After so many processes have built up, the port that Dialog Designer and the AVB use to communicate becomes blocked resulting in a Connection refused error. To fix this, open up the Windows Process Manager and look for any instances of avayaVXIRef.exe that are running and terminate the processes. If that doesn't solve the problem, then try restarting Dialog Designer. Dialog Designer uses a file on the operating system for configuration details for the AVB and on occasion the file handle becomes invalid. Restarting usually clears up this problem.

You can also look at the simulator log and find out where it is stopped at. The VOX simulator port is configurable, and the CTI Connector simulator port is hard coded at 5555. Use the netstat -ano command in the command prompt to find out if the ports are occupied by other apps.

Hot code replace failed errors indicate that the application Java code has changed and Tomcat is unable to load the new java code, implying that the code running on Tomcat may not be the most recently changed project code. Generally speaking, the Java Virtual Machine (JVM) should be able to re-compile and re-load Java classes (also known as hot code replace), however depending on the changes, not all code can be replaced, which results in the error message. On encountering this error, shut down and restart Tomcat to ensure that the latest code is executing.

Note: while exporting/deploying applications, it is possible that Dialog Designer will re-generate and re-compile the project Java classes, which may trigger the error message. In general Tomcat should be stopped before exporting the project.

Tomcat application permits deploying (replacing ) a WAR file in the webapps directory, but if any files under this application directory are in use by the Tomcat JVM, then replacing the web application may fail. In that case stop tomcat and remove the old directory.

DD 4.0

Configure the proxy settings in Windows -> Prefences ->Dialog Designer.

DD 3.1/3.0

Check the proxy settings under Configure web application descriptors wizard page. Select sage.general.project.useproxy and click the Edit button to bring up the edit box shown below. Edit the value field as necessary. (Acceptable values are true or false).

Figure 1: Proxy settings

Note that the proxy setting affects not only Web Service connections it also affects connecting to WebLM and the VPMS for reporting.

Yes, ANT script can be used to export WAR or EAR file. Dialog Designer uses ANT to do its export, but the script is removed after the export completes. Writing own script is probably the best option; the other option is to copy the temp build script that Dialog Designer generates during export. Note if the script that Dialog Designer generates is copied, it assumes certain files exist that the export wizard copies. If the user writes own script then the user will have more control over those details. As long as the basic WAR structure is preserved, the script should work fine. The key directories are as follows:

data/
WEB-INF/
icons/

Though IR2.0 has its own license, DD license has to be installed. The DD license can be acquired and installed on the same WebLM License Manager as IR.

No, because those applications use different sets of common runtime jars deployed in Tomcat's common/lib.

License file has to be obtained for the server that hosts WebLM. A unique WebLM license is generated for each server that hosts WebLM and the licenses are not portable. The server cannot be changed since they are tied to the MAC address.

Check if the 'runtime_platform' field in the 'web.xml' file is properly set. If using Voice Portal, then it should be set to 'Voice Portal' or if using Interactive Response, it should be set to 'IR'. Also, update the 'runtime_asr' field accordingly. The error occurs when these fields are not configured properly.

Yes. It is possible to deploy Dialog Designer 4.x applications on either Tomcat 5.0.28 or on Tomcat 5.5.25. Note that the same version of Tomcat must be used during development and deployment.

Dialog Designer applications are primarily intended to be used with Avaya media platforms; Avaya Interactive Response and Voice Portal. Dialog Designer Speech applications are VXML 2.1 compliant and can be deployed on other media platforms that support this interface.

In order to deploy a standalone VXML script on Voice Portal, follow the steps given below:

  1. Write the VXML code using any text editor such as Microsoft Windows Notepad. Save this file with a .vxml extension.
  2. Deploy the code on the application server (such as Tomcat) by placing the VXML code file in an application directory. Place this application directory in the webapps directory of the application server. Restart the application server.

Add the application on the Voice Portal Applications page. Refer to the tutorial titled "Tutorial for Deploying Speech and Call Control Applications on Avaya Voice Portal and Avaya Interactive Response" for information on deploying applications on Voice Portal. This tutorial can be downloaded from the Dialog Designer Tutorials page on the http://avaya.com/devconnect website.

Note: Use the URL format below when referencing the application through the Voice Portal Applications page.

http://<IP of Application Server>:<Port>/application directory/<application Name>

To deploy a Dialog Designer application from the development environment, right click on the project to be deployed click ?Export?. Stop Tomcat and select ?Export Dialog Designer project? as shown in figure 1 below. Select the project to be exported, the destination directory and click ?Next? (Figure 2). Type in the license URI and choose the appropriate ?Platform?, ?Servlet container? and ?Grammar Compatibility? settings. If necessary, fill in the settings under the ?Proxy Settings? and click ?Next? (Figure 3). Select appropriate options (optional) on the ? Select options for deployment page? and click ?Next?. View the selections made in the ?configure web application descriptor? page and click ?Finish? to create a WAR file.

Figure 1: Selecting export destination

Figure 2: Selecting project

Figure 3: Platform details

Figure 4: Selecting deployment options

Copy the WAR file to the destination machine <TOMCAT_HOME>/webapps.

Alternatively, use the tomcat manager application to install the application (preferred).

Follow the steps listed below to complete this process:

To use the Tomcat manager application ensure that the tomcat-users.xml file in the <TOMCAT_HOME>/conf directory is the same as shown below:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="tomcat,manager"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>

The key points are to have a role of manager and assign that role to a user 'tomcat' and set the password for the user 'tomcat'. Once Tomcat is restarted, point a browser to http://<tomcathost>:8080/ and select 'Tomcat Manager' in the Administration menu.

At the bottom of the Tomcat Web Application Manager page under 'WAR file to deploy' use the 'Browse'button to select the WAR File. Click on the 'Deploy' button under 'Deploy directory or WAR file located on server' to deploy the application.

In order to verify the application, click on the application name in the path column of the Tomcat Manager page. The page should display a 'validate' link. Click that link to validate if the Tomcat installation has all the necessary libraries (.jar files). There is also an additional page for 'Performance Monitoring'. The Performance Monitoring page allows enabling and disabling performance counters in the application and view results.

Eclipse

On a Windows FAT32 system, Eclipse is not able to detect the presence of new features/plug-ins in the install, plug-ins are not loaded. To fix this, add -clean as an option to the shortcut used to launch Eclipse. (i.e. C:/eclipse/eclipse.exe -clean)

No, It is not recommended to use the java.exe or javaw.exe in %PATH% to start Eclipse because it is hard to control the version and its related libraries because different. JVM/JRE installations may overwrite the file. It is recommended to use the -vm option which will explicitly define the JVM that is used to launch Eclipse. Example command line setting for defining the JVM and setting the initial memory heap to 256MB: C:/eclipse/eclipse.exe -vm c:\jdk1.4.2\jre\bin\javaw -vmargs -Xmx256M

DD 3.1/4.0

To change the eclipse defaults, click on Window -> Preferences -> General -> Workspace and set the Text File Encoding to UTF-8.

Speech projects should be automatically defaulted to UTF-8. To see or change that, right-click on the project, select the Properties menu option, and select info.

DD 3.0

Eclipse sets the default encoding for editors that contain text. This may sometimes not default to double-byte characters. To change the eclipse defaults, click on Window -> Preferences -> Workbench -> Editors and set the Text File Encoding to UTF-8.

Figure 1: setting Text file encoding

Follow the steps below to view the Avaya Voice Browser (AVB) window:

  1. Click on Window (in the top level menu) ->Show View -> Other..
  2. Select Avaya Voice Browser -> click OK to view the AVB window.

Check the "scertcommons" and "scret" jars mapped to the correct location.

  • scert_<version>.jar should be in <project>/WEB-INF/lib. There should only be one version of this in the project. It should NOT be in <tomcat>/common/lib.
  • scertcommon_<version>.jar should be in <tomcat>/common/lib. There should only be one version of this in the directory.

To turn off specific warnings in Dialog Designer, click on Window in the top level menu and select Preferences. Click on Java -> Compiler -> Errors/Warnings in the left hand pane; select Ignore option to turn off Java related warnings for desired fields.

The directory structure (and location) of Java classes in Dialog Designer should not be changed as Dialog Designer requires certain resources (prompts, grammars, etc.) to be placed in a default directory structure provided by the Dialog Designer framework, thus enabling the classes to be resolved dynamically at runtime.

Grammars

Enter %<#> in the first row of a column, where # is the column number to be repeated. For example, %2 would cause column number 2 to be repeated in the column that the %2 was placed. Note this MUST appear in the first row of a column.

Enter FILLER in the first row of a column (MUST appear in the first row of a column). This defines a rule that may match any speech up until the next rule match, the next token or until the end of spoken input. The behavior FILLER rule is implementation-specific.

This is a new feature. Tags are optional in grammars. If there were multiple phrases that mean the same thing, using a tag would enable the application to identify what the person said in a language independent manner. For example yeah, yes, okay, and sure are all affirmative phrases indicating that the person using the application is agreeable to the question asked. To make application programming simpler, attach the same tag to each phrase in the grammar and use a tag of YES. In order to check what was spoken, it is only necessary to check for YES. A grammar entry initially shows TAG. This is a placeholder that can be replaced with the desired word. (Tag value).

This is the expected behavior and the tokens collected from a grammar are separated by a blank spaces. For example, consider using a grammar that recognizes utterances for a fast food order, if a user orders Whopper and fries then the output string should be whopper fries and not whopperfries. In general, Recognition results returned without blanks between tokens would be very difficult to parse. However, In order for digits to appear as a single string use a built in grammar and select either number or digits.

This can be accomplished using dynamic grammars. A dynamic grammar is a Java class where a simple API is used to build elements that compose a grammar. These at runtime output the appropriate grammar content. Search the Dialog Designer Forum for dynamic grammars (i.e. for corporate LDAP directory).

No, Menu choices are activated when an item in the grammar is recognized. If the same grammar is used for multiple menu choices, then it would be impossible to distinguish which choice to take. Instead use different grammars for each choice. In addition, using a grammar reference rather than embedding a speech hot-word allows menus to behave similarly in a multi-lingual project.

DD 3.1/4.0

The "Help", "Cancel", and "Exit" event handlers have been deprecated. These event handlers are pre-defined by the VXML specification, but there is no corresponding grammar definition to listen for "help", "cancel" or "exit" let alone to throw the event.

Due to this shortcoming in the VXML specification, Dialog Designer 3.1 deprecated the use of these event handlers and removed them from the palette.

You can still make use of these events in your application by defining event types for "help", "cancel" or "exit" using the Event Type Editor in the Call Flow Editor and using "Catch" items to catch the events. You still need to define the grammars for each type and throw the event when the caller requests to help/cancel/exit.

DD 3.0

No, there are no built in grammars available for these events and neither of the above platforms natively support them. These grammars have to be defined for the above events. In the AppRoot node, use the Links sub-flow item. Build a custom grammar and select it using the Grammar sub-flow. Use a Throw handler to throw the above events.

The figure below shows an example sub-flow in the AppRoot1 node that gets activated when the caller says help anywhere in the call flow.

Figure 1: Example flow for handling built-in events

Note: Optionally, if one (or more) grammars is needed to control the call-flow, rather than using a menu node use a prompt & collect + data node to do conditional branches. Define a grammar with the set of choices (set tag values to ensure things work in multi-lingual applications), use a prompt and collect node in the call-flow to collect user speech input. On a Data node, add a set of conditional nodes and test that the input's interpretation (grammar item tag value) equals the different menu choices. Then connect the conditions to the various nodes.

Use the following setting in your VXML script to collect multiple DTMF digits:

<property name:'termtimeout' value:'2s'/>

Set the time in the value field based on the number of digits to be collected.

No, Avaya Whole Word recognizer is not supported from Dialog Designer applications. The following grammar formats are supported: IBM WVS Nuance OSR Nuance 8.5 SRGS (Speech Recognition Grammar Syntax).

This can be done as follows:

  1. Set up a DTMF grammar that accepts digits with a defined min/max length.
  2. Add a property item to the input field to set the DTMF "termchar" property as '#'.

Yes, it is possible to use external grammars in simulation mode. However, the external grammar should be in Speech Recognition Grammar Specification (SRGS) format.

Since an ASR engine uses a URL to retrieve external grammars; these grammars can be located in any web accessible directory. In general, external grammars are placed in a sub-directory under the application directory. The URL for accessing an external grammar in this directory location is:

http://<Machine_IP_Address>:<port>/<appName>/<grammarDir>/grammar_file_name

IC Connector

First, check the box to enable IC. This will add the vdu variable to the project and will setup the context.xml. It will also install or verify that the IC Connector can be accessed by Tomcat.

DD 4.0

If using the simulator:

  1. Navigate to Eclipse -> Preferences -> Dialog Designer -> Speech -> Simulators tab
  2. Add one or more VOX configurations indicating host, port, extensions, mode
  3. You will use localhost to talk to the simulator. You may connect to a live VOX by setting up its IP address.
  4. You do not need to create extensions if only using one VOX.

If using a real VOX:

  1. Run the DDAdmin configuration tool.
  2. Navigate to the IC link.
  3. Change Timeout/Trace verbosity if necessary.
  4. Add one or more VOX configurations.
  5. Indicate if you are running in client (ICC initiates connection) or server (VOX initiates connection) mode for each VOX connection (new to 4.0)
  6. Setup channels if you are connecting to more than one VOX and running in client mode. Note: If you only have one VOX, you do not need to setup the map.
DD 31./3.0

If using the simulator:

  1. On the appserver, navigate to the Tomcat/webapps/icconnector
  2. Edit the web.xml file.
  3. Change the hostaddress to your VOX server. Use localhost to talk to the simulator.
  4. Change port to 3000 or whatever port you have configured on the VOX.

    If using a real VOX:

    1. Access the IC Manager on the IC system Edit the VOX server.
    2. Add the IP address of the machine running Tomcat/ IC Connector in the VRU tab. Enter the channel and extension (These need to have been mapped within the switch.)
    3. Restart the VOX server and ensure that Tomcat is running.
    4. If Tomcat is able to connect to the VOX server, a message appears in the lower status bar indicating a new connection to the VOX has been made. Repeat the above steps, if this message is not displayed.

For Websphere navigate to < Websphere>/appserver/profiles/< yourprofile>/config/cells/< yourcell>/applications/ICConnector_Application.ear/deployments/ICConnector_Application/icconnector.war/WEB-INF

For Weblogic navigate to < Weblogic>/< profile>/domains/wl_server/<server>/stage/icconnector/icconnector.war/WEB-INF

Figure 1: Enabling IC connector

Yes, this is possible via the following steps:

  1. Add an application entry in Experience Portal and an associated extension or extensions as usual. Simply use the development machine name as the server location.
  2. Check the tomcat\conf\Catalina\localhost directory for a context file with the application name in the form appName.xml.
  3. Open this file and ensure that it contains path information that leads back to the application workspace.
  4. If this file does not exist, go into Tomcat\webapps and see if the app is deployed in this directory. It should not be deployed into webapps. If it is deployed, stop Tomcat and delete the deployed directory and delete the application .war file from this directory. Then go back to Eclipse, right click the project, pick Orchestration Designer -> Update Context. This final step restores the missing context file.
  5. Set a breakpoint early in the flow and now dial in via Experience Portal as normal.

Installation

This generally happens when an unsupported version of the JRE (Java Runtime Environment) is active on the computer. To determine version for an active JRE, open a MS-DOS Prompt and type 'java-version'. If the version is not Java 1.4 or later, there may be problems launching Eclipse. The easiest fix is to edit the shortcut that launches Eclipse and add the '-vm <JRE path>' option. For example:

C:\eclipse\eclipse.exe -vm c:\j2sdk1.4.2_08\jre\bin\javaw -vmargs -Xmx256M

In the example above, the shortcut will launch eclipse (installed at C:\eclipse) using the JRE (installed at c:\j2sdk1.4.2_08\jre\bin). This shortcut also instructs the Java Virtual Machine to allocate 256MB of memory using the '-vmargs -Xmx256M' switch. Change the paths of eclipse and javaw.exe above with the locations of local Eclipse and JRE installs. It is recommended to refer the Eclipse 'read me' file (<eclipse home>/readme/readme_eclipse.html). Section 4 discusses various options to run Eclipse.

Generally speaking, newer Dialog Designer releases can be installed over previous versions. Eclipse has a versioning scheme and will load the highest revision automatically. Follow these steps below to ensure a clean install, In the Eclipse environment click on:

Help -> Software Updates -> Manage Configuration.
Use this to disable any active Dialog Designer features and exit Eclipse.
Delete the following folders from the file system to remove old Dialog Designer files:
<eclipse home>/features/com.avaya.*
<eclipse home>/plugins/com.avaya.*
<eclipse home>/plugins/com.sysdeo.tomcat*
(The * above indicates deleting all folders names starting with com.avaya, com.sysdeo.tomcat etc)
Install the latest Dialog Designer release
Start Eclipse/Dialog Designer
Verify the features are loaded by navigating to:
Help -> Software Updates -> Manage Configuration.
Make sure that the latest version is enabled. If not, select Enable and restart Eclipse.
DD 3.1/4.0

Save the Localization Bundle JAR file to a directory on the local machine. In the Eclipse environment, Window -> Preferences -> Dialog Designer -> Languages In the Localization Bundle section, select Add. This opens up a file browsing window. Navigate to the folder that where the localization bundle JAR file(s) is saved. Select the bundle to install and click OK. The localization bundle has now been installed and will be available to projects.

DD 3.0

Save the Localization Bundle ZIP file to a directory on the local machine. In the Eclipse environment, Window -> Preferences -> Dialog Designer -> Languages In the Localization Bundle section, select Add. This opens up a file browsing window. Navigate to the folder that where the localization bundle ZIP file(s) is saved. Select the bundle to install and click OK. The localization bundle has now been installed and will be available to projects.

No. Starting and stopping Tomcat would be more difficult, when developing applications. Debugging Java code will not be possible, as NT cannot launch Tomcat in debug mode.

Check to make sure that Graphical Editor Framework (GEF) has been installed. Dialog Designer requires GEF. If this is not installed then the plug-ins will not activate.

Set the Eclipse launch configuration as follows:

  1. Right click on either the Eclipse Shortcut installed on the desktop (during Dialog Designer installation) or the Eclipse executable in the install directory.
  2. Click on 'properties' and type in the string below in the 'Target' edit box shown in the figure below.
    %ECLIPSE_HOME% -clean -vm %JAVA_HOME%\jre\bin\javaw -vmargs -Xmx256M
    Ensure that the ECLIPSE_HOME and JAVA_HOME environment variable paths are valid.
    The options used are:
    -clean --- Eclipse reloads configuration information (this is optional)
    -vm ... --- Use this to specify the JVM to use to launch Eclipse
    -vmargs -Xmx256M -- Argument to the JVM that says to use 256MB of memory.
    Xmx512M -- Argument to the JVM that says to use 512MB of memory.

Figure 1: Eclipse shot-cut properties box.

Note: Apache Tomcat must be configured on the same server prior to WebLM installation.

The steps involved in the installing WebLM are:

  1. Unzip the contents of the WebLM_Windows.zip file to a local folder. WebLM_Windows.zip is available with the Dialog Designer installation disk. Unzipping extracts 3 files in the local folder:
    • WebLM.war
    • mail.jar
    • activation.jar

    After unzipping, move each file to its selected destination as shown below:

    • Create a folder named WebLM under < tomcat_installed_dir >/webapps
    • Move WebLM.war to < tomcat_installed_dir >/webapps/WebLM
    • Move mail.jar to < tomcat_installed_dir >/common/lib
    • Move activation.jar to < tomcat_installed_dir >/common/lib
  2. Enable https by implementing the following settings:
    • Locate the server.xml file normally located in < tomcat_installed_dir >/conf
    • Open this file using any text editor (e.g. Notepad, WordPad etc.).
    • Search for the exact (case matching) text "port="8443"".
    • Uncomment this entire < Connecto -> tag, i.e., remove the tag "< !-- " before the start of < Connecto -> tag and also remove tag "-- >" after the end of the < Connecto -> tag.
    • At the end of the < Connecto -> tag, sslProtocol="TLS" should be seen. Add the following three attributes to enable https:
      • keystoreFile="./webapps/WebLM/WEB-INF/weblmserver.p12"
      • keystoreType="PKCS12"
      • keystorePass="weblmserver"

      Thus, the < Connecto -> tag now should end with settings like those shown below:

      • clientAuth="false" sslProtocol="TLS"
      • keystoreFile="./webapps/WebLM/WEB-INF/weblmserver.p12"
      • keystoreType="PKCS12"
      • keystorePass="weblmserver"

Restart Tomcat after making these changes.

After completing the above steps, the WebLM home page is shown as in the screenshot below. Logon with default User Name and Password fields set to admin and weblmadmin respectively.

Change the password (after first logon) using the password change screen as shown below.

Post logon, the Install License page is displayed as shown below.

Click on the Install License link (left hand pane) and use the Browse button to select a license file. Click on the Install button to install a Dialog Designer license file as shown in below screenshot.

The following screenshot shows that the license file has been installed successfully.

Logging

Ensure that the 'ddlog4j.properties' file is present under the projects data directory. (<application_home>/data) If the file cannot be located then follow the instructions below:

  1. Go to Appendix A of this FAQ document and copy all the lines of text on the page (Exclude the word Appendix A and any page numbers)
  2. Paste the contents into a text file and name the file 'ddlog4j.properties' and save the file.
  3. Copy this file into the projects data directory on the Dialog Designer development machine.
  4. Close and open the project using the 'Navigator' view.
  5. Restart Tomcat and test for logging using the Voice Browser.

To enable tracing in a run-time environment:

  1. Deploy and configure the speech application on the application server.
  2. While configuring the URI for the application, add the following string to the URI:
    ?ddtrace=true
    (For example: http://localhost:8080/DDapp /Start?ddtrace=true)
    To disable tracing in a run-time environment, after it has been enabled:
    Change '?ddtrace=true' to ?ddtrace=false

Desktop simulation Mode:

Locate the Eclipse directory on the Dialog Designer application server. Open the directory listed in the path: /workspace/<project>/data/log.

Avaya Interactive Response:

These files are located under the same directory mentioned above on the Dialog Designer application server.

Voice Portal:

Report data is sent to the VPMS3 and is available for viewing using the VPMS report generators. Trace data is written to a file in the log directory (see above) on the Dialog Designer application server.
Note the location of the output files can be changed by editing the below lines of the ?ddlog4j.properties? file.
# Report File.
log4j.appender.R.File=$ {dd.apphome}/data/log/report.log
# Trace File.
log4j.appender.T.File=$ {dd.apphome}/data/log/trace.log

The correct URL to enable tracing is http://(IP address of web server):8080/(application name)/Start? ddtrace:true and this will generate a log in (Eclipse Install Directory)\work space\(Application Name)\data\log directory.

Nuance OSDM

The ScanSoft OSDM's use ScanSoft proprietary grammars that are not supported by the AVB. The semantic.error is thrown when the AVB attempts to load the scansoft grammars.

Follow the steps listed below to test an OSDM (standalone)

  1. Copy the osdm2-address.war and the osdm2-core.war to the Tomcat webapps directory. (For example: C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps)
  2. Stop and start Tomcat.
  3. Login into Tomcat manager and ensure that the osdm2-address application is loaded.
  4. Make sure that /osdm2-address/en.us/examples/address.vxml is accessible.
  5. Login into the Avaya Interactive Response and deploy the vxml file on a channel by providing a url. (For example: http://localhost:8080/osdm2address/en.us/examples/address.vxml).
  6. Check and verify connectivity to a scansoft server.
  7. Call in and verify that the OSDM is working.

Nuance OSDM is used the same way as the reusable modules created using Dialog Designer. First, import the OSDM war file using the "Import Dialog Design Reusable Module" wizard. After that, all the modules packaged in the war file should show up in the tool palette in the callflow editor. Then drag and drop them into the call flow and in the node editing page, set up the input and output parameters. Also OSDM war file needs to be deployed in the application server for runtime.

OSDMs are used just like Dialog Designer modules. Import the OSDM war file and they will be displayed in the palette. The OSDM war file can be imported in the Dialog Designer top level menu as explained below:

Select: File -> import -> Avaya Speech Dev. -> Import Dialog Designer Reusable Module .

Phrasesets

Yes. This is supported in DD 3.x onwards, using Phrasesets that are set up to use external audio. For this to work, configure the URL base so that it points to a directory that contains the audio files. Then add phrases to the phraseset and set the audio file names that are needed to be referenced.

Prompts

Prompt levels work with in the context of the Form Interpretation Algorithm (FIA). So when a VXML page (or form) is generated the FIA will select a prompt, play the prompt, and wait for input. If there is a no-match, no-input, the FIA will re-prompt and increment the iteration counter. The iteration counter determines which prompt level is selected. On returning to a page/form the iteration counter is reset to 1 and the FIA starts over. The default action for no-input and no match are to play a TTS prompt and re-prompt and after the fifth try exit. The default action for error is to exit. The default behavior can be overridden by user defined no-match, no-input and error event handlers.

First play order only plays the first defined prompt level always, regardless of the iteration in the FIA.

Standard play order plays the prompt levels as defined. Note that it is possible to define prompt levels with gaps in the numbering. For example: It is possible to define levels 1, 3, and 6. The first and second iteration of the FIA prompt level 1 will play. On the third, fourth and fifth iteration of the FIA prompt level 3 will play, and prompt level 6 will play on the sixth iteration of the FIA and all subsequent iterations.

Sequential plays prompts in the relative order (ordinal value) they are defined with out regard to the actual number (cardinal value) of the prompt level. In the example above on the first iteration prompt level 1 would play. On the second iteration, prompt level 3 would play. On the third iteration and all subsequent iterations prompt level 6 would play. Sequential allows the user to alter the play order with out redefining prompt levels.

Note: If the prompt levels are defined as 1, 2, 3, and 4, then would be no difference between Sequential and Standard.

Random play prompts (are different from the above three play prompts), they are only varied each time the page/form is entered. Once the FIA starts the prompt is the same for the entire FIA duration.

The 'text' format sends the text value of the variable to the TTS engine untouched. The 'digits' format places a space between the characters in the text value of the variable so 1234 becomes 1 2 3 4. The 'URL' and 'filename' format are used to either play a .wav file or text from a file, depending on the extension of the name. If the URL or filename end in .txt then it is assumed the file is a text file and the contents of that file are fed to the TTS engine. If the URL or filename does not end with .txt then it is assumed that this is a .wav file, and the audio wav file is played. This is useful when a message is recorded to be played back to the user.

DD 4.0

Follow the instructions for DD 3.1/3.0 given below to create the record item. Rather than using a Text Variable to play the recorded audio, use Phrase Variable to play the audio file and set the type as URL.

DD 3.1/3.0

Place a 'Form' node from the palette in the call-flow. Open the 'Flow' node and drag a 'record' item from the 'Flow' palette. Name the 'record' item 'myrecord'. The variable 'myrecord:value' will then contain an URL to the recorded audio. The audio file can be located under <project home>/data/temp. To play the audio file in the call-flow, create a prompt file. Select a 'Text Variable', under 'properties' choose 'myrecord' for the 'Variable' entry, 'value' for the 'Variable field' entry and 'URL' as the 'Format'.

Avaya Avaya Interactive Response 1.3 system (with all the latest patches installed) and ScanSoft OSR2 speech server setup is necessary to use the SSML functionality in Dialog Designer applications. To enable SSML:

  1. Right click on the project in the 'Navigator' (Dialog Designer view) and select 'properties'. Under 'Dialog Designer' properties, click on the 'Web Descriptor' tab. Open the runtime-SSML parameter and change the value from 'false' to 'true' (In the figure below). Click 'OK' and save the settings.
  2. Figure 1: Changing runtime-SSML value

  3. While deploying an application using the 'Export' option, check the Enable Speech Synthesis Markup Language SSML generation in project prompts as shown in the following figure:

Figure 2: Enabling SSML generation

DD 3.0

There is no recommended way to do this.

DD 3.1

It is possible to do this using a "phrasesets" and a Java code to change the URL to the audio files.

In a nutshell, "phrasesets" is used to group a whole bunch of phrases together. So instead of having one phrase file for each audio file, the user can have one "phrasesets" file for a group of audio files. Using "phrasesets" can save space and make the application easier to maintain. The user can also import a directory full of wav files into one "phrasesets" which has a child phrase for each wav file.

The language packages can be downloaded from the following Avaya support site:

http://support.avaya.com > FIND DOCUMENTATION and TECHNICAL INFORMATION by PRODUCT NAM -> Dialog Designe -> Download -> Software Download -> "Download Dialog Designer <version>".

No. Phrases support only female voice. However, required voice can be recorded in .wav files format and replace the default ones with customized ones.

Dialog Designer exposes API in the Phrase class that let a developer override methods to change the audio file. To do this, open the Phrase's associated Java class and override the appropriate method.

The API to work with is:

String getFileName()-Override this to dynamically change the phrase name. This is very helpful when audio files that are part of your project and you just want to change the file that is played.

String getURL()-Override this to use external audio files. Specify the URL for the file, this value will be used the generated VXML.

String getText()-Override this to provide backup text. In the event that the Voice browser cannot fetch the audio file, it will fall back and try to TTS the backup text.

WARNING: By overriding the methods in phrase class, the audio flies & URLs that are generated in VoiceXML (VXML) can be changed. Provide correct file names & URL's to avoid runtime errors.

Click on a prompt (under the prompts folder in the Navigator view) to open a prompt editor and select the Prompt Main tab in the prompt editor. In the Properties view, select the different prompt levels in the prompt editor (via the Prompt Main tab). The property values can now be modified as per user requirements.

The default timeout value can be set via Window -> Preferences -> Dialog Designer -> Speech -> Prompt -> Default Time Out. All prompts created after changing this setting will possess the new default value. This is shown in the screenshots below.

The updated value is shown as the default timeout value for all the new Prompts which are created after the setting is done. This is shown in the screenshot below. The default timeout value for already existing prompts is not altered.

To enable the SSML tags used in prompts, right-click on a Dialog Designer Speech project in the Navigator view and select Properties. Browse to the Dialog Designer -> Speech tab and check the checkbox to enable SSML generation in project prompts as shown in the screenshot below.

Follow the steps given below to play a pre-recorded audio file using a text variable in a Dialog Designer application:

  1. Create a project variable and assign its value as the URL to the audio file.
  2. Use this project variable as the text variable in the prompt segment and select the Format as URL in the properties.

Create a variable in the "project.variables" file and set the value to "builtin://senddigit/<dtmf digits>" (i.e. builtin://senddigit/5678). The variable can be a simple or a complex variable field and the value hard coded or set dynamically in either a data node or custom Java code. Then create a prompt that will send the DTMF tones by inserting a "phrase variable" prompt segment of type "Audio URL" and the value as the variable name of the new variable just created.

To allow the prompt/announcement to barge-in, select the Prompt main tab in the prompt editor. Then select the prompt level from the Prompt Levels. Double click on the prompt level to open the screen with palette. In properties tab, set barge-in to true for that prompt. Also, in the preferences for DD in the simulator settings, make sure barge-in detection is enabled.

'Prosody' item (under Synthesized Speech Markup Language (SSML)) can be used to control the pitch, rate, and volume aspects of Text-to-Speech (TTS) synthesis, as shown in the screenshot below.

Runtime

Ensure that the application is deployed correctly. The application can be deployed by exporting the application from the Dialog Designer to a remote Tomcat web server. The platform can point to this web-server. The other option is to have the platform (channels) directly point to the Tomcat on the local development machine (There is no need to export and deploy the application here). In either case, the appropriate grammars based on the recognizer/TTS used have to be selected. Right click on the project in the Navigator view then select 'Properties' and 'Avaya Dialog Designer'. Select the 'Web Descriptor' tab. Use the Edit button to set appropriate values for 'runtime-ASR' (Nuance or scansoft) and 'runtime-Platform' (Avaya Interactive Response/Voice Portal/Desktop) parameters Ensure that the speech servers (Nuance/Scansoft) are setup correctly and waiting for connections.

Make sure that the JDBC driver classes have been installed on the runtime platform. Dialog Designer (Dialog Designer/SAGE) requires that the JDBC drivers are configured for the project which allows the tool to access the database at design time to develop the database operations. At runtime, the application is hosted on a servlet container/app server and the container is responsible for establishing connections to the database. When they fail, it is generally because the JDBC driver classes have not been installed on the servlet container so there are class path problems when the Dialog Designer app attempts to load the JDBC driver. For tomcat, copy the JDBC driver libraries to <tomcat home>/common/lib.

To read converse-on data:

The first node in the application (after AppRoot/Start) should be a prompt & collect node without a prompt. (Note: A Form with an 'Input' sub-flow can also be used to achieve the same effect). The platform will then collect digits from the PBX rather than the caller. If the converse on data will contain two sets of digits, then two input nodes should be used.

To set converse data return:

Trick the VXML into performing converse data return using a blind transfer. The destination number is 'converse data return feature access code' + 'return data 1' + 'return data 2'. For example: '119#12345#121212#', where '119' is the feature access code, '12345' and '121212' are the digits to be returned, and '#' is the delmiter that must be used between the feature access codes and any digits returned.

Refer the 'converse step' sample application provided as part of the Dialog Designer sample code.

On Avaya Interactive Response platforms, another option is to call a TAS application and have a conv_data external function in it.

This problem has been observed while using Voice Portal platform with IBM WVS (for TTS) and Apache Web server. In general, data in grammars and TTS cannot contain the below characters to be considered XML safe. & < > /> and 'double quote' Use the code snippet in Appendix B of this FAQ to resolve the issue.

This means the VXML page has XML content that is not well formed, i.e. it contains characters that throw off the parser such as &, <, >, etc. Refer the answer above.

Dialog Designer API contains the Phrase class that lets a developer override its methods to change the audio file. To do this, override the appropriate Phrase class methods. The methods that can be overridden are:

  • String getFileName() - Override this method to dynamically change the phrase name. This is helpful if the audio files are part of the current project and only the file that is played needs to be changed.
  • String getURL() - Override this method to use external audio files. Specify the URL for the external file. This value will be used in the generated VXML.
  • String getText() - Override this method to provide backup text. In the event where the voice browser cannot fetch the audio file, it will fall back and try to TTS the backup text.

To set the VXML runtime version for a Speech project, right-click the Speech project in the navigator view and select Properties. Select the Web Descriptor tab and the runtime-VXML parameter and click Edit to modify the VXML runtime version as shown in the screenshot below.

Sample Applications

  1. 'HTTP 404' message indicates that Tomcat has not been configured to host the Dialog Designer application. In order to resolve this, right click on the project in the Navigator view, select Tomcat Project and click on the 'Update 'context definition' as shown in the figure below.
  2. Figure 1: Updating context definition

    This will add/update the context file in the Tomcat configuration directory. (<tomcat home>/conf/Catalina/localhost/<app name>.xml).

  3. Build path errors likely indicate that Eclipse is unable to compile/build the project because the project references libraries that do not exist, or eclipse is unable to locate them.
    1. Right click on the project->Generate. This will cause Dialog Designer to re-generate all project files, which will trigger an Eclipse build process that will recompile the project.
    2. Select the Project->Clean->Clean all projects. This will force Eclipse to remove all of the compiled files and then will force a regeneration/recompilation of the project files. If steps A, B above do not solve the problem, right click on the project->Properties->Java Build Path and see which libraries/dependencies are not met. If all of the libraries are present, then restart Eclipse. If there are libraries missing, then resolve all of the libraries and/or paths before compiling the project.

Security

Orchestration Designer 6.0 introduced new security and privacy features.

  • Secure Fetch - a new property on a form node where if set to "true", the next VXML form will use https to fetch the next page.
  • Subdialog data value encryption - when session variables are marked as "private", the variable's content is encrypted so you cannot view them in the VXML code that is generated by Orchestration Designer.
  • No logging of private data - session variables that are marked as "private" will not be logged in the trace logging.

Simulation

Yes. On the Input tab the input fields 'Recognition', 'Confidence', and 'Send ASR' can be used to manually input ASR recognition. Use the keypad and the 'Send Digits' enter DTMF. The reason to manually enter speech recognition values it to have better control over what is recognized and the confidence values.

Note: The 'Recognition' and 'Confidence' fields can be used while running the application in Desktop mode using the AVB. The Microsoft speech engine does not support N-best, however, using the above input fields N-best results can be simulated by entering a comma separated list of values (that represent the N-best results).
For Example:
Recognition: dog blue, cat blue, cat red
Confidence: .7, .4, .3
Results for N-best equal 3 are simulated above. If only Recognition results are entered the AVB will assign a confidence automatically.

Yes. Refer to Appendix C of this FAQ for details.

Insert breakpoints wherever desired. Start Tomcat in Debug mode (Default mode to launch Tomcat from the Eclipse/Dialog Designer environment). When the breakpoint is reached, execution will be paused the user will have control over the debugger and can step through the code. If the source code is not in sync with the debugger, it indicates that Tomcat's source code path is not set properly. Click on Window->Preferences-> Tomcat->Source Path Ensure that the project being debugged is checked. Restart Tomcat if changes are made to the source path.

The Log4J properties for tomcat must be set. Create a file name 'log4j.properties' under <tomcat home>/common/classes. Add the below lines to the file, and restart tomcat:

log4j.rootLogger=info, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %5p - %m%n

No. The Dialog Designer Simulator (Avaya Voice Browser) does not require a separate license to operate in the Simulation mode. Prior to testing a Dialog Designer application using the Avaya Voice Browser, set the value of the platform variable to 'Desktop'.

Select Windows from the Dialog Designer top level menu and click on Preferences (not shown). In the Preferences form, select Dialog Designer -> Avaya Application Simulator tab and check the Enable Bargein detection checkbox as shown in the screenshot below.

No, Dialog Designer applications do not require a third party ASR or TTS server to run in simulation mode. ASR and TTS servers are required if the application is executed in any of the runtime environments i.e., deployed either on Voice Portal or on Interactive Response.

Yes, the Orchestration Designer application simulator includes support for MRCP interfaces to Nuance and Loquendo MRCP speech resources. However, an additional license is required to use this functionality.

Variables

When a collection is filled in either by a database operation, web service operation, string parse, or other means the collection is positioned on the first element in the collection. Use the first value in the collection and then perform a 'next' in collection.

For this, a sample application 'CallTAS' can be downloaded from the Dialog Designer section on http://devconnect.avaya.com site. This application describes passing values from and into a TAS (IVR Designer) application from a Dialog Designer application. The "callTAS.pdf" document which comes with the sample application describes the steps in detail.

Dialog Designer versions prior to 4.1.10 used the 12-hour time format and the value of the time: hour variable at midnight is set to 00. However, Dialog Designer 4.1.10 and later versions use the 24-hour time format and the value of the time: hour variable at midnight is set to 24.

Orchestration Designer 6.0 introduced a new feature where a grammar or prompt file name can be specified in a variable. Therefore, the name of the grammar or prompt file can be set at runtime.

Web Services

The following error message can be generated for four different reasons:

Figure 1: WSDL error message box

  1. A URL to the actual web service is provided and not the WSDL URL. For Example: Providing the web service URL, http://some.host.url/WebService2/Service1.asmx instead of the WSDL URL, http://some.host.url/WebService2/Service1.asmx?wsdl will cause the above error message.
  2. The web service may be outside a firewall. In this case proxies will have to be set under preferences. Select "Windows->Preferences" and select "Avaya Dialog Designer". Enter the correct values for proxy. For example: co.proxy.avaya.com for the host address and 8000 for the host port. Also check "Enable HTTP proxy connection".
  3. Your web service requires authentication. On the first page of the New Web Service Operation wizard select the required method of authentication and from the Authentication drop down box. Then enter username and password and click load again.
  4. The WSDL file could not be properly parsed. Check the Error Log (Window->Show View->Other?->PDE Runtime->Error Log) for more information on the error. Typically this is the result of an improperly structured WSDL file and may require the service provider to correct their WSDL.

Figure 2: Configuring proxy settings

The error message occurs as Dialog Designer web service does not currently support attachments and can be ignored. However, in order to prevent the message from being displayed copy the activation.jar and mail.jar to the <TOMCAT_HOME>/common/lib directory.

While using WSOP wizard to a create the web service operation, select "Use Java object" and map Dialog Designer session variables to the in/out parameters for the web service. This would tell the WSOP framework to pass a Java Object to the web service.

No, currently cookies are not supported in the Dialog Designer web service connector. It is recommended to parse information in the SOAP header instead of using cookies.

The server's certificate has to be added to the trusted certificate store on the client and the system property "javax.net.ssl.trustStore" should point to the trust store. The document "Java Secure Socket Extension (JSSE) Reference Guide for the Java 2 Platform Standard Edition 5 " can be referred from the following link, for better understanding of the same,

http://javA:sun.com/j2se/1.5.0/docs/guide/security/jsse/JSSERefGuide.html

Appendices

log4j.rootLogger=error, stdout

log4j.logger.com.avaya.runtimecommon.platforms.desktop.tracking.TraceWriter= debug, T
log4j.logger.com.avaya.runtimecommon.platforms.ir.tracking.TraceWriter= debug, T
log4j.logger.com.avaya.runtimecommon.platforms.vp.tracking.TraceWriter= debug, T
# other uses Avaya Interactive Response class
# log4j.logger.com.avaya.runtimecommon.platforms.other.tracking.TraceWriter= error, T

log4j.logger.com.avaya.runtimecommon.platforms.desktop.tracking.ReportWriter= debug, R
log4j.logger.com.avaya.runtimecommon.platforms.ir.tracking.ReportWriter= info, R
# other uses Avaya Interactive Response class
# log4j.logger.com.avaya.runtimecommon.platforms.other.tracking.ReportWriter= info, R
#Avaya Voice Portal reporting goes to the VPMS and does not use log4j.

# Console

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %5p - %m%n

# Report File.

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=$ {dd.apphome}/data/log/report.log
log4j.appender.R.DatePattern='.'yyyy-MM-dd
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %5p - %m%n

# Trace File.

log4j.appender.T=org.apache.log4j.DailyRollingFileAppender
log4j.appender.T.File=$ {dd.apphome}/data/log/trace.log
log4j.appender.T.DatePattern='.'yyyy-MM-dd
log4j.appender.T.layout=org.apache.log4j.PatternLayout
log4j.appender.T.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %5p - %m%n

public String stripHTML(String data) {
                                int si;
                                int ei;
                                boolean done = false;
                                                    
                                while (done == false) {
                                    si = data.indexOf('<');
                                    ei = data.indexOf('>');
                                    if ((si != -1) && (ei != -1)) {
                                        String fPart = data.substring(0, si);
                                        String lPart = data.substring(ei + 1);
                                        data = fPart + lPart;
                                    } else {
                                        done = true;
                                    }
                                }
                                return (data);
                            }	
                            public String xmlSafe(String value, boolean removeHTML) {
                                if (removeHTML == true) {
                                    value = stripHTML(value);
                                }
                                value = value.replace('"', ' ');
                                value = value.replace('>', ' ');
                                value = value.replace('<', ' ');
                                value = value.replaceAll("&", "and");
                                return (value);
                            }
<?xml version="1.0" encoding ="UTF-8"?> 
                            <AVBScript>
                            recognition of a single utterance
                            <command name="rec" type="asr">
                            <item value="dog blue"/>
                            </command>
                            recognition with a confidence
                            <command name="rec" type="asr">
                            <item value="dog blue" confidence=".7"/>
                            </command>
                            N-best recognition with 2 values
                            <command name="rec" type="asr">
                            <item value="dog blue"/>
                            <item value="fog blue"/>
                            </command>
                            N-best recognition with 2 values and confidence
                            <command name="rec" type="asr">
                            <item value="dog blue" conficence=".7"/>
                            <item value="fog blue" conficence=".4"/>
                            </command>
                            DTMF recognition
                            <command name="rec" type="dtmf" value="1" />
                            Recognition error nomatch
                            <command name="rec" type="err" value="nomatch" />
                            Recognition error noinput
                            <command name="rec" type="err" value="noinput" />
                            Caller hungup
                            <command name="tel" type="hangup"/>
                            Transfer with various results
                            <command name="tel type="err" value="trans_noanswer"/>
                            <command name="tel type="err" value="trans_busy"/>
                            <command name="tel type="err" value="trans_netbusy"/>
                            <command name="tel type="err" value="trans_fardiscon"/>
                            <command name="tel type="err" value="trans_netdiscon"/>
                            <command name="tel type="err" value="trans_maxdiscon"/>
                            Record with various results, max -> max record time exceeded, done -> normal completion
                            <command name="record" type="max"/>
                            <command name="record" type="done"/>
                            <command name="record" type="err" value="45" />
                            <command name="record" type="dtmf" value="1" />
                            <command name="quit" type="" value="" />
                            </AVBScript>

The code below can be copied into a method, to access the value of a project variable. The code also demonstrates how to add the value of the variable to a collection.
Add the below? import? statements in the file
import com.avaya.sce.runtimecommon.VariableName;
import com.avaya.sce.runtimecommon.IVariable;
import com.avaya.sce.runtimecommon.IVariableField;
import com.avaya.sce.runtime.SimpleCollection;
import com.avaya.sce.runtimecommon.IComplexVariable;
import com.avaya.sce.runtime.ComplexCollection;
code snippet

VariableName varName = new VariableName(Enter project variable name);	
                            IVariable var = mySession.getVariable(varName.getVarName());
                            if (var.isSimpleVariable()) 
                            {
                                IVariableField varField = var.getSimpleVariable();
                                                        
                                Adding the variable to a collection	 
                                SimpleCollection scoll = new SimpleCollection(varField, Enter simple variable name);
                                var.setCollection(scoll);
                            } 
                            else 
                            {
                                IComplexVariable complexVar = var.getComplexVariable();
                                                            
                                Adding the variable to a collection
                                    ComplexCollection ccoll = new ComplexCollection(complexVar, Enter complex	variable name);
                                var.setCollection(ccoll);
                            }		
                                                        
                            Add the line below in a method to access a session variable
                                                        
                            IVariableField field = 
                            mySession.getVariableField(IProjectVariables.SESSION, IProjectVariables.session variable);