- DevConnect eBook: Developing Exceptional Multi-Modal Customer Experiences
Sample Applications & Tutorials
- Auto Attendant
- Call Flow Elements
- Call TAS
- Calling Card
- Click To Create Conference Sample Application
- Converse Step
- CTI Connector
- Deploying Speech and Call Control Applications
- Designing an MS SQL Database Connector
- Developing a Multilingual Speech Application
- Developing CCXML Applications
- Developing Telephony Web Service Applications
- IC Connector
- Insurance Services
- Outbound Call Blast
- Pizza Express
- SMS Web Service
- Stock Quote
- Telephony Web Service
- Using Nuance OpenSpeech DialogModules
- Using the Runtime API
- Using Web Services
- On-line Training Courses
- Development Tools & Configurations
- Compliance Testing
About Speech, Call Control and TextXML Applications
Orchestration Designer includes a Java-based tool used to create speech, call control and message applications that comply with the VoiceXML (VXML). Call Control XML (CCXML) and TextXML specifications, respectively, plus data only and HTML5 applications. The applications primarily provide automated experience solutions (also known as "self service" solutions) but can also act as the front-end to assisted experience solutions (e.g. "Experience Manager First" contact center solutions). In addition, Orchestration Designer enables data to be shared between platforms so that customers can easily switch from automated to assisted service and vice versa. Speech applications can be deployed on Avaya Experience Portal, Media Processing Server or Interactive Response platforms; call control and other applications can be deployed on Experience Portal.
Orchestration Designer Development Environment
Orchestration Designer comprises plug-ins to the Eclipse integrated development environment, providing an intuitive drag-and-drop environment for the development and maintenance of speech, call control and message applications. Developers can select, configure, and link application templates and build reusable modules to design new automated services and workflows.
Orchestration Designer provides the following interfaces that can used to create sophisticated speech and call control applications:
VoiceXML is an XML standard for specifying Interactive Voice Response (IVR) dialogs between a caller and a self service application. VoiceXML documents are interpreted by a voice browser. VoiceXML is used to create audio dialogs that feature synthesized speech, digitized audio, recognition of spoken and DTMF key input, recording of spoken input, telephony, and mixed initiative conversations.
Call Control XML
CCXML is an XML standard that adds telephony support to VoiceXML. CCXML informs the voice browser how to handle the telephony control of the voice channel, providing finer grained control in caller application development. Combining CCXML with VoiceXML capabilities enables applications to perform voice dialog tasks that VoiceXML alone cannot do.
The Orchestration Designer CCXML interpreter supports the following CCXML elements:
|<accept>||This element accepts an incoming call. The execution of <accept> element causes the underlying platform to signal the telephony system to connect the specified connection to the CCXML platform.|
|A <createcall> element instructs the platform to allocate a connection and attempts to place an outgoing call to a specified address. The CCXML interpreter receives an asynchronous event when the call attempt is completed.
A CCXML document instructs the platform to disconnect a connection by using <disconnect>. The underlying platform sends the appropriate protocol messages to perform disconnect, and send an asynchronous event to the CCXML document when the disconnect operation completes.
|A <join> element is used to connect the audio of two "endpoints" in a CCXML script. An <unjoin> element is used to disconnect two audio endpoints which were previously connected with a <join> element.|
|<dialogstart>||A <dialogstart> element is used to start a dialog (for example, VXML) and associate the dialog with a connection or conference.|
|<redirect>||A <redirect> element causes the underlying platform to signal the telephony system to send the call to a specified destination. The use of <redirect> is only valid when a call is in the ALERTING and CONNECTED states.|
|<send>||A ><send> element 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.|
(Dialog Designer Release 5.0 and later)
|This element spawns a new CCXML session from the current session. The newly created session is independent of the current session and these sessions are not related. Existing connections from the current CCXML session cannot be moved to the new session.|
(Dialog Designer Release 5.0 and later)
|This element permits sending and receiving events between an external interface and a CCXML page via http.|
Refer to Avaya Orchestration Designer help documentation for a complete list of supported CCXML elements.
TextXML is an XML standard that enables message applications to conduct two-way SMS and email conversations with users.
Orchestration Designer API
The Orchestration Designer API provides functionality that can be overridden by writing custom code using standard Java API calls. The API permits adding custom code as follows:
- Using Java API
Java code has to be added in designated API functions. The Orchestration Designer API supports adding custom Java code in the following areas:
- Dynamic grammars
- Setting the language for multi-lingual applications
- Accessing back-end connectors/API's that are not integrated into Avaya Dialog Designers GUI (for example: LDAP)
- Dynamic prompts
- Dynamically enabling/disabling menu choices, links, grammars
- Custom markup generation.
Table 2 below displays a list of Orchestration Designer API methods that support addition of custom Java code
|markupLanguageGeneration()||Generate custom markup. (Only for Markup Language Servlet)|
|Affect the VXML generation by altering the runtime objects. Alter by enabling/disabling, or adding to. Method is invoked prior to ML generation.|
|requestbegin()||Add custom logic.|
|servletImplementation()||Implement a custom servlet.|
|initializeServlet()||Servlet setup before request is processed.|
- Servlet nodes - Java and VXML servlet nodes
Servlet nodes are available in the Orchestration Designer call flow palette. They can be used to customize the call flow. For example - code can be written in these servlet nodes for some business logic that the Orchestration Designer does not support natively.
Media Resource Control Protocol (MRCP)
Media Resource Control Protocol (MRCP) was developed jointly by Cisco Systems Inc, Nuance Communications, and Speechworks Inc. MRCP controls media service resources over a network, examples include:
- Speech synthesizers
- Voice recognition devices
- Signal generators
- Signal detectors
- Fax servers
MRCP is designed to work with streaming protocols like RTSP (Real Time Streaming Protocol) or SIP (Session Initiation Protocol), which help establish control connections to external media streaming devices, and media delivery mechanisms like RTP (Real Time Protocol).
MRCP is not a standard but it is published as RFC 4463 as input for further IETF development in this area.
Interactive Voice And Video Response (IVVR)
Orchestration Designer supports the capability to playback media including audio, video, images and text to the caller. The Interactive Voice and Video Response functionality is based on SMIL - Synchronized Multi Media Integration Language interface. Video integration uses SMIL 3.0 Tiny Profile.
The methods below can be customized to override default functionality:
|The hookGetMediaURL() method returns the URL of a media file.
The hookGetMediaType() method returns the media type. Override this method to dynamically vary a media type.
hookGetMediaType() should be used in unison with hookGetMediaURL() to indicate the type of media. The hookGetMediaURL() method will be invoked first and the result will be passed into hookGetMediaType() to determine type, if necessary.
|updatePrompt()||The updatePrompt() method allows access to prompt levels and manipulate prompt elements programmatically. Override this method to dynamically update prompt elements.|
The Web services interface enables Web service integration through a WSDL wizard that supports SOAP/XML remote procedure calls.
The SQL database wizard provides a simple interface to local or remote SQL databases, using the Java Database Connector (JDBC) architecture.