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.
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:
If automatic update feature cannot be used to update to the latest version, then following steps can be followed to update manually:
Yes. Select "Password" option in Window -> Preferences -> Orchestration Designer.
This issue can be resolved by re-generating the project.
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:
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.
Only Speech Synthesis Markup Language (SSML) can be used to control sequence.
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.
No.
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:
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)
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 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:
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.
Please consult the Product Compatibility Matrix, available on the Avaya Support web site.
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:
Note:
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
Avaya does not license or support any custom VXML code running on Avaya Media Server.
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:
Ensure that the following steps are completed.
Figure 1: Accessing Dialog Designer properties
Figure 2: Editing an existing TServer connection
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:
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.
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.0This 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.
Figure 1: Selecting "Import" option
Figure 2: Select "Import Dialog Designer Reusable Module"
Note:
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.
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.
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:
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
There is no limitation on the number of inputs and outputs.
Complex object passing is not supported in DD 3.1.
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.
Yes. Following are the steps to replace the condition elements with if element for importing DD 3.x application into DD 4.0.
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:
For older releases of Dialog Designer the location of this control may be different, for example:
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:
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:
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
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:
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:
Note: If you intend to pass some variables to the Orchestration Designer application,
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>
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:
There are a few steps to configuring database access:
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:
The following JAR files need to be added in >TOMCAT_HOME</common/lib,
The following driver class has to be specified while creating a new data source in Eclipse:
"com.microsoft.sqlserver.jdbc.SQLServerDriver" (for SQL 2005).
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.0Use 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.0If 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.0Use 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.0If 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.
Configure the proxy settings in Windows -> Prefences ->Dialog Designer.
DD 3.1/3.0Check 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:
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:
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:
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.
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
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.0Eclipse 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:
Check the "scertcommons" and "scret" jars mapped to the correct location.
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.
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.
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.0No, 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:
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
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.0If using the simulator:
If using a real VOX:
If using the simulator:
If using a real VOX:
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:
tomcat\conf\Catalina\localhost
directory for a context file with
the application name in the form
appName.xml
.
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.
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:
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.0Save 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:
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:
After unzipping, move each file to its selected destination as shown below:
Thus, the < Connecto -> tag now should end with settings like those shown below:
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.
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:
To enable tracing in a run-time environment:
Desktop simulation Mode:
Avaya Interactive Response:
Voice Portal:
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.
Make sure that there is no log4j-x.x.x.jar in <application>/WEB-INF/lib and that the only copy of that jar file should be in <tomcat_home>/common/lib.
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)
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 .
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.
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.
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.0Place 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'.
No, SSML is currently not supported in Desktop mode.
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:
Figure 1: Changing runtime-SSML value
Figure 2: Enabling SSML generation
There is no recommended way to do this.
DD 3.1It 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:
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.
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:
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.
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).
Orchestration Designer 6.0 introduced new security and privacy features.
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.
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.
Yes. Refer to Appendix D of this FAQ for the details.
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.
The following error message can be generated for four different reasons:
Figure 1: WSDL error message box
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
log4j.rootLogger=error, stdout
# Console
# Report File.
# Trace File.
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>
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);