Avaya Media Processing Server VXML Browser User Guide

Size: px
Start display at page:

Download "Avaya Media Processing Server VXML Browser User Guide"

Transcription

1 Avaya Media Processing Server VXML Browser User Guide Release 4.1 NN Issue 1 November 2013

2 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is complete and accurate at the time of printing, Avaya assumes no liability for any errors. Avaya reserves the right to make changes and corrections to the information in this document without the obligation to notify any person or organization of such changes. Documentation disclaimer Documentation means information published by Avaya in varying mediums which may include product information, operating instructions and performance specifications that Avaya generally makes available to users of its products. Documentation does not include marketing materials. Avaya shall not be responsible for any modifications, additions, or deletions to the original published version of documentation unless such modifications, additions, or deletions were performed by Avaya. End User agrees to indemnify and hold harmless Avaya, Avaya's agents, servants and employees against all claims, lawsuits, demands and judgments arising out of, or in connection with, subsequent modifications, additions or deletions to this documentation, to the extent made by End User. Link disclaimer Avaya is not responsible for the contents or reliability of any linked websites referenced within this site or documentation provided by Avaya. Avaya is not responsible for the accuracy of any information, statement or content provided on these sites and does not necessarily endorse the products, services, or information described or offered within them. Avaya does not guarantee that these links will work all the time and has no control over the availability of the linked pages. Warranty Avaya provides a limited warranty on its hardware and Software ( Product(s) ). Refer to your sales agreement to establish the terms of the limited warranty. In addition, Avaya s standard warranty language, as well as information regarding support for this Product while under warranty is available to Avaya customers and other parties through the Avaya Support website: Please note that if you acquired the Product(s) from an authorized Avaya Channel Partner outside of the United States and Canada, the warranty is provided to you by said Avaya Channel Partner and not by Avaya. Software means computer programs in object code, provided by Avaya or an Avaya Channel Partner, whether as stand-alone products or preinstalled on hardware products, and any upgrades, updates, bug fixes, or modified versions. Licenses THE SOFTWARE LICENSE TERMS AVAILABLE ON THE AVAYA WEBSITE, ARE APPLICABLE TO ANYONE WHO DOWNLOADS, USES AND/OR INSTALLS AVAYA SOFTWARE, PURCHASED FROM AVAYA INC., ANY AVAYA AFFILIATE, OR AN AUTHORIZED AVAYA CHANNEL PARTNER (AS APPLICABLE) UNDER A COMMERCIAL AGREEMENT WITH AVAYA OR AN AUTHORIZED AVAYA CHANNEL PARTNER. UNLESS OTHERWISE AGREED TO BY AVAYA IN WRITING, AVAYA DOES NOT EXTEND THIS LICENSE IF THE SOFTWARE WAS OBTAINED FROM ANYONE OTHER THAN AVAYA, AN AVAYA AFFILIATE OR AN AVAYA AUTHORIZED AVAYA CHANNEL PARTNER; AVAYA RESERVES THE RIGHT TO TAKE LEGAL ACTION AGAINST YOU AND ANYONE ELSE USING OR SELLING THE SOFTWARE WITHOUT A LICENSE. BY INSTALLING, DOWNLOADING OR USING THE SOFTWARE, OR AUTHORIZING OTHERS TO DO SO, YOU, ON BEHALF OF YOURSELF AND THE ENTITY FOR WHOM YOU ARE INSTALLING, DOWNLOADING OR USING THE SOFTWARE (HEREINAFTER REFERRED TO INTERCHANGEABLY AS YOU AND END USER ), AGREE TO THESE TERMS AND CONDITIONS AND CREATE A BINDING CONTRACT BETWEEN YOU AND AVAYA INC. OR THE APPLICABLE AVAYA AFFILIATE ( AVAYA ). Copyright Except where expressly stated otherwise, no use should be made of materials on this site, the Documentation, Software, or hardware provided by Avaya. All content on this site, the documentation and the Product provided by Avaya including the selection, arrangement and design of the content is owned either by Avaya or its licensors and is protected by copyright and other intellectual property laws including the sui generis rights relating to the protection of databases. You may not modify, copy, reproduce, republish, upload, post, transmit or distribute in any way any content, in whole or in part, including any code and software unless expressly authorized by Avaya. Unauthorized reproduction, transmission, dissemination, storage, and or use without the express written consent of Avaya can be a criminal, as well as a civil offense under the applicable law. Third Party Components Third Party Components mean certain software programs or portions thereof included in the Software that may contain software (including open source software) distributed under third party agreements ( Third Party Components ), which contain terms regarding the rights to use certain portions of the Software ( Third Party Terms ). Information regarding distributed Linux OS source code (for those Products that have distributed Linux OS source code) and identifying the copyright holders of the Third Party Components and the Third Party Terms that apply is available in the Documentation or on Avaya s website at: support.avaya.com/copyright. You agree to the Third Party Terms for any such Third Party Components. Trademarks The trademarks, logos and service marks ( Marks ) displayed in this site, the Documentation and Product(s) provided by Avaya are the registered or unregistered Marks of Avaya, its affiliates, or other third parties. Users are not permitted to use such Marks without prior written consent from Avaya or such third party which may own the Mark. Nothing contained in this site, the Documentation and Product(s) should be construed as granting, by implication, estoppel, or otherwise, any license or right in and to the Marks without the express written permission of Avaya or the applicable third party. Avaya is a registered trademark of Avaya Inc. All non-avaya trademarks are the property of their respective owners. Linux is the registered trademark of Linus Torvalds in the U.S. and other countries. Downloading Documentation For the most current versions of Documentation, see the Avaya Support website: Contact Avaya Support See the Avaya Support website: for product notices and articles, or to report a problem with your Avaya product. For a list of support telephone numbers and contact addresses, go to the Avaya Support website: scroll to the bottom of the page, and select Contact Avaya Support. 2 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

3 Contents Chapter 1: VXML Overview... 9 Introduction... 9 VXML 2.1 features Environment Tags and elements Documents Applications Dialogs Forms Menu Properties Grammars Built-in grammars Application-defined grammars Active grammars Events Links Universal commands and grammars Predefined universal grammars Application-defined universal grammars Activating universal grammars Responding to application-specific universal grammars Procedural logic Variables Conditional logic Loop logic Audio output Scripts User interaction Flow of execution Using the data element to fetch XML Explicit transition Recognition-triggered transition Subdialogs Collecting input and playing prompts Barge-in Notification Recording user utterances while attempting recognition Specifying the media format of utterance recordings Speech technology Creating VXML applications Forms Form items Guard conditions Creating a multiform application Avaya Media Processing Server VXML Browser User Guide November

4 Gathering user input with field Flow control between forms items and documents Multiple document applications and scope Scope in VXML Declaring variables Setting a variable value Event handling Predefined events Application defined event handlers Events in subdialogs Throwing events Application-defined events Fetching and caching resources Requests and responses Using multiple caches Fundamentals of cache control Fetch policies Prefetching resources Prefetch cache details Fetch hints Prefetching restrictions Handling fetching delays Timeouts Background audio Queued prompts while fetching Controlling the use of cached resources Maximum age Maximum stale time Mimicking response headers Multiple resource handling Release resource Change resource Example Example Samples OpenSSL and VXMLI support Chapter 2: MPS VXML browser architecture Introduction Hardware architecture Software architecture Chapter 3: VXML Browser Installation and Configuration Software installation prerequisites Software Identification Update and Removal Licensing Installing MPS VXML browser on a Solaris Platform Speech Server configuration script vxml_oscar_setup.pl usage Avaya Media Processing Server VXML Browser User Guide November 2013

5 VXML configuration files SBclient.cfg configuration file Configuration parameters SSL Authentication and Certificates Overview Configuration options Possible SSL configurations Apache HTTPS Web Server Configuration OpenSSL How-To Resources Removal of TTS and LVR resources WVADS debugging Avaya defaults Universals Properties Vendor specific recognition properties gen.cfg configuration file vxmld.ausvr.cfg configuration file MPS Manager deployment Configuring a VXML application Managing a VXML application Chapter 4: VXML Developer Guide Introduction Session variables Session reference Property reference Resource fetching Character encodings Object tag reference Transfer Transfer properties Calling Party Number TR ATT Toll Free Transfer Connect Service TR Application Programming Courtesy Transfer TR Consult and Transfer Prompting Speech Synthesis Markup Language (SSML) MMF audio prompts Using Say-As with Text To Speech (TTS) Using Say-As for MMF audio MMF prompt support for Say-As types Grammars DTMF grammars DTMF terminating character Builtin grammar Boolean Avaya Media Processing Server VXML Browser User Guide November

6 Command Currency Date Digits Numbers Phone numbers Time Touchtone Customer-defined static grammars Creating a customer-defined static Nuance 9.x grammar Recording speech Alarms Alarm generation (com.avaya.ivr.alarm) Statistics Client side Update statistic counter (com.avaya.ivr.statincr) HTTP user agent VXML interpreter cache Solaris Windows Delay Call Progress Detection (com.avaya.ivr.cpd) Set Service Parameter (com.avaya.ivr.setsvcparam) Detecting TDD tones after a call is connected Sample Coding for TDD Chapter 5: Interoperability Introduction CCXML Dialog start Dialog terminate Dialog user event com.avaya.ivr.dialog.user.* MPS Developer Dialog start Dialog terminate Dialog disconnect Invoking MPS Developer from VXML Application offer (com.avaya.ivr.appoffer) Chapter 6: Languages Introduction Languages Speech Server configuration Changing the default Label used during allocation Language labels Language configuration for vendors other than Nuance Avaya MMF support for multiple languages MMF Audio for numset Number set (numset) vocabulary Avaya Media Processing Server VXML Browser User Guide November 2013

7 Inflection guide Chapter 7: Debugging and Troubleshooting Introduction VXML Interpreter V-Shell options status command example dbgifstatus all command example dbgifstatus 1 command example dbgifenable on and off command example chanstatus command example VXML application events and logging Call Start (event identifier = 0) Call End (event identifier = 1) log (event identifier = 2) VXML page logging VXMLI platform integration logging VXMLI low-level interpreter logging Errors Diagnostic Messages Utilities validatedoc httpreq Common Errors Insufficient disk space Speech Server fails to retrieve file HTTP response messages Status-Code and Reason-Phrase Response-Header fields Status-Code definitions Informational (1xx) Successful (2xx) Redirection (3xx) Client Error (4xx) Server Error (5xx) Chapter 8: Samples Introduction VoiceXMLDemo main.vxml call-flow diagram main.vxml code options.vxml call-flow diagram options.vxml code mmf.vxml call-flow diagram mmf.vxml code audio_server.vxml call-flow diagram audio_server.vxml code touch_tone.vxml call-flow diagram touch_tone.vxml code builtin.vxml call-flow diagram Avaya Media Processing Server VXML Browser User Guide November

8 builtin.vxml code inline_grammar.vxml call-flow diagram inline_grammar.vxml code mixed_initiative.vxml call-flow diagram mixed_initiative.vxml code record.vxml call-flow diagram record.vxml code fexit.vxml call-flow diagram fexit.vxml code CCXML dialogstart answer.ccxml account.vxml CCXML dialoguser dialoguser.ccxml dialoguser.vxml Chapter 9: Noncompliance and Unsupported Features Introduction List of features Standard session variables Fetching audio choice grammar mark menu meta prompt property record transfer vxml Index Avaya Media Processing Server VXML Browser User Guide November 2013

9 Chapter 1: VXML Overview This chapter covers: 1. Introduction 2. Speech technology 3. Creating VXML applications 4. Event handling 5. Fetching and caching resources 6. OpenSSL and VXMLI support Introduction VoiceXML (VXML) is the open standard markup language used for voice applications. It uses a Web infrastructure to create and deploy voice applications. MPS VXML Browser support for JavaScript adheres to ECMA-262, Edition 3. VXML is based on core HTML concepts. However, while HTML has a graphical Web browser at the front end with a display, a keyboard, and a mouse, VXML entails a voice browser with keyboard, audio inputs, and an audio output. The voice browser speech recognizer handles audio input. Audio output consists of both recordings and speech synthesized by the voice browser text-to-speech system. A voice browser usually runs on a specialized voice gateway node that connects to the Internet and to a public switched telephone network. The voice gateway can simultaneously support several thousand callers, and can be accessed by any one of the world's estimated phones. Note: The Media Processing Server (MPS) is also a voice browser. The following voice applications are best suited to VXML: Information Retrieval (IR) directory assistance electronic commerce Avaya Media Processing Server VXML Browser User Guide November

10 VXML Overview telephone services unified messaging Figure 1: Typical VXML setup VXML 2.1 features The following table lists the features that are available in VXML 2.1. Table 1: Supported VXML 2.1 features Element Purpose New or enhanced <data> <disconne ct> <grammar> Fetches arbitrary XML data from a document server. Disconnects a session. References a speech recognition or DTMF grammar. New <foreach> Iterates through an ECMAScript array. New <property > <script> Controls platform settings. References a document containing client-side ECMAScript. Enhanced Enhanced Enhanced Enhanced 10 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

11 Environment Important: Avaya recommends you consult the Voice Extensible Markup Language (VoiceXML) 2.1 specification for the latest VXML 2.1 support information. To access the Voice Extensible Markup Language (VoiceXML) 2.1 specification, go to Environment To support a telephone interface, the VXML interpreter runs in an execution environment that includes a telephony component, a text-to-speech (TTS) speech-synthesis component, and a speech-recognition component. The VXML interpreter interacts transparently with the following infrastructure components based on need: TTS is used to render text elements in output strings. The telephony component handles connection issues like picking up incoming calls, detecting a hang-up, and transferring calls. The speech-recognition component listens to a user's spoken input and interprets the words. Tags and elements VXML uses markup tags and plain text. A tag is a keyword enclosed by angle bracket (< and >). It contains attributes inside the angle brackets. Each attribute has a name and value, separated by an equal (=) sign with the value in quotation marks. Tags occur in pairs, with a start tag (<tag>) that corresponds to an end tag (</tag>). Other tags and text can appear between the start and end tags. All text between the start and end tags is called an element. If no tags or text exists between the start and end tags, a syntactic shorthand can be used. The closing angle bracket ( > ) of a of a start tag can be preceded by a slash ( / ). For example, instead of writing a value element as follow: <value expr="result"></value> You can use the shorthand notation: <value expr="result" /> Avaya Media Processing Server VXML Browser User Guide November

12 VXML Overview Because the syntax specifies the end of each element, the VXML interpreter checks the entire document. If one element contains another element, the containing element is called the parent of the contained element, or the container. The contained element is called the child element of the containing element. Though both HTML and VXML use markup tags, the two languages use tags differently. While the markup tags in HTML describe how to render data, markup tags in XML (and therefore, VXML) describe the data itself. The XML interpreter or browser can display data any way possible. Documents A document is an executable VXML file. The VXML interpreter loads a document file to execute it. Every VXML document starts with header information that conforms to the XML standard: <?xml version="1.0"?> <!DOCTYPE vxml PUBLIC "-//W3C/DTD VoiceXML 2.0//EN" " <vxml version="2.0" xmlns=" These headers describe the language in which the document is written. The first tag indicates that the document is an XML document. This tag is essential. For a valid XML document, the first four letters of any XML file (including the VXML document) must be <?xml. Note: No characters, including whitespace characters such as space or newline, can precede these four characters in a VXML document. The second tag identifies the Document Type Definition (DTD) which is used to validate whether the contents represent well-formed VXML. A DTD describes the data format that appears in the XML document and defines valid tags by specifying the attributes each tag possesses, and the child and content tags each tag can contain. This tag is optional. The third tag identifies the VXML version used in the document and the designated namespace for VXML. This tag is mandatory. All content in a VXML document is within a <vxml> element - a <vxml> start tag and a </ vxml> end tag. In the previous example, the header information contains no encoding specification. In this case, UTF-8 is presumed. Optionally, you can add an encoding declaration to indicate which 12 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

13 Applications encoding scheme the document uses. For example, <?xml version='1.0' encoding='iso '?>. Applications A VXML application consists of one or more documents. Any multiple-document application has a single application root document. Each document in an application identifies the application root document with the application attribute of the <vxml> tag. When an interpreter executes a document, it loads that document. Any application root document specified is also loaded. Any document can use certain variables in the application. Such variables are said to have application scope. Dialogs An application produces an auditory output through a dialog, which typically asks for additional information. The user provides this information by speaking into or pressing keys on a telephone. VXML has two kinds of dialogs: forms and menus. Forms A user interacts with a form to fill in a number of fields. Every field has an associated variable, called the input-item variable or the input variable. Initially, the variable has the value of undefined. The field is filled in when the speech-recognition engine recognizes a valid response in the user utterance. The VXML <form> tag defines a form, and the <field> tag defines a field in the form. Menu A menu presents the user with a number of choices. It transitions to a different dialog based on the user's selection. The menu tag defines a <menu> and each choice consists of a <choice> element. The next attribute of a <choice> element specifies the destination dialog the interpreter transitions to when the user makes the choice. If a <form> or <menu> element is configured to be a transition destination, the id attribute for the destination dialog must specify a unique identifier. Avaya Media Processing Server VXML Browser User Guide November

14 VXML Overview Properties Use the <property> tag to customize the interpreter behavior. It specifies the property to assign, and its value. Various properties control how an interpreter behaves when prompting the user for input, recognizing speech or DTMF input, and fetching documents and other resources. Grammars The speech-recognition engine uses grammars to interpret user input. Each form field can have a grammar that specifies valid user responses. An entire form has a grammar that specifies how to fill multiple input variables from a single user utterance. Each menu choice has a grammar that specifies user responses that indicate how to fill input variables. A VXML application can use built-in grammars or application-defined grammars. Built-in grammars The following basic grammars are built into all standard VXML interpreters. Table 2: Built-in grammars Grammar boolean currency date digits number phone time Description Recognizes a positive or negative response Recognizes amounts of money, in dollars Recognizes a calendar date Recognizes a sequence of digits Recognizes a number Recognizes a telephone number following the North American Dialing Plan (with no extension) Recognizes a clock time A built-in grammar can be referenced in one of two ways: Using a standard, built-in grammar as the type attribute of a field element. An example of an Speech Recognition Grammar Specification (SRGS) grammar, in which the user is expected to say "red," "green," or "blue," is shown in the following example. <grammar xml:lang="en-us" version="1.0" mode="voice" type="application/srgs +xml" root="colors"> 14 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

15 Application-defined grammars <rule id="colors" scope="public"> <one-of> <item><tag>c_color='red';</tag>red</item> <item><tag>c_color='green';</tag>green</item> <item><tag>c_color='blue';</tag>blue</item> </one-of> </rule> </grammar> Using any built-in grammar in a <grammar> element by specifying the src attribute with a URI of the form. The following is an example of referencing an external SRGS grammar stored in the file date.grxml. <grammar type="application/srgs+xml" src=" date.grxml"/> Application-defined grammars An application-defined grammar can be specified in the following forms: XML form of the W3C Speech Recognition Grammar Format (SRGF) Nuance Grammar Specification Language (GSL) A simple grammar can be defined in the document. An inline grammar is defined in the grammar element itself. An external grammar is used to handle complex grammars, and is different from the VXML document file. Whether a grammar is inline or external is referenced by the src attribute of the grammar element. The grammar for a menu choice can be explicitly specified with a <grammar> child of the <choice> element. Alternatively, a grammar can be generated automatically from the choice text. If the accept attribute of the <menu> tag is configured to approximate, the user can say a subset of words in the choice text to select that choice. Active grammars Active grammars are used to interpret user input. A field grammar is active whenever the interpreter executes that field. A menu-choice grammar is active whenever a the interpreter executes the containing menu. A form grammar is active whenever the interpreter executes the form. Avaya Media Processing Server VXML Browser User Guide November

16 VXML Overview A form grammar is a collection of choice grammars in a menu that can optionally be made active at document or application scopes: A grammar with document scope is active whenever the interpreter executes any dialog in the document. A grammar with application scope is active whenever the interpreter executes any application in the document. If the interpreter executes one dialog and the user's input matches an active dialog for another grammar, control transfers to the latter dialog. If the grammar is in application scope, control transfers to a dialog in a different document. Note: You can automatically turn off grammars from document or application scopes within a field by setting the field modal attribute to true. Events The VXML interpreter can return a number of predefined events based on errors, disconnects, or user input. A no-input event is thrown if the user does not respond to a question. A no-match event is thrown when the user does not respond clearly - that is, when the user's utterance does not match any intelligible grammar. A help event is thrown when the user asks for help. An error event is thrown when any kind of error occurs. An application can define additional events and use a <throw> element to return an event of a specified kind. An application can catch an event and take the appropriate response in an event handler. A <catch> element is a general-purpose event handler; the event attribute specifies the kind of event it handles. Additional event-handling tags are syntactic shorthand: <noinput>, <nomatch>, <help> and <error>. Each shorthand tag catches one type of event, indicated by its name. When an event is thrown, the associated event handler, if it exists, starts. If the handler did not cause the application to terminate, execution resumes in the element that is executed when the event was thrown. 16 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

17 Links Links A link specifies a grammar that is independent of a specific dialog. A <link> element defines a link. Each <link> element contains a <grammar> element. A link grammar is active in the scope of the element that contains the link. A link can specify one of the two possible actions to take if the speech-recognition engine detects a grammar match: The link can cause a transition to a different location; in which case, the next attribute specifies the destination of the transition. Links, like menu choices, can cause transitions to other dialogs or documents. The link can throw an event; in which case, the expr attribute specifies the event to throw. After the event is handled, execution resumes with the element that is executed when the link grammar was matched. Universal commands and grammars A universal command can be used at any point in an interaction. It specifies user utterances that can be recognized as a universal command. Predefined universal grammars The following predefined universal grammars are available for all applications: help: The user asked for help. exit: The user asked to exit. cancel: The user asked to cancel the current prompt. If a predefined universal grammar is activated and a user utterance matches the grammar, an event of the same name is thrown. Application-defined universal grammars An application creates its own universal command by defining and enabling a new universal grammar and implementing its response to the command. Avaya Media Processing Server VXML Browser User Guide November

18 VXML Overview To define a universal grammar, the universal attribute is assigned in the <grammar> tag that defines the grammar for the command. The attribute value is a name that uniquely identifies the grammar among all universal grammars in the application. Activating universal grammars The application can activate some or all universal grammars by setting the universals property to the appropriate value. The default value is none. This means that all platform default universal command grammars are disabled. The value all activates all universal grammars. Individual grammars are activated by listing their names separated by spaces. For example: <property name="universals" value= "cancel exit help" /> Responding to application-specific universal grammars A <link> element containing a universal grammar implements the application response to the corresponding universal command. The application can respond appropriately to the command. Typically, the response is to throw an event or to transition to a different form. Procedural logic Procedural logic, also called executable content, can be used within a few basic elements - <block>, <filled> and event handlers. Within executable content, you can declare variables and assign values, you can used simple conditional and loop logic, you can present speech or audio in the form of an output to the user, or you can run JavaScript script. Variables Variables are declared by the <var> tag. Declarations can appear in a document, a form, or executable content. The <var> tag can optionally specify the variable initial value; if not, the variable is initialized to undefined. 18 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

19 Conditional logic A variable has the scope of the element that contains its declaration: A variable has document scope if it is declared in a <vxml> element or in a <block> or event handler that is the child of the <vxml> element. If the document is the application root document, then the variable has application scope. A variable has dialog scope if it is declared in a <form> element, or a <block> or <filled> element that is a child of the <form> element. A variable has anonymous scope, local to a field, if it is declared in an event handler or <filled> element that is a child of the <field> element. If a <var> element specifies a variable that is already in scope, it does not declare a new variable with the same name but assigns a value to the existing variable. If the <var> element has an expr attribute, the variable is assigned the specific value; otherwise, the variable is assigned the value undefined. Conditional logic An <if> element can be used to execute a block of code if a condition is satisfied. A sequence of <elseif> elements can be used within that element to execute alternative blocks of code if all previous conditions failed and the condition of the <elseif> element is satisfied. An <else> element can be used to execute an alternative block of code. Loop logic You can use a <foreach> element to execute content and repeat it through an ECMAScript array for each item in the array. The <foreach> element can appear within executable content and within <prompt> elements. Within executable content, except within a <prompt>, the <foreach> element can contain any elements of executable content. This introduces basic looping functionality by which executable content can be repeated for each element of an array. When <foreach> appears within a <prompt> element, it can contain only those elements valid within <enumerate>. This allows for sophisticated concatenation of prompts. Table 3: Attributes of the foreach element array An ECMAScript expression that must evaluate to an ECMAScript array. Note that the <foreach> element operates on a shallow copy of the array specified by the array attribute. Avaya Media Processing Server VXML Browser User Guide November

20 VXML Overview item The variable that stores each array item upon each iteration of the loop. A new variable is declared if it is not already defined within the parent's scope. Caution: You must specify both the array and item attributes; otherwise, an error.badfetch event is thrown. The iteration process starts from an index of 0 and increments by 1 to an index of array_name.length - 1, where array_name is the name of the shallow copied array operated on by the <foreach> element. For each index, a shallow copy or reference to the corresponding array element is assigned to the item variable. For example, <foreach> assignment is equivalent to item = array_name[index] in ECMAScript. The assigned value can be undefined for a sparse array. Important: VoiceXML 2.1 does not support break functionality to interrupt a <foreach> element. Using the foreach element to concatenate prompts The following example calls a user-defined function GetMovieList that returns an ECMAScript array. The array is assigned to the variable prompts. Upon entering the <field>, if a noinput or a nomatch event occurs, the VXML interpreter reprompts the user by executing the second <prompt>. The second <prompt> executes the <foreach> element by iterating through the ECMAScript array prompts and assigning each array element to the variable theprompt. Upon each iteration of the <foreach> element, the interpreter executes the contained <audio> and <break> elements. <?xml version="1.0" encoding="utf-8"?> <xmlns=" version="2.1" xmlns:xsi=" xsi:schemalocation=" /REC /vxml.xsd"> <script src="movies.js"/> <form id="pick_movie"> <!-- GetMovieList returns an array of objects with properties audio and tts. The size of the array is undetermined until runtime. --> <var name="prompts" expr="getmovielist()"/> <field name="movie"> <grammar type="application/srgs+xml" src="movie_names.grxml"/> 20 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

21 Loop logic <prompt>say the name of the movie you want. </prompt> <prompt count="2"> <audio src="prelist.wav">when you hear the name of the movie you want, just say it. </audio> <foreach item="theprompt" array="prompts"> <audio expr="theprompt.audio"> <value expr="theprompt.tts"/></audio> <break time="300ms"/> </vxml> <foreach/> <prompt/> <noinput> I'm sorry. I didn't hear you. <reprompt/> </noinput> <momatch> I'm sorry. I didn't get that. <reprompt/> </nomatch> </field> </form> The following is a contrived implementation of the user-defined GetMovieList function. function GetMovieList() { var movies = new Array(3); movies[0] = new Object(); movies[0].audio = "godfather.wav"; movies[0].tts = "the godfather"; movies[1] = new Object(); movies[1].audio = "high_fidelity.wav"; movies[1].tts = "high fidelity"; movies[2] = new Object(); movies[2].audio = "raiders.wav"; movies[2].tts = "raiders of the lost ark"; return movies; } When the interpreter queues the second <prompt>, it expands the <foreach> element in the previous example to the following. <audio src="godfather.wav">the godfather</audio> <break time="300ms"/> <audio src="high_fidelity.wav">high fidelity</audio> <break time="300ms"/> <audio src="raiders.wav">raiders of the lost ark</audio> <break time="300ms"/> Avaya Media Processing Server VXML Browser User Guide November

22 VXML Overview Audio output A <prompt> or <reprompt> element generates speech output; an <audio> element plays a prerecorded audio clip. The <value> tag evaluates an expression and produces spoken output. Youcan use the <foreach> element to concatenate <prompt> elements. For more information, see Loop logic on page 19. The following example shows a <prompt> that mixes synthesized speech and prerecorded audio. This example plays the prerecorded audio file intro.wav if the file exists. If the intro.wav file does not exist, the synthesized text "Welcome to Avaya voice portal" is spoken. <prompt> <audio src=" Welcome to Avaya voice portal. </audio> </prompt> The following example shows a <prompt> that uses the <value> tag. This example synthesizes the text "Todays date is" and the contents of the variable date, which contains the value 12/25/2003. The interpret-as causes the value to be spoken as a date. <var name="date" expr="'12/25/2003'"/> <prompt> Todays date is <say-as interpret-as="date"> <value expr="date"/> </say-as> </prompt> Prompts can appear in executable contents as well as in elements for collecting user input. Anywhere a <prompt> is valid, text is interpreted as a prompt even if the enclosing <prompt> and </prompt> tags are omitted. An input item and the <initial> item of a mixed-initiative form has a prompt counter that you use to play various prompts if the user revisits the item several times. For example, you can play shorter descriptions after the first or second time the user is prompted for the same information. The prompt counters are reset on each form invocation. Note: In some circumstances, numerical prompts or reprompts are spoken incorrectly because the system ignores whitespaces between digits. For example, the numbers 1 0 are spoken as ten, instead of one-zero. 22 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

23 Audio output Two options are available to avoid this problem: 1. Concantenate the strings and use value mode="recorded" and class="number:digits". The following example shows an output with strings concantenated and the value mode is recorded and the type is digits. <?xml version="1.0" encoding="iso "?> <vxml version="2.0" xmlns=" xmlns:xsi=" xsi:schemalocation=" xml:lang="en-gb"> <form id="tts"> <block> <var name="scorea" expr="1"/> <var name="scoreb" expr="0"/> <prompt> <value expr="scorea" mode="recorded" class="number:digits"/> <value expr="scoreb" mode="recorded" class="number:digits"/> </prompt> </block> </form> </vxml> 2. Use Say-As interpret-as=digits. The following example shows an output using Say-As interpret-as="digits". <?xml version="1.0" encoding="iso "?> <vxml version="2.0" xmlns=" xmlns:xsi=" xsi:schemalocation=" xml:lang="en-gb"> <form id="tts"> <block> <prompt> <value expr="scorea"/> <value expr="scoreb"/> <say-as interpret-as="digits"> <value expr="scorea"/> <value expr="scoreb"/> </say-as> </prompt> </block> </form> </vxml> Avaya Media Processing Server VXML Browser User Guide November

24 VXML Overview Scripts A <script> element executes a JavaScript script, which runs in the scope of the parent element. A <script> element can also define functions that can be called by JavaScript expressions in the same scope. VXML variables are equivalent to JavaScript variables and are part of the same namespace. These variables can be used in a script, just as variables defined in a <script> element can be used in VXML. Declaring a variable using a <var> element is the same as using a <var> statement in a <script> element. User interaction VXML supports both application-directed and mixed-initiative user interactions. In an application-directed (or directed) interaction, the application issues a prompt for the information it needs, and the user supplies the required information by answering the prompts. The application controls the interaction, and the user cannot volunteer information. For accuracy, the application does not understand volunteered information: If the application executes a form, the only active grammar is the one for the current form field. The only valid user input is the one that provides a value for the current field variable. If the application executes a menu, the only active grammars are those of the menu choices. The only valid user input is the one that selects a choice for the current menu. In a mixed-initiative interaction, both the user and the application participate in determining what the application does next. A single utterance from the user can provide input for multiple input variables within the form. In response to a prompt in one dialog, the user can provide an input that matches a grammar defined in another form. When this happens, the interpreter transitions to that dialog and fills the input variables from the user input. Similarly, the user can provide input that selects a choice from a different menu or that matches a link grammar, which causes a transition to the destination specified by that choice or link. If an application does not use links or grammars with document or application scope, it can still include mixed-initiative forms. A mixed-initiative form includes a form grammar and can include an <initial> element to control the initial interaction in the form. This element can request user input or perform other noninteractive initialization tasks. In response to a prompt from the <initial> element, the user can provide input that fills multiple input variables. If the form prompts for individual fields, any user input that matches the form grammar is valid even if that input does not fill the field for which the user was just prompted. 24 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

25 Flow of execution Note: Directed interactions generate fewer speech recognition errors, compared to mixed-initiative interactions. Flow of execution Within an XML document, execution flows in document order until a dialog (form or menu) is entered. Execution flows from the current dialog to a different dialog or document, based on either an explicit transition statement in the current dialog speech recognition in the current dialog that causes a transition to a different dialog In addition, execution can temporarily leave the current dialog to execute a subdialog and return to the current dialog when execution of a subdialog is complete. If the current dialog completes execution without transitioning to a different location, the application exits. In addition, an <exit> element explicitly ends the application. Using the data element to fetch XML The <data> element allows a VXML application to fetch arbitrary XML data from a document server without transitioning to a new VXML document. The XML data fetched by the <data> element is bound to ECMAScript through the named variable that exposes a read-only subset of the W3C Document Object Model. Table 4: Attributes of the data element src name srcexpr namelist The URI specifying the location of the XML data to retrieve. The name of the variable that exposes the DOM. This element is like src, except that the URI is dynamically determined by evaluating the given ECMAScript expression when the data needs to be fetched. If srcexpr cannot be evaluated, an error.semantic event is thrown. The list of variables to submit. By default, no variables are submitted. If a namelist is supplied, it can contain individual variable references which are submitted with the same qualification used in the namelist. Declared Avaya Media Processing Server VXML Browser User Guide November

26 VXML Overview VoiceXML and ECMAScript variables can be referenced. enctype fetchaudio datafetchhint fetchtimeout datamaxage datamaxstale hints The media encoding type of the submitted document. Supported media types are multipart/form-data, application/x-www-form-urlencoded and text/xml. This defaults to the fetchaudio property. This defaults to the datafetchhint property. This defaults to the fetchtimeout property. This defaults to the datamaxage property. This defaults to the datamaxstale property. Specifies additional headers to be included in the HTTP request generated. The value of this attribute should equate to an object that contains an array property of "headers". See the example below. Important: You must specify either the src or srcexpr attribute. If you do not, an error.badfetch event is thrown. If the content cannot be retrieved, the interpreter throws a fetch failures error. Like the <var> element, the <data> element can occur in executable content or as a child of <form> or <vxml>. In addition, it shares the same scoping rules as the <var> element. If a <data> element has the same name as a variable already declared in the same scope, the variable is assigned a reference to the DOM exposed by the <data> element. If use of the DOM causes a DOMException to be thrown, but the DOMException is not caught by an ECMAScript exception handler, the VXML interpreter throws an error.semantic exception. In the following examples, the XML document fetched by the <data> element is in the following format. <?xml version="1.0" encoding="utf-8"?> <quote xmlns=" </quote> <ticker>f</ticker> <name>ford Motor Company</name> <change>1.00</change> <last>30.00</last> The following example assigns the value of the last element to the ECMAScript variable price. 26 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

27 Using the data element to fetch XML <data name="quote" src="quote.xml"/> <script><![cdata[ var price = quote.documentelement.getelementsbytagnamens(" "last").item(0 ).firstchild.data; ]]></script> The data is fetched when the <data> element is executed according to the caching rules. Important: The ability to authenticate data access is an optional feature of the VoiceXML specification and is not available on MPS. The following example retrieves a stock quote in one dialog, caches the DOM in a variable at document scope, and uses the DOM to playback the quote in another dialog. <vxml xmlns=" version="2.1" xmlns:xsi=" xsi:schemalocation=" vxml.xsd"> <var name="quote"/> <var name="ticker" expr="'f'"/> <form id="get_quote"> <block> <data name="quote" srcexpr="' ticker=' + ticker"/> <assign name="document.quote" expr="quote.documentelement"/> <goto next="#play_quote"/> </block> </form> <form id="play_quote"> <script><![cdata[ // retrieve the value contained in the node t from the DOM exposed by d function GetData(d, ns, t, nodata) { try { return d.getelementsbytagnamens(ns,t).item(0).firstchild.data; } catch(e) { // the value could not be retrieved, so return this instead return nodata; } } ]]></script> <block> <!--retrieve the change in the stock's value --> <var name="change" expr="getdata(quote, ' Avaya Media Processing Server VXML Browser User Guide November

28 VXML Overview 'change', 0)"/> <var name="last" expr="getdata(quote, ' 'last', 0)"/> <var name="last_parts" expr="last.split('.')"/> <!--play the company name --> <audio expr="ticker + '.wav'"><value expr="getdata(quote, ' 'name', 'unknown')"/></audio> <!--play 'unchanged, 'up', or 'down' based on zero, positive, or negative change --> <if cond="change == 0"> <audio src="unchanged_at.wav"/> <else/> <if cond="change > 0"> <audio src="up.wav"/> <else/><!--negative --> <audio src="down.wav"/> </if> <audio src="by.wav"/> <!--play change in value as positive number --> <audio expr="math.abs(change) + '.wav'"> <value expr="math.abs(change)"/></audio> <audio src="to.wav"/> </if> <!--play the current price per share --> <audio expr="last_parts[0] + '.wav'"> <value expr="last_parts[0]"/></audio> <if cond="number(last_parts[1]) > 0"> <audio src="point.wav"/> <audio expr="last_parts[1] + '.wav'"> <value expr="last_parts[1]"/></audio> </if> </block> </form> </vxml> A VoiceXML application can customize the HTTP request that is sent when the VoiceXML data tag is used. Specifically a VoiceXML application can specify additional headers to be included in the HTTP request generated when the <data> tag is executed. The hints attribute of <data> is used for this purpose. The hints attribute is used to specify information used by the platform to customize the HTTP request. At this time the only customization supported is the setting of HTTP headers. The value of this attribute should equate to an object that contains an array property of "headers"; for instance: <script> var DataHints = new object( ) ; DataHints.headers = new object(); DataHints.headers['SOAPAction'] = '""'; DataHints.headers['From'] = 'Me@Avaya.com'; </script> VXML Interpreter does not verify the headers being set, however it does restrict the application from setting the following headers: cookie host user-agent 28 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

29 Explicit transition referer connection if-modified-since if-none-match accept expect content-length content-type Programming example, which sets the SOAPAction HTTP header: <script> var DataHints = new object( ) ; DataHints.headers = new Object(); DataHints.headers['SOAPAction'] = '""'; </ script> <data name="mydata" src="../myappdata_db.xml" hints="datahints"/> Explicit transition Explicit transitions to other dialogs or documents can be configured within an application, using the <goto> or <submit> tags. These transition elements can be placed inside <block> or <filled> elements or event handlers. Use the <goto> element to transition to another input item in the current form, to another dialog in the current document, or to another document. When the transition to a new location occurs, the local variables from the old form or document are lost. This happens even if the transition occurs to the same form. However, the values of local variables are not affected when you use <goto> to transition between items within a form. Use the <submit> tag to pass variables to another document using an HTTP GET or POST request. Because the next document is already specified using a URI, the document need not necessarily be a VXML document. Avaya Media Processing Server VXML Browser User Guide November

30 VXML Overview Recognition-triggered transition User input to a dialog can cause transition to a different location: If the speech-recognition engine matches the grammar of the menu <choice> element that has a next or expr attribute, the interpreter transitions to the destination specified by the attribute. If the speech recognition engine matches the grammar of a <link> element that has a next or expr attribute, the interpreter transitions to the destination specified by that attribute. If the speech-recognition engine matches a grammar with document or application scope that is defined in a different dialog, the interpreter transitions to that dialog. Subdialogs A subdialog is a reusable VXML dialog through which data can pass, and throw values acquired: The current dialog passes control to a subdialog with a <subdialog> element. It can pass data to the subdialog with <param> elements inside the <subdialog> element. A subdialog returns control to the calling dialog with the <return> element. It can pass values back using the namelist attribute of the <return> element. Collecting input and playing prompts At any moment, the VXML interpreter is either waiting for input in an input item, such as a field, or is transitioning between input items in response to input. Therefore, input can be a user utterance, a series of DTMF key presses, or an input-related event such as an invalid event. While waiting for input (also referred to as being in a recognition state), the interpreter listens for and attempts to match spoken utterances or DTMF key presses against the currently active grammars. When the interpreter listens for speech input, it constantly compares the incoming audio stream to all active grammars looking for a match. At some point after the user stops talking, the interpreter decides whether the input is valid. This timing is controlled by several properties, which are different both for spoken and DTMF grammars. 30 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

31 Collecting input and playing prompts While transitioning between input items, the interpreter ignores spoken utterances. The interpreter also queues asynchronously generated events that are not related directly to execution of the transition. During this transitional state, prompts and audio are queued to be played and program executable content is run. Prompts are played either at the start of the next waiting state or when the interpreter attempts to fetch a resource, such as another document. At the beginning of a waiting state, DTMF key presses can queue during the previous transitional state. By default, these key presses are not available for the waiting state to use for recognition. The following is an example of a menu. This example asks the user to select a sport (hockey, baseball, or football) and then transitions to a new document based on the selection. <form id="sport_menu"> <field name="select"> <prompt> Please select your favorite sport. Hockey. Baseball. Football. </prompt> <option dtmf="1" value="hockey">hockey</option> <option dtmf="2" value="baseball">baseball</option> <option dtmf="3" value="football">football</option> <filled> <goto expr="'#' + select"/> </filled> </field> </form> Note: In a list of options, you can specify synonyms for the same semantic value. If DTMF is also required, you must make the same DTMF assignment for each synonym with a particular value. The following is an example of a form. It defines an inline grammar and asks the user to select a color (red, green, or blue). If the user speaks one of these colors, then the <filled> element is executed, and the caller's selection is spoken back. <form id="custom_grammar"> <field name="c_color"> <grammar xml:lang="en-us" version="1.0" mode="voice" type="application/srgs+xml" root="colors"> <rule id="colors" scope="public"> <one-of> <item><tag>c_color='red';</tag>red</item> <item><tag>c_color='green';</tag>green</item> <item><tag>c_color='blue';</tag>blue</item> </one-of> </rule> </grammar> <prompt> Please say red, green, or blue. </prompt> <filled> <prompt> Avaya Media Processing Server VXML Browser User Guide November

32 VXML Overview </field> </form> You said <value expr="c_color$.utterance"/> </prompt> </filled> The following is an example of the <record> element, which records a user greeting and then plays it back to the caller. <form id="record"> <record name="greeting" beep="false" maxtime="10s" finalsilence="4000ms" dtmfterm="true" type="audio/x-wav"> <prompt> At the end of prompt, please say your greeting. </prompt> </record> <block> <prompt> Your greeting is <audio expr="greeting"/> </prompt> </block> </form> Barge-in Notification VoiceXML applications can determine if barge-in occurred or not during the last dialog. This information is available to the VoiceXML application as a shadow variable in the application.lastresult$ object as well as the form input item variable ( application.lastresult$.bargein, formitemvar$.bargein ). The following are some examples of how to access this information: <field name="field_touchtone"> <grammar src="builtin:dtmf/digits? minlength=1;maxlength=5"/> <prompt> Please enter one to five digits </prompt> <filled> <prompt> You entered <value expr="field_touchtone" class="digits" mode="recorded"/> </prompt> <log> Form Item bargein <value expr="field_touchtone$.bargein"></ value></log> 32 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

33 Recording user utterances while attempting recognition <log> lastresult bargein <value expr="application.lastresult $.bargein"></value></log> </filled> </field> In the event of a nomatch this bargein information will only be available in application.lastresult$.bargein. Recording user utterances while attempting recognition VoiceXML 2.1 extends the <field>, <initial>, <link>, and <menu> elements to allow the interpreter to conditionally enable recording while simultaneously gathering input from the user. To enable recording during recognition, set the value of the recordutterance property to true. If the recordutterance property is set to true in the current scope, three shadow variables ( recording, recordingsize, and recordingduration ) are set on the application.lastresult$ object whenever the application.lastresult$ object is assigned, such as when a <link> is matched. Table 5: Recordutterance-related shadow variables recording recordingsize recordingduratio n The variable that stores a reference to the recording, or undefined if no audio is collected. The size of the recording in bytes, or undefined if no audio is collected. The duration of the recording in milliseconds, or undefined if no audio is collected. When these properties are set on the application.lastresult$ object, if an input item is also filled and has its shadow variables assigned, the interpreter must also assign recording, recordingsize, and recordingduration shadow variables for these input items, the values of which equal the corresponding properties of the application.lastresult$ object. For example, in the case of <link> and <menu>, since no input item has its shadow variables set, the interpreter only sets the application.lastresult$ properties. Utterance recordings can be played back using the expr attribute on <audio>. Also, utterance recordings can be submitted to a document server via HTTP POST using the namelist attribute of the <submit>, <data>, or <subdialog> elements. Avaya Media Processing Server VXML Browser User Guide November

34 VXML Overview The enctype attribute must be set to multipart/form-data, and the method attribute must be set to post. In the following example, the dialog requests a city and state from the user. On the third recognition failure, the recording of the user's utterance is submitted to a document server. <vxml xmlns=" version="2.1" xmlns:xsi=" xsi:schemalocation=" vxml.xsd"> <form> <property name="recordutterance" value="true"/> <field name=city_state"> <prompt> Say a city and state. </prompt> <grammar type="application/srgs+xml" src="citystate.grxml"/> <nomatch> I'm sorry. I didn't get that. <reprompt/> </nomatch> <nomatch count="3"> <var name="the_recording" expr="application.lastresult $.recording"/> <submit method="post" enctype="multipart/form-data" next="upload.cgi" namelist="the_recording"/> </nomatch> </field> </form> </vxml> 34 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

35 Specifying the media format of utterance recordings Specifying the media format of utterance recordings To specify the media format of the resulting recording, set the recordutterancetype property. Supported audio formats are audio/x-wav for a WAV file. Speech technology Automatic Speech Recognition (ASR) systems have greatly advanced in recent years, because of improved algorithms and acoustic models, and the ability of computers to accommodate such systems. A simple ASR system that runs on a basic home or office computer with a good microphone can take free-form dictation, provided it is pretrained for the speaker's voice. However, over the telephone, with no speaker training, a speech recognition system needs a set of predefined speech grammars to recognize specific words and phrases. Speech synthesis, or Text-To-Speech (TTS) technology is also making progress. While older TTS systems generate speech completely from scratch, new systems use a technique called waveform concatenation, in which speech is generated from libraries of prerecorded waveforms. Note: VXML can even be used in environments that lack speech technology. An audio output can consist entirely of prerecorded prompts, and inputs can be provided from the keypad. Creating VXML applications VXML 2.0 is an Extensible Markup Language (XML) for the creation of ASR and Interactive Voice Response (IVR) applications. A VXML application consists of one or more text files called documents, which are represented by a.vxml file name extension. These files contain the various VXML instructions for the application. Avaya recommends that the first instruction that any interpreter encounters in a document is the XML version tag. The VXML tags must then enclose the remainder of the document instructions. Avaya Media Processing Server VXML Browser User Guide November

36 VXML Overview Forms Inside the <vxml> tag, a document is divided into discrete dialog elements called forms. Each form has a name and executes a portion of the dialog. For example, a form called mainmenu prompts the caller to select from a list of options and then recognizes the response. A form is denoted by the use of the <form> tag and can be specified by including the <id> attribute to specify the form name. The denotation helps if the form is referenced at another point in the application or by another application. Form items Form items are a group of elements that you can enclose directly under a <form> tag to perform various tasks required by the application. These items are divided into two major categories: Field items gather information from the caller to fill in variables (field item variables). They can contain prompts that guide the caller what to say, grammars that define the interpretation of what is said, and any event handlers. Control items enclose nonrecognition-based tasks. The following form items are available in the 2.0 specification. Table 6: Form items in VXML specification Field Items Form item type Form item Description <field> <record> <transfer> <object> <subdialog> Gathers input from a user through speech or DTMF recognition as defined by a grammar. Records an audio clip from the user. Transfers the user to another phone number. Invokes a platform-specific object that can gather user input and returns the result as an ECMAScript object. Performs a call to another dialog or document (similar 36 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

37 Guard conditions Form item type Form item Description Control Items <block> <initial> to a function call) and returns the result as an Script object. Encloses a sequence of statements for prompting and computation. Controls mixed-initiative interactions within a form. Guard conditions Each form item has an associated variable which, if not previously defined and assigned a value (for field items, this form is the same as the field item variable), is initially configured as undefined. The variable name can be defined with the name attribute, or it can remain nameless. A guard condition exists for each item, that tests if an item variable currently has a value. If it does, the execution of that particular form item is skipped; otherwise, execution proceeds normally. Creating a multiform application A multiform ASR or IVR application can be created to implement elements that control dialog flow, perform recognition tasks, and handle events. Gathering user input with field The field item encloses a <dialog> unit that <prompt>s a user for an input, recognizes the input according to the rules supplied by a <grammar>, and can <catch> events suited to that portion of the dialog. Flow control between forms items and documents An application with several interdependent functions entails the use of multiple forms within a document and the ability to transition between forms, as dictated by the dialog. The <goto> tag is used to transition between forms. Execution begins in the next portion of the dialog (in Avaya Media Processing Server VXML Browser User Guide November

38 VXML Overview another form), as dictated by the application logic. The Form Interpretation Algorithm (FIA) then begins execution at the top of the new form. Note: If control does not explicitly pass from the current form, execution stops on reaching the end of the form, and the application also terminates. The goto element Use this element to transition to another form item in a current form, to another form dialog in the current document, to another document, or to another form in another document. The syntax for this element is as follows: transitioning to a form item within a form <goto nextitem="some_form_items_var_name" /> transitioning to another form within the current document <goto next="#some_form_id" /> transitioning to another document <goto next=" some_doc.vxml" /> You can dynamically resolve the URI and URI fragments by using the expr attribute and an ECMAScript expression. Conditional statements Use the <if>, <else>, and <elseif> elements for conditional statements in VXML. Each element must use a cond attribute to specify an ECMAScript boolean condition. Multiple document applications and scope A multiple-document application consists of a root document and one or more supporting documents. Supporting documents are assigned to assign global behaviors specifically group various dialog tasks into distinct documents divide large applications into small loadable pieces to reduce the delays associated with loading large document files 38 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

39 Scope in VXML Scope in VXML Scope defines the precedence order for VXML tags depending on their placement within an application. Variables, links, grammars, and event handling use scope. For example, variables have five distinct levels of scope: session: Read-only variables that pertain to an entire user session. These variables are declared by the platform and cannot be configured within VXML documents. application: Declared by the <var> element as children of the root applications <vxml> tag (declared directly under this tag and no other). They exist while the root document is loaded and can be accessed at any level within any document in the application. document: Declared as children of a supporting document <vxml> tag. They are initialized upon loading the supporting document and can be accessed only within the document. dialog: Declared as children of <form> or <menu>, these variables are accessible only within that dialog element and are initialized when the form is visited. If declared inside of executable content, initialization occurs when the content is executed. Form and field item variables initialize as the form item is collected. (anonymous): Each <block>, <filled>, and <catch> element defines a new anonymous scope in which variables can be declared. Declaring variables Variables are declared using the <var> element, using the mandatory <name> attribute to specify the variable name. The variable can optionally be initialized, with a specific value, by using the expr attribute. Setting a variable value Use the <assign> element with the name and expr attributes to assign a variable to a new value. Note: When loading a supporting document, the interpreter also tends to load the root document. The interpreter can maintain application scope information such as variables, links, and events. Avaya Media Processing Server VXML Browser User Guide November

40 VXML Overview If you specify the document name in a URI for a <goto> transition, the interpreter unloads the current document and loads the new document (even if it is the same document). This reinitializes all variables of document or lesser scope. Event handling The VXML interpreter can detect many predefined events based on errors, telephone disconnects, or user requests. When an event is thrown, the associated event handler, if it exists, is invoked. Then execution resumes in the element that executed when the event was thrown. Predefined events The following standard events are predefined: exit : The user asked to exit. help : The user asked for help. noinput : The user did not provide timely input. nomatch : The user did not provide a meaningful input. cancel : The user asked to cancel the current prompt. connection.disconnect.hangup : The user hung up. connection.disconnect.transfer : The user's call was transferred. The following standard errors are predefined: error.badfetch : An error occurred while the interpreter was fetching the document or resources. error.noauthorization : The user is not authorized to perform the requested action. error.semantic : A run-time error occurred in the VXML code. error.connection.baddestination : The destination URI for an outbound telephone call was invalid. error.connection.noauthorization : An unauthorized outbound telephone call was attempted. error.connection.noresource : A telephone resource is unavailable. error.noresource : An audio input or output resource is unavailable. 40 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

41 Application defined event handlers error.unsupported.format : The requested resource format is not supported. error.unsupported. element : The requested element is not supported. Application defined event handlers Though a system provides default handlers for predefined events, you can override these handlers by providing custom event handlers in any element that can throw an event. The <catch>, <error>, <help>, <noinput>, and <nomatch> elements are event handlers. An element in which an event can be thrown also inherits event handlers defined in its ancestor elements. The method by which event handlers are inherited from ancestor elements is called as if by copy semantics in the VXML 2.0 specification. Think of the appropriate event handler as being copied into the scope where the event was thrown. Variable references are resolved relative to the scope of the element where the event was thrown. URL references are resolved relative to the document from which the event was thrown. Form items contain event counters that throw various responses if the same event is thrown multiple times. These event counters are reset each time the form is invoked. When an event occurs, the counter is used to select applicable event handlers: All handlers in the scope in which the event occurred and its containing scopes are considered. A handler for the event is eligible if its count attribute is less than or equal to the event counter. Those eligible handlers with the highest count are selected as applicable (more than one handler can have the same highest count ). The applicable handlers are ordered by scope, with the innermost handlers first. Within a scope, the applicable handlers are examined in the order in which they occur in the VXML document. The first applicable handler in is selected to handle the event. Event handlers are configured to catch all events with a specified prefix. However, the interpreter selects a handler based on count, scope, and document order only. A specific handler does not take precedence. Within an event handler, the _event variable contains the name of the event currently handled; the _message variable contains the message string that provides additional information about the event. If no message was supplied when the event was thrown, the _message variable is undefined. Avaya Media Processing Server VXML Browser User Guide November

42 VXML Overview Events in subdialogs A subdialog must catch any event that is thrown while the subdialog is executed. If no handler for the event is found in the subdialog execution context, a fatal error occurs causing the interpreter to exit. Throwing events An application can throw events as follows. Table 7: Throwing events Element <throw> <link> <choice> <return> Description Throws an event; it can occur within executable content; that is, in a block or <filled> element or an event handler. Can specify an event to be thrown, when the link grammar is matched. Can specify an event to be thrown when the choice grammar is matched. Can specify an event to be thrown, after control returns to the calling dialog With the VXML Interpreter, only six nested throws of any events can occur during form execution. A nested throw is when an event is thrown inside an event handler such as <catch>. A nested throw exits with the following message: Unhandled exception (suspected infinite loop). This behavior cannot be changed. VXML Interpreter also exits with the Unhandled exception (suspected infinite loop) message when event count is more than 12. The following example shows a failure if no speech resources are available. <catch event="error.noresource"> <log>iloop: err no rsrc </log> <prompt>error</prompt> 42 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

43 Throwing events </catch> <form> <block> <log>iloop start</log> <prompt>hello</prompt> <log>iloop end</log> </block> </form> </vxml> In the following example, no resource 13 is written to the log. <form> <field name="user_id" type="digits"> <prompt>say</prompt> <catch event="error.noresource" count="1"> <log>no resource 1</log> </catch> <catch event="error.noresource" count="2"> <log>no resource 2</log> </catch>... <catch event="error.noresource" count="12"> <log>no resource 12</log> Avaya Media Processing Server VXML Browser User Guide November

44 VXML Overview </catch> <catch event="error.noresource" count="13"> <log>no resource 13</log> </catch> </field> </form> Application-defined events An application can implicitly define additional events. If a tag that throws an event specifies an event other than a predefined events it implicitly defines the specified event. An application can use a <catch> element to catch and handle an application-defined event. Fetching and caching resources VXML documents have Web URIs that can be located on any Web server. In addition to VXML documents, a VXML application can use various kinds of files, including recorded audio data and speech and DTMF grammars. Some of this data can be obtained, for example, from streaming sources, servers responding to form requests, and CGI script output. All these resources can be accessed with standard Web URIs and located on any Web server. One difference between an HTML and VXML application is that while a standard Web browser runs locally, a VXML interpreter runs remotely, for example, at the VXML hosting site. On every call to a VXML application, all resources needed by the application need to be retrieved (or fetched) from a location other than where the VXML interpreter runs. Those resources can then be saved locally at the hosting site (cached) by the VXML interpreter for later use by the same or different application on another call. Requests and responses Any application that follows the HTTP 1.1 standard to fetch and cache sends a request to a server for a particular resource and then receives a response from that server. The request consists of a request type (typically a GET request for VXML requests), a URI that specifies 44 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

45 Using multiple caches which resource is wanted, and various headers that specify what is valid data in the returned resource. The response consists of a response code that contains information about the type of response, various headers with details about actions the resource can perform, and possibly a body that contain the actual resource. Because of the importance of caching to reduce the time involved in fetching resources, many request and response headers contain information about how old the resource is, how old the resource can be and still be fresh or unexpired, and potential restrictions caching the resource. For VXML applications, you directly configure response headers, but you must use VXML attributes and properties to configure request headers. The VXML interpreter translates the VXML attributes and properties into the appropriate HTTP request headers. Using multiple caches A standard Web browser designates disk space for caching Web pages. This means that the browser need not download a Web page each time it is visited. Correspondingly, at a VXML hosting site, a single VXML media gateway can simultaneously attend to multiple phone calls. All phone calls share the same VXML interpreter cache. So, resources downloaded for an application on one phone call can be available to the next phone call in that application or to a different application on the same media gateway. A VXML hosting site typically contains several VXML media gateways, to enable multiple and simultaneous call handling. A hosting site uses a proxy cache for VXML resources. Prior use of an application results in pages made available in the persistent state-wide proxy cache. When a new call arrives for that application, the call can use pages from this cache, rather than downloading the information again. The following diagram shows how a request undergoes various levels of caching, and finally to other Web servers. Avaya Media Processing Server VXML Browser User Guide November

46 VXML Overview Figure 2: World Wide Web When interacting with an application, a user typically calls a phone number that is associated with a specific site. That site starts a local copy of the VXML interpreter for the application and runs a copy of the application on one of its media servers, retrieving resources as required from wherever they reside. Note: Each phone call to a hosting site receives its own local copy of the VXML interpreter, which it does not share with other phone calls. However, the VXML interpreter cache is common to the entire VXML media gateway, not for a single phone call into that media gateway. An individual instance of a VXML interpreter (that is, a single phone call) does not have a separate cache. 46 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

47 Fundamentals of cache control At any time, several users can use various applications at the same hosting site. Each call uses a different set of resources, which can overlap. Assuming that the resources are fresh forever, the sequence is as follows: The first time a call accesses a particular resource, the interpreter generates a request, looks in the local VXML interpreter cache and then in the site-wide proxy cache, and finally retrieves the resource from the appropriate Web server. When the server sends back a successful response, the resource is first stored in the site-wide proxy cache, then passed to the local interpreter cache where it is stored before it is used by the running application. If the same resource is requested again in the same call, the interpreter receives it directly from the local interpreter cache without having to download it again from the proxy cache or the original server. When the call ends, the copy remains in the local VXML interpreter cache, for the VXML media gateway and in the site-wide proxy cache. If another call arrives at the same media gateway asking for the same resource, the call can use the copy in the local cache. If the call arrives at a different media gateway and asks for the same resource, the call does not have the resource in its local cache, but it can use the resource copy in the proxy cache. However, the following problems can occur: Sometimes, the server that provides information to the resource wants to control information caching and caching duration. Most resources are time-sensitive, for a specified time period. Some resources are valid only at the time requested. The VXML application wants to control when to use cached information. Fundamentals of cache control Caching can be controlled with the HTTP response and request headers, either on the responding server or from the requesting application. Control information can be specified in both places. The primary concepts for controlling caching are the freshness of a resource (whether it has expired) and the time interval during which a resource can be used, based on freshness or when it was originally fetched. Application control If a resource is controlled completely from the VXML application, the basic HTTP fetch sequence for a GET request is as follows: The first time the resource is requested, the request goes to the origin server or to the server on which the resource resides. The origin server returns a response. Avaya Media Processing Server VXML Browser User Guide November

48 VXML Overview The requester records the date and time of receipt (the fetch date), after which the resource is stored in the cache and then returned to the requesting application. The response always includes the date header, which indicates when the response was generated. The response can include a Last-modified header, which indicates when the resource was last modified on the server. The response can include an Etag header, which uniquely identifies the actual content of the resource. Assuming that the server has specified no expiration information, the resource expires immediately. By default, the next time the resource is requested, the interpreter must make a new request for the resource. The new request can include one or both of the If-Modified-Since header, configured to the fetch time of the cached resource, and the If-None-Match header, configured to the cached Etag. If both are sent, the If-None-Match header takes precedence; if neither is present, the request must be for a new copy of the resource. Etag and If-None-Match are both HTTP 1.1 features, and HTTP 1.1 servers provide precedence over the If-Modified-Since header. However, HTTP 1.0 servers use If-Modified-Since. The server uses these headers to determine whether a new copy of the resource needs to be sent in the body of the response or whether it must indicate that the requesting application can use the copy in its cache. If the response includes a new copy of the resource, the new copy and its headers replace the old copy in the cache. Even if the response does not include a new copy of the resource, the cached header information can change. Server control If a resource is primarily controlled from a server, the sequence is as follows: The first time the resource is requested, the request goes to the origin server as a GET request. The origin server returns a response. Unless the response header includes a Cache-control : no-cache or a Cache:control : no-store header, the response headers are cached for later use by the requester. The fetch date is recorded; the resource stored and returned to the requesting application. Note: In HTTP 1.1, the relevant header is not pragma, but Cache-control. HTTP 1.0 used pragma, but this directive is not understood by many servers. The response still includes the Date header and can include Last-modified or Etag headers. With server control, the response typically includes either an Expires header or a Cache-control : max-age header. If it contains both, the max-age header takes precedence over the Expires header. Expires indicates an exact date and time at which the resource expires. Cache-control : max-age indicates the number of seconds after the Date at which the resource expires. 48 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

49 Fetch policies The following conditions apply to server control: The next time the resource is requested, if the resource was cached, the interpreter uses the appropriate combination of Expires, max-age and Date headers to determine whether the resource expired. If the resource has not expired, the interpreter returns to the cached copy. If the resource has expired, the interpreter makes a new request for the resource. If available, the new request includes both the If-Modified-Since header, configured to the Last-Modified header of the original request, and the If-None- Match header, configured to the Etag of the original response. if both are sent, the If- None-Match header takes precedence; if neither is present, the request must be for a new copy of the resource. E-tag and If-None-Match are both HTTP 1.1 features. HTTP 1.1 servers provide precedence over the If-Modified-Since header. However, HTTP 1.0 servers use If-Modified-Since. The server uses these headers to determine if a new copy of the resource needs to be sent in the body of the response or whether it must indicate that the requesting application can use the copy in its cache. If the response includes a new copy of the resource, the new copy and its headers replace the old copy in the cache. Even if the response does not include a new copy of the resource, the cached header information can change. Fetch policies MPS VXML Browser applications can control various aspects of fetching and caching resources. The various attributes and properties that provide this control are collectively referred to as the application fetch policies. These policies govern the following aspects of fetching: Prefetching resources: The VXML interpreter can try to start fetching resources before they are actually needed (prefetch them), in an attempt to have them available when required. Handling fetching delays: Noticeable delays can occur between when a resource is requested and when it is available. Controlling the use of cached resources: These policies control request and response headers. Some fetch policies are configured by a single property for all types of resources. Other fetch policies can be configured separately for various types of resources. For these policies, a corresponding set of properties exist, one for each resource type: VXML Documents Recorded Audio Data Avaya Media Processing Server VXML Browser User Guide November

50 VXML Overview Grammar Files JavaScript Source Files SSML Files (Extension) XML Data Files (Extension) In addition, for all these fetch policies, the VXML tags support a corresponding attribute. All policies have default settings. An application can change any default setting with a <property> element that assigns a property corresponding to the policy to be changed. Any tag that requests a fetch operation includes attributes that can be configured to override the current policy settings during that one fetch operation: A property configured in the <vxml> element of a single-document application or the application root document of a multiple-document application assigns the policy for fetching resources from that document and the application, overriding the default setting. A property configured in the <vxml> element of a nonroot document of a multipledocument application assigns the policy for fetching resources from that document, overriding the setting for the application. A property configured in a <form> or <menu> element assigns the policy for fetching resources from that dialog, overriding the setting for the containing document. A property configured in the form item assigns the policy for fetching resources from that form item, overriding the setting for the containing form. An attribute configured in an element that fetches a resource assigns the policy for that fetch, overriding any other setting for that policy. Prefetching resources The interpreter can attempt to optimize dialog interpretation by prefetching the necessary files. The interpreter prefetches resources used by a document by starting to fetch them as soon as a document is loaded, rather than waiting until execution of the VXML tags that reference those resources. Prefetching can improve application performance by allowing it to fetch resources during free time while the user is speaking or listening to a dialog. The interpreter prefetches resources in the order in which they appear in the document. Consequently, those near the top of the document are retrieved first, unless delays at the server and delays due to heavy Internet traffic impede this activity. The interpreter prefetches several resources at once; a delay in retrieving one resource does not affect others. Note: Prefetching resources can generate many simultaneous requests on the server. 50 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

51 Prefetch cache details Prefetch cache details The VXML interpreter separately prefetches resources for each phone call and for each document executed within that phone call. While the interpreter executes a single VXML document on a single phone call, it queues resources that it can prefetch for that document. During execution of that document on that call, the interpreter prefetches as many resources as it can, and places them in the prefetch cache. During document execution, the VXML interpreter always checks the prefetch cache for a resource, before it initiates a new fetch operation. If the resource is in the prefetch cache, the interpreter uses it, even if the resource expires between when it was prefetched and when it is needed. When document execution stops (either by the call ending or by transitioning to another document in the same call), the interpreter flushes the prefetch queue and cache and starts again for the next document. Note: If several simultaneous calls occur to the same application, they can execute the same document at the same time. However, the resources for each phone call are in different prefetch caches. This means that in some cases, the interpreter fetches a new copy of the resource for one phone call, even though another call uses an old copy. Fetch hints The VXML interpreter ignores the value of certain properties. Fetch hints cannot be set because the VXML interpreter ignores the settings. The VXML interpreter also ignores manual settings of the following properties: audiofetchhint datafetchhint documentfetchhint fetchaudio fetchaudiodelay fetchaudiominimum grammarfetchhint Avaya Media Processing Server VXML Browser User Guide November

52 VXML Overview objectfetchhint scriptfetchhint The VXML interpreter manages the resources of these properties as if they are set to default values. audiofetchhint as set to safe documentfetchhint as set to safe grammarfetchhint as set to prefetch objectfetchhint as set to prefetch scriptfetchhint as set to prefetch Prefetching restrictions Prefetching is disabled when the URI or the other attributes of a tag are computed at run time. In these cases, even if the fetching hints specify prefetch, the interpreter cannot fetch the resource until the tag is executed and the exact values of the attributes are determined. Handling fetching delays Regardless of how well the various caching and fetching policies are set up, fetching resources from remote serves sometimes generates delays. Several fetch policies control how the interpreter handles these delays. Timeouts By default, the interpreter waits for up to 1 minute for a resource or document to be fetched. The application can control this behavior with the fetchtimeout attribute of a tag that fetches a resource. That attribute specifies how long an interpreter waits for a resource to arrive. If the resource does not arrive within the specified time, the interpreter throws an error.badfetch event. The value is a number that represents the time in milliseconds. This attribute is available for all tags that fetch resources, specifically <audio> <choice> <data> 52 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

53 Background audio <goto> <grammar> <link> <script> <subdialog> <submit> When this attribute is not specified, the interpreter uses the current value of the fetchtimeout property, whose default value is 60 seconds. Background audio By default, the user hears no audio output while the interpreter fetches a resource of any kind. The application can change this behavior with the fetchaudio policy, which specifies the URI of a background audio file to be played while the interpreter fetches a VXML document or an XML data file. Background audio can be helpful if the fetching operation causes a noticeable processing delay. Background audio is never played while the interpreter fetches grammar, audio, or script files. It is played only while the application fetches VXML documents or XML data files. The fetchaudio policy is controlled with the fetchaudio property and the fetchaudio attribute of the following tags: All tags that fetch VXML documents: <choice>, <goto>, <link>, <subdialog> and <submit>. Extension. The <data> tag, which fetches XML data files. If the fetchaudio attribute is not specified, the interpreter uses the current value of the fetchaudio property. This property has no default value. When a background audio file is specified for a fetch operation, the fetching of the background audio file itself is governed by the <audiofetchhint>, <audiomaxage>, <audiomaxstale>, and <fetchtimeout> properties that are in effect at the time of fetch. Note: The interpreter plays the background audio file only once during a fetch operation. It does not loop (repeat). Two properties determine the playing of the background audio clip: The interpreter does not start to play the audio file unless the time to fetch the resource exceeds a limit assigned by the fetchaudiodelay property. This can prevent the user Avaya Media Processing Server VXML Browser User Guide November

54 VXML Overview from hearing short audio clips when slight delays occur in fetching resources. The default value of this property is 0. The value of the fetchaudiominimum property is the minimum time to play the fetchaudio source, when started, even if the fetch operation completes during play. The default value of this property is 0; with this default, the interpreter interrupts the audio playback as soon as the resource is fetched and resumes normal processing. If fetchaudiominimum is large value, it prevents the user from hearing a short clip of background audio which is immediately cut off. Queued prompts while fetching By default in VXML 2.0, queued prompts are not played in the background during fetch execution. However, for those tags which fetch data and for which background audio can be played during the fetch ( <choice>, <goto>, <link>, <subdialog>, <submit>, and <data> ), if background audio is played, then queued prompts are still played during the fetch. Controlling the use of cached resources After a resource expires, it remains in the cache, although it is stale. If the same file is needed in the future, the interpreter performs one of the following: uses the stale cached file as it is revalidates the stale cached file with a Get-If-Modified request to the resource server; if the server replies that the resource has not been modified, the interpreter uses the cached copy refetches the resource unconditionally If the interpreter needs a resource and the cache contains a copy of the resource, three primary policies govern whether the interpreter uses the cached copy: the Maximum Age of the cached file the Stale Time of the cached file the caching policy for the file (VXML 1.0 only) These policies affect the headers sent when a resource is requested. In addition, caching information that is normally in the response header can be configured for a VXML or grammar document. 54 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

55 Maximum age Maximum age An application can specify that it uses a cached resource only if the time in the cache does not exceed a maximum age: If the cached copy is older than the maximum, it is refetched with a Get-If-Modified header. If the cached copy is within the maximum age and has not expired, it is used. If the cached copy is within the maximum age but expired, the relevant maximum-staletime-policy determines whether the interpreter uses the expired cached file. Any tag that can fetch a resource has a maxage attribute that specifies the maximum age (in seconds) of a cached resource. If this attribute is not configured, the interpreter uses the current value of the appropriate type maxage property, where type is a placeholder for the type of resource to be fetched. In VXML 1.0 applications, when no value is assigned for maxage, the caching attribute controls whether an unexpired cached file is used. Table 8: Maxage attribute Resource type Recorded audio data VXML documents SSML documents Grammar files JavaScript source files XML data files (Extension) SSML data (Extension) Tags that support the maxage attribute <audio> <choice> <goto> <link> <subdialog> <submit> <audio> <grammar> <script> <data> <audio> Property audiomaxage documentmaxage ssmlmaxage grammarmaxage scriptmaxage datamaxage ssmlmaxage No default is assigned for these properties, which means an unexpired cached file is used. Avaya Media Processing Server VXML Browser User Guide November

56 VXML Overview If a maximum-age property is configured to a non-zero value, it is ensured that The interpreter uses an unexpired resource whose age is less than or equal to the maximum age without performing a Get-If-Modified request to verify that the cached file is up to date. The interpreter fetches a fresh copy of a resource whose age is more than the maximum age, even if the cached file has not expired. Maximum stale time An application can specify that an expired file can be used. The maximum stale time for a file is the time by which its expiration time is exceeded. Within this allowable stale time, an expired cached file is used without refetching. If an expired cached file is needed after its maximum stale time is exceeded, the file is refetched. Any tag that can fetch a resource has a maxstale attribute that specifies the maximum time in seconds during which a stale (expired) cached resource can be used. If this attribute is not configured, the interpreter uses the current value of the appropriate type maxstale property, where type is a placeholder for the type of resource to be fetched. Table 9: Maximum stale time Resource time Tags that support the maxstale attribute Property Recorded audio data <audio> audiomaxstale 300s Default value (for property) VXML documents <choice> <goto> <link> <subdialog> <submit> documentmaxstale 0s SSML documents <audio> ssmlmaxstale 0s Grammar files <grammar> grammarmaxstale 0s JavaScript source files <script> scriptmaxstale 0s XML data files (Extension) <data> datamaxstale 0s SSML Data (Extension) <audio> ssmlmaxstale 300s 56 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

57 Mimicking response headers The maximum stale time is relevant either when the expired file is within the maximum age or when no maximum age is configured for the file. If the number of seconds since the cached file expired is less than or equal to the maximum stale time, the cached file is used. If the file is expired for longer than the maximum stale time, the interpreter performs a Get-If- Modified request to update the cached file, if necessary. Mimicking response headers Response headers assigned by the server often do not allow direct control. If not, then for VXML documents and XML grammar files the <meta> tag with is http-equiv attribute can be used to mimic the use of HTTP response headers. Note: This method is not recommended, because it can affect only the local VXML cache. The overhead of having the intermediate site-wide proxy caches interpret every file is prohibitive. Proxy caches do not interpret file contents, only headers. Consequently, proxy caches do not understand or implement the caching behavior specified in <meta> tags. Multiple resource handling VXML supports multiple resource use. Resources are held and released according to the parameters and values used. Table 10: Multiple resource parameters Resource Type Default value client.avaya.ivr.prompt.audioserver.resource.hold client.avaya.ivr.prompt.tts.resource.hold client.avaya.ivr.rec.recognition.resource.hold VXIInteger VXIInteger VXIInteger The parameter values are defined as follows: 0 [HOLD & RELEASE]--The resource is acquired when needed and released immediately after the dialog is complete. The resource is released after each dialog without exception. If the next dialog requires the resource, it is reacquired and released after that dialog. Avaya Media Processing Server VXML Browser User Guide November

58 VXML Overview Note: Do not use 0 [HOLD & RELEASE] for LVR. 1 [HOLD]--The resource is acquired at the beginning of the call and held for the duration of the call. 2 [HOLD UNTIL RELEASED]--The resource is acquired when needed and held onto for the duration of the call. For more information, see Configuration parameters on page 73. Note: The client.avaya.ivr.rec.recognition.resource.holdconfiguration parameter must not be 0. Dropping the Nuance, OSR, or IBM WVS resource during a call violates vendor licensing agreements. Release resource You can force the release of a resource that is currently acquired using object tags. The object tag uses the parameter restype to determine the type of resource to free. When this tag is executed, the resource you request is freed if it is currently acquired. A success status is returned if the resource is released. If the resource is not currently acquired, the request is silently ignored and a success status is still returned. The object tag is describes as follows: classid com.avaya.ivr.releaseresource The different restype parameter values are: lvr --recognition resource tts --synthesizer resource ias --Internet audio server resource The following is an example of freeing an lvr resource: <object name="rel" classid="com.avaya.ivr.releaseresource"> <Param name="restype" Value="lvr"/> </object> 58 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

59 Change resource Change resource Properties are available to allow the interpreter to select a different speech vendor for the synthesizer resource or recognition resource. You use these properties to allocate a resource other than the one configured in SBclient.cfg. The com.avaya.ivr.prompt.tts.useresource property changes the synthesizer resource to the attribute set for <value>. The <value> can be any one of the following: extts-r extts-mrcpvl The com.avaya.ivr.rec.recognition.useresource property changes the recognition resource to the attribute set for <value>. The <value> can be one of the following: lvr-s lvr-mrcpvl The following is an example of a property that is changing the TTS resource to extts-r. <property name="com.avaya.ivr.prompt.tts.useresource" value="extts-r"/> Note: The resource is changed to the resource specified by the useresource property while the property is in scope from VXML. If you set this property at the <form> level, execution of all dialogs in that form use this specified resource. If you specify useresource at the <field> level, only the specific dialog uses the specified resource. If you want your entire application to use the specified resource, then set an application level property (in the root document). For example, you are currently configured to use the lvr-s recognizer and the application transitions to a new page with one form. The form on this page contains the useresource property set to lvr-mrcpv1. The resource is changed to lvr-mrcpv1 when the form is entered. Once the application exits this form, the lvr-mrcpv1 resource is freed and the lvr-s resource is reacquired. Note: To support changing of vendors through the useresource property, the MPS running the VoiceXML interpreter must acquire the resource that is requested. This resource also must Avaya Media Processing Server VXML Browser User Guide November

60 VXML Overview be configured with the same label. If you want to switch resources often, ensure that all language configurations for each label are duplicated for each vendor. This is because when this property is in scope, the current resource is freed and the requested vendors resource is acquired with the same label. For example, you are currently configured for lvr-s and the application is currently using en-us as the locale the default label is set to DYNAM_001. When the useresource property is in scope and set to lvr-mrcpv1, the lvr-s resource is freed and the lvrmrcpv1 resource is acquired with the DYNAM_001 label. Note: If the resource you are switching to does not exist, the application receives an error.noresource when the application attempts to use the resource. Note: Inline Grammars, Universals, <menu> tags, and <option> tags are not supported with this feature. Example 1 An application uses DTMF in the beginning, but you can escalate the call to speech recognition. The company who owns the IVR does not want to pay for recognition resources licenses for all channels as 50% of their calls use DTMF for the entire call. Table 11: SBclient.cfg recommended settings client.avaya.ivr.prompt.audioserver.resource.hold VXIInteger 1 client.avaya.ivr.prompt.tts.resource.hold VXIInteger 0 client.avaya.ivr.rec.recognition.resource.hold VXIInteger 2 This configuration holds the audio server resource (wave files) for the entire call. The TTS resource is set to hold and release as most of the application is prerecorded. The recognition resource is set to hold until released. The recognition resource will only be acquired when speech recognition is needed by the application and the resource will be held for the duration of the call (unless it is explicitly freed). 60 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

61 Example 2 Example 2 An application uses recognition throughout the call. Some customers enter DTMF tones on the first prompt and then continue to use DTMF throughout the rest of the call. The company who owns the IVR does not want to pay for speech recognition licenses for all channels as 30% of their calls end up being DTMF only. Table 12: SBclient.cfg recommended settings client.avaya.ivr.prompt.audioserver.resource.hold VXIInteger 1 client.avaya.ivr.prompt.tts.resource.hold VXIInteger 0 client.avaya.ivr.rec.recognition.resource.hold VXIInteger 2 The application uses the releaseresource object tag to force free the lvr resource when a customer elects to use DTMF only. This configuration holds the audio server resource (wave files) for the entire call. The TTS resource is set to hold and release as most of the application is prerecorded. The recognition resource is set to hold until released. The recognition resource will only be acquired when speech recognition is needed by the application (which is at startup). If the caller elects to use DTMF rather then speech, the application uses the object tag to free the recognition resource. Samples The following is an example of TTS Resource Switching. <?xml version="1.0" encoding="utf-8"?> <!-- Document : multiple_tts.vxml Created on : August 2007 Author : cpassar --> <vxml version="2.0" xmlns=" xmlns:xsi=" xsi:schemalocation=" voicexml20/vxml.xsd"> Avaya Media Processing Server VXML Browser User Guide November

62 VXML Overview <property name="bargein" value="false"/> <form id="form_multipletts"> <property name= "com.avaya.ivr.prompt.tts.useresource "value="exttsmrcpv1"/> <block> Welcome to the multiple TTS resource test. This is a speechify prompt. #Form_Default"/> </block> </form> <form id="form_default"> <block> <prompt> This is a default prompt. </prompt> <goto next="#form_realspeak"/> </block> </form> <form id="form_realspeak"> <property name= "com.avaya.ivr.prompt.tts.useresource" value="exttsr"/> <block> <prompt> This is a real speak prompt. </prompt> <goto next="#form_default2"/> </block> </form> <form id="form_default2"> <block> <prompt> This is the second default. </prompt> <goto next="#form_originaltts"/> </block> 62 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

63 Samples </form> <form id="form_originaltts"> <block> Thank you, goodbye. </block> </form> </vxml> The following is an example of Recognition Vendor Switching. <?xml version="1.0" encoding="utf-8"?> <!-- Document : multiple_lvr.vxml Created on : August 2007 Author : cpassar --> <vxml version="2.0" xmlns=" xmlns:xsi=" xsi:schemalocation=" <property name="bargein" value="false"/> <form id="form_multiplerec"> <property name= "com.avaya.ivr.rec.recognition.useresource" value="lvr-s"/> <field name="field1" type="digits"> Welcome to the multiple recognition resource test. This is speechworks. </field> <block> <goto next="#form_default"/> </block> </form> <form id="form_default"> <field name="field1" type="digits"> </field> <prompt> This is a default prompt. </prompt> <block> <goto next="#form_nuance"/> </block> Avaya Media Processing Server VXML Browser User Guide November

64 VXML Overview </vxml> </form> <form id="form_nuance"> <property name= "com.avaya.ivr.rec.recognition.useresource" value="lvr-mrcpv1"/> <field name="field2" type="digits" </field> <prompt> This is nuance. </prompt> <block> <goto next="#form_default2"/> </block? </form> <form id="form_default2"> <field name="field3" type="digits"> </field> <prompt> This is the second default. </prompt> </form> <form id="form_exit"> </form> <block> Thank you, goodbye. </block> OpenSSL and VXMLI support The VXML Browser (VXMLI), which is the VXML Interpreter for the MPS platform, utilizes OpenSSL to support secure sockets layer (SSL v2/v3) and transport layer security (TLS v1) protocols, as well as a full-strength cryptography (including 64-bit, 128-bit encryption). For more information about OpenSSL, see The length of encryption used for communication is negotiated between the client and server during the SSL handshake process. Because VXMLI supports full-strength cryptography, the length of encryption is determined by server side, that is, the length of encryption used to generate a server certificate key. 64 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

65 OpenSSL and VXMLI support As long as the server is set up to support SSL, and VXMLI uses https protocol to access the server, the communication between VXMLI and server is secured. VXMLI also supports server authentication and message encryption. Avaya Media Processing Server VXML Browser User Guide November

66 VXML Overview 66 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

67 Chapter 2: MPS VXML browser architecture This chapter covers: 1. Introduction 2. Hardware architecture 3. Software architecture Introduction This chapter shows the Avaya MPS VXML Browser and provides both hardware and software architectures. Hardware architecture The following figure summarizes the architecture of MPS VXML Browser. Avaya Media Processing Server VXML Browser User Guide November

68 MPS VXML browser architecture Software architecture The following figure shows the MPS architecture with MPS VXML Browser components. The following processes are added: VXMLI: VXML Interpreter for the MPS platform. SLIC SRP Line Interpreter Control: Provides an interface so that VXML documents can be assigned to phone lines. One process exists for each line that is configured (through MPS Manager) to run a VXML document when a call is presented. The following figure shows the software architecture. 68 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

69 Chapter 3: VXML Browser Installation and Configuration Software installation prerequisites The vxml browser is installed as part of the MPS server software. Refer to the following MPS installation documents for installing and updating software on the MPS platform. For Text-To-Speech, Speech Recognition, and Audio Server functionality, your system requires Speech Servers. See Speech Server documentation for the installation, configuration, and use of these resources. Software Identification Update and Removal The perirev command is used to display the MPS release and patch information. Update of the MPS VXML Browser software is performed via the MPS patching mechanism. Refer to the following MPS document for patching and removal of MPS software. Installing Media Processing Server Software on the Solaris Platform Installing Media Processing Server Software on the Windows Platform Licensing Avaya software is licensed. The standard license server (PERIplic) must be accessible from the hosts on which the packages are installed. For additional information about licensing, see the preceding Avaya installation documents. Avaya Media Processing Server VXML Browser User Guide November

70 VXML Browser Installation and Configuration Installing MPS VXML browser on a Solaris Platform The following section describes a typical PERIvxml package installation on a Solaris platform which occurs as part of the MPS server software install.. The illustrations that follow are for descriptive purposes only; actual screens that appear during installation can differ slightly. 1. During install the following selections are presented. Select the TTS resource to use with VXML: 1) RealSpeak / Vocalizer 5.x API (extts-r) 2) MRCPv1 Loquendo (extts-mrcpv1) 3) MRCPv1 (extts-mrcpv1) 0) None Enter the number of the TTS resource to use: 1 2. Enter the number of the Text-To-Speech (TTS) resource to use. If a Text-To-Speech resource is not required or for DTMF only, select None. Select 1)RealSpeak (extts-r) to proceed. Select the LVR resource to use with VXML: 1) Nuance 9.x API (lvr-s) 2) MRCPv1 (lvr-mrcpv1) 0) None Enter the number of the LVR resource to use: 1 3. Enter the number of the LVR (voice recognition) resource to use. If a Speech Recognition resource is not required or for DTMF only, select None. If TTS or LVR resources are used with PERIvxml, the vxml_oscar_setup.pl script must be run on the MPS Application Processor to set up the Speech Server resources for VXML. For additional information, see Speech Server configuration script on page 70. Speech Server configuration script You must run the Speech Server configuration script ( $MPSHOME/bin/ vxml_oscar_setup.pl on Solaris or %MPSHOME%\bin\vxml_oscar_setup.pl on Windows) on the MPS Application Processor to set up Speech Server resources for VXML. 70 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

71 vxml_oscar_setup.pl usage Speech Server configuration script requires the following: The Speech Servers are currently running. The channel-specific configuration files, such as lvr-s00.cfg, are not used. If they are used, remove them after the installation. PERIdist is installed locally and on the Speech Servers. The Speech Servers PERIdist package is configured to allow the IP address of the MPS application processor from which the Speech Server configuration script is run. Note: Some previous Speech Server configurations for Nuance have the gen.cfg file in the common directory. This script requires that gen.cfg be in the oscarn/etc directory. vxml_oscar_setup.pl usage -h help -p password -d domain -clean -debug -p Override the default password for Speech Servers. Use this option if you changed the password on the Speech Server. -d Override the default domain for Speech Servers. Use this option if you changed the domain on the Speech Server. -clean Clean up log files. By default, vxml_oscar_setup.pl creates log files called vxml_oscar_update_compnum_time.log. This option removes these files. -debug Send debugging information to the console as the script executes. Note: If you change the default password or domain and you configure several Speech Servers, execute this script for each Speech Server using the -p and -d options. Warning: If you see the following message on the screen you issue the command to run the Speech Server configuration script ( vxml_oscar_setup.pl ), an unexpected error occurred while the prior instance of this script was processing. For example, if a power failure occurred during the last time you ran the script, the following message ( Oscar is locked ) appears this time. Avaya Media Processing Server VXML Browser User Guide November

72 VXML Browser Installation and Configuration Table 13: Oscar is locked error message Enter the number to the left of the oscar to change its value ('0' when done): 0 08/14/2006_12:32:07 08/14/2006_12:32:07 Processing bladepc243: /14/2006_12:32:11 Send failed bladepc243:/opt/vps/perivxml/oscar/ speechworks/dynam.grxml [BLADEPC243: ERROR: Mon Aug 14 12:39: Oscar is locked ] 08/14/2006_12:32:12 Send failed bladepc243:/opt/vps/perivxml/oscar/ speechworks/tmp/sys-lvr-speechworks.cfg [BLADEPC243: ERROR: Mon Aug 14 12:39: Oscar is locked ] 08/14/2006_12:32:12 Exiting... When a failure occurs while the script is processing, the following file is created. %WINROOT%\temp\zag.lock You must delete this file before you can run the Speech Server configuration script again. Change to the directory %WINROOT%\temp\. Delete the zag.lock file. Reissue the command to run the Speech Server configuration script vxml_oscar_setup.pl. VXML configuration files To properly function, Avaya VXML assigns various parameters by using the following configuration files. SBclient.cfg configuration file The SBclient.cfg configuration file, which contains Avaya-supported configuration parameters and VXML interpreter specific parameters, is in $PERIVXMLHOME/config/ SBclient.cfg. 72 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

73 Configuration parameters Configuration parameters Note: You must assign the following configuration parameters in accordance with vendor resource licensing agreements. See the vendor specific Speech Server resource guides for specific configuration details. After you change the SBclient.cfg configuration file, you must stop and restart VXMLI by entering the following commands at a vsh prompt: srp vxmli -stop srp vxmli -start The following table describes the VXML Interpreter configuration parameters. Table 14: VXML interpreter configuration parameters Property client.cache.cachedi r client.cache.cacheen tryexptimesec client.cache.cacheen trymaxsizemb client.cache.cachelo wwatermb client.cache.cacheto talsizemb client.jsi.contextsi zebytes client.jsi.maxbranch es Description Cache directory used by the VXML Interpreter. Maximum amount of time in seconds that any particular entry remains in the cache. Maximum size of any entry in the cache in MB. Low water mark of cache (the cache begins cleanup when this threshold is crossed). Maximum size of the cache directory in MB. Size, in bytes, of the SpiderMonkey ECMAScript engine execution context. One execution context exists for each channel. You can lower the value to constrain the memory used by ECMAScript blocks by the VXML application on each channel. The value can also be raised if out-of-memory errors occur from SBjsi for correctly behaving applications when sufficient RAM remains available in the system. Maximum number of SpiderMonkey ECMAScript engine executions (branches) for each ECMAScript evaluation that are used to interrupt infinite loops from (possibly malicious) scripts. Decrease this value to reduce the risk from rogue applications; Avaya Media Processing Server VXML Browser User Guide November

74 VXML Browser Installation and Configuration Property client.jsi.runtimesi zebytes client.log.<tagid> client.log.maxconten tsizekb client.log.maxconten tperchannel client.log.maxlogsiz emb client.inet.acceptco okies client.inet.proxyser ver client.inet.proxypor t client.avaya.ivr.pro mpt.audioserver.reso urce.hold Description increase this if maximum branches exceeded errors occur from SBjsi for correctly behaving applications. Size, in bytes, of the SpiderMonkey ECMAScript engine runtime environment. One run-time exists for each process. This can be adjusted downwards to constrain the memory used by ECMAScript blocks in VXML applications across all channels within the process. It can also be adjusted upwards if out-ofmemory errors occur from SBjsi for correctly behaving applications when there is still sufficient RAM available in the system. Series of configuration parameters that determine which diagnostic logging tags are enabled and disabled for the system; 0 disables the tag and 1 enables the tag. All tags that are not explicitly configured are disabled. Maximum size (in kilobytes) of each content file that is created. A content file is used to flexibly and efficiently log large blocks of data. For example, a content file is created for logged VXML pages (see VXML page logging on page 226) that are executed. The maximum number of content files that can be created for each channel. When this maximum is reached, then older content files are deleted. Maximum size of the log file, in megabytes. When this size is exceeded, the log file is rotated with the existing file moved to a backup name ( logfilename.bak ), and a new log file started. To enable support for the VXML browser cookies. Note: The VXML browser supports the Netscape cookie standard, and it supports sessions and other basic cookie functions. However, persistent cookies last only for the current session; they are purged when the call ends. The default value is 1, which indicates that cookies are enabled in VXML browser. Use VXIString proxysrv for VXML Interpreter. The proxy server port number is VXIInteger This parameter supports multiple resource use. Resources are held and released according to the value used. The value type is an Integer, and the default value is Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

75 Configuration parameters Property client.avaya.ivr.pro mpt.builtin.prefetch client.avaya.ivr.pro mpt.tts.resource.hol d The values used are: Description 0 [HOLD & RELEASE]--The resource is acquired when needed and released immediately after the dialog is complete. The resource is released after each dialog without exception. If the next dialog requires the resource, it is reacquired and released after that dialog. Note: Do not use 0 [HOLD & RELEASE] for LVR. 1 [HOLD]--The resource is acquired at the beginning of the call and held for the duration of the call. 2 [HOLD UNTIL RELEASED]--The resource is acquired when needed and held onto for the duration of the call. For more information, see Multiple resource handling on page 57. To enable alternate text for MMF prompts (enable=1) or to disable alternate text for MMF prompts (disable=0). Note: When this option is on, all MMF prompts are verified that they are loaded before they are spoken. The result is slightly affected performance. When this option is off, alternative text for MMF prompts are never spoken because MMF prompts are not verified. This option must be off only when the existence of the MMF prompts is known. The value type is an Integer, and the default value is 1. This parameter supports multiple resource use. Resources are held and released according to the value used. The value type is an Integer, and the default value is 1. The values used are: 0 [HOLD & RELEASE]--The resource is acquired when needed and released immediately after the dialog is complete. The resource is released after each dialog without exception. If the next dialog requires the resource, it is reacquired and released after that dialog. Note: Do not use 0 [HOLD & RELEASE] for LVR. 1 [HOLD]--The resource is acquired at the beginning of the call and held for the duration of the call. 2 [HOLD UNTIL RELEASED]--The resource is acquired when needed and held onto for the duration of the call. For more information, see Multiple resource handling on page 57. Avaya Media Processing Server VXML Browser User Guide November

76 VXML Browser Installation and Configuration Property client.avaya.ivr.pro mpt.tts.resource.nam e client.avaya.ivr.rec.recognition.resourc e.hold Description The resource name of the TTS resource that is used. The value type is a String, and the default value is no resource. When you use the default, any TTS request fails and terminates document processing. Valid values areare extts-r and extts-mrcpv1. Note: Applications that do not require a Text-to-Speech resource must comment out this line. This parameter supports multiple resource use. Resources are held and released according to the value used. The value type is an Integer, and the default value is 1. The values used are: 0 [HOLD & RELEASE]--The resource is acquired when needed and released immediately after the dialog is complete. The resource is released after each dialog without exception. If the next dialog requires the resource, it is reacquired and released after that dialog. Note: Do not use 0 [HOLD & RELEASE] for LVR. 1 [HOLD]--The resource is acquired at the beginning of the call and held for the duration of the call. 2 [HOLD UNTIL RELEASED]--The resource is acquired when needed and held onto for the duration of the call. For more information, see Multiple resource handling on page 57. client.avaya.ivr.rec.recognition.resourc e.name client.avaya.ivr.pro mpt.tts.resource.lan g.en-us Note: This configuration parameter must not be 0. Dropping the Nuance, OSR, or IBM WVS resource during a call violates vendor licensing agreements. The resource name of the lvr resource that is used. The value type is a String, and the default value is no resource. When you use the default, any LVR request is ignored. Valid values are lvr-s and lvr-mrcpv1. Note: Applications that do not require recognition resource must comment out this line. Determines the TTS resource label for U.S. English. 76 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

77 Configuration parameters Property client.avaya.ivr.pro mpt.tts.resource.lan g.default client.avaya.ivr.rec.recognition.resourc e.lang.en-us client.avaya.ivr.rec.recognition.resourc e.lang.default client.avaya.ivr.tel.numrings client.avaya.ivr.deb ug.debugging client.avaya.ivr.pro mpt.audioserver.reso urce.lang.default Description When the VXML interpreter starts, this assigns the default TTS language. Also, if an unsupported language is requested, this default is used. Determines the TTS resource label for U.S. English. When the VXML interpreter starts, this assigns the default speech recognition resource. Also, if an unsupported language is requested, this default is used. Assigns the number of rings that must be detected before the VXML interpreter answers the phone. The value type is an Integer, and the default value is 0 (pickup immediately, no rings). The WVADS debugger attaches to the voice process. The value type is an Integer, and the default type is 0 (no debugging). A value of 1 enables debugging. When the VXML interpreter starts, this assigns the default label. Also, if an unsupported language is requested, this default is used. client.avaya.ivr.pro mpt.audioserver.reso urce.hold client.avaya.ivr.pro mpt.builtin.prefetch This parameter supports multiple resource use. Resources are held and released according to the value used. The value type is an Integer, and the default value is 1. The values used are: 0 [HOLD & RELEASE]--The resource is acquired when needed and released immediately after the dialog is complete. The resource is released after each dialog without exception. If the next dialog requires the resource, it is reacquired and released after that dialog. Note: Do not use 0 [HOLD & RELEASE] for LVR. 1 [HOLD]--The resource is acquired at the beginning of the call and held for the duration of the call. 2 [HOLD UNTIL RELEASED]--The resource is acquired when needed and held onto for the duration of the call. For more information, see Multiple resource handling on page 57. To enable alternate text for MMF prompts (enable=1) or to disable alternate text for MMF prompts (disable=0). Avaya Media Processing Server VXML Browser User Guide November

78 VXML Browser Installation and Configuration client.avaya.ivr.pro mpt.tts.resource.hol d client.avaya.ivr.pro mpt.tts.resource.nam e client.avaya.ivr.rec.recognition.resourc e.hold Note: When this option is on, all MMF prompts are verified that they are loaded before they are spoken. The result is slightly affected performance. When this option is off, alternative text for MMF prompts are never spoken because MMF prompts are not verified. This option must be off only when the existence of the MMF prompts is known. The value type is an Integer, and the default value is 1. This parameter supports multiple resource use. Resources are held and released according to the value used. The value type is an Integer, and the default value is 1. The values used are: 0 [HOLD & RELEASE]--The resource is acquired when needed and released immediately after the dialog is complete. The resource is released after each dialog without exception. If the next dialog requires the resource, it is reacquired and released after that dialog. Note: Do not use 0 [HOLD & RELEASE] for LVR. 1 [HOLD]--The resource is acquired at the beginning of the call and held for the duration of the call. 2 [HOLD UNTIL RELEASED]--The resource is acquired when needed and held onto for the duration of the call. For more information, see Multiple resource handling on page 57. The resource name of the TTS resource that is used. The value type is a String, and the default value is no resource. When you use the default, any TTS request fails and terminates document processing. Valid values are extts-r and extts-mrcpv1. Note: Applications that do not require a Text-to-Speech resource must comment out this line. This parameter supports multiple resource use. Resources are held and released according to the value used. The value type is an Integer, and the default value is 1. The values used are: 0 [HOLD & RELEASE]--The resource is acquired when needed and released immediately after the dialog is complete. The resource is released after each dialog without exception. If the next dialog requires the resource, it is reacquired and released after that dialog. 78 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

79 Configuration parameters Note: Do not use 0 [HOLD & RELEASE] for LVR. 1 [HOLD]--The resource is acquired at the beginning of the call and held for the duration of the call. 2 [HOLD UNTIL RELEASED]--The resource is acquired when needed and held onto for the duration of the call. For more information, see Multiple resource handling on page 57. client.avaya.ivr.rec.recognition.resourc e.name client.avaya.ivr.pro mpt.tts.resource.lan g.en-us client.avaya.ivr.pro mpt.tts.resource.lan g.default client.avaya.ivr.rec.recognition.resourc e.lang.en-us client.avaya.ivr.rec.recognition.resourc e.lang.default client.avaya.ivr.tel.numrings client.avaya.ivr.deb ug.debugging Note: This configuration parameter must not be 0. Dropping the Nuance, OSR, or IBM WVS resource during a call violates vendor licensing agreements. The resource name of the lvr resource that is used. The value type is a String, and the default value is no resource. When you use the default, any LVR request is ignored. Valid values are lvr-s and lvr-mrcpv1. Note: Applications that do not require recognition resource must comment out this line. Determines the TTS resource label for U.S. English. When the VXML interpreter starts, this assigns the default TTS language. Also, if an unsupported language is requested, this default is used. Determines the TTS resource label for U.S. English. When the VXML interpreter starts, this assigns the default speech recognition resource. Also, if an unsupported language is requested, this default is used. Assigns the number of rings that must be detected before the VXML interpreter answers the phone. The value type is an Integer, and the default value is 0 (pickup immediately, no rings). The WVADS debugger attaches to the voice process. The value type is an Integer, and the default type is 0 (no debugging). A value of 1 enables debugging. Avaya Media Processing Server VXML Browser User Guide November

80 VXML Browser Installation and Configuration client.avaya.ivr.pro mpt.tts.resource.ext ts-r.tts-version client.avaya.ivr.pro mpt.tts.resource.ext ts-mrcpv1.ssml- Version client.avaya.ivr.pro mpt.audioserver.reso urce.lang.default client.vxi.defaultsu RI If Vocalizer 5.x is being used as the extts-r resource, this option must be un-commented and set as below. Example: client.avaya.ivr.prompt.tts.resource.extts-r.tts- Version VXIString 5 If Loquendo 7.x is being used as the extts-mrcpv1 resource, the option must be un-commented or set as below. Example: client.avaya.ivr.prompt.tts.resource.exttsmrcpv1.ssml-version VXIString 2002 When the VXML interpreter starts, this assigns the default label. Also, if an unsupported language is requested, this default is used. URI to the VXML interpreter platform defaults document. Use the platform defaults document to assign system defaults such as the default language, default prompts, behavior for uncaught VXML exceptions, and default VXML property values. A copy of the default Avaya VXML configuration file VxmliDefaults.xml is in $MPSHOME/PERIvxml/ config/vxmlidefaults.xml. Note: The system is currently configured to use the prerecorded prompts in the MMF vxml-defaults. client.avaya.ivr.rec.recognition.resourc e.allowvendorparams client.avaya.ivr.exi t.result.encoding com.speechworks.inet.url.encoding Note: When this parameter is modified to speak a TTS prompt and the interpreter cannot allocate a TTS resource, then the caller hears nothing on failure. Avaya recommends that you use prerecorded prompts. Use vendor specific recognition properties. (See Vendor specific recognition properties on page 106.) To use vendor-specific recognition properties, set the value to 1. The default is 0 (false). Sets the encoding of AVS result (<exit>tag) Possible Values: UTF-8 ISO VXML_TAG_VALUE (Use encoding from the corresponding attribute of <vxml> tag). If this option is not specified or commented out "ISO " is used by default. Example: client.avaya.ivr.exit.result.encoding VXIString ISO Sets the encoding for parameters in HTTP requests (<submit>, <goto>,<data>,<subdialog>,<script> tags). Possible Values: 80 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

81 Configuration parameters UTF-8 ISO VXML_TAG_VALUE (Use encoding from the corresponding attribute of <vxml> tag). If this option is not specified or commented out "UTF-8" is used by default. Example: com.speechworks.inet.url.encoding VXIString UTF-8 client.inet.closecon nections Configuration file has parameter value one (1) which configures vxmli to close TCP connection at the end of call. Change parameter value to zero (0) to disable TCP connection closure at the end of call. When client.inet.closeconnections is absent or commented out, the TCP connection closure is disabled also. It is preferable to set this option to one (1). client.inet.closessl Sessions client.log.diagtag client.log.diagtag VXIInteger 1 client.inet.ssl.requ ire client.inet.ssl.cert ificate Setting parameter value to one (1) forces vxmli to close SSL sessions at the end of the call. A new SSL session will be initialized for each new call. This option is effective when "client.inet.closeconnections" is set to one (1) too. Comment out this option or change parameter value to zero (0) to disable SSL session closure at the end of the call (old behavior). The SSL session will be reused on the next call. Each line has its own independent SSL session cache. Prints SSL session ID. A value of "1" enables print. A value of 0 disables print. Default is 0. Example: client.log.diagtag.3009 VXIInteger 1 It can also be set on runtime: vsh{} vxmli enosbdiag 3009 Nov 26 21:04: SBinetSSLsocket::connect SSL Session ID: BD521A74 Prints TCP port number. A value of "1" enables print. A value of 0 disables print. Default is 0. Example: client.log.diagtag.3011 VXIInteger 1 It can be also set on runtime. vsh{} vxmli enosbdiag 3011 Nov 26 21:04: SWISocket::connect local TCP port = 1604 Restricts vxmli to use HTTPS protocol only. If this option set to 1, vxmli will throw error.badfetch when VXML app requests data using plain http protocol. If this option set 0 (zero), commented out or not present no restriction applied. Default value 0. Example: client.inet.ssl.require VXIInteger 1 Sets the filename that contains MPS AP X.509 certificate in PEM format. If certificate does not have private key, client.inet.ssl.privatekey option must be set properly. If this Avaya Media Processing Server VXML Browser User Guide November

82 VXML Browser Installation and Configuration option is commented out or not present, remote server will be unable to verify vxmli certificate. Example: client.inet.ssl.certificate VXIString $(MPSHOME)/ PERIvxml/ssl/vxmli.crt10 client.inet.ssl.priv atekey client.inet.ssl.pr ivatekeypassfile client.inet.ssl.cafi le client.inet.ssl.cadi r client.inet.ssl.veri fydepth VXIInteger client.inet.ssl.enab lecrlcheck Sets the filename that contains private key in PEM format. If private key is encrypted, client.inet.ssl.privatekeypassfile must be set properly. Access to pkey.pem must be restricted by means of OS. Example: client.inet.ssl.privatekey VXIString $(MPSHOME)/ PERIvxml/ssl/pkey.pem Sets filename that contains private key password in text format. WARNING: For Security reason all access (including read rights) should be restricted to vxmli only by means of OS. Example: client.inet.ssl.privatekeypassfile VXIString $ (MPSHOME)/PERIvxml/password Sets the filename that contains CA certificates in PEM format. This file may contain many CA certificates with description. These certificates are loaded on vxmli startup. Example: client.inet.ssl.cafile VXIString $(MPSHOME)/ PERIvxml/ssl/ca.pem Sets path that contains CA certificates in PEM format one per file. Each file must be named as <hash>.<integer> where <hash> is certificate hash (one can get it using "openssl x509 -subject_hash -noout -in cert.crt" command) and <integer> is ordering number (0, 1, 2 etc) for certificates with the same hash (e.g. e54a0386.0, e54a0386.1). These certificates are loaded when vxmli needs to verify server s certificate and accessed by hashed name in order of growing extension integer value. If CAFile and CADir are set, both are used to search CA certificate. Example: client.inet.ssl.cadir VXIString $(MPSHOME)/ PERIvxml/ssl/CA/ Sets how deeply vxmli should verify before deciding that the https server does not have a valid certificate. The depth actually is the maximum number of intermediate certificate issuers, i.e. the number of CA certificates which are max allowed to be followed while verifying the client certificate. A depth of 0 (zero) means that self-signed certificates are accepted only, the default depth of 1 means the certificate can be self-signed or has to be signed by a CA which is directly known to vxmli (i.e. the CA's certificate is under CAFile or CADir), etc. Example: client.inet.ssl.verifydepth VXIInteger 1 Enables vxmli certificate revocation list (CRL) checking to validate if a received server s certificate has been revoked. The certificate revocation list (CRL) file must be placed into either the directory specified by client.inet.ssl.cadir option or 82 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

83 SSL Authentication and Certificates appended into the end of the file set by client.inet.ssl.cafile option. Default value is 0. Example: client.inet.ssl.enablecrlcheck VXIInteger 1 client.inet.ssl.crlc heckall client.fetch.abort Enables CRL checking for the entire certificate chain. A value of 1 specifies the entire certificate chain is checked by vxmli to determine if a received server s certificate has been revoked. A value of 0 (zero) specifies only the leaf certificate is checked. Default value is 0. Example: client.inet.ssl.crlcheckall VXIInteger 1 Allows a fetch to be aborted by vxmli when a call disconnect event arrives from network. For use in an application refer to the Property reference on page 116. A value of 1 will abort a fetch when a caller disconnect occurs. This behavior is not in conformance with the vxml specification, but it allows the application to clean up and be ready to handle the next incoming call. A 0 (zero) or not set will not abort a fetch on disconnect and the fetchtimeout will continue. Default is 0. Example: client.fetch.abort VXIInteger 1 SSL Authentication and Certificates This section describes MPS VoiceXML Browser SSL authentication connfiguration. The VoiceXML Browser acts as a client when connectinf to servers. It can be configured to enable client-side (vxmli provides its certificate to the server), server-side (server provides its certificate to vxmli) or mutual (both vxmli and remote server exchange certificates) authentication. This allows vxmli to use the encryption and identification features of HTTPS protocol. The benefits include: Vxmli can be used to connect to servers that restrict connection of unknown clients Vxmli can identify the server it is connected to and can abort connection to unsecure or unknown server or if it has had its certificate revoked. Vxmli and remote server can be configured to each other only. Avaya Media Processing Server VXML Browser User Guide November

84 VXML Browser Installation and Configuration Overview VoiceXML applications are configured and bound to lines of the MPS. The vxmli process contains the VoiceXML Interpreter (vxmli). The vxmli is responsible for detecting an incoming call from the call control manager (CCM), acquiring the initial VoiceXML document from the Web server, and answering the call and conducting the dialog. Vxmli acts as a client when accessing servers. It supports SSL connection and the use of certificates supporting client side, server side or mutual (both client and server) authentications. In client side authentication, vxmli connects to a server and during negotiation provides its certificate to the server. The server may accept/decline the connection. One set of options in the SBclient config file configures the certificate vxmli provides. The certificate is loaded on startup. In server side authentication, vxmli connects to a server and during negotiation receives the servers certificate. the server. Vxmli validates the certificate based on configuration. The configuration options for server side authentication specifies the certificates vxmli will use to verify a received certificate from a server and to what depth verification will be performed to. Also the certificate revocation list (CRL) checking to validate if a received server s certificate has not been revoked can be configured. Vxmli will load its root certificate on startup from disk. The configuration options in the SBclient.cfg file support certificates and authentication. When client side authentication is configured, vxmli will use one certificate (configured in SBclient.cfg) to identify itself to servers. When server side authentication is configured, vxmli will use the configured certificates to verify the received certificate from the server. The depth of checking can be configured. Optionally the use of a certificate revoke list (CRL) and whether all or just the leaf certificates are checked for revocation. Mutual authentication is configured by configuring vxmli client and server side authentication. Vxmli will load its own certificate and root certificate on startup from disk. When vxmli establishes connection with remote server (e.g. http server) it will receive remote server certificate over the network and verifies it using already loaded root certificate and performs certificate revoke list (CRL) checking. Once server is authenticated, vxmli will send its own certificate to the server and server verifies vxmli. Configuration for mutual authentication is 84 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

85 SSL Authentication and Certificates performed by setting both client and server side options. Vxmli will load its own certificate, root certificate, and CRL information on startup from disk. Note: Vxmli does not support contacting the 3rd party server (Certificate Authority) that created the certificate for http-server to validate certificate. It only supports local certificates that are self-signed certificates and 3rd-party signed certificates. Configuration options The following options in $MPSHOME\PERIvxml\config\SBclient.cfg are used to configure vxmlissl/https and authentication. The following configure debug behavior: client.log.diagtag.3001 VXIInteger 1 Prints SSL initial configuration and other Inet Channel logs. SSL configuration is printed on vxmli startup only. Nov 24 21:18: init SSL Require = yes (1) Nov 24 21:18: init SSL Client Certificate = C:\ssl \vxmli.crt Nov 24 21:18: init SSL Private key = C:\ssl\secure \vxmliseckey.pem Nov 24 21:18: init SSL Password file = C:\ssl\secure \password Nov 24 21:18: init SSL CA certificate = C:\ssl\ca \RootCA.pem Nov 24 21:18: init SSL CA dir = C:\ssl\ca\list\ Nov 24 21:18: init SSL verify depth = 3 client.log.diagtag.3009 VXIInteger 1 Prints SSL session ID. Can be set on runtime "vsh{} vxmli enosbdiag 3009" Nov 26 21:04: SBinetSSLsocket::connect SSL Session ID: BD521A74 client.log.diagtag.3011 VXIInteger 1 Prints TCP port number. This option can be set on runtime vsh{} vxmli enosbdiag 3011 Nov 26 21:04: SWISocket::connect local TCP port = 1604 The following configure connection and session behaviors: client.inet.closesslsessions VXIInteger 1 Vxmli will close SSL Sessions on the end of the call. Otherwise (if set to 0 or commented out) vxmli will try to reuse SSL session on the next call. If session cannot be reused new one is established. SSL Sessions are stored based on URL. Avaya Media Processing Server VXML Browser User Guide November

86 VXML Browser Installation and Configuration client.inet.closeconnections VXIInteger 1 Vxmli will close TCP/IP connection on the end of the call. Otherwise (if set to 0 or commented out) the port remains open and will be reused during the next call. If the server closes its side of connection, the port will be half-closed until vxmli tries to reuse this port (even on the next call) or close this port on the end of the call. client.inet.ssl.require VXIInteger 1 Restricts vxmli to use HTTPS protocol only. If this option set to 1, vxmli will throw error.badfetch when VXML app requests data using plain http protocol. If this option set 0 (zero), commented out or not present no restriction applied. Default value 0. The following configures the certificate vxmli provides to the server. client.inet.ssl.certificate VXIString $(MPSHOME)/PERIvxml/ssl/vxmli.crt Sets the filename that contains MPS AP X.509 certificate in PEM format. If certificate does not have private key, client.inet.ssl.privatekey option must be set properly. If this option is commented out or not present, remote server will be unable to verify vxmli certificate. client.inet.ssl.privatekey VXIString $(MPSHOME)/PERIvxml/ssl/pkey.pem Sets the filename that contains private key in PEM format. If private key is encrypted, client.inet.ssl.privatekeypassfile must be set properly. Access to pkey.pem must be restricted by means of OS. client.inet.ssl.privatekeypassfile VXIString $(MPSHOME)/PERIvxml/password Sets filename that contains private key password in text format. WARNING: For Security reason all access (including read rights) should be restricted to vxmli only by means of OS. The following configures vxmli verification of the received server certificates. client.inet.ssl.cafile VXIString $(MPSHOME)/PERIvxml/ssl/ca.pem Sets the filename that contains CA certificates in PEM format. This file may contain many CA certificates with description. These certificates are loaded on vxmli startup. client.inet.ssl.cadir VXIString $(MPSHOME)/PERIvxml/ssl/CA/ Sets path that contains CA certificates in PEM format one per file. Each file must be named as <hash>.<integer>, where <hash> is certificate hash (one can get it using "openssl x509 -subject_hash -noout -in cert.crt" command) and <integer> is ordering number (0, 1, 2 etc) for certificates with the same hash (e.g. e54a0386.0). These certificates are loaded when vxmli needs to verify server s certificate and accessed by hashed name in order of growing extension integer value. If CAFile and CADir are set, both are used to search CA certificate. client.inet.ssl.verifydepth VXIInteger 1 Sets how deeply vxmli should verify before deciding that the https server does not have a valid certificate. The depth actually is the maximum number of intermediate certificate issuers, i.e. the number of CA certificates which are max allowed to be followed while verifying the client certificate. A depth of 0 (zero) means that self-signed certificates are 86 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

87 SSL Authentication and Certificates accepted only, the default depth of 1 means the certificate can be self-signed or has to be signed by a CA which is directly known to vxmli (i.e. the CA's certificate is under CAFile or CADir), etc. client.inet.ssl.enablecrlcheck VXIInteger 1 Enables vxmli certificate revocation list (CRL) checking to validate if a received server s certificate has been revoked. The certificate revocation list (CRL) file must be placed into either the directory specified by client.inet.ssl.cadir option or appended into the end of the file set by client.inet.ssl.cafile option. Default value is 0. client.inet.ssl.crlcheckall VXIInteger 1 Enables CRL checking for the entire certificate chain. A value of 1 specifies the entire certificate chain is checked by vxmli to determine if a received server s certificate has been revoked. A value of 0 (zero) specifies only the leaf certificate is checked. Default value is 0. Possible SSL configurations Example (Windows): client.inet.ssl.require VXIInteger 1 client.inet.ssl.certificate VXIString C:\ssl\vxmli.crt client.inet.ssl.privatekey VXIString C:\ssl\secure\vxmliseckey.pem client.inet.ssl.privatekeypassfile VXIString C:\ssl\secure\password client.inet.ssl.cafile VXIString C:\ssl\ca\n102553ss.crt client.inet.ssl.cadir VXIString C:\ssl\ca\list\ client.inet.ssl.verifydepth VXIInteger 1 client.inet.ssl.enablecrlcheck VXIInteger 1 client.inet.ssl.crlcheckall VXIInteger 1 Example (Solaris): client.inet.ssl.require VXIInteger 1 client.inet.ssl.certificate VXIString $(MPSHOME)/PERIvxml/config/ssl/vxmli.crt client.inet.ssl.privatekey VXIString $(MPSHOME)/PERIvxml/config/ssl/secure/ vxmliseckey.pem client.inet.ssl.privatekeypassfile VXIString $(MPSHOME)/PERIvxml/config/ssl/secure/ password client.inet.ssl.cafile VXIString $(MPSHOME)/PERIvxml/config/ssl/CA/ca.pem client.inet.ssl.cadir VXIString $(MPSHOME)/PERIvxml/config/ssl/CA/ client.inet.ssl.verifydepth VXIInteger 1 client.inet.ssl.enablecrlcheck VXIInteger 1 client.inet.ssl.crlcheckall VXIInteger 1 How to setup vxmli to provide it s certificate to the remote web server Procedure 1. Create vxmli certificate. Avaya Media Processing Server VXML Browser User Guide November

88 VXML Browser Installation and Configuration 2. Set the following options in SBclient.cfg. See Configuration options on page 85. client.inet.ssl.certificate client.inet.ssl PrivateKey client.inet.ssl.privatekeypassfile 3. If needed, comment out all options related to verifying server's certificate. See How to setup vxmli to verify remote server s certificate on page Restart vxmli and verify that it is up. How to setup vxmli to verify remote server s certificate Procedure 1. Get server's and CA certificates (use server s certificate as CA certificate, if selfsigned server s certificate was created). 2. Set the following options in SBclient.cfg file. See Configuration options on page 85 client.inet.ssl.cafile client.inet.ssl.cadir client.inet.ssl.verifydepth client.inet.ssl.enablecrlcheck client.inet.ssl.crlcheckall 3. If needed, comment out all options related to vxmli's certificate. See How to setup vxmli to provide it s certificate to the remote web server on page Restart vxmli and verify that it is up. How to setup mutual authentication Procedure 1. Create vxmli and server's certificates. 2. Setup vxmli's certificate as shown in How to setup vxmli to provide it s certificate to the remote web server on page Setup CA certificate as shown in How to setup vxmli to verify remote server s certificate on page Configure web server to use CA and server's certificates. 88 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

89 SSL Authentication and Certificates How to setup mutual authentication using self-signed certificates Procedure 1. Create vxmli and servers self-signed certificates. 2. Set vxmli's certificate as shown in How to setup vxmli to provide it s certificate to the remote web server on page Use server's certificate as CA certificate in How to setup vxmli to verify remote server s certificate on page Set vxmli certificate as CA certificate on web server. Apache HTTPS Web Server Configuration For testing purpose, following are the steps to configure Apache Web Server for HTTPS. Install Apache HTTP server with openssl (e.g. httpd win32-x86- openssl-0.9.8o.msi) Uncomment the following line in httpd.conf Include conf/extra/httpd-ssl.conf Edit conf/extra/httpd-ssl.conf file Set server s certificate n crt: SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/ conf/ssl/n crt" Set certificate decrypted private key (use openssl.exe to decrypt. Refer to openssl howto) SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/ Apache2.2/conf/ssl/n102553key.pem" Set CA file or directory: SSLCACertificatePath "C:/Program Files/Apache Software Foundation/ Apache2.2/conf/ssl/CA" #SSLCACertificateFile "C:/Program Files/Apache Software Foundation/ Apache2.2/conf/ssl/vxmliss.crt Require or not client certificate Avaya Media Processing Server VXML Browser User Guide November

90 VXML Browser Installation and Configuration SSLVerifyClient require Set verify depth (0 self-signed, 1 singed by CA directly or self-signed, 2 three certificates in a chain(client-midca-rootca)) SSLVerifyDepth 2 OpenSSL How-To This section provides steps on how to create certificate using OpenSSL and how-to configure Apache and verify them using web browser. Creating Certificates Create certificates using openssl tool from Apache httpd distributive. Important: All certificates below are created on http server box. Copy "C:\Program Files\Apache Software Foundation\Apache2.2\conf\openssl.cnf" to "C: \Program Files\Apache Software Foundation\Apache2.2\bin\openssl.cnf" Open cmd window and cd to "C:\Program Files\Apache Software Foundation\Apache2.2\bin \" Edit the following sections in openssl.cnf: dir = C:\\myCA [ policy_match ] countryname = match stateorprovincename = match organizationname = optional organizationalunitname = optional commonname = supplied address = optional set unique_subject = no Create the following directories: C:\myCA C:\myCA\certs C:\myCA\crl C:\myCA\newcerts C:\myCA\private Create the following files: C:\myCA\index.txt C:\myCA\serial Edit C:\myCA\serial file. It should contain: Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

91 SSL Authentication and Certificates Choose how certificates will be generated: Two certificates signed by the 3rd Certificate Authority (CA) certificate Two self-signed certificates Two certificates signed by the 3rd Certificate Authority (CA) certificate Generate Certificate Authority (CA) certificate Create the CA key: openssl genrsa -out C:\myCA\private\cakey.pem 1024 C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl genrsa -out C: \myca\private\cakey.pem 1024 Loading 'screen' into random state - done Generating RSA private key, 1024 bit long modulus e is (0x10001) Create the CA certificate request: openssl req -new -config openssl.cnf -key C:\myCA\private\cakey.pem - out C:\myCA\myCA.csr C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl req -new -config openssl.cnf -key C:\myCA\private\cake y.pem -out C:\myCA\myCA.csr Loading 'screen' into random state - done You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank Country Name (2 letter code) [AU]: US State or Province Name (full name) [Some-State]: NY Locality Name (eg, city) []: Bohemia Organization Name (eg, company) [Internet Widgits Pty Ltd]: Avaya Organizational Unit Name (eg, section) []: MPS Common Name (eg, YOUR name) []: Pavel Address []:my @someserver.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:abc123 An optional company name []:. Self sign the CA certificate:: openssl x509 -req -days in C:\myCA\myCA.csr -out C:\myCA \cacert.pem -signkey C:\myCA\private\cakey.pem C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl x509 -req -days in C:\myCA\myCA.csr -out C:\myCA \cacert.pem -signkey C:\myCA\private\cakey.pem Loading 'screen' into random state - done Signature ok subject=/c=us/st=ny/l=bohemia/o=avaya/ou=mps/cn=pavel/ Avaya Media Processing Server VXML Browser User Guide November

92 VXML Browser Installation and Configuration Getting Private key Generate http server certificate: Important: Enter name exactly as you specified when installing Apache httpd server. (Password was: Enter PEM pass phrase: abcd1234) openssl req -config openssl.cnf -new -out n csr C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl req -config openssl.cnf -new -out n csr Loading 'screen' into random state - done Generating a 1024 bit RSA private key writing new private key to 'privkey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:NY Locality Name (eg, city) []:Bohemia Organization Name (eg, company) [Internet Widgits Pty Ltd]:myHost Organizational Unit Name (eg, section) []:web Common Name (eg, YOUR name) []:n avaya.com Address []::ename@avaya.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:abc123 An optional company name []:. Rename privkey.pem to n102081seckey.pem ren privkey.pem n102081seckey.pem C:\Program Files\Apache Software Foundation\Apache2.2\bin>ren privkey.pem n102081seckey.pem Remove random file for safety reasons: del.rnd C:\Program Files\Apache Software Foundation\Apache2.2\bin>del.rnd Remove password from the key (password was abcd1234) openssl rsa -in n102081seckey.pem -out n102081key.pem C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl rsa -in n102081seckey.pem -out n102081key.pem 92 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

93 SSL Authentication and Certificates Enter pass phrase for n102081seckey.pem: writing RSA key Sign server certificate with CA certificate openssl ca -days 365 -in n csr -config openssl.cnf -out C:\myCA \certs\n crt C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl ca -days 365 -in n csr -config openssl.cnf -out C:\myCA\certs\n crt Using configuration from openssl.cnf Loading 'screen' into random state - done Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: May 27 11:04: GMT Not After : May 27 11:04: GMT Subject: stateorprovincename = NY organizationname = myhost organizationalunitname = web commonname = n avaya.com address = ename@avaya.com X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: CF:D6:79:54:43:3C:28:E2:45:DA:7D:66:9D:29:3F:49:0B:C8:3F:92 X509v3 Authority Key Identifier: DirName:/C=US/ST=NY/L=Bohemia/O=Avaya/OU=MPS/CN=Pavel/ address=my @someserver.com serial:dc:35:7c:b2:12:69:91:b3 Certificate is to be certified until May 27 11:04: GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated Create and sign client certificate: openssl req -config openssl.cnf -new -out mpsap4-a.csr C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl req -config openssl.cnf -new -out mpsap4-a.csr Loading 'screen' into random state - done Generating a 1024 bit RSA private key writing new private key to 'privkey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, Avaya Media Processing Server VXML Browser User Guide November

94 VXML Browser Installation and Configuration If you enter '.', the field will be left blank Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:NY Locality Name (eg, city) []:Bohemia Organization Name (eg, company) [Internet Widgits Pty Ltd]:myAp Organizational Unit Name (eg, section) []:MPSAP Common Name (eg, YOUR name) []:mpsap4-a.avaya.com Address Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:abc123 An optional company name []: ren privkey.pem mpsap4-aseckey.pem del.rnd Remove password from the key (password was abcd1234) openssl rsa -in mpsap4-aseckey.pem -out mpsap4-akey.pem openssl ca -days 365 -in mpsap4-a.csr -config openssl.cnf -out C: \myca\certs\mpsap4-a.crt C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl ca -days 365 -in mpsap4-a.csr -config openssl.cnf -out C:\myCA\certs\mpsap4-a.crt Using configuration from openssl.cnf Loading 'screen' into random state - done Check that the request matches the signature Signature ok Certificate Details: Serial Number: 2 (0x2) Validity Not Before: May 27 11:18: GMT Not After : May 27 11:18: GMT Subject: countryname = US stateorprovincename = NY organizationname = myap organizationalunitname = MPSAP commonname = mpsap4-a.avaya.com address = ename@avaya.com X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 14:9C:3A:D6:CB:AB:60:F3:19:A7:DB:78:60:DE:E7:17:5E:1E:2A:B3 X509v3 Authority Key Identifier: DirName:/C=US/ST=NY/L=Bohemia/O=myCompany/OU=MPS/CN=Pavel/ address=my @someserver.com serial:dc:35:7c:b2:12:69:91:b3 Certificate is to be certified until May 27 11:18: GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated 94 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

95 SSL Authentication and Certificates Now *.csr files can be deleted del *.csr Server Certificate: c:\myca\certs\n crt Server encrypted private key: c:\program Files\Apache Software Foundation\Apache2.2\bin\n102081seckey.pem Server decrypted private key (to use without password): c:\program Files\Apache Software Foundation\Apache2.2\bin\n102081key.pem Client Certificate: c:\myca\certs\mpsap4-a.crt Client encrypted private key: c:\program Files\Apache Software Foundation\Apache2.2\bin\mpsap4-aseckey.pem Client decrypted private key (to use without passwords): c:\program Files\Apache Software Foundation\Apache2.2\bin\mpsap4-akey.pem Two self-signed certificates Command outputs are the same as given above for the appropriate commands. Steps are almost the same as done for CA section except for signing. Each certificate is self-signed as it was done for CA certificate above. Server: openssl req -config openssl.cnf -new -out n102081ss.csr ren privkey.pem n102081seckey2.pem openssl rsa -in n102081seckey2.pem -out n102081sskey.pem openssl x509 -req -days in n102081ss.csr -out n102081ss.crt -signkey n102081sskey.pem del.rnd Client: openssl req -config openssl.cnf -new -out mpsap4ss.csr ren privkey.pem mpsap4seckey2.pem openssl rsa -in mpsap4seckey2.pem -out mpsap4sskey.pem openssl x509 -req -days in mpsap4ss.csr -out mpsap4ss.crt -signkey mpsap4sskey.pem del.rnd del *.csr Server Certificate: c:\program Files\Apache Software Foundation\Apache2.2\bin\n102081ss.crt Server encrypted private key: c:\program Files\Apache Software Foundation\Apache2.2\bin\n102081seckey2.pem Server decrypted private key (to use without password): c:\program Files\Apache Software Foundation\Apache2.2\bin\n102081sskey.pem Avaya Media Processing Server VXML Browser User Guide November

96 VXML Browser Installation and Configuration Client Certificate: c:\program Files\Apache Software Foundation\Apache2.2\bin\mpsap4ss.crt Client encrypted private key: c:\program Files\Apache Software Foundation\Apache2.2\bin\mpsap4seckey2.pem Client decrypted private key (to use without passwords): c:\program Files\Apache Software Foundation\Apache2.2\bin\mpsap4sskey.pem Three step signed certificates The purpose of this section is to create 3 levels of certificates. That is Client or Server certificate is signed by CA and CA certificate is signed by RootCA certificate. RootCA certificate is selfsigned. RootCA: openssl genrsa -out C:\myCA\private\RootCA-key.pem 1024 openssl req -new -config openssl.cnf -key C:\myCA\private\RoorCA-key.pem -out C: \myca\rootca.csr openssl x509 -req -days in C:\myCA\RootCA.csr -out C:\myCA\RootCA.pem - signkey C:\myCA\private\RootCA-key.pem CA: Make a backup copy of your openssl.cnf file. Then edit it [ usr_cert ] section as following: #basicconstraints=ca:false basicconstraints=ca:true Comment out the following lines in [ v3_ca ] section: #subjectkeyidentifier=hash #authoritykeyidentifier=keyid:always,issuer:always openssl req -config openssl.cnf -new -out cacert.csr ren privkey.pem CAkey.pem openssl ca -days 365 -in cacert.csr -config openssl.cnf -out C:\myCA\certs \cacert.crt -cert C:\myCA\RootCA.pem -keyfile c:\myca\private\rootca-key.pem - extensions v3_ca Get certificate hash using command: openssl x509 -subject_hash -noout -in C:\myCA\certs\cacert.crt Then rename cacert.crt to <hash_value>.int (e.g. e54a0386.0). Increment integer extension if more than one certificate with the same hash exists. On Solaris there is c_rehash command to generate hashes. Restore original openssl.cnf file from backup. Server openssl req -config openssl.cnf -new -out n csr ren privkey.pem n102553seckey.pem openssl rsa -in n102553seckey.pem -out n102553key.pem openssl ca -days 365 -in n csr -config openssl.cnf -out C:\myCA\certs \n crt -cert C:\myCA\certs\cacert.crt -keyfile CAkey.pem Client openssl req -config openssl.cnf -new -out vxmli.csr ren privkey.pem vxmliseckey.pem 96 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

97 SSL Authentication and Certificates openssl rsa -in vxmliseckey.pem -out vxmlikey.pem openssl ca -days 365 -in vxmli.csr -config openssl.cnf -out C:\myCA\certs\vxmli.crt -cert C:\myCA\certs\cacert.crt -keyfile CAkey.pem Configure httpd and verify using web browser Create new directory for http server certificates and keys: c:\program Files\Apache Software Foundation\Apache2.2\conf\ ssl.crt Copy server certificates and keys created earlier into this directory. Copy cacert.pem into this directory if CA is used; otherwise copy client self-signed certificate mpsap4ss.crt. Note that the private key should be readable by httpd and server administrator only. In Apache httpd config file c:\program Files\Apache Software Foundation \Apache2.2\conf\httpd.conf" uncomment the lines LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf In file "c:\program Files\Apache Software Foundation\Apache2.2\conf\extra \httpd-ssl.conf" make the following changes: If CA certificate is used: SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/ ssl.crt/n crt" SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/ conf/ssl.crt/n102081key.pem" SSLCACertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/ conf/ssl.crt/cacert.pem" SSLVerifyClient require SSLVerifyDepth 1 If self-signed certificates are used: SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/ ssl.crt/n102081ss.crt" SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/ conf/ssl.crt/n102081sskey.pem" SSLCACertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/ conf/ssl.crt/mpsap4ss.crt" SSLVerifyClient require SSLVerifyDepth 0 Verify : In order to verify that everything is fine with http server configuration, try to access it using your web browser and https protocol. Since your browser does not have a valid certificate yet, the attempt must fail (Firefox was used): Avaya Media Processing Server VXML Browser User Guide November

98 VXML Browser Installation and Configuration An error occurred during a connection to n avaya.com. SSL peer was unable to negotiate an acceptable set of security parameters. (Error code: ssl_error_handshake_failure_alert) Now create p12k certificate for your browser. Use mpsap4ss.crt and mpsap4sskey.pem respectively if self-signed certificates were created. openssl pkcs12 -export -clcerts -in C:\myCA\certs\mpsap4-a.crt -inkey mpsap4-akey.pem -out mpsap4-a.p12 C:\Program Files\Apache Software Foundation\Apache2.2\bin>openssl pkcs12 -export - clcerts -in C:\myCA\certs\mpsap4-a.crt -inkey mpsap4-akey.pem -out mpsap4-a.p12 Loading 'screen' into random state - done Enter Export Password: Verifying - Enter Export Password: Import mpsap4-a.p12 into your web browser. Now you should be able to see Apache s start page showing "It works". Check Apache httpd configuration and logs if you re unable to access pages via https protocol. Resources The resources used by the VXML Interpreter for speech recognition and for speech synthesis are configurable. The resources used are configured by the client.avaya.ivr.prompt.tts.resource.name and client.avaya.ivr.rec.recognition.resource.name parameters. For more information on multiple resource handling, see Multiple resource handling on page 57. Each parameter must be assigned to the resource name to be used; for example, use lvr-s for OpenSpeech Recognizer; use extts-s for RealSpeak. These lines appear in the configuration file as follows: client.avaya.ivr.rec.recognition.r esource.name client.avaya.ivr.prompt.tts.resour ce.name VXIString VXIString lvr-s extts-s When these resources are not required, such as in a DTMF only configuration, they must be disabled if they were configured. To disable these resources, see Removal of TTS and LVR resources on page 99. You can configure the resources for speech recognition, speech synthesis, and the audio server so that they are acquired in one of two modes. The recommended mode is to acquire the resource when the call starts. This mode is called hold. The second mode is to acquire the 98 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

99 Removal of TTS and LVR resources resource when it is needed and then free the resource when the need passes. The hold mode can be controlled using the following parameters: client.avaya.ivr.rec.recognition.resource.hold client.avaya.ivr.prompt.tts.resource.hold client.avaya.ivr.prompt.audioserver.resource.hold To configure all the resources to hold mode, use the following parameters: client.avaya.ivr.rec.recognition.resource.hold VXIInteger 1 client.avaya.ivr.prompt.tts.resource.hold VXIInteger 1 client.avaya.ivr.prompt.audioserver.resource.hold VXIInteger 1 To configure the labels allocated by VXMLI, modify the following parameters if necessary. These changes depend on your speech server configuration. client.avaya.ivr.prompt.tts.resource.lang.default client.avaya.ivr.rec.recognition.resource.lang.default client.avaya.ivr.prompt.audioserver.resource.lang.default Removal of TTS and LVR resources You must configure TTS and LVR resource names even though they are not used. The resource names used must be supported by the VoiceXML interpreter. For more information, see Configuration parameters on page 73. The Hold setting for each resource (TTS and LVR) is the configuration variable that prevents the interpreter from attempting to access the resource. Set Hold to 0 to configure the interpreter to attach an LVR or TTS resource when needed. Note: The application must not reference any speech grammars, must have the input mode set to dtmf, and must not contain any text-to-speech. Otherwise, the interpreter attempts to engage a speech resource. #client.avaya.ivr.prompt.tts.resource.name VXIString extts-r Avaya Media Processing Server VXML Browser User Guide November

100 VXML Browser Installation and Configuration #client.avaya.ivr.prompt.tts.resource.hold VXIInteger 0 #client.avaya.ivr.rec.recognition.resource.name VXIString lvr-s #client.avaya.ivr.rec.recognition.resource.hold VXIInteger 0 WVADS debugging Debugging is enabled or disabled by the client.avaya.ivr.debug.debugging parameter. In a production environment, the option must be disabled, which is the default setting (value = 0). Debugging can be turned on or off dynamically by using a V-shell command. (See VXML Interpreter V-Shell options on page 219.) Avaya defaults Defaults are loaded by a default VXML document before any other content is loaded. The defaults are always active and specify the following values: The default language. The actions the interpreter must take for events that are not caught by a user VXML page. Most of the default handlers play a reprompt or error prompt to the caller using text-tospeech. The set of default values for VXML properties. If the platform defaults are not overridden, the VXML Interpreter uses them. To view those defaults, see $MPSHOME/PERIvxml/config/VxmliDefaults.xml. To change the platform defaults, copy the VxmliDefaults.xml file into your working directory, and then modify it accordingly (keep the original $MPSHOME/PERIvxml/config/ VxmliDefaults.xml ). The DTD for this document is a modified copy of the VXML extended to support language-specific defaults. After you update the file, change the client.vxi.defaultsuri in the SBClient.cfg file. 100 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

101 Universals Note: After you change the VxmliDefaults.xml file, stop and restart VXMLI by issuing the following commands at the command prompt: vsh srp vxmli -stop vsh srp vxmli -start Universals Universal command grammars, such as help, cancel, and exit grammars, are part of the VxmliDefaults.xml file. By default, these universal command grammars are disabled. To enable support for one or all universal command grammars, modify the $MPSHOME/ PERIvxml/config/VxmliDefaults.xml file by performing the following steps: 1. Copy the VxmliDefaults.xml file into your working directory. 2. Open the VxmliDefaults.xml file, and search for the universal grammar to enable. 3. After you locate the universal grammar, remove the grammar recognizer comments around the grammar. The grammar recognizer comments around the grammar depend on the type of grammar recognizer you use. 4. Save the updated VxmliDefaults.xml file. 5. Change the client.vxi.defaultsuri in the SBClient.cfg file. 6. Restart the VXML Interpreter. In the following example, the OpenSpeech Recognizer CANCEL universal grammar is uncommented and therefore enabled, while the Nuance Recognizer remains disabled (commented out). <!-- ******************************************************* Support for the 'CANCEL' universal grammar. ******************************************************* --> <!-- ** Avaya ** Uncomment this to support the 'cancel' universal grammar for OpenSpeech Avaya Media Processing Server VXML Browser User Guide November

102 VXML Browser Installation and Configuration Recognizer. --> <link event="cancel"> <grammar type="application/srgs+xml" root='cancel_itemlist' xml:lang='en-us' version='1.0'> <meta name="swirec_simple_result_key" content="meaning"/> <rule id='cancel_itemlist' scope='public'> <one-of> <item> cancel <tag>meaning='cancel'</tag> </item> </one-of> </rule> </grammar> </link> <!-- ** Avaya ** Uncomment this to support the 'cancel' universal grammar for nuance. --> <!-- <link event="cancel"> <grammar type="application/x-nuance-gsl"> <![CDATA[ (cancel) ]]> </grammar> </link> --> The value none is the default; therefore, all platform default universal command grammars are disabled. The value all turns them all on. Individual grammars are enabled by listing their names separated by spaces; for example, cancel exit help. 102 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

103 Properties Properties VXML uses the <property> element to assign parameters that affect platform behavior. These properties affect the recognition process (such as bargein and confidencelevel), timeouts (such as interdigittimeout), and caching (such as audiofetchhint). Some properties have a default value assigned in the VxmliDefaults.xml file. <property name='xml:lang' value='en-us'/> <property name='confidencelevel' value='0.5'/> <property name='sensitivity' value='0.5'/> <property name='speedvsaccuracy' value='0.5'/> <property name='termtimeout' value='0s'/> <property name='termchar' value='#'/> <property name='bargein' value='true'/> <property name='audiofetchhint' value='prefetch'/> <property name='documentfetchhint' value='safe'/> <property name='grammarfetchhint' value='prefetch'/> <property name='objectfetchhint' value='prefetch'/> <property name='scriptfetchhint' value='prefetch'/> <property name='inputmodes' value='dtmf voice'/> Note: The attribute fetchhint is currently ignored. For more information, see Prefetch cache details on page 51. Note: When you use Nuance, the default confidencelevel of 0.5 maps to a Nuance rec.confidencerejectionthreshold of 50. You can change these properties in the VxmliDefaults.xml file or override them in the application by using the VXML property tag as shown in the VxmliDefaults.xml file. To change the number of results received for a particular form (and not the entire application), configure the property in the application form as follows. <vxml version="2.0" xmlns=" xmlns:xsi=" Avaya Media Processing Server VXML Browser User Guide November

104 VXML Browser Installation and Configuration xsi:schemalocation=" voicexml20/vxml.xsd"> <form id="digits_form"> <property name="maxnbest" value="3"/> <block> <prompt> This prompt may return up to 3 results. </prompt> </block> <field type="digits"> <prompt> Please say some digits. </prompt> </field> </form> </vxml> The following table shows the mapping between VXML properties and equivalent parameters. VXML property Generic speech confidencelevel sensitivity Equivalent parameters Nuance OSR MRCPv1 nuance.rec.confidencere jectionthreshold nuance.ep.thresholdsnr and nuance.ep.thresholdsnre ndoffset Use the following algorithm: speechworks. confidencelevel speechworks. sensitivity mrcpv1. instance. Confidence- Threshold mrcpv1. instance. Sensitivity- Level // set parameter according to Nuance (JP) float y = (float)(1.0 - sensitivity 104 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

105 Properties VXML property Generic speech Equivalent parameters Nuance OSR MRCPv1 int snr; int snr_end; if (y < 0.5) { snr = (int)(y * 16) + 6; snr_end = (int)(y * -6); } else { snr = (int)((y - 0.5) * 8) + 14; snr_end = -3; } speedvsaccuracy nuance.rec.skipframes and nuance.rec.pruning Use the following algorithm: // set parameter according to Nuance (JP) int pruning; if (speedvsaccuracy <= 0.5) pruning = (int) (speedvsaccuracy * 400) + 600; else pruning = (int) (speedvsaccuracy * 800) + 400; sprintf(filled_param, "[%s %s][%s %d]", SKIP_FRAMES, (speedvsaccuracy==1.0 )?"true":"false", PRUNING, pruning); speechworks. speedvsaccuracy Note: This parameter is currently ignored by the recognizer. mrcpv1. instance. Speed-vs- Accuracy completetimeout nuance.ep.endsecondso ngrammarend speechworks. completetimeout mrcpv1. instance. Speech- Complete- Timeout incompletetimeout nuance.ep.endsecondso ngrammarfinal and nuance.ep.endseconds speechworks.in completetimeout mrcpv1. instance. Speech- Incomplete- Timeout Avaya Media Processing Server VXML Browser User Guide November

106 VXML Browser Installation and Configuration VXML property Generic speech Equivalent parameters Nuance OSR MRCPv1 maxnbest maxspeechtimeout Generic DTMF Note: Both set to incompletetimeout. nuance.rec.donbest=fals e if maxnbest=1 nuance.rec.donbest=true & nuance.rec.numnbest if maxnbest>1 n/a Note: Implemented using RCM TooMuchSpeechTimeo ut. speechworks.swirec _nbest_list_length n/a Note: Implemented using RCM TooMuchSpeech Timeout. mrcpv1. instance.n- Best-List- Length mrcpv1. instance. Recognition- Timeout termchar n/a n/a mrcpv1. instance.dtmf- Term-Char Prompt and Collect timeout n/a Note: Implemented using RCM NoSpeechTimeout. n/a Note: Implemented using RCM NoSpeech Timeout. mrcpv1. instance. No- Input-Timeout Vendor specific recognition properties Developers can now configure vendor-specific recognition properties. Vendor properties are configured using property tags in the following format: <property name=" vendor_prefix.vendor_property" value="vendor_value "/> The following table show the supported products and their associated <vendor_prefix>. 106 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

107 Vendor specific recognition properties Product vendor_prefix Nuance 8.5 nuance Nuance 9 nuance or speechworks OSR speechcraft MRCP mrcp vendor_property: Vendor-specific string is defined in each vendor's documentation. vendor_value: Vendor-specific values are defined for each <vendor_property> in the vendor's documentation. For example, an application can suppress waveform and event logging for OSR by adding the following lines: <property name="speechworks.swirec_suppress_waveform_logging" value="1"/> <property name="speechworks.swirec_suppress_event_logging" value="1"/> You must specify the default values for each vendor-specific property the VXML application sets (excluding one-shot settings such as log entries). These default values must be in the $MPSHOME/PERIvxml/config/VxmliDefaults.xml file. (See Avaya defaults on page 100.) For example, the default can be for waveform capture and event logging to be turned on. When a vendor-specific recognition property is assigned by the application and that property is in scope, it is passed to the vendor software. A VXML application can assign a vendor-specific property to turn off waveform capture and event logs (see previous example for OSR). Because the default is to have waveform capture and event logs on, as soon as the property is out of scope, waveform capture and event logs are turned on again. Note: The ability of the VXML application to assign vendor-specific properties is off by default. The following line must be added to SBclient.cfg (See SBclient.cfg configuration file on page 72): client.avaya.ivr.rec.recognition.resource.allowvendorparams VXIInteger 1 Note: The vendor parameters for the Avaya Speech Server are set in the following format: <property name=" mrcpv1.vendor-specific- Parameters"value="'vendor_property=vendor_value[;vendor_property=v endor_value]'"/> Avaya Media Processing Server VXML Browser User Guide November

108 VXML Browser Installation and Configuration For example, an application can suppress waveform and event logging for Avaya Speech Server recognizer by adding the following line: <property name="mrcp.vendor- Specific-Parameters" value="'swirec_suppress_waveform_logging=1;swirec_suppress_event_l ogging=1'"/> Note: gen.cfg configuration file To automatically start the VXML interpreter at system startup, you must make an entry in the gen.cfg file, which is in $MPSHOME/mps#/etc. Important: Do not create gen.cfg file on the secondary node of redundant system. The following is an example of a gen.cfg file. The following table shows details about the command line options for VXMLI. $3 # # Example gen.cfg file. # # NAME NODE PORT is-vos-class PRI COMMAND LINE # vxmli vxmli The following command line options are available. Table 15: VXMLI command line options Option Description -c cfgfile Specifies the cfgfile to use as the configuration for VXMLI. This overrides the default file $PERIVXMLHOME/etc/ SBclient.cfg. -d dbgarg Enables debugging in the form of [ dest ], dbgobj=inst. See DLOG option dlogdbgon for a description of this argument. Examples of valid values for dbgarg : file,line=1-24 Enable lines 1-24 to a file line=1-24 Enable lines 1-24 to stdout file,channel=1,3,4 Enable 108 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

109 vxmld.ausvr.cfg configuration file -h Option Description channels 1, 3, and 4 to file channel=1-4 Enable channel 1-4 to stdout Displays command line option use and exits the interpreter. vxmld.ausvr.cfg configuration file The MPS uses the Internet Audio Server (IAS) to download and play WAV files. The vxmld.ausvr.cfg configuration file, which contains configuration parameters for the IAS, is on the Speech Server in the $MPSHOME/PERIausvr/etc directory. The following entry in the vxmld.ausvr.cfg configuration file cache_interval=600 determines the amount of time a cache entry is considered valid before making another HTTP request to retrieve updated information. The default value is 600 (10 minutes). A value of 0 means no caching. MPS Manager deployment As with MPS Developer applications, the MPS Manager graphical tool is used to configure and assign VXML applications to MPS lines. The following section describes the process. Configuring a VXML application 1. Choose the Application Configuration tool in MPS Manager main window. Avaya Media Processing Server VXML Browser User Guide November

110 VXML Browser Installation and Configuration 2. Perform one of the following tasks as appropriate. a. If the application configuration file exists: Enter the path and name of the application configuration file ( tmsi05:/opt/vps/mps5/apps/ test.acfg [Solaris] or kingbird:c:\my Apps\...acfg [Windows]) for the associated VXML application into the Configuration: field, and then click Load. If the exact location of the file is unknown, use Choose to browse to the location. OR b. If the application configuration file does not exist: Enter the URL of the VXML application in the Application: field ( test.vxml; file://...vxml ). Next, enter the path and name for the new application configuration file ( tmsi05:/opt/vps/mps5/ apps/test.acfg [Solaris] or kingbird:c:\my Apps\...acfg [Windows]) into the Configuration: field, and then click Load. 3. If you use configuration parameters other than the default, from the Configuration Type menu, select Custom. 4. Assign configuration parameters using the Execution tab as described in Chapter 3 of the MPS Manager Reference Manual. 5. Click Save to store the configuration parameters. 6. To assign and start the application, click Deploy to start the Application Management tool. You can also create an application configuration file, as well as start and stop an application, from the command line. 110 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

111 Managing a VXML application 7. Create an application configuration file in the /opt/vps/mps<n>/apps folder by using a file path or URL of a valid VXML file: root@mpsap1 {3} cat overall_test_speechworks.acfg # softterm=600 args=-k 600 -g file:///oprt/vps/perivxml/samples/ overall_test_speechworks.vxml SLIC:isvc=vxml_svc" #args=:"-k 600 -g http%3a//localhost/vxml/overall_test_speechworks.vxml SLIC:isvc =vxml_svc " interp=slic env="" appmanflags="-default " 8. Use tappman to start and stop the application. root@mpsap1 {5} tappman -c#mps.1 -p1-10 -stop -unassign root@mpsap1 {6} tappman -c#mps.1 -p1-10 -status root@mpsap1 {8} tappman -c#mps.1 -p1-10 -a overall_test_speechworks - assign -start root@mpsap1 {10} tappman -c#mps.1 -p1-10 -status #mps.1/mpsap UP overall_test_speechworks #mps.1/mpsap UP overall_test_speechworks #mps.1/mpsap UP overall_test_speechworks #mps.1/mpsap UP overall_test_speechworks #mps.1/mpsap UP overall_test_speechworks #mps.1/mpsap UP overall_test_speechworks #mps.1/mpsap UP overall_test_speechworks #mps.1/mpsap UP overall_test_speechworks #mps.1/mpsap UP overall_test_speechworks #mps.1/mpsap UP overall_test_speechworks Managing a VXML application 1. Select the Application Management tool by clicking Deploy in the Application Configuration tool or by selecting the Application Management icon in the MPS Manager main window. VXML applications are indicated by a V in the Applications window, as shown in the following figure. Avaya Media Processing Server VXML Browser User Guide November

112 VXML Browser Installation and Configuration 2. Manipulate the VXML application (assign, start, terminate, unassign) the same as you do any MPS Developer application (described in Chapter 4 of the MPS Manager Reference Manual). 112 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

113 Chapter 4: VXML Developer Guide This chapter covers: 1. Introduction 2. Session variables 3. Transfer 4. Prompting 5. Grammars 6. Recording speech 7. Alarms 8. Statistics 9. HTTP user agent 10. VXML interpreter cache 11. Data Tag Attribute Update 12. Barge-in Notification 13. Delay Introduction This chapter provides detailed information about developing VXML applications and includes descriptions of session variables, properties, grammars, and extensions. Session variables The following sections describe the session variables. Avaya Media Processing Server VXML Browser User Guide November

114 VXML Developer Guide Session reference Session variables are read-only and pertain to an entire user session. A session begins when the user starts to interact with a VXML interpreter context, continues as documents are loaded and processed, and ends when requested by the user, a document, or the interpreter context. The interpreter context declares and assigns session variables; VXML documents cannot declare new session variables. The following table describes Avaya-supported session variables. Type Variable Description session.com.avaya.ivr.call.id String The unique call identifier that application and speech vendor logs use to synchronize for tuning purposes. When MPS Developer is used to hand off to VXML, the Call ID is set automatically by the InvokeVXML block. session.com.avaya.ivr.call.lineno Integer The line number that the call is on. session.com.avaya.ivr.call.sysno Integer The IVR system number that the call is on. session.com.avaya.ivr.call.isappaccept String Indicates whether this call is a new call ( false ) or a transferred call ( true ). session.com.avaya.ivr.config.resource.lvr.name String The name of the configured LVR resource for the call. This variable is configured to none if no configured LVR resource is available. session.com.avaya.ivr.config.resource.tts.name String The name of the configured TTS resource for the call. This variable is configured to none if no configured TTS resource is available. 114 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

115 Session reference Type Variable Description session.com.avaya.ivr.interp.sysno Integer The IVR system number that the interpreter is processing the current document on. Note: For calls that are sent to the VXML Interpreter by application handoff, it is possible for this to be different from com.avaya.ivr.call.sysno. session.com.avaya.ivr.interp.id Integer The interpreter identifier that is processing the document. Note: For calls that are sent to the VXML Interpreter by application handoff, it is possible for this to be different from com.avaya.ivr.call.lineno. session.com.avaya.ivr.appaccept.appdata The application-specific data that passed to the VXML application, where the data format must be agreed upon between the source and target applications. This variable is valid only when avaya.ivr.isappaccept =true. session.com.avaya.ivr.appaccept.sa String Identifies the application that transferred the call to the VXML application (that is, the source application). This variable is valid only when avaya.ivr.isappaccept =true. session.com.avaya.navigator.useragent String This variable is configured to the user agent as described in HTTP user agent on page 151. session.connection.protocol.name Represents the name of the protocol that runs on the phone port from which the interpreter received the call. session.connection.local.uri Avaya Media Processing Server VXML Browser User Guide November

116 VXML Developer Guide String Type Variable Description This session variable is populated with the DNIS, if available, that the interpreter receives from the platform. If DNIS is not available when the call is presented to the interpreter, this session variable is an empty string. session.connection.remote.uri String This session variable is populated with the ANI, if available, that is received by the interpreter from the platform. If ANI is not available when the call is presented to the interpreter, this session variable is an empty string. Property reference Properties are used to assign values that affect platform behavior, such as the recognition process and timeouts. Properties can be defined for the whole application, for the whole document at the <vxml> level, for a particular dialog at the <form> or <menu> level, or for a particular field item. While properties apply to their parent element and all descendants of the parent, a property at a lower level overrides a property at a higher level. When different values for a property are specified at the same level, the last value in document order applies. com.avaya.ivr.record.filename Property Description Specifies the file name of the media file. By default, the system assigns a name if this property is not specified. For media file type audio/x-wav, it is the file name of the WAV file, which is stored in the location specified here or the full path of the WAV file. For media file type audio/x-mmf, this specifies the name of the MMF file and element where the recording is stored. Some examples are: CMRFile/My Greeting Stores the recording in the element My Greeting of the MMF file CMRFile. My Greeting Stores the recording in the element My Greeting of the default CMR MMF. com.avaya.ivr.record.full_duplex Indicates if the recording must be full duplex (true) or half duplex (false). 116 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

117 Property reference The default false. Property Description com.avaya.ivr.record.retain When configured as true, the recording utterance remains, even after the VXML application terminates. Note: Configuring this property as true can reduce disk space because all recorded utterances are stored to disk. To delete unused CMR tokens, use the mdelete command. If this property is configured as false, then the utterance is deleted after the VXML application terminates. The default is false. com.avaya.ivr.xfer.listen_prog When configured as true, the caller hears call progress tones during a bridge transfer. When configured as false, the caller hears no tones. The default is false. com.avaya.ivr.xfer.outline_poolname Name of the pool to allocate to the outbound line during the transfer. The default is line.out. Note: Currently, this property is supported only for bridge transfers. com.avaya.ivr.xfer.play_whisper.last_record When configured as true, the last CMR recording is played to the caller on the outbound line before the bridge is established. If no recording exists or if this property is configured as false, then nothing is played. The default is false. Note: Currently, this property is supported only for bridge transfers. com.avaya.ivr.prompt.audioserver.prefix Prepends all audio file names with the specified prefix. For example, you can configure this as s- for Spanish. The default is not to prepend a string to the URL. Avaya Media Processing Server VXML Browser User Guide November

118 VXML Developer Guide com.avaya.ivr.prompt.builtin.prefix Property Description Prepends all MMF prompts spoken with the specified prefix. For example, you can configure this as s- for Spanish. The default is not to prepend a string to the prompt. com.avaya.ivr.prompt.builtin.gender Specifies the gender of the spoken MMF prompts. This variable is necessary for certain languages where the way the audio is spoken depends on the gender of the person speaking it. The default gender is neutral. com.avaya.ivr.recordutterance.filename client.fetch.abort Specifies the filename of temporary.wav file stored to disk when using the recordutterance feature. By default, the system assigns a name if this property is not specified. This property allows a fetch to be aborted by vxmli when a call disconnect event arrives from network. This prevents an application from waiting for the webserver to respond which could be up to the full duration of the fetchtimeout. This allows the application to process the error badfetch as if the fetchtimeout occurred just before the disconnect happened. The application will then receive the disconnect and can get ready to handle the next incoming call. This behavior is not in conformance with the vxml specification, but it allows the application to clean up and be ready to handle the next incoming call. This property can also be set in customer application and typical property scope applies. If enabled in the $MPSHOME/ PERIvxml/config/SBclient.cfg file it will be applied to all the lines on that MPS component. A value of 1 will abort a fetch when a caller disconnect occurs, A 0 (zero) or not set will not abort a fetch on disconnect. Default is 0. Example coding in the application. <property name="client.fetch.abort" value="1"/> Resource fetching The application must always specify a value for fetchtimeout, which is the interval to wait for content to be returned before causing an error.badfetch event. If this value is not specified, then the default value of 60 seconds is used. This default timeout is used to invoke a URL for a new incoming call or a VXML dialog started by MPS Developer or CCXML. If this 118 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

119 Character encodings interval is too large then you must consider invoking a page from the local file system, which configures fetchtimeout to a smaller value and invokes the real URL required to process the call. To have the fetch aborted when a caller disconnect event arrives the property client.fetch.abort is used. The benefits are a reduction in the latency for an application to finish processing a caller that disconnected and to be ready for the next caller. Refer to the property client.fetch.abort in the Property reference on page 116. Character encodings A VXML document must contain a proper XML header, as in <?xml version='1.0'?>. In this example, no character encoding is specified, so the system uses the default encoding UTF-8. You can add an optional encoding declaration to tell VXMLI which encoding scheme the document uses. It is necessary to use the encoding header only if you use an encoding scheme other than UTF-8, such as ISO In the following example, the encoding scheme ISO is used: <?xml version='1.0' encoding='iso '?> Note: As of vxml , VXML supports UTF-8 and ISO If you declare an encoding scheme, you must use the declared encoding scheme consistently throughout your document. The VXML document in the following example shows a prompt and an inline grammar that requires the ISO encoding. <?xml version="1.0" encoding="iso "?> <vxml xmlns=" xmlns:xsd=" version="2.0"> <form id="entry"> <property name="xml:lang" value="es-us"/> <field name="test"> <prompt> Avaya Media Processing Server VXML Browser User Guide November

120 VXML Developer Guide Qué color? </prompt> <grammar xml:lang="es-us" version="1.0" mode="voice" root="color" type="application/srgs+xml"> <rule id="color" scope="public"> <one-of> <item>can</item> <item>prpura</item> <item>melocotn</item> </one-of> </rule> </grammar> <filled> You said <value expr="test"/> </filled> </field> </form> </vxml> VXMLI creates an SSML document and an inline SRGS grammar with the ISO encoding. This XML passes down to the TTS/Recognition engine with the encoding. The TTS/Recognition engine must support encoding for the language used. You must follow the rules required by the TTS/Recognition engines for support of encodings. Review the integration documents for additional information about encoding support. Object tag reference The <object> element is defined by the VXML specification as a way for a platform to expose platform-specific functionality for use by a VXML application. The <object> element directly uses its own content (for example, the <param> child element) during initialization and execution. As a result, <object> content cannot be treated as alternative content. If a prompt 120 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

121 Object tag reference tag is specified within the <object> element, then the prompt is spoken prior to executing the <object> element. Class identifier com.avaya.ivr.alarm com.avaya.ivr.appoffer com.avaya.ivr.appreturn com.avaya.ivr.cpd com.avaya.ivr.delay com.avaya.ivr.dialog.user com.avaya.ivr.releaseresource com.avaya.ivr.setsvcparam com.avaya.ivr.statincr Description VXML can generate a system alarm. See Alarms on page 147. Offers control of the call to another application. This identifier is typically used with MPS Developer interoperability. See Application offer (com.avaya.ivr.appoffer) on page 173. Returns control of the call to the previous application. This identifier is typically used with MPS Developer interoperability. Note: This object is replaced by the VXML Toolkit. See MPS Developer on page 164. Sets up Call progress detection (CPD). See Call Progress Detection (com.avaya.ivr.cpd) on page 154 Causes a delay in the execution of a VXML script. See Delay on page 153. Generates and sends a dialog user event to the CCXML application. Forces the release of a resource that is currently acquired. See Release resource on page 58. Sets a service parameter to a value. See Set Service Parameter (com.avaya.ivr.setsvcparam) on page 157. Increments the value of one or more statistic counters. See Update statistic counter (com.avaya.ivr.statincr) on page 150. The following example generates a system alarm, whose alarm code is 67589, on the MPS platform. Avaya Media Processing Server VXML Browser User Guide November

122 VXML Developer Guide <object name="alm" classid="com.avaya.ivr.alarm"> <param name="key" value="vxmlapp"/> <param name="alcode" value="67589"/> </object> Transfer The <transfer> element directs the interpreter to connect the caller to another entity (such as a telephone line or another voice application), indicated by the dest attribute. During the transfer operation, the current interpreter session is suspended. Transfer properties The MPS platform extends the <transfer> element by adding the properties described in the following table. Property Description com.avaya.ivr.xfer.listen_prog A Value of true indicates that you want the caller to listen to call progress tones during the bridge transfer. The caller hears no tones when this property is configured as false. The default is false. com.avaya.ivr.xfer.outline_poolname Name of the pool to allocate the outbound line during the transfer. The default is line.out. Comment: Currently, this property is supported only for bridge transfers. com.avaya.ivr.xfer.play_whisper.last_record When this property is configured as true, the last CMR recording is played to the callee on the outbound line before the bridge is established. If no recording exists or this property is configured as false, then nothing is played to the callee. The default is false. 122 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

123 Transfer properties Property Description Comment: Currently, this property is supported only for bridge transfers. com.avaya.ivr.xfer.blind.type Specifies the type of blind transfer to be performed. The property values are the following: hookflash (default) tr50075-courtesy-ib tr50075-courtesy-ob Note: The <transfer> elements "aai" or "aaiexpr" attributes are to be used to specify the data to be sent when performing a TR50075 Courtesy transfer with data. com.avaya.ivr.xfer.consult.type Specifies the type of consultation transfer to be performed. The property values are the following: tr50075-consult-ib (default) tr50075-consult-ob Note: The <transfer> elements "aai" or "aaiexpr" attributes are to be used to specify the data to be sent when performing a TR50075 Consult and Transfer with data. TR50075 Consult and Transfer with In-Band triggers does not support sending UUI data. Consequently, the data provided with "aai" or "aaiexpr" is ignored when this property is set to tr50075-consult-ib. The following example uses the property com.avaya.ivr.xfer.listen_prog, which lets the caller hear transfer progress indication (ringing). Avaya Media Processing Server VXML Browser User Guide November

124 VXML Developer Guide <transfer name="mycall" destexpr="b_phone_field" connecttimeout="60s" bridge="true" maxtime="20s"> <property name="com.avaya.ivr.xfer.listen_prog" value="true"/> <filled> <assign name="mydur" expr="mycall$.duration"/> <if cond="mycall == 'busy'"> <prompt> Sorry, our customer support team is busy serving other customers. Please try again later. </prompt> <elseif cond="mycall == 'noanswer'"/> <prompt> Sorry, our customer support team's normal hours are 9 am to 7 pm Monday through Saturday. </prompt> </if> </filled> </transfer> The <transfer> element includes a type attribute. This type attribute is used to specify the type of transfer to be performed. Valid types are bridge, blind, and consultation. Bridge and blind transfers are available with VoiceXML 2.0 ( bridge attribute) and are supported with the current VoiceXML implementation. The following table summarizes the three types of transfers that a VoiceXML application can perform: Transfer Type blind 2.0 VXML Spec Availability 2.1 bridge <transfer> Attribute(s) bridge bridge type bridge bridge type Description The MPS redirects the caller to the callee without remaining in the connection, and does not monitor the outcome. (The default when neither the bridge nor the type attribute is set) MPS adds the callee to the connection. Document interpretation suspends until the transferred call terminates. MPS remains in the connection for the duration of the transferred call. 124 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

125 Calling Party Number Transfer Type consultation 2.1 VXML Spec Availability <transfer> Attribute(s) type Description Similar in function to the blind transfer described above, however the outcome of the transfer call setup (outdial to third party) is known and the caller is not dropped as a result of an unsuccessful transfer (outdial) attempt. The VoiceXML specification calls for the optional support to cancel a call transfer attempt (while in progress) via bargein with DTMF or Speech. This optional feature is not available on MPS. Calling Party Number MPS extends the <transfer> element to allow the application programmer to specify the calling party number that should be used by MPS when initiating the transfer. Specifically the <transfer> element has been extended to support the following additional attributes: Attribute src srcexpr Description URI of the source/calling party (telephone, IP telephony address). The tel:url and sip:url syntax are supported An ECMAScript expression yielding the URI of the source (calling party). Note: MPS support for transmission of the calling party number is protocol dependent. TR ATT Toll Free Transfer Connect Service The following subset of TR ( is available in MPS 3.5: Courtesy Transfer In-band Triggers - No Data Courtesy Transfer In-band Triggers Data Courtesy Transfer Out-of-band Triggers No Data Courtesy Transfer Out-of-band Triggers Data Avaya Media Processing Server VXML Browser User Guide November

126 VXML Developer Guide Consult and Transfer In-band Triggers No Data Consult and Transfer Out-of-band Triggers No Data Consult and Transfer Out-of-band Triggers Data TR Application Programming All flavors of Courtesy and Consult and Transfer are invoked using the VoiceXML <transfer> element. Applications may provide data to the variants that support it using either the aai or aaiexpr transfer attributes. Courtesy Transfer TR Courtesy transfers are supported with blind transfers only. A property is used to inform MPS as to the type of Courtesy transfer to perform. This property, com.avaya.ivr.xfer.blind.type, must be set in the VoiceXML application such that it is in scope when the <transfer> element is executed. MPS defaults to attempting a hookflash transfer when com.avaya.ivr.xfer.blind.type is not set or in scope. Sample a) Hookflash transfer <transfer dest= tel: /> b) TR Courtesy transfer with in-band triggers No Data <property name= com.avaya.ivr.xfer.blind.type value= tr courtesy-ib /> <transfer dest= tel: /> c) TR Courtesy transfer with in-band triggers Data <property name= com.avaya.ivr.xfer.blind.type value= tr courtesy-ib /> <transfer dest= tel: aai= UUI data goes here /> d) TR Courtesy transfer with out-of-band triggers No Data <property name= com.avaya.ivr.xfer.blind.type value= tr courtesy-ob /> <transfer dest= tel: /> 126 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

127 TR Consult and Transfer e) TR Courtesy transfer with out-of-band triggers Data <property name= com.avaya.ivr.xfer.blind.type value= tr courtesy-ob /> <transfer dest= tel: aai= UUI data goes here /> Note: In all of the above examples either of the following attributes may be included in the <transfer> : bridge="false", or type="blind". TR Consult and Transfer TR Consult and Transfer transfers are supported with consultation transfers only. A property is used to inform MPS as to the type of Courtesy transfer to perform. This property, com.avaya.ivr.xfer.consult.type, must be set in the VoiceXML application such that it is in scope when the <transfer> element is executed. MPS defaults to attempting a TR Consult and Transfer with In-band Triggers transfer when com.avaya.ivr.xfer.consult.type is not set or in scope. Sample a) TR Consult and Transfer with in-band triggers No Data <property name= com.avaya.ivr.xfer.consult.type Avaya Media Processing Server VXML Browser User Guide November

128 VXML Developer Guide value= tr50075-consult-ib /> <transfer name= mytransfer type= consultation dest= tel: > <filled> <if cond="mycall == 'busy'"> <prompt> Sorry, our customer support team is busy serving other customers. Please try again later. </prompt> <goto next="#checkwithcaller"/> <elseif cond="mycall == 'noanswer'"/> <prompt> Sorry, our customer support team's normal hours are 9 am to 7 pm Monday through Saturday. </prompt> <goto next="#checkwithcaller"/> </if> </filled> </transfer> b) TR Consult and Transfer with out-of-band triggers No Data <property name= com.avaya.ivr.xfer.consult.type value= tr consult-ob /> <transfer name= mytransfer type= consultation dest= tel: >... </transfer> c) TR Consult and Transfer with out-of-band triggers Data <property name= com.avaya.ivr.xfer.consult.type value= tr consult-ob /> <transfer name= mytransfer type= consultation dest= tel: aai= UUI data goes here >... </transfer> 128 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

129 Prompting Consult & Transfer Network Responses **7 (IB), CT_Tag=RE, CC = 28 (OOB) Timeout waiting for rsp during Consult & Transfer **5, CT_Tag=RE, CC = 42 (OOB) VXML Transfer Outcomes Event error.connection.noroute error.connection.noresource **8 (IB) error.connection.protocol.008 CT_Tag=RE, CC = 63 (OOB) FAC_REJect, CC = 96 (OOB) CT_Tag=RE, CC = 98 (OOB) **1 (IB), OpVal =App Spec, CC = 3 (OOB) error.connection.protocol.063 error.connection.protocol.096 error.connection.protocol.098 connection.disconnect.hangup **6 (IB), CT_Tag=RR connection.disconnect.transfer Form Item Variable noanswer (consult) Prompting The following section describes the use of prompting. Speech Synthesis Markup Language (SSML) Note: Not all SSML tags (for example, emphasis, voice, phoneme) are supported by all speech synthesis vendors. See vendor-specific documentation for SSML support issues. The following are important factors when you use SSML: For the extts-b resource, all SSML tags are converted to FXML, if possible. Built-in MMF audio use of SSML supports only the <value> tag with the class attribute. Avaya Media Processing Server VXML Browser User Guide November

130 VXML Developer Guide MMF audio prompts After they are loaded, MMF audio prompts can be played by specifying the keyword builtin : inside the attribute src of the <audio> element. The prompt is referenced by element name or file or element name. For example, the following references the generic NUMBER DEMO GREETING: <audio src="builtin:number DEMO GREETING"/> while the following example references the NUMBER DEMO GREETING prompt from a specific file ( numdemo ): <audio src="builtin:numdemo/number DEMO GREETING"/> Using Say-As with Text To Speech (TTS) SSML specifies only the Say-As element, its attributes, and their purpose. It does not enumerate the possible values for the attributes. The result is the potential for different Say- As support from each vendor. See the vendor documentation for SSML (Say-As) support issues. Using Say-As for MMF audio Although the mode attribute is not part of the <value> element in VXML 2.0, Avaya VXML Interpreter supports it. If the value tag contains the mode=recorded flag, an MMF prompt is spoken. Note: If you write VXML applications in a language other than US English, see the Multilingual Vocabulary Management Guide. MMF prompt support for Say-As types The supported built-in types for MMF Say-As prompts are described in the following subsections. Following is a typical date prompt that is representative for each of the types. 130 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

131 MMF prompt support for Say-As types The value of the var element name attribute defines the prompt type variable, and the expression value defines the initial value and format of the variable. In the prompt, the value element expression attribute calls for the variable, and the class value reflects the format as specified in the expression value. For certain variables (acctnum, date, time, and duration), the class value has two parts separated by a colon (:). The class value reflects the order of presentation as specified in the expression value, so that in this example, the expression value is the year (2000), the month (05), and the day (03). The resultant spoken output is "May 3rd, 2000." Similarly, if the expression value is expressed as , the class value must be date:mdy for the same date to be spoken. Question marks can be used for any part of the expression value. The result is that part of the variable is not spoken. For example, if ?? and date:ymd were used, the date is spoken as "May, 2000." In some cases, specific characters can be used to separate parts of the format. You can enter a date variable expression value as 2000/05/03 (ymd) or (md), for example. There is a maximum number of places (digits) for the expression value uses a maximum number of places (digits), and the digits are read from left to right. If the maximum number of digits is exceeded, those remaining on the right side are ignored. For example, a date expression value of is interpreted as if the class value is date:ymd or as if it is date:ym. The expression value, as is the case in the date expression value 0603 with the class value as date:mdy, the output is spoken as simple digits. The currently supported types of MMF prompts are currency date number number:digits number:ordinal time duration phone percent acctnum The following sections describe the expression value format and expression component definitions. Avaya Media Processing Server VXML Browser User Guide November

132 VXML Developer Guide Currency The expression value of the currency variable attribute uses the format CCCDD.cc: C = currency code. The currency code is optional, and if omitted USD (United States dollars) is assumed. The three-digit currency code used follows ISO standards. D = dollars. The dollar amount can use any reasonable number of digits. c = cents. The cent amount can be only two digits and is optional. The following is an example of the currency variable. <var name="curr" expr="'10000'"/> <prompt> You said <value expr="curr" mode="recorded" class="currency"/>. </prompt> Expression value Class value Spoken output EUR currency currency currency ten thousand dollars one hundred Euros and twenty-three cents ninety-nine dollars Date The initial value of the date variable expression attribute uses the format YYYYMMDD or YYMMDD: Y = year expressed as four or two digits. M = month expressed as two digits. D = day expressed as two digits. Note that the month, day, and year parts of this value can be separated by a slash (/), a hyphen (-), a period (.), or no separator. Furthermore, question marks can replace the year, month, or day specification. The result is that part of the date is not spoken. If too few digits are specified (as related to the class value), the output is spoken as digits. Class values applicable to the date variable are date:ymd (default) date:mdy date:dmy date:md date:dm If the second part of the class value is omitted, the default format, ymd, is used. The following is an example of the date variable. 132 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

133 MMF prompt support for Say-As types <var name="date" expr="' '"/> <prompt> Today's date is <value expr="date" class="date:ymd" mode="recorded"/> </prompt> Expression value Class value Spoken output ??04 06/ date date:mdy date:md date:dm date:mdy date May 3rd, 2004 May, 2004 June 5th June 5th June 5th zero six zero five Number The initial value of the number variable expression attribute uses the format NNN.NN: N = numeric digit The digits to the right of the decimal are optional. The following is an example of the number variable. <var name="number" expr="'743.5'"/> <prompt> You said <value expr="number" mode="recorded" class="number"/> </prompt> Initial value Class value Spoken output number number number seven hundred forty-three point five forty-five thousand two hundred ninety zero point five Digits The initial value of the digits variable expression attribute uses the format NNN: N = numeric digit Avaya Media Processing Server VXML Browser User Guide November

134 VXML Developer Guide The digits to the right of the decimal are optional. The following is an example of the digits variable. <var name="digits" expr="'234'"/> <prompt> You said <value expr="digits" mode="recorded" class="number:digits"/> </prompt> Initial value Class value Spoken output number:digits number:digits two three four zero zero point five Ordinal number The initial value of the ordinal number variable expression attribute uses the format N: N = numeric digit The following is an example of the ordinal number variable. <var name="digits" expr="'5'"/> <prompt> You said the <value expr="digits" mode="recorded" class="number:ordinal"/> </prompt> Initial value Class value Spoken output 5 23 number:ordinal number:ordinal fifth twenty-third Time The initial value of the time variable expression attribute uses the format HHMMm: H = hour expressed in terms of the 12- or 24-hour clock, depending on the use of m, and requires two digits. M = minutes expressed as two digits. m = one of the following optional entries: AM = a.m. PM = p.m. a = a.m. p = p.m. If m is not used, the 24-hour clock is assumed, and hours must be expressed as two digits. 134 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

135 MMF prompt support for Say-As types 24-hour time can be expressed by adding a trailing h. For example, 1730h refers to 17:30 hours, or 5:30 p.m. In the expression value, the hours and minutes can be separated by a colon (:), a space ( ), or no separator. Class values applicable to the time variable are time:hm (default) time:h time:hms (While seconds has a valid value, they are ignored.) If the second part of the class value is not specified, the default (hm) is assumed. The following is an example of the time variable. <var name="time" expr="'10:30'"/> <prompt> You said <value expr="time" mode="recorded" class="time:hms"/> </prompt> Initial value Class value Spoken output 10: a time time:hms time:hms time:hm time ten thirty a.m. ten thirty a.m. two fifteen p.m. six p.m. eleven a.m. Duration The initial value of the duration variable expression attribute uses the format HHMMSS: H = hours M = minutes S = seconds (optional) In the expression value, only the colon (:) can be used as a separator. Class values applicable to the duration variable are duration:hm (default) duration:hms duration:ms duration:h Avaya Media Processing Server VXML Browser User Guide November

136 VXML Developer Guide duration:m duration:s If the second part of the class value is not specified, the default (hm) is assumed. The following is an example of the duration variable. <var name="duration" expr="'10:23:09'"/> <prompt> You said <value expr="duration" mode="recorded" class="duration:hms"/> </prompt> Initial value Class value Spoken output 10: duration duration:hms duration:hms duration:h duration ten hours thirty minutes ten hours thirty minutes zero seconds fourteen hours fifteen minutes thirty-four seconds eighteen hours five Phone The initial value of the phone variable expression attribute uses the format NNN: N = numeric digit The phone variable expression may contain hyphen (-) characters. These special characters, when present in the phone variable expression, are replaced by a pause. For example, the string is spoken as follows (assuming the language is set to English): four four... one two three four... one two three four five six There is no defined limit for the length of the phone variable expression when hyphen characters are used to represent where pauses must occur. The following rules apply when the phone variable expression does not contain at least one hyphen (-) character: The maximum number of digits (excluding the extension) is 20. Pauses are inserted from the right of the string as follows: - Between the fourth and fifth digits - Between the seventh and eighth digits - Between the tenth and eleventh digits For example the string is spoken as follows (assuming the language is set to English): four four... one two three... four one two... three four five six Additionally, use the special character x (lowercase only) to specify a telephone extension. For example the string x2112 is spoken as follows (assuming the language is set 136 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

137 MMF prompt support for Say-As types to English): four four... one two three four... one two three four five six... extension... two one one two The following is an example of the phone variable. <var name="phone" expr="' '"/> <prompt> You said <value expr="phone" mode="recorded" class="telephone"/> </prompt> Initial value Class value Spoken output x x2112 telephone telephone telephone telephone telephone telephone three four three...five five four three five five five...one two one two...extension...two one one two six three one...five five five...one two one two four four...one two three...four one two...three four five six four four...one two three four...one two three four five six four four...one two three four...one two three four five six...extension...two one one two Note: In the preceding table, the ellipsis (...) represents a pause. Note: As part of the standard numset MMF file, a half second of silence is created using the item pause.5. Percent The initial value of the phone variable expression attribute uses the format NNNNNNN: N = numeric digit The following is an example of the percent variable. <var name="percent" expr="'75'"/> Avaya Media Processing Server VXML Browser User Guide November

138 VXML Developer Guide <prompt> You said <value expr="percent" mode="recorded" class="percent"/> </prompt> Initial value Class value Spoken output 75 percent seventy-five percent Acctnum The initial value of the acctnum variable expression attribute uses the format N: N = numeric digit The acctnum class inserts pauses at specific locations in the stream of digits spoken. For example, if the application must respond with a nine-digit account number and pauses are needed after the third and sixth digits, then the following class value must be used: acctnum:3:3: In the preceding example, the first three digits are spoken as digits followed by a pause. The next three digits are spoken as digits, followed by a pause. Finally, the last three digits are spoken as digits. Default settings exists for which the only class value required is acctnum. You do not specify the specific locations to insert pauses. Instead, the system automatically inserts the pauses based on the length of the account number spoken to the caller. The following table summarizes the default settings. Account number length 12 After 4th and 8th digits 15 After 4th and 10th digits Default pause insertions 16 After 4th, 8th and 12th digits For any account number length other than the three specified in the preceding table, no pauses are inserted and the account number is spoken as digits. Class values applicable to the acctnum variable are, for example, as follows: acctnum acctnum:x: acctnum:x:y: acctnum:x:y:z: acctnum:w:x:y:z: W, X, Y, and Z represent locations to insert a pause in a stream of digits and must be specified as actual number that are greater than or equal to 1. Though the preceding list of class values shows up to four pauses, you can configure as many pauses as necessary. 138 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

139 MMF prompt support for Say-As types Note: In the expression value only the colon (:) can be used as a separator. The following is an example of the acctnum variable. <var name="creditcard" expr=" "/> <prompt> Your account number is <value expr="creditcard" class="acctnum:4:4:4:" mode="recorded"/> </prompt> Expression value Class value Spoken output acctnum acctnum:3: acctnum:3:3: acctnum:3:2: acctnum acctnum:4:6:5: acctnum:1:11: one two three four...five six seven eight...nine zero one two...three four five six five five five...one two one two six three one...five five five...one two one two one two three...four five...six seven eight nine one two three four five six one two three four...five six seven eight nine one...two three four five six seven eight nine zero one two...three four five six Note: In the preceding table, the ellipsis (...) represent a pause. Note: As part of the standard numset MMF file, a half second of silence is created using pause.5. Avaya Media Processing Server VXML Browser User Guide November

140 VXML Developer Guide Grammars Consider the following when you use grammars: Any references to HTTP grammars must be accessible from the Speech Servers. When you define OpenSpeech Recognizer (lvr-s) grammars, you must adhere to the following rules: - When you use inline grammars, make sure to include the XML header in the definition. - The type grammar attribute must be configured to application/srgs+xml. - When you use the phone grammar or any grammar that requires an input time over 8 seconds, use the VXML property maxspeechtimeout. DTMF grammars When using non-built-in DTMF grammars, you must specify the mode="dtmf" attribute on the grammar tag. Specifying the mode is required for inline and URI-based DTMF grammars. If the mode is not specified, the grammar is assumed to be a voice grammar. Note: The mode of a grammar indicates the type of input that the platform detects. The default mode is voice for speech recognition grammars. An alternative input mode is dtmf input. W3C specifications do not define a mechanism by which a single grammar can mix modes: when a representation for a mixed voice and dtmf grammar is not defined. Moreover, it is illegal for a rule reference in one grammar to reference any grammar with a different mode. The VXML interpreter does, however, support the simultaneous activation of more than one grammar including both voice and dtmf grammars. Parallel activation implies disjunction at the root level of the grammars rather than mixing modes within the structure of the grammars. Avaya recommends that you use a termination key when using non-built-in DTMF grammars. This avoids latency in call processing after the caller finishes entering their data. When using built-in DTMF grammars, use only the terminating character if the length is not known. You can use the built-in command grammar as an optimization. 140 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

141 DTMF terminating character Warning: An LVR resource is required to interpret DTMF grammars. You can use only built-in DTMF grammars without an LVR resource. All other DTMF grammars require a recognizer to interpret them. DTMF terminating character The terminating DTMF character is disabled during input by setting termchar to an empty string ("") in the property tag. By default, the termchar is set to the pound sign (#) and this always overrides the configured DTMF termchar on the system. <property name="termchar" value=""/> Builtin grammar MPS VXML Browser supports the built-in grammars identified in the following subsections. Boolean Boolean grammars are also referred to as Yes/No grammars. Optional parameters y = change dtmf digit for yes (default is 1) n = change dtmf digit for no (default is 2) Note: The word boolean is always lowercase. See the following example. <grammar src="builtin:grammar/boolean"/> <grammar src="builtin:dtmf/boolean?y=9;n=0"/> Avaya Media Processing Server VXML Browser User Guide November

142 VXML Developer Guide Command The Command built-in grammar is a dtmf-only grammar that lets a user specify DTMF tones and the variables they want returned. Mandatory parameters dtmf = DTMF sequence that matches this command grammar Optional parameters attr/value = one or more attribute value pairs that you want returned when this command grammar is matched Command example <grammar src="builtin:dtmf/command? dtmf=*;command=operator"/> Currency The Currency built-in grammar is used for dollar amounts. DTMF * represents a decimal. Currency example <grammar src="builtin:grammar/currency"/> <grammar src="builtin:dtmf/currency"/> Date Date example <grammar src="builtin:grammar/date"/> <grammar src="builtin:dtmf/date"/> 142 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

143 Digits Digits Only digits are accepted. DTMF # and * are errors. Optional parameters minlength = minimum number of digits to accept (default is 1) maxlength = maximum number of digits to accept (default is 100) length = actual length of digits to be received, must not be used with minlength or maxlength Digits example <grammar src="builtin:grammar/digits?length=5"/> <grammar src="builtin:dtmf/digits?length=5"/> Numbers Numbers example <grammar src="builtin:grammar/number"/> <grammar src="builtin:dtmf/number"/> Phone numbers Optional parameters minextension = minimum phone extension allowable maxextension = maximum phone extension allowable Phone numbers example <grammar src="builtin:grammar/phone? minextension=1111;maxextension=9999"/> Avaya Media Processing Server VXML Browser User Guide November

144 VXML Developer Guide <grammar src="builtin:dtmf/phone? minextension=1111;maxextension=9999"/> Time Time example <grammar src="builtin:grammar/time"/> <grammar src="builtin:dtmf/time"/> Touchtone This grammar is a touch tone only grammar that accepts any entered touch tone. Optional parameters minlength = minimum number of digits to accept (default is 1) maxlength = maximum number of digits to accept (default is 100) length = actual length of digits to be received, must not be used with minlength or maxlength Touchtone example <grammar src="builtin:dtmf/touchtone?minlength=1;maxlength=4"/> Customer-defined static grammars You can use customer-defined static grammars by specifying the keyword static : inside the attribute src of the <grammar> element. The name referenced is vendor-dependent and is summarized in the following table. Vendor Nuance Recognizer 9.0.x Static grammar name The file stored in the %INET_URL_BASE% (assigned to a file) directory. If no extension is specified, the default.gram extension is used. 144 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

145 Creating a customer-defined static Nuance 9.x grammar Vendor Static grammar name Note: Do not use a period (.) in the grammar name. In OSR, a period (.) assumes that it is the file extension. Creating a customer-defined static Nuance 9.x grammar The following procedure describes how to create a customer-defined static OSR 3.x/Nuance 9.x grammar. 1. Create the grammar, and compile it. A grammar file can use the extension.grxml or.gram. If you do not specify an extension, then.gram is used. 2. If %INET_URL_BASE% exists, copy the grammar file to %INET_URL_BASE% ; otherwise, place the grammar in %OSCARHOME%\PERInu90\grammars. (Type rcm display sysinfo to check the status of %INET_URL_BASE%.) The environment variable %SWIGRAMDIR% must have the same value as %INET_URL_BASE%. 3. To force an update, restart the Avaya MPS Service on the Speech Server. Otherwise, the updated grammar is used when the previous version expires. 4. Reference the grammar using, for example <grammar src="static:sports"/> or <grammar src="static:sports.grxml"/> Recording speech Applications can use the <record> element to record a caller utterance and store it in a media file. The type of media file is specified with the type attribute, which is configured as audio/x-mmf for an MMF element or audio/x-wav for a WAV file. You must configure the system-wide record MMF for any use of the VXML <record> tag, including recording to a WAV file. You must configure the system-wide record MMF audio because VXMLI does not stream directly to the WAV file; the recording is held temporarily in the record MMF. The recording utterance is temporary and is deleted when VXML document processing terminates for a call. If the application needs to keep the recording after the call, then the application must post the recording to a Web server or configure the property com.avaya.ivr.record.retain as true. Avaya Media Processing Server VXML Browser User Guide November

146 VXML Developer Guide Several elements can instruct the interpreter to accept user input during execution. These elements include <field>, <initial>, <link>, and <menu>. For more information, see Recording user utterances while attempting recognition on page 33. Note: Posting MMF elements to a Web server is not currently supported. If this functionality is required, then you must instead use the media type audio/x-wav. The system assigns a unique file name to the recording unless you specify the property com.avaya.ivr.record.filename. The location is determined by the environment variable $MMFHOME. If this value is not configured, then the following locations are used: Solaris: /mmf/peri Windows: m:\mmf\peri Note: It is good practice for the application to specify values for timeout, finalsilence, and maxtime. If these are not specified then the following default values are used: timeout=5s finalsilence=2s maxtime=30s The following application is an example of recording and saving speech. The content of the WAV file, base64 encoded, is posted to the Web server. <form> <record name="greeting" beep="true" maxtime="10s" finalsilence="4000ms" dtmfterm="true" type="audio/x-wav"> <prompt> At the tone, please say your greeting. </prompt> <noinput> I didn't hear anything, please try again. </noinput> </record> <block> <prompt> 146 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

147 Alarms Your greeting is <audio expr="greeting"/> </prompt> <submit next="/cgi-bin/formdata" method="post" namelist="greeting" enctype="multipart/form-data"/> </block> </form> Application: At the tone, please say your greeting. Caller: Hello my name is John Doe. Please leave a message. Application: Your greeting is "Hello my name is John Doe. Please leave a message". The recorded data is played from the CMR token. Application: Posts the WAV file that contains the recording to the Web server from which the VXML application was downloaded. Alarms The system alarms feature provides a facility to display various system messages in a uniform format. The alarm logs are in the directory $MPSHOME/common/log in the format alarm.<component_type>.<component_#>.log. Alarms are also assigned a severity level, ranging from 1 (least severe) to 9 (most severe). Use the MPS Manager Alarm Viewer utility to display logged system alarms and to create filters to selectively allow or ignore certain alarms to be displayed or logged. Alarm generation (com.avaya.ivr.alarm) Use the parameter com.avaya.ivr.alarm to generate a system alarm. Attribute name expr cond Description Supported as defined by the specification. Supported as defined by the specification. Supported as defined by the specification. Avaya Media Processing Server VXML Browser User Guide November

148 VXML Developer Guide Attribute classid codebase codetype data type archive fetchhint fetchtimeout maxage maxstale Description Configure as com.avaya.ivr.alarm to generate an alarm. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. The following values must be passed by using the <param> element. Parameter name alcode key appnum ins1 Optional No Yes Yes Yes Description The alarm number to generate, which must be in alarm.db and in the range [90000,99999]. The key that is used to generate the database key for accessing the alarms. The default value is the name of the VXML interpreter ( VXMLI ). Note: This key cannot exceed 16 characters (including the terminating \0 ). The application number that is associated with the alarm. Typically, this parameter is configures as the line number on which the call is processed. The default value is session.com.avaya.ivr.interp.id. Insert string, which is an optional text field that is displayed in the alarm message. 148 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

149 Statistics Parameter name ins2 ins3 Optional Yes Yes Description The default value omits this string from the message. Insert string, which is an optional text field that is displayed in the alarm message. The default value omits this string from the message. Insert string, which is an optional text field that is displayed in the alarm message. The default value omits this string from the message. When this <object> is executed, it returns an ECMAScript object as the value of the form item variable. The ECMAScript object has the following properties. name.status Indicates the status of the platform-specific functionality. It is configured as success on success or failure on failure. Statistics The following sections describe using statistics within the VXML application. Client side A VXML application can keep track of client-side statistics that can be used by MPS Reporter to create reports for statistical analysis. The application can track the number of times a particular event occurs during a call. For example, the application can track how many times the caller chooses a particular menu command. The application uses a statistic counter (StatCounter) to track events, and one statistic counter must be defined for each unique occurrence of a specified event. Related events are grouped by having a common statistic group (StatGroup). The VXML application references the statistic by name, which uses the format StatGroup.StatCounter. For example, if you want to track the type of banking transactions chosen by a customer, define a StatGroup called TransType and define the following statistics: TransType.balance --the number of times a customer checked their balance TransType.withdraw --the number of times a customer made a withdrawal Avaya Media Processing Server VXML Browser User Guide November

150 VXML Developer Guide TransType.transfer --the number of times a customer made a transfer TransType.custserv --the number of times a customer requested to speak with a customer service representative In MPS Developer, a statistic group (StatGroup) corresponds to a folder, and a statistic counter (StatCounter) corresponds to a data card. The application must increment these statistic counters each time the corresponding event occurs by invoking the object tag com.avaya.ivr.statincr (see Update Statistic Counter) and specifying the increment amount. For example, each time the customer requests a balance, the application invokes the following code. <form> <object classid="com.avaya.ivr.statincr"> <param name="transtype.balance" value="1"/> </object> </form> Update statistic counter (com.avaya.ivr.statincr) The following tables describe the statistic counter attributes. Attribute name expr cond classid codebase codetype data type Description Supported as defined by the specification. Supported as defined by the specification. Supported as defined by the specification. Configure as com.avaya.ivr.statincr to indicate that one or more statistic counters are incremented. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. 150 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

151 HTTP user agent Attribute archive fetchhint fetchtimeout maxage maxstale Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Description The following values must be passed by using the <param> element. Parameter name Optional Description StatGroup.StatCounte r No Specify one or more parameters. This indicates that the statistic counter, StatCounter, in the statistic group, StatGroup, is incremented by the value specified. When this <object> is executed, it returns an ECMAScript object as the value of the form item variable. The ECMAScript object has property name.status, which indicates the status of the platform-specific functionality. Configure it as success on success or failure on failure. After the call succeeds, it is deleted. HTTP user agent The User-Agent request-header field contains information about the user agent that originates the request. The server can use this information to generate VXML code that is specific to this interpreter version or platform. The VXML browser assigns this field to the following: Platform-Type/Platform-Version (Comments) Interpreter-Type/Interpreter-Version Platform-Type --The platform type, which currently can only be MPS. Platform-Version --The current version of the platform type. Comments --Comments about the platform, which currently contains the following: OS- Name;OS-Version. - OS-Name --Can be SunOS for Solaris or WinNT for Windows. Avaya Media Processing Server VXML Browser User Guide November

152 VXML Developer Guide - OS-Version --The platform version. Interpreter-Type --Type of interpreter, which can be either VXML or CCXML. Interpreter-Version --Version of the interpreter. The following are some valid examples: MPS/3.5.0 (SunOS;5.8) VoiceXML/2.3.0 MPS/3.5.0 (WinNT;5.0) VoiceXML/2.3.0 MPS/2.1.0 (SunOS;5.8) CCXML/1.0.0 For more details, see the HTTP/1.1 RFC. VXML interpreter cache All documents are cached in $MPSHOME/PERIvxml/cache/MPS#, where # is the MPS number. Temporary cached files are not automatically deleted when VXML Interpreter starts and stops. Temporary files can occupy too much disk space, preventing optimum system function. As well, the VXML Interpreter maintains its cache using file names (represented as inodes on Solaris). If too many temporary files are in the cache directory, the system can run out of inodes, causing it to crash. To prevent a system crash and to ensure sufficient disk space is available, temporary cached files must be periodically cleared. To clear the temporary cached files, see the appropriate Solaris or Windows procedures in the following sections. Solaris Perform the following steps to clear the VXMLI cache. 1. In vsh, go to the correct MPS component, and issue the following command: srp vxmli -stop 2. Go to the $MPSHOME/PERIvxml/cache/mps#, and issue the following command: rm -rf * 3. Restart the interpreter in vsh: srp vxmli -start 152 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

153 Windows Windows Perform the following steps to clear the VXMLI cache. 1. In vsh, go to the correct MPS component, and issue the following command: srp vxmli -stop 2. Delete the %MPSHOME%/PERIvxml/cache/mps# folder. 3. Restart the interpreter in vsh: srp vxmli -start To clear the VXMLI cache, delete the MPSHOME/PERIvxml/cache/mps# folder. Delay A delay in the execution of a VoiceXML script is achieved using the VXML <object> tag with classid "com.avaya.ivr.delay". The delay object tag is described as follows: Table 16: Delay (com.avaya.ivr.delay) Attribute name expr cond classid codebase codetype data type archive fetchhint fetchtimeout maxage maxstale Description Supported as defined by the specification. Supported as defined by the specification. Supported as defined by the specification. Configure as com.avaya.ivr.delay to delay the execution of the VoiceXML script. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Avaya Media Processing Server VXML Browser User Guide November

154 VXML Developer Guide The following values are passed using the <param> element. Parameter Name Optional Description delay no The duration to delay, in milliseconds, the VoiceXML script. If this parameter is not specified or is out of range error.semantic will be thrown. Range: delay >= 1ms; delay <= ms (1 hour) When this "com.avaya.ivr.delay" <object> is executed it suspends the execution of the VoiceXML script and, on completion, returns an ECMAScript string as the value of the form item variable. This ECMAScript string will be set to SUCCESS. Example Delay of 500 milliseconds <object name="vxml_delay" classid="com.avaya.ivr.delay"> <param name="delay" value="500"></param> </object> Call Progress Detection (com.avaya.ivr.cpd) The Call Progress Detection (CPD) object provides the ability to monitor for call progress tones, such as dial, busy, reorder, and ring back. The application can enable which tones to monitor. When that tone is detected the applications will receive the event for that tone. The application can disable the monitoring of one or more tones also. To configure CPD the VXML <object> element with classid com.avaya.ivr.cpd is used. The CPD object is described as follows: Table 17: CPD (com.avaya.ivr.cpd) Attribute Name Expr Cond Classid Codebase Codetype Description Supported as defined by the specification. Supported as defined by the specification. Supported as defined by the specification. Configure as com.avaya.ivr.cpd CPD settings Not used and ignored. Not used and ignored. 154 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

155 Call Progress Detection (com.avaya.ivr.cpd) Attribute Data Type Archive Fetchhint Fetchtimeout Maxage Maxstale Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Description The following parameter names and values are used to configure each tone using the <param> element. Parameter name Optional Description busy Yes Detect a busy signal on the line (called party cannot be reached or line is in use by another party). dialtone Yes Detect a dialtone on the line (line is free) fax Yes Detect fax tones on the line (fax machine is using the line). modem Yes Detect modem tones on the line (modem is using the line). reorder Yes Detect reorder tone on the line (called party cannot be reached, also known as "fast busy"). ringback Yes Detect ringback tone on the line (telephone is ringing on called party end). silence Yes Detect silence on the line. user1 Yes Detect user-defined tone 1 on the line. user2 Yes Detect user-defined tone 2 on the line. user3 Yes Detect user-defined tone 3 on the line. user4 Yes Detect user-defined tone 4 on the line. user5 Yes Detect user-defined tone 5 on the line. user5 Yes Detect user-defined tone 6 on the line. user7 Yes Detect user-defined tone 7 on the line. sit Yes Detect SIT tone (dialed party has disconnected number) Avaya Media Processing Server VXML Browser User Guide November

156 VXML Developer Guide Parameter name Optional Description voice Yes Detect voice on the line (someone is speaking). Each tone parameter can have one of the following values. persist nonpersist disable Value Description This tone s detection is enabled. Every time the tone occurs the CPD event is sent to the application. This tone s detection is enabled. On the first tone occurrence the CPD event is sent to the application. Subsequent occurrences are not sent. This tones detection is disabled. No CPD events are sent for this tone. A CPDObject must have at least one event specified. If no CPD events are specified the interpretation error error.object is thrown. Each CPD tone parameter can be set as persistent, non-persistent or disabled. Example: CPD configuration <object name= CPDObject classid= com.avaya.ivr.cpd > <param name= busy value= persist /> <param name= fax value= nonpersist /> <param name= reorder value= disable /> </object> When this <object> is executed, it returns an ECMAScript object as the value of the form item variable. The ECMAScript object has property name.status, which indicates the result of the execution. It can be either success or failure. After the call succeeds, it is deleted. It is recommended to configure the CPDObject with the complete settings in one block. Once CPD is configured VXML application can receive CPD events. The following events can be caught and processed inside the <catch> element: Event name (_event variable) com.avaya.ivr.cpd.busy com.avaya.ivr.cpd.dailtone com.avaya.ivr.cpd.fax com.avaya.ivr.cpd.modem com.avaya.ivr.cpd.reorder com.avaya.ivr.cpd.ringback busy dialtone fax modem reorder ringback Event message (_message variable) 156 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

157 Set Service Parameter (com.avaya.ivr.setsvcparam) Event name (_event variable) com.avaya.ivr.cpd.silence com.avaya.ivr.cpd.user1 com.avaya.ivr.cpd.user2 com.avaya.ivr.cpd.user3 com.avaya.ivr.cpd.user4 com.avaya.ivr.cpd.user5 com.avaya.ivr.cpd.user6 com.avaya.ivr.cpd.user7 com.avaya.ivr.cpd.sit com.avaya.ivr.cpd.voice silence user1 user2 user3 user4 user5 user6 user7 sit voice Event message (_message variable) Example: Catch cpd event <catch event= com.avaya.ivr.cpd.busy com.avaya.ivr.cpd.silence > <if cond= _event== com.avaya.ivr.cpd.busy > <log>busy event detected!</log> <else /> <log>silence event detected!log>silence event detected!> </if> <log>event name:<value expr= _event /></log> <log>event message: <value expr= _message /></log> </catch> Note that the event is thrown only when the VXML interpreter switches its working mode: transitioning - waiting for input. See the VXML 2.0 specification Prompt Queueing and Input Collection section for more info about VXML interpreter states. Set Service Parameter (com.avaya.ivr.setsvcparam) Service parameter values are set using the com.avaya.ivr.setsvcparam object: Parameter name cpdmaxtonedur cpdmintonedur cpdminpsedur cpdwinlen Description Sets guard timer used for detecting continues tones. Value used by CPD to discriminate between a transient and actual tone. Value used by CPD to discriminate between a transient and actual pause. Adjusts size of sliding window used by CPD to merge similar tone or pause events. Avaya Media Processing Server VXML Browser User Guide November

158 VXML Developer Guide tdddevdet Parameter name Description Used to configure the CPD resource for TDD device detection. Example: <object name="setparam" classid="com.avaya.ivr.setsvcparam"> <param name= cpdmaxtonedur value= 100 /> <param name= tdddevdet value= ON /> <object> For more info about service parameters ( cpdmaxtonedur, cpdmintonedur, cpdminpsedur, cpdwinlen and tdddevdet ) refer to MPS Command Reference Manual. Example: Telecommunications Device for the Deaf (TDD) A vxml app can detect if a Telecommunications Device for the Deaf (TDD) user is calling. If a TDD call is detected, the application can transfer the TDD user to an operator to handle the call. Detecting TDD tones after a call is connected About this task To detect TDD tones after a call is connected, do the following. Procedure 1. Receive the cpd event. A TDD detection is reports as user4 event. (In user4 processing turn off <param name= tdddevdet value= OFF /> 2. Set tdddevdet to ON. Note: If tdddevdet is set to on, CPD tones such as busy, reorder, ring, dial tone, voice, and so on, are not detected. 3. Enable the CPD Object to receive CPD user4 tone event as non persistant. 4. TDD tone detection should be turned off when it is no longer required. Turning off TDD detection is typically done during the processing of the user4 event or when the application recycles. Set tdddevdet to OFF. Sample Coding for TDD <!-- Catch the user4 event indicating TDD detected --> <catch event="com.avaya.ivr.cpd.user4"> <log>cpd _event: <value expr="_event" />_message: <value expr="_message" /></ 158 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

159 Set Service Parameter (com.avaya.ivr.setsvcparam) log> <goto nextitem="xfertddcall"/> </catch> <form id="enable_ttd"> <!-- Turn on tdddevdet and enable to receive one CPD user4 event --> <object name="setparam" classid="com.avaya.ivr.setsvcparam"> <param name="tdddevdet" value="on"/> </object> <object name="setcpd" classid="com.avaya.ivr.cpd"> <param name="user4" value="nonpersist"/> </object> </form> <form id="xfertddcall"> <!-- Turn tdddevdet off --> <object name="setparam" classid="com.avaya.ivr.setsvcparam"> <param name="tdddevdet" value="off"/> </object> <!--Transfer call goes here--> </form> <form id="disable_ttd"> <!-- Disable CPD user4 event and turn off tdddevdet --> <object name="setcpd" classid="com.avaya.ivr.cpd"> <param name="user4" value="disable"/> </object> <object name="setparam" classid="com.avaya.ivr.setsvcparam"> <param name="tdddevdet" value="off"/> </object> </form> Avaya Media Processing Server VXML Browser User Guide November

160 VXML Developer Guide 160 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

161 Chapter 5: Interoperability This chapter covers: 1. Introduction 2. CCXML 3. MPS Developer 4. Invoking MPS Developer from VXML Introduction Avaya VXML interpreter easily integrates and coexists with applications written using CCXML or MPS Developer (3.0 or later). This flexibility provides VXML applications the following advantages: Advanced Call Control CCXML and MPS Developer can provide telephony call control support for VXML applications. Extended Functionality A VXML application can invoke MPS Developer scripts, which provide a VXML application with extended functionality that is not specified in the VXML specification. Migration Path The VXML/MPS Developer integration strategy provides existing customers with investment protection and a migration path from MPS Developer to an open standard based on VXML. The data exchanged between CCXML/MPS Developer and VXML cannot exceed 64 k. CCXML CCXML completes and integrates with VXML by providing telephony call control support. The CCXML application interacts with a caller by starting a VXML dialog using the <dialogstart> element. When the dialog finishes, control returns to the CCXML session. The CCXML application can force a dialog to terminate by using the <dialogterminate> element. You are encouraged to review the CCXML specification ( ). Avaya Media Processing Server VXML Browser User Guide November

162 Interoperability Dialog start The CCXML application uses the <dialogstart> element to start a dialog. The CCXML application can pass data to the VXML dialog using the namelist attribute. All variables and their associated values are added to the URI, which is specified by the src attribute. In addition, these variables are made available to the VXML application in the session variable com.avaya.ivr.appaccept.appdata. When the dialog successfully starts, the CCXML application receives the event dialog.started. For example, to start a dialog called account.vxml, the following CCXML statement is executed: <dialogstart conid="in_sessionid" src="'account.vxml'" type="application/xml+vxml" dialogid="src_dialogid" namelist="ccxmlsession message phone_num" /> In this example, the variables ccxmlsession, message, and phone_num are passed to the dialog and can be accessed using the session variables: com.avaya.ivr.appaccept.appdata.ccxmlsession com.avaya.ivr.appaccept.appdata.message com.avaya.ivr.appaccept.appdata.phone_num Dialog terminate When the VXML dialog terminates, the CCXML application receives the event dialog.exit. A VXML dialog terminates when it does not specify a successor dialog or when it executes the <exit> element. The VXML dialog can return data to the CCXML application by using the expr or namelist attribute of the <exit> element. These variables are made available to the CCXML application in the event values field. In addition, a CCXML application can request that a dialog terminates by using the <dialogterminate> element. For example, this statement terminates a VXML dialog and pass a variable Account back to the CCML application: <exit namelist="account"/> 162 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

163 Dialog user event com.avaya.ivr.dialog.user.* The variable evt.values.account is available to the CCXML application in the following event handler. <transition state="in_vxml_session" event="dialog.exit" name="evt"> <assign name="account" expr="evt.values.account"/> </transition> Dialog user event com.avaya.ivr.dialog.user.* A VXML dialog can generate a user event, which is sent back to the CCXML application. The event is generated by using the object com.avaya.ivr.dialog.user. All variables in the parameter element are passed to the CCXML application. The parameter event is used to indicate the name of the user event and must always be present. For example, the following VXML statement generates an event called dialog.user.webpush. <object name="dialogevt" classid="com.avaya.ivr.dialog.user"> <param name="event" value="webpush"/> <param name="url" expr="myurl"/> </object> The variables evt.values.event and evt.values.url is available to the CCXML application in the following event handler. <transition state="in_vxml_session" event="dialog.user.*" name="evt"> <assign name="action" expr="evt.values.event"/> <assign name="url" expr="evt.values.url"/> </transition> name expr cond Attribute Description Supported as defined by the specification. Supported as defined by the specification. Supported as defined by the specification. Avaya Media Processing Server VXML Browser User Guide November

164 Interoperability Attribute classid codebase codetype data type archive fetchhint fetchtimeout maxage maxstale Description Configure as com.avaya.ivr.dialog.user to indicate that you want to generate and send a dialog user event to the CCXML application. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. The following values must be passed by using the <param> element. Parameter name Optional Description Event No The name of event to generate. * Yes Data that is returned back to the CCXML application and made available in the event values field. When this <object> is executed, it returns an ECMAScript object as the value of the form item variable. The ECMAScript object has property name.status, which indicates the status of the platform specific functionality. It is configured as success on success or failure on failure. After the call succeeds, it is deleted. MPS Developer You can use MPS Developer to provide telephony call control support to VXML. This integration is provided by using the VXML Toolkit shown in following figure. The VXML Toolkit is provided by the PERI tlkt package install and is automatically configured. If you do not see the toolkit in 164 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

165 MPS Developer the MPS Developer set of toolkits, check that $MPSHOME/PERItlkt/vxmltoolkit is in your PPROPATH. If its not, add it to your PPROPATHand restart MPS Developer. For detailed instructions, see Prepare the VXML Toolkit for use on page 165. Prepare the VXML Toolkit for use 1. Right-click My Computer and select Properties. 2. In the System Properties window, click on the Advanced tab. 3. In the Advanced section, click the Environment Variables button. 4. In the Systems Variable section, highlight the PPROPATH variable. Click Edit. 5. In the Edit System Variable dialog box, add the path line %MPSHOME%\PERItlkt \vxmltoolkit to the PPROPATH variable. Ensure you separate directory names with a semicolon. 6. Click OK. Avaya Media Processing Server VXML Browser User Guide November

166 Interoperability Figure 3: VXML Toolkit The VXML Toolkit contains the following blocks. Invoke VXML Dialog. Start a VXML dialog and block until the dialog terminates. Terminate VoiceXML Dialog. Terminate a VoiceXML dialog and block until the dialog actually terminates. Disconnect VoiceXML Dialog. Disconnect a VoiceXML dialog and block until the dialog actually disconnects. Dialog start The Invoke VoiceXML Dialog block (see figure Figure 4: Invoke VXML Dialog block on page 167) is used to start a VoiceXML dialog. The MPS Developer application blocks on this statement until the dialog terminates, but asynchronous telephony and CTI conditions can still be handled in the background. This allows VXML applications to run in Intelligent Network environments. 166 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

167 Dialog start Figure 4: Invoke VXML Dialog block The Invoke VXML Dialog block contains the following fields: CID--The connection identifier that the dialog starts for. Typically this field is configured as System.DefaultCID. URL--The URL of the VXML dialog to be started. Send Application Data--Application data that is made available to the VXML dialog. This data must be in AVS format created by using ToAVS on a data folder. Each data card in the folder is available to the VXML dialog in the session variable com.avaya.ivr.appaccept.appdata. Receive Application Data--Application data that is returned to the MPS Developer application from the VXML dialog. This data is in AVS format and must be converted by using FromAVS. The folder must contain a data card for each value that is specified the namelist attribute in the VXML <exit> element. Call State--The current call state (after the dialog execution terminates) is stored in this parameter. Call State indicates whether or not the call is connected. It is set to - Connected if the call is still connected or - Idleif the call is no longer connected If the Call State does not indicate Connected, the application terminates or restarts. For example, if the MPS Developer application passes the CID and a company branding message, it defines a folder and creates an AVS string using this folder and ToAVS. The VXML application accesses this data using the following session variables: session.com.avaya.ivr.appaccept.appdata.companybrandingmessage session.com.avaya.ivr.appaccept.appdata.cid Note: For more information about using ToAVS and FromAVS for converting between Attribute:Value strings and folders, see the MPS Developers User Guide. Avaya Media Processing Server VXML Browser User Guide November

168 Interoperability The following figure shows the MPS Developer data passing to VXML dialog. Figure 5: MPS Developer data passed to VXML dialog The following figure shows the ToAVS conversion dialog box. Figure 6: ToAVS conversion If the VXML dialog issues the statement <exit namelist="accountnumber PaymentAmount"/> the data AccountNumber and PaymentAmount are returned as AVS data in the field Receive Application Data. The application then needs to issue FromAVS into a folder, which contains 168 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

169 Dialog start the data cards AccountNumber and PaymentAmount. The folder definition is shown in the figure Figure 8: VXML dialog data returned to MPS Developer on page 169. The following figure shows the FromAVS conversion dialog box. Figure 7: FromAVS conversion The following figure shows the VXML dialog data returning to MPS Developer. Figure 8: VXML dialog data returned to MPS Developer Avaya Media Processing Server VXML Browser User Guide November

170 Interoperability Note: calltim events are not supported within MPS Developer while a VXML dialog is active. In this situation, the MPS Developer application must maintain its own call timer. Note: Before invoking VXML, you must use an Environment block in the MPS Developer application to assign the vpsrcvtime parameter a value larger than the maximum permissible duration of the VXML dialog (for example, 1 hour). If the vrto condition occurs while the VXML dialog runs, the MPS Developer application enters the vrto condition handler. However, the VXML dialog does not terminate automatically. After invoking VXML, you must restore vpsrcvtime to a value appropriate to the MPS Developer application environment (for example, 1 minute). Dialog terminate Use the VXML Toolkit to terminate a VXML dialog. Use the Terminate VXML Dialog block when the application waits in the Invoke VXML Dialog block and jumps out of that block due to a condition or event. The application, upon receiving a condition or event while blocked on the Invoke VXML Dialog block executes the terminate VXML Dialog block and then uses a resume connector to return to the Invoke VXML Dialog block. The Invoke VXML Dialog block completes when the Terminate VXML Dialog instructions are processed by VXMLI. This process ensures that datacards passed into the Invoke block are properly filled in. The following figure shows the terminate VXML Dialog block. Figure 9: Terminate VXML Dialog block The Terminate VXML Dialog block contains the following fields: CID--The connection identifier for which the dialog is terminated. Typically this field is configures as System.DefaultCID. Send Application Data--Application data that is made available to the VXML dialog. This data must be in AVS format created by using ToAVS on a data folder. Each data card in 170 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

171 Dialog disconnect the folder is available to the VXML dialog in the session variable com.avaya.ivr.appaccept.appdata. Immediate (T/F)--If true (hard dialog terminating), the current executing element of the dialog finishes and the dialog terminates immediately, without completing. If set to false (soft dialog terminating), the entire dialog finished executing prior to termination. No special VXML event is generated in each case. Dialog disconnect Use the VXML Toolkit to disconnect a VXML dialog. Use the Disconnect VXML Dialog block when the application waits in the Invoke VXML Dialog block and jumps out of that block due to a condition or event. As opposed to the Terminate VXML Dialog block the usage of the Disconnect VXML Dialog block allows a VXML dialog to inform user that it was terminated by MPS Developer application: Disconnect VXML Dialog block sends to the VXML dialog the "connection.disconnect.hangup" event which can be caught in vxml and processed. The following figure shows the Disconnect VXML Dialog block. Figure 10: Disconnect VXML Dialog block The Disconnect VXML Dialog block contains the following fields: CID -- The connection identifier for which the dialog is disconnected. Typically this field is configures as System.DefaultCID. Send Application Data -- Application data that is made available to the VXML dialog. This data must be in AVS format created by using ToAVS on a data folder. Each data card in the folder is available to the VXML dialog in the session variable com.avaya.ivr.appaccept.appdata. Avaya Media Processing Server VXML Browser User Guide November

172 Interoperability Note: VXML Dialog cannot catch the connection.disconnect.hangup event when vxml document processing is already finished. For example, if the following vxml application is used: <?xml version="1.0"?> <vxml version="2.0"> <catch event="connection.disconnect.hangup"> <log>caller DISCONNECT</log> </catch> <form id="form1"> <block> <prompt> <audio src="builtin:music.wav"/> // duration of music.wav > 10 sec </prompt> <block> </form> </vxml> After 10 sec the disconnect event is received, vxmli won t be able to catch "connection.disconnect.hangup" event because it is playing the final prompt when document processing is already done. Invoking MPS Developer from VXML A VXML dialog can invoke a MPS Developer script by using the object com.avaya.ivr.appoffer. Note the following conditions: A MPS Developer script must be running for each line that a VXML dialog runs. This application must be waiting in a Line Operations block with Action set to Accept. Data is sent from the VXML dialog to the MPS Developer script using the parameter appdata. VXML/MPS Developer users define the format of this data. The MPS Developer script returns the call to the VXML dialog using the line operations block Return. Data is returned in the Send Application Data and is made available in the ECMAScript object name. appdata. The offset parameter is optional. If the offset parameter is not configured, the default is 0. Note: Invoking this object fails if either CCXML or MPS Developer is used for call control. That is, if a VXML dialog is started from CCXML or MPS Developer then this dialog can not issue the object com.avaya.ivr.appoffer. 172 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

173 Application offer (com.avaya.ivr.appoffer) Application offer (com.avaya.ivr.appoffer) The following table lists the attributes and descriptions for the application offer object. name expr cond Attribute Description Supported as defined by the specification. Supported as defined by the specification. Supported as defined by the specification. classid codebase codetype data type archive fetchhint fetchtimeout maxage maxstale Configure as com.avaya.ivr.appoffer to indicate a call transfer to another application. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. Not used and ignored. The following values must be passed by using the <param> element. Parameter name poolname No Optional Description Specifies the pool name or specific application that is invoked by vxml. The following formats are supported: Avaya Media Processing Server VXML Browser User Guide November

174 Interoperability Parameter name appdata timeout offset Optional Yes Yes Yes Invoke the application associated with the entry in the field <servicetype> on the same MPS and line plusoffset (see param offset) as the VXML application. For example, if the VXML application (running onmps#3 line#23) specifies then the MPS Developer application onmps#2 on line#47 is invoked. This parameter is equivalent to specifying Service Type can also be vamp because the VXML Interpreter automatically converts a service type of peripro to vamp. For example, the VXML Interpreter automatically converts a pool name Either method ( peripro or vamp ) is valid when you specify a Service Invoke the application that matches the service type that is specified in the field <servicetype> and service identifier <serviceid>. For example, specifying " transfers the call to the MPS Developer application that runs on MPS#3 on line#5. Application specific data, where the format is agreed upon between the VXML and MPS Developer application. No default value is available. When no value is specified, the Receive Application Data data card on the Line Operations block of MPS Developer is not used. Specifies the amount of time (in seconds) in which the invocation must be completed before it is aborted. The default value is 30 seconds. Specifies the offset value that is used is specified for the poolname. See poolname description previous details. The default value is 0. When this <object> is executed, it returns an ECMAScript object as the value of the form item variable. The ECMAScript object has the following properties: name. callconn --Indicates whether the call is currently connected. It is true if the call is still connected or false if the call is disconnected. name. status --Indicates the status of the handoff operation that was initiated through the object comm.avaya.ivr.appoffer. It is success on success or failure on failure. 174 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

175 Application offer (com.avaya.ivr.appoffer) name. appdatalen --Number of bytes in the application data field name. appdata. name. appdata --Application specific data, where the format is agreed upon between the VXML and MPS Developer application. Table 18: Invoking MPS Developer from VXML <?xml version="1.0"?> <vxml version="2.0"> <var name="offset"/> <form id="main"> <field name="offset_field"> <grammar src="builtin:dtmf/digits?minlength=1;maxlength=2"/> <prompt> Please enter Peripro offset </prompt> <filled> <prompt> You entered <value expr="offset_field"/>. </prompt> <assign name="offset" expr="offset_field"/> <goto next="#handoff"/> </filled> </field> </form> <form id="retry"> <block> <prompt> Verify that we can still use audio server after the handoff. <audio src=" Sterling.wav"/> </prompt> </block> Avaya Media Processing Server VXML Browser User Guide November

176 Interoperability <field name="fentry" type="boolean"> <property name="timeout" value="10s"/> <prompt count="1">would you like to retry?</prompt> <nomatch count="1">say yes or no.</nomatch> <filled> <prompt> You said <value expr="fentry"/> </prompt> <if cond="fentry == '1'"> <prompt> Alright cool! </prompt> <goto next="#main"/> </if> <prompt> OK, you can call back later. Thank You. </prompt> <disconnect/> </filled> </field> </form> <form id="handoff"> <object name="handoff" classid="com.avaya.ivr.appoffer"> <param name="poolname" <param name="appdata" DEMO GREETING"/> <param name="offset" expr="offset"/> 176 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

177 Application offer (com.avaya.ivr.appoffer) <prompt> Please wait while we offer you to a peripro application </prompt> </object> <block> <prompt> The call has returned from the Peripro application Is the call currently connected? <value expr="handoff.callconn"/> The handoff object execution result is <value expr="handoff.status"/> The length of the application specific data is <value expr="handoff.appdatalen"/> The application specific data returned to Voice XML is <value expr="handoff.appdata"/> </prompt> <goto next="#retry"/> </block> </form> </vxml> Note: The MPS Developer application HandoffGetLine.ppr corresponds with the previous sample VXML code. HandoffGetLine.ppr is in $MPSHOME/PERIvxml/samples/ handoff. Avaya Media Processing Server VXML Browser User Guide November

178 Interoperability 178 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

179 Chapter 6: Languages This chapter covers: 1. Introduction 2. Languages 3. MMF audio for numset Introduction This chapter describes the use of multiple languages. Languages MPS VXML Browser supports the use of multiple languages. The Language property can be embedded inside the VXML document or specified in the VxmliDefaults.xml page. The following example shows a VXML page with an embedded language. <form id="builtin_currency"> <property name="xml:lang" value="en-gb"/> <block> <prompt> This is the builtin currency grammar. </prompt> </block> <field name="b_currency_field" type="currency"> Avaya Media Processing Server VXML Browser User Guide November

180 Languages <prompt> Please say a money amount, I will speak it back. </prompt> <filled> <prompt> <voice gender="female"> You said <value expr="b_currency_field" class="currency" mode="recorded"/> </voice> </prompt> <goto next="#builtin"/> </filled> </field> </form> When you specify languages, you must use the two-digit ISO standard for language code ( ISO 639) and country code ( ISO 3166). If a different language is used while the VXML interpreter executes a VXML page, the VXML interpreter attempts to change to the label configured for that language. To set the recognition language, use a property tag; e.g. for Spanish: <property name="xml:lang" value="es-es"/> To set the Text-To-Speech language and MMF prompt language, use either the xml:lang attribute of the <vxml> tag to set the language for the entire page, or the xml:lang attribute of the <prompt> tag; e.g. <vxml xmlns=" xmlns:xsd=" version="2.0" xml:lang="es-es"> <prompt xml:lang="es-es"> For additional details about MMF prompts, see section "Avaya MMF support for multiple languages" below. The default language is set in VxmliDefaults.xml in both the <defaults> and <property name='xml:lang'> tags. 180 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

181 Speech Server configuration Speech Server configuration The following is a section of the SBclient.cfg file related to the Speech Server configuration. Table 19: Speech Server configuration (SBclient.cfg) // Oscar TTS label to use when we first attach and if a language // is requested that is not supported. client.avaya.ivr.prompt.tts.resour ce.lang.default VXIString NORM // Oscar TTS label to use with the specified language client.avaya.ivr.prompt.tts.resour ce.lang.en-us VXIString NORM client.avaya.ivr.prompt.tts.resour ce.lang.en-gb VXIString TTS-EN-GB-M-NORM // Oscar recognition label to use when we first attach and if a language // is requested that is not supported. client.avaya.ivr.rec.recognition.r esource.lang.default VXIString DYNAM_001 // Oscar recognition label to use with the specified language client.avaya.ivr.rec.recognition.r esource.lang.en-us VXIString DYNAM_001 client.avaya.ivr.rec.recognition.r esource.lang.en-gb VXIString REC-EN-GB-M-NORM // Resource Vendor specific parameters // The format is Avaya Media Processing Server VXML Browser User Guide November

182 Languages // client.avaya.ivr.rec.recognition.r esource.resource.parameter VXIString value // where RESOURCE is the pool manager resource name, like lvr-a. // These parameters are required by Nuance if one Oscar is running a recserver // for each language model. This information will be inserted into the JIT String // using Nuance's RECOGNIZE format. // This specifies the language model used to compile the jitenabled grammar for the particular language client.avaya.ivr.rec.recognition.r esource.lvr-a.nuance-package- Name.en-US VXIString English.America.3 client.avaya.ivr.rec.recognition.r esource.lvr-a.nuance-package- Name.en-GB VXIString English.UK.3 // This specifies the name of the compilation server for the specified language client.avaya.ivr.rec.recognition.r esource.lvr-a.nuance-config- Name.en-US VXIString US-CS1 client.avaya.ivr.rec.recognition.r esource.lvr-a.nuance-config- Name.en-GB VXIString UK-CS2 // The Content Base for relative URI's specified in the JIT for the given language client.avaya.ivr.rec.recognition.r esource.lvr-a.content-base.en-us VXIString client.avaya.ivr.rec.recognition.r esource.lvr-a.content-base.en-gb VXIString Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

183 Changing the default Label used during allocation Changing the default Label used during allocation Each resource has a default label that the resource uses when the call begins. The default label for each resource is as follows. Synthesizer (TTS) Recognizer (LVR) Resource NORMAL DYNAM_001 Default label These labels can be overridden in the SBclient.cfg file with the following options. // TTS client.avaya.ivr.prompt.tts.resource.lang.defaul t VXIString TTS-EN-US- M-NORM // LVR client.avaya.ivr.rec.recognition.resource.lang.d efault VXIString REC-EN-US- DYNAM-001 With the configuration settings shown in the preceding example, the TTS and REC resources use TTS-EN-US-M-NORM and REC-EN-US-DYNAM-001, respectively, when the call begins. Language labels When the VXML interpreter encounters a language change, it looks for the configured label for the new language. If this language is not configured, the default label is used. The labels for a language are configured with the following options. // TTS client.avaya.ivr.prompt.tts.resource.lang.en- US VXIStrin g TTS-EN-US-M-NORM client.avaya.ivr.prompt.tts.resource.lang.en- GB VXIStrin g TTS-EN-GB-M-NORM Avaya Media Processing Server VXML Browser User Guide November

184 Languages // LVR client.avaya.ivr.rec.recognition.resource.lan g.en-us VXIStrin g REC-EN-US- DYNAM-001 client.avaya.ivr.rec.recognition.resource.lan g.en-gb VXIStrin g REC-EN-GB- DYNAM-001 The format is as follows: client.avaya.ivr.prompt.tts.resource.lang.xx-yy client.avaya.ivr.rec.recognition.resource.lang.xx-yy xx is the language code and YY is the country code. Using the previous configuration, when the language en-us is used, these labels are requested by the VXML interpreter: TTS-EN-US-M-NORM REC-EN-US-DYNAM-001 If en-gb is used, these labels are requested by the VXML interpreter: TTS-EN-GB-M-NORM REC-EN-GB-DYNAM-001 Note: If you specify at least one other language (other than the default language) in the SBclient.cfg file, and the system requests a language that is not configured, then the error.unsupported.languages event is thrown. The following examples show outcomes for different configurations. Example #1: If SBclient.cfg contains only the following default language entry client.avaya.ivr.prompt.tts.resource.lang.def ault VXIString NORMAL and the user requests en-gb, then the error.unsupported.languages event is not thrown and the default language label is used ( NORMAL). Example #2: If SBclient.cfg contains the default language entry and the following language entry client.avaya.ivr.prompt.tts.resource.lang.default VXIString NORMAL client.avaya.ivr.prompt.tts.resource.lang.en-us VXIString NORMAL and the user requests en-gb, then the error.unsupported.languages event is thrown, because en-gb is not a configured language. Example #3: 184 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

185 Language configuration for vendors other than Nuance If SBclient.cfg contains the default language entry and the following specific language entries: client.avaya.ivr.prompt.tts.resource.lang.def ault VXIString NORMAL client.avaya.ivr.prompt.tts.resource.lang.en- US VXIString NORMAL client.avaya.ivr.prompt.tts.resource.lang.en- GB VXIString NORMAL-EN-GB and the user requests en-gb, then the VXML interpreter automatically switches to the en- GB label listed. Warning: Speech Server system configuration varies depending on the application requirements. If the application runs using only one language, you can configure each Speech Server to support one language. However, if the application switches between multiple languages, you must configure each Speech Server to support all of the languages. The VXML interpreter issues a Change Label request to switch languages. The Change Label request cannot be satisfied if the label for the new language is not configured on the same Speech Server. Language configuration for vendors other than Nuance The xml:lang attribute of the grammar tag must be configured for the desired language (both in the VXML documents and all external grammars). See the vendor specific Avaya Speech Server documentation for additional speech server configuration information. Warning: For OSR, ensure that the grammar for each dynamic label referenced in SBclient.cfg has xml:lang assigned appropriately. By default, this grammar is stored on the Speech Server at %OSCARHOME%\PERIsw30r\grammars\dynam.grxml. Avaya MMF support for multiple languages The VXML interpreter provides support for multiple languages for MMF-based prompts. The current language defined in the VXML application or VxmliDefaults.xml file is used to Avaya Media Processing Server VXML Browser User Guide November

186 Languages determine how to speak MMF-based prompts using the Speak-As designation. In addition to this, several application properties can be configured as // gender for mmf prompts com.avaya.ivr.prompt.builtin.gender // prefix for audio prompts com.avaya.ivr.prompt.builtin.prefix // prefix for audio server com.avaya.ivr.prompt.audioserver.prefix You can configure these properties using the standard VXML <property> tag. For example, to configure the built-in MMF prefix use the following grammar. <property name="com.avaya.ivr.prompt.builtin.prefix" value="s-"/> The following is a description of each property. Property Value Description com.avaya.ivr.prompt.audioserver. prefix com.avaya.ivr.prompt.builtin. prefix com.avaya.ivr.prompt.builtin. gender s- s- female male neutral Prepends all audio file names with the specified prefix. For example, if you configure this as s- for Spanish, and the application requests to speak the WAV file then the actual WAV file played is The default is not to prepend a string to the URL. Prepends all MMF prompts spoken with the specified prefix. For example, if you configure this as s- for Spanish, and the application requests to speak the MMF prompt NUMBER-DEMO- GREETING, then the actual prompt that is played is s- NUMBER-DEMO-GREETING. The default is not to prepend a string to the prompt. Specifies the gender of the spoken audio. This property is necessary for certain languages where the way the audio is spoken depends on the gender of the person speaking. The default gender is neutral. In the following application, the caller hears the following (using a female gender in Italian): 186 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

187 MMF Audio for numset TTS "You have selected to hear a standard MMF prompt" MMF Prompt "it-number DEMO GREETING" TTS "We can also access a file through the Web server" Audio Server The following is the actual VXML code. <form id="mmf"> <property name="xml:lang" value="it-it"/> <property name="com.avaya.ivr.prompt.audioserver.prefix" value="it-"/> <property name="com.avaya.ivr.prompt.builtin.prefix" value="it-"/> <property name="com.avaya.ivr.prompt.builtin.gender" value="female"/> <block> You have selected to hear a standard mmf prompt. <audio src="builtin:number DEMO GREETING"/> We can also access a file through the Web server <audio src=" <goto next="#demo_menu"/> </block> </form> MMF Audio for numset The number set MMF file (numset.mmd and numset.mmi) is used for VXML Speak-As; therefore, the entire Number set serves as the list of prompts. Number set (numset) vocabulary The vocabulary lists presented in this document represent the standard and enhanced system number set (numset) vocabulary used to speak common expressions in a variety of contexts. It is used, for example, to speak a monetary value or a telephone number. Items are used individually, as in "thirty-two," or are joined as necessary, as in "thirty-two-dollars" "and-sixtyseven-cents." Both cardinal and ordinal forms are present as are joining and concluding words such as "of" and "hour." Additionally, the list provides items for pauses, tones, months, and days of the week. The ASE Speak As functionality is accessed in VXML via the <value mode="recorded" expr="..."/> tag. Avaya Media Processing Server VXML Browser User Guide November

188 Languages Taking xml:lang="es-us" as an example: The interpreter takes the first part of the xml:lang value "es", and maps this to the corresponding New Prefix "SPA". It behaves as if speak-conversion-type were set to "SPA" (-J SPA) and generates pseudo- English tokens (-SE) with prefix "SPA-". It uses "Better" concatenation (-Sb), except for class="number:digits", for which concatenation is "Off". The correspondence between the class attribute and the Speak As types is as follows: Class Type currency M date D number C number:digits N number:ordinal O time T duration no equivalent phone no equivalent percent P acctnum no equivalent Inflection guide This inflection guide applies to the standard English numset only. Terminal (T) Soft Terminal (ST) End of sentence. (Period.) End slightly higher than Terminal. (Between a comma and a period.) 188 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

189 Inflection guide MID LO, MID Steady tone, to be followed by other verbiage. (Comma) Understated, steady tone, to be followed by other verbiage. (Comma) Note: For more information about writing VXML applications, see Using Say-As for MMF audio on page 130. Note: If you write VXML applications in a language other than US English, see the Multilingual Vocabulary Management Guide. The following table lists the numset audio prompts for English. Table 20: Numset audio prompts for English English label (Avaya) English spoken text Inflection zero-hours zero hours ST one-hours one hour ST two-hours two hours ST three-hours three hours ST four-hours four hours ST five-hours five hours ST six-hours six hours ST seven-hours seven hours ST eight-hours eight hours ST nine-hours nine hours ST ten-hours ten hours ST eleven-hours eleven hours ST twelve-hours twelve hours ST thirteen-hours thirteen hours ST fourteen-hours fourteen hours ST fifteen-hours fifteen hours ST sixteen-hours sixteen hours ST seventeen-hours seventeen hours ST eighteen-hours eighteen hours ST Avaya Media Processing Server VXML Browser User Guide November

190 Languages English label (Avaya) English spoken text Inflection nineteen-hours nineteen hours ST twenty-hours twenty hours ST twenty-one-hours twenty-one hours ST twenty-two-hours twenty-two hours ST twenty-three-hours twenty-three hours ST twenty-four-hours twenty-four hours ST twenty-five-hours twenty-five hours ST twenty-six-hours twenty-six hours ST twenty-seven-hours twenty-seven hours ST twenty-eight-hours twenty-eight hours ST twenty-nine-hours twenty-nine hours ST thirty-hours thirty hours ST thirty-one-hours thirty-one hours ST thirty-two-hours thirty-two hours ST thirty-three-hours thirty-three hours ST thirty-four-hours thirty-four hours ST thirty-five-hours thirty-five hours ST thirty-six-hours thirty-six hours ST thirty-seven-hours thirty-seven hours ST thirty-eight-hours thirty-eight hours ST thirty-nine-hours thirty-nine hours ST forty-hours forty hours ST forty-one-hours forty-one hours ST forty-two-hours forty-two hours ST forty-three-hours forty-three hours ST forty-four-hours forty-four hours ST forty-five-hours forty-five hours ST forty-six-hours forty-six hours ST forty-seven-hours forty-seven hours ST forty-eight-hours forty-eight hours ST forty-nine-hours forty-nine hours ST 190 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

191 Inflection guide English label (Avaya) English spoken text Inflection fifty-hours fifty hours ST fifty-one-hours fifty-one hours ST fifty-two-hours fifty-two hours ST fifty-three-hours fifty-three hours ST fifty-four-hours fifty-four hours ST fifty-five-hours fifty-five hours ST fifty-six-hours fifty-six hours ST fifty-seven-hours fifty-seven hours ST fifty-eight-hours fifty-eight hours ST fifty-nine-hours fifty-nine hours ST sixty-hours sixty hours ST sixty-one-hours sixty-one hours ST sixty-two-hours sixty-two hours ST sixty-three-hours sixty-three hours ST sixty-four-hours sixty-four hours ST sixty-five-hours sixty-five hours ST sixty-six-hours sixty-six hours ST sixty-seven-hours sixty-seven hours ST sixty-eight-hours sixty-eight hours ST sixty-nine-hours sixty-nine hours ST seventy-hours seventy hours ST seventy-one-hours seventy-one hours ST seventy-two-hours seventy-two hours ST seventy-three-hours seventy-three hours ST seventy-four-hours seventy-four hours ST seventy-five-hours seventy-five hours ST seventy-six-hours seventy-six hours ST seventy-seven-hours seventy-seven hours ST seventy-eight-hours seventy-eight hours ST seventy-nine-hours seventy-nine hours ST eighty-hours eighty hours ST Avaya Media Processing Server VXML Browser User Guide November

192 Languages English label (Avaya) English spoken text Inflection eighty-one-hours eighty-one hours ST eighty-two-hours eighty-two hours ST eighty-three-hours eighty-three hours ST eighty-four-hours eighty-four hours ST eighty-five-hours eighty-five hours ST eighty-six-hours eighty-six hours ST eighty-seven-hours eighty-seven hours ST eighty-eight-hours eighty-eight hours ST eighty-nine-hours eighty-nine hours ST ninety-hours ninety hours ST ninety-one-hours ninety-one hours ST ninety-two-hours ninety-two hours ST ninety-three-hours ninety-three hours ST ninety-four-hours ninety-four hours ST ninety-five-hours ninety-five hours ST ninety-six-hours ninety-six hours ST ninety-seven-hour ninety-seven hour ST ninety-eight-hours ninety-eight hours ST ninety-nine-hours ninety-nine hours ST zero-minutes zero minutes ST one-minutes one minute ST two-minutes two minutes ST three-minutes three minutes ST four-minutes four minutes ST five-minutes five minutes ST six-minutes six minutes ST seven-minutes seven minutes ST eight-minutes eight minutes ST nine-minutes nine minutes ST ten-minutes ten minutes ST eleven-minutes eleven minutes ST 192 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

193 Inflection guide English label (Avaya) English spoken text Inflection twelve-minutes twelve minutes ST thirteen-minutes thirteen minutes ST fourteen-minutes fourteen minutes ST fifteen-minutes fifteen minutes ST sixteen-minutes sixteen minutes ST seventeen-minutes seventeen minutes ST eighteen-minutes eighteen minutes ST nineteen-minutes nineteen minutes ST twenty-minutes twenty minutes ST twenty-one-minutes twenty-one minutes ST twenty-two-minutes twenty-two minutes ST twenty-three-minutes twenty-three minutes ST twenty-four-minutes twenty-four minutes ST twenty-five-minutes twenty-five minutes ST twenty-six-minutes twenty-six minutes ST twenty-seven-minutes twenty-seven minutes ST twenty-eight-minutes twenty-eight minutes ST twenty-nine-minutes twenty-nine minutes ST thirty-minutes thirty minutes ST thirty-one-minutes thirty-one minutes ST thirty-two-minutes thirty-two minutes ST thirty-three-minutes thirty-three minutes ST thirty-four-minutes thirty-four minutes ST thirty-five-minutes thirty-five minutes ST thirty-six-minutes thirty-six minutes ST thirty-seven-minutes thirty-seven minutes ST thirty-eight-minutes thirty-eight minutes ST thirty-eight-minutes thirty-eight minutes ST thirty-nine-minutes thirty-nine minutes ST forty-minutes forty minutes ST forty-one-minutes forty-one minutes ST Avaya Media Processing Server VXML Browser User Guide November

194 Languages English label (Avaya) English spoken text Inflection forty-two-minutes forty-two minutes ST forty-three-minutes forty-three minutes ST forty-four-minutes forty-four minutes ST forty-five-minutes forty-five minutes ST forty-six-minutes forty-six minutes ST forty-seven-minutes forty-seven minutes ST forty-eight-minutes forty-eight minutes ST forty-nine-minutes forty-nine minutes ST fifty-minutes fifty minutes ST fifty-one-minutes fifty-one minutes ST fifty-two-minutes fifty-two minutes ST fifty-three-minutes fifty-three minutes ST fifty-four-minutes fifty-four minutes ST fifty-five-minutes fifty-five minutes ST fifty-six-minutes fifty-six minutes ST fifty-seven-minutes fifty-seven minutes ST fifty-eight-minutes fifty-eight minutes ST fifty-nine-minutes fifty-nine minutes ST zero-seconds zero seconds ST one-seconds one second ST two-seconds two seconds ST three-seconds three seconds ST four-seconds four seconds ST five-seconds five seconds ST six-seconds six seconds ST seven-seconds seven seconds ST eight-seconds eight seconds ST nine-seconds nine seconds ST ten-seconds ten seconds ST eleven-seconds eleven seconds ST twelve-seconds twelve seconds ST 194 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

195 Inflection guide English label (Avaya) English spoken text Inflection thirteen-seconds thirteen seconds ST fourteen-seconds fourteen seconds ST fifteen-seconds fifteen seconds ST sixteen-seconds sixteen seconds ST seventeen-seconds seventeen seconds ST eighteen-seconds eighteen seconds ST nineteen-seconds nineteen seconds ST twenty-seconds twenty seconds ST twenty-one-seconds twenty-one seconds ST twenty-two-seconds twenty-two seconds ST twenty-three-seconds twenty-three seconds ST twenty-four-seconds twenty-four seconds ST twenty-five-seconds twenty-five seconds ST twenty-six-seconds twenty-six seconds ST twenty-seven-seconds twenty-seven seconds ST twenty-eight-seconds twenty-eight seconds ST twenty-nine-seconds twenty-nine seconds ST thirty-seconds thirty seconds ST thirty-one-seconds thirty-one seconds ST thirty-two-seconds thirty-two seconds ST thirty-three-seconds thirty-three seconds ST thirty-four-seconds thirty-four seconds ST thirty-five-seconds thirty-five seconds ST thirty-six-seconds thirty-six seconds ST thirty-seven-seconds thirty-seven seconds ST thirty-eight-seconds thirty-eight seconds ST thirty-nine-seconds thirty-nine seconds ST forty-seconds forty seconds ST forty-one-seconds forty-one seconds ST forty-two-seconds forty-two seconds ST forty-three-seconds forty-three seconds ST Avaya Media Processing Server VXML Browser User Guide November

196 Languages English label (Avaya) English spoken text Inflection forty-four-seconds forty-four seconds ST forty-five-seconds forty-five seconds ST forty-six-seconds forty-six seconds ST forty-seven-seconds forty-seven seconds ST forty-eight-seconds forty-eight seconds ST forty-nine-seconds forty-nine seconds ST fifty-seconds fifty seconds ST fifty-one-seconds fifty-one seconds ST fifty-two-seconds fifty-two seconds ST fifty-three-seconds fifty-three seconds ST fifty-four-seconds fifty-four seconds ST fifty-five-seconds fifty-five seconds ST fifty-six-seconds fifty-six seconds ST fifty-seven-seconds fifty-seven seconds ST fifty-eight-seconds fifty-eight seconds ST fifty-nine-seconds fifty-nine seconds ST hour hour ST hours hours ST minute minute ST minutes minutes ST second second ST seconds seconds ST day day ST days days ST week week ST weeks weeks ST month month ST months months ST extension extension LO, MID cmr-beep 500 Hz beep pause.1 [one second silence] 196 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

197 Inflection guide English label (Avaya) English spoken text Inflection VXML-SERIOUS-ERROR A serious error has occurred exiting. VXML-NO-INPUT-2 Sorry I didn't hear you. T VXML-NO-INPUT-3 I didn't hear you that time either. VXML-NO-INPUT-4 I just can't hear you. T VXML-NO-MATCH-1 Sorry I didn't understand you. VXML-NO-MATCH-2 I still don't understand. T VXML-NO-MATCH-3 Please say it one last time. T VXML-NO-MATCH-4 I'm sorry I just can't understand your response. T T T T English label English spoken text Inflection zero zero ST one one ST two two ST three three ST four four ST five five ST six six ST seven seven ST eight eight ST nine nine ST ten ten ST eleven eleven ST twelve twelve ST thirteen thirteen ST fourteen fourteen ST fifteen fifteen ST sixteen sixteen ST seventeen seventeen ST eighteen eighteen ST Avaya Media Processing Server VXML Browser User Guide November

198 Languages English label English spoken text Inflection nineteen nineteen MID twenty twenty MID twenty-one twenty-one ST twenty-two twenty-two ST twenty-three twenty-three ST twenty-four twenty-four ST twenty-five twenty-five ST twenty-six twenty-six ST twenty-seven twenty-seven ST twenty-eight twenty-eight ST twenty-nine twenty-nine ST thirty thirty ST thirty-one thirty-one ST thirty-two thirty-two ST thirty-three thirty-three ST thirty-four thirty-four ST thirty-five thirty-five ST thirty-six thirty-six ST thirty-seven thirty-seven ST thirty-eight thirty-eight ST thirty-nine thirty-nine ST forty forty ST forty-one forty-one ST forty-two forty-two ST forty-three forty-three ST forty-four forty-four ST forty-five forty-five ST forty-six forty-six ST forty-seven forty-seven ST forty-eight forty-eight ST forty-nine forty-nine ST 198 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

199 Inflection guide English label English spoken text Inflection fifty fifty ST fifty-one fifty-one ST fifty-two fifty-two ST fifty-three fifty-three ST fifty-four fifty-four ST fifty-five fifty-five ST fifty-six fifty-six ST fifty-seven fifty-seven ST fifty-eight fifty-eight ST fifty-nine fifty-nine ST sixty sixty ST sixty-one sixty-one ST sixty-two sixty-two ST sixty-three sixty-three ST sixty-four sixty-four ST sixty-five sixty-five ST sixty-six sixty-six ST sixty-seven sixty-seven ST sixty-eight sixty-eight ST sixty-nine sixty-nine ST seventy seventy ST seventy-one seventy-one ST seventy-two seventy-two ST seventy-three seventy-three ST seventy-four seventy-four ST seventy-five seventy-five ST seventy-six seventy-six ST seventy-seven seventy-seven ST seventy-eight seventy-eight ST seventy-nine seventy-nine ST eighty eighty ST Avaya Media Processing Server VXML Browser User Guide November

200 Languages English label English spoken text Inflection eighty-one eighty-one ST eighty-two eighty-two ST eighty-three eighty-three ST eighty-four eighty-four ST eighty-five eighty-five ST eighty-six eighty-six ST eighty-seven eighty-seven ST eighty-eight eighty-eight ST eighty-nine eighty-nine ST ninety ninety ST ninety-one ninety-one ST ninety-two ninety-two ST ninety-three ninety-three ST ninety-four ninety-four ST ninety-five ninety-five ST ninety-six ninety-six ST ninety-seven ninety-seven ST ninety-eight ninety-eight ST ninety-nine ninety-nine ST hundred hundred ST one-hundred one hundred ST two-hundred two hundred ST three-hundred three hundred ST four-hundred four hundred ST five-hundred five hundred ST six-hundred six hundred ST seven-hundred seven hundred ST eight-hundred eight hundred ST nine-hundred nine hundred ST one-thousand one thousand ST two-thousand two thousand ST 200 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

201 Inflection guide English label English spoken text Inflection three-thousand three thousand ST four-thousand four thousand ST five-thousand five thousand ST six-thousand six thousand ST seven-thousand seven thousand ST eight-thousand eight thousand ST nine-thousand nine thousand ST ten-thousand ten thousand ST eleven-thousand eleven thousand ST twelve-thousand twelve thousand ST thirteen-thousand thirteen thousand ST fourteen-thousand fourteen thousand ST fifteen-thousand fifteen thousand ST sixteen-thousand sixteen thousand ST seventeen-thousand seventeen thousand ST eighteen-thousand eighteen thousand ST nineteen-thousand nineteen thousand ST twenty-thousand twenty thousand ST twenty-one-thousand twenty-one thousand ST twenty-two-thousand twenty-two thousand ST twenty-three-thousand twenty-three thousand ST twenty-four-thousand twenty-four thousand ST twenty-five-thousand twenty-five thousand ST twenty-six-thousand twenty-six thousand ST twenty-seven-thousand twenty-seven thousand ST twenty-eight-thousand twenty-eight thousand ST twenty-nine-thousand twenty-nine thousand ST thirty-thousand thirty thousand ST thirty-one-thousand thirty-one thousand ST thirty-two-thousand thirty-two thousand ST thirty-three-thousand thirty-three thousand ST Avaya Media Processing Server VXML Browser User Guide November

202 Languages English label English spoken text Inflection thirty-four-thousand thirty-four thousand ST thirty-five-thousand thirty-five thousand ST thirty-six-thousand thirty-six thousand ST thirty-seven-thousand thirty-seven thousand ST thirty-eight-thousand thirty-eight thousand ST thirty-nine-thousand thirty-nine thousand ST forty-thousand forty thousand ST forty-one-thousand forty-one thousand ST forty-two-thousand forty-two thousand ST forty-three-thousand forty-three thousand ST forty-four-thousand forty-four thousand ST forty-five-thousand forty-five thousand ST forty-six-thousand forty-six thousand ST forty-seven-thousand forty-seven thousand ST forty-eight-thousand forty-eight thousand ST forty-nine-thousand forty-nine thousand ST fifty-thousand fifty thousand ST fifty-one-thousand fifty-one thousand ST fifty-two-thousand fifty-two thousand ST fifty-three-thousand fifty-three thousand ST fifty-four-thousand fifty-four thousand ST fifty-five-thousand fifty-five thousand ST fifty-six-thousand fifty-six thousand ST fifty-seven-thousand fifty-seven thousand ST fifty-eight-thousand fifty-eight thousand ST fifty-nine-thousand fifty-nine thousand ST sixty-thousand sixty thousand ST sixty-one-thousand sixty-one thousand ST sixty-two-thousand sixty-two thousand ST sixty-three-thousand sixty-three thousand ST sixty-four-thousand sixty-four thousand ST 202 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

203 Inflection guide English label English spoken text Inflection sixty-five-thousand sixty-five thousand ST sixty-six-thousand sixty-six thousand ST sixty-seven-thousand sixty-seven thousand ST sixty-eight-thousand sixty-eight thousand ST sixty-nine-thousand sixty-nine thousand ST seventy-thousand seventy thousand ST seventy-one-thousand seventy-one thousand ST seventy-two-thousand seventy-two thousand ST seventy-three-thousand seventy-three thousand ST seventy-four-thousand seventy-four thousand ST seventy-five-thousand seventy-five thousand ST seventy-six-thousand seventy-six thousand ST seventy-seven-thousand seventy-seven thousand ST seventy-eight-thousand seventy-eight thousand ST seventy-nine-thousand seventy-nine thousand ST eighty-thousand eighty thousand ST eighty-one-thousand eighty-one thousand ST eighty-two-thousand eighty-two thousand ST eighty-three-thousand eighty-three thousand ST eighty-four-thousand eighty-four thousand ST eighty-five-thousand eighty-five thousand ST eighty-six-thousand eighty-six thousand ST eighty-seven-thousand eighty-seven thousand ST eighty-eight-thousand eighty-eight thousand ST eighty-nine-thousand eighty-nine thousand ST ninety-thousand ninety thousand ST ninety-one-thousand ninety-one thousand ST ninety-two-thousand ninety-two thousand ST ninety-three-thousand ninety-three thousand ST ninety-four-thousand ninety-four thousand ST ninety-five-thousand ninety-five thousand ST Avaya Media Processing Server VXML Browser User Guide November

204 Languages English label English spoken text Inflection ninety-six-thousand ninety-six thousand ST ninety-seven-thousand ninety-seven thousand ST ninety-eight-thousand ninety-eight thousand ST ninety-nine-thousand ninety-nine thousand ST one-hundred-thousand one hundred thousand ST two-hundred-thousand two hundred thousand ST three-hundred-thousand three hundred thousand ST four-hundred-thousand four hundred thousand ST five-hundred-thousand five hundred thousand ST six-hundred-thousand six hundred thousand ST seven-hundred-thousand seven hundred thousand ST eight-hundred-thousand eight hundred thousand ST nine-hundred-thousand nine hundred thousand ST one-million one million ST two-million two million ST three-million three million ST four-million four million ST five-million five million ST six-million six million ST seven-million seven million ST eight-million eight million ST nine-million nine million ST one-billion one billion ST two-billion two billion ST three-billion three billion ST four-billion four billion ST five-billion five billion ST six-billion six billion ST seven-billion seven billion ST eight-billion eight billion ST nine-billion nine billion ST 204 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

205 Inflection guide English label English spoken text Inflection thousand thousand MID million million MID billion billion MID first first LO, MID second second LO, MID third third LO, MID fourth fourth LO, MID fifth fifth LO, MID sixth sixth LO, MID seventh seventh LO, MID eighth eighth LO, MID ninth ninth LO, MID tenth tenth LO, MID eleventh eleventh LO, MID twelfth twelfth LO, MID thirteenth thirteenth LO, MID fourteenth fourteenth LO, MID fifteenth fifteenth LO, MID sixteenth sixteenth LO, MID seventeenth seventeenth LO, MID eighteenth eighteenth LO, MID nineteenth nineteenth LO, MID twentieth twentieth LO, MID twenty-first twenty-first LO, MID twenty-second twenty-second LO, MID twenty-third twenty-third LO, MID twenty-fourth twenty-fourth LO, MID twenty-fifth twenty-fifth LO, MID twenty-sixth twenty-sixth LO, MID twenty-seventh twenty-seventh LO, MID twenty-eighth twenty-eighth LO, MID Avaya Media Processing Server VXML Browser User Guide November

206 Languages English label English spoken text Inflection twenty-ninth twenty-ninth LO, MID thirtieth thirtieth LO, MID thirty-first thirty-first LO, MID thirty-second thirty-second ST thirty-third thirty-third ST thirty-fourth thirty-fourth ST thirty-fifth thirty-fifth ST thirty-sixth thirty-sixth ST thirty-seventh thirty-seventh ST thirty-eighth thirty-eighth ST thirty-ninth thirty-ninth ST fortieth fortieth ST forty-first forty-first ST forty-second forty-second ST forty-third forty-third ST forty-fourth forty-fourth ST forty-fifth forty-fifth ST forty-sixth forty-sixth ST forty-seventh forty-seventh ST forty-eighth forty-eighth ST forty-ninth forty-ninth ST fiftieth fiftieth ST fifty-first fifty-first ST fifty-second fifty-second ST fifty-third fifty-third ST fifty-fourth fifty-fourth ST fifty-fifth fifty-fifth ST fifty-sixth fifty-sixth ST fifty-seventh fifty-seventh ST fifty-eighth fifty-eighth ST fifty-ninth fifty-ninth ST 206 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

207 Inflection guide English label English spoken text Inflection sixtieth sixtieth ST sixty-first sixty-first ST sixty-second sixty-second ST sixty-third sixty-third ST sixty-fourth sixty-fourth ST sixty-fifth sixty-fifth ST sixty-sixth sixty-sixth ST sixty-seventh sixty-seventh ST sixty-eighth sixty-eighth ST sixty-ninth sixty-ninth ST seventieth seventieth ST seventy-first seventy-first ST seventy-second seventy-second ST seventy-third seventy-third ST seventy-fourth seventy-fourth ST seventy-fifth seventy-fifth ST seventy-sixth seventy-sixth ST seventy-seventh seventy-seventh ST seventy-eighth seventy-eighth ST seventy-ninth seventy-ninth ST eightieth eightieth ST eighty-first eighty-first ST eighty-second eighty-second ST eighty-third eighty-third ST eighty-fourth eighty-fourth ST eighty-fifth eighty-fifth ST eighty-sixth eighty-sixth ST eighty-seventh eighty-seventh ST eighty-eighth eighty-eighth ST eighty-ninth eighty-ninth ST ninetieth ninetieth ST Avaya Media Processing Server VXML Browser User Guide November

208 Languages English label English spoken text Inflection ninety-first ninety-first ST ninety-second ninety-second ST ninety-third ninety-third ST ninety-fourth ninety-fourth ST ninety-fifth ninety-fifth ST ninety-sixth ninety-sixth ST ninety-seventh ninety-seventh ST ninety-eighth ninety-eighth ST ninety-ninth ninety-ninth ST one-hundredth one hundredth ST two-hundredth two hundredth ST three-hundredth three hundredth ST four-hundredth four hundredth ST five-hundredth five hundredth ST six-hundredth six hundredth ST seven-hundredth seven hundredth ST eight-hundredth eight hundredth ST nine-hundredth nine hundredth ST one-thousandth one thousandth ST two-thousandth two thousandth ST three-thousandth three thousandth ST four-thousandth four thousandth ST five-thousandth five thousandth ST six-thousandth six thousandth ST seven-thousandth seven thousandth ST eight-thousandth eight thousandth ST nine-thousandth nine thousandth ST Please hold on. Please hold on. T negative negative MID minus minus MID positive positive MID 208 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

209 Inflection guide English label English spoken text Inflection plus plus MID point point LO, MID percent percent T AM AM Even, T PM PM Even, T hours hours MID dollars dollars MID dollar dollar MID cents cents T cent cent T and and LO, MID january january MID february february MID march march MID april april MID may may MID june june MID july july MID august august MID september september MID october october MID november november MID december december MID monday monday ST tuesday tuesday ST wednesday wednesday ST thursday thursday ST friday friday ST saturday saturday ST sunday sunday ST A A ST Avaya Media Processing Server VXML Browser User Guide November

210 Languages English label English spoken text Inflection B B ST C C ST D D ST E E ST F F ST G G ST H H ST I I ST J J ST K K ST L L ST M M ST N N ST O O ST P P ST Q Q ST R R ST S S ST T T ST U U ST V V ST W W ST X X ST Y Y ST Z Z ST o o ST zero-dollars zero dollars ST one-dollar one-dollar ST two-dollars two dollars ST three-dollars three dollars ST four-dollars four dollars ST 210 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

211 Inflection guide English label English spoken text Inflection five-dollars five dollars ST six-dollars six dollars ST seven-dollars seven dollars ST eight-dollars eight dollars ST nine-dollars nine dollars ST ten-dollars ten dollars ST eleven-dollars eleven dollars ST twelve-dollars twelve dollars ST thirteen-dollars thirteen dollars ST fourteen-dollars fourteen dollars ST fifteen-dollars fifteen dollars ST sixteen-dollars sixteen dollars ST seventeen-dollars seventeen dollars ST eighteen-dollars eighteen dollars ST nineteen-dollars nineteen dollars ST twenty-dollars twenty dollars ST twenty-one-dollars twenty-one dollars ST twenty-two-dollars twenty-two dollars ST twenty-three-dollars twenty-three dollars ST twenty-four-dollars twenty-four dollars ST twenty-five-dollars twenty-five dollars ST twenty-six-dollars twenty-six dollars ST twenty-seven-dollars twenty-seven dollars ST twenty-eight-dollars twenty-eight dollars ST twenty-nine-dollars twenty-nine dollars ST thirty-dollars thirty dollars ST thirty-one-dollars thirty-one dollars ST thirty-two-dollars thirty-two dollars ST thirty-three-dollars thirty-three dollars ST thirty-four-dollars thirty-four dollars ST thirty-five-dollars thirty-five dollars ST Avaya Media Processing Server VXML Browser User Guide November

212 Languages English label English spoken text Inflection thirty-six-dollars thirty-six dollars ST thirty-seven-dollars thirty-seven dollars ST thirty-eight-dollars thirty-eight dollars ST thirty-nine-dollars thirty-nine dollars ST forty-dollars forty dollars ST forty-one-dollars forty-one dollars ST forty-two-dollars forty-two dollars ST forty-three-dollars forty-three dollars ST forty-four-dollars forty-four dollars ST forty-five-dollars forty-five dollars ST forty-six-dollars forty-six dollars ST forty-seven-dollars forty-seven dollars ST forty-eight-dollars forty-eight dollars ST forty-nine-dollars forty-nine dollars ST fifty-dollars fifty dollars ST fifty-one-dollars fifty-one dollars ST fifty-two-dollars fifty-two dollars ST fifty-three-dollars fifty-three dollars ST fifty-four-dollars fifty-four dollars ST fifty-five-dollars fifty-five dollars ST fifty-six-dollars fifty-six dollars ST fifty-seven-dollars fifty-seven dollars ST fifty-eight-dollars fifty-eight dollars ST fifty-nine-dollars fifty-nine dollars ST sixty-dollars sixty dollars ST sixty-one-dollars sixty-one dollars ST sixty-two-dollars sixty-two dollars ST sixty-three-dollars sixty-three dollars ST sixty-four-dollars sixty-four dollars ST sixty-five-dollars sixty-five dollars ST sixty-six-dollars sixty-six dollars ST 212 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

213 Inflection guide English label English spoken text Inflection sixty-seven-dollars sixty-seven dollars ST sixty-eight-dollars sixty-eight dollars ST sixty-nine-dollars sixty-nine dollars ST seventy-dollars seventy dollars ST seventy-one-dollars seventy-one dollars ST seventy-two-dollars seventy-two dollars ST seventy-three-dollars seventy-three dollars ST seventy-four-dollars seventy-four dollars ST seventy-five-dollars seventy-five dollars ST seventy-six-dollars seventy-six dollars ST seventy-seven-dollars seventy-seven dollars ST seventy-eight-dollars seventy-eight dollars ST seventy-nine-dollars seventy-nine dollars ST eighty-dollars eighty dollars ST eighty-one-dollars eighty-one dollars ST eighty-two-dollars eighty-two dollars ST eighty-three-dollars eighty-three dollars ST eighty-four-dollars eighty-four dollars ST eighty-five-dollars eighty-five dollars ST eighty-six-dollars eighty-six dollars ST eighty-seven-dollars eighty-seven dollars ST eighty-eight-dollars eighty-eight dollars ST eighty-nine-dollars eighty-nine dollars ST ninety-dollars ninety dollars ST ninety-one-dollars ninety-one dollars ST ninety-two-dollars ninety-two dollars ST ninety-three-dollars ninety-three dollars ST ninety-four-dollars ninety-four dollars ST ninety-five-dollars ninety-five dollars ST ninety-six-dollars ninety-six dollars ST ninety-seven-dollars ninety-seven dollars ST Avaya Media Processing Server VXML Browser User Guide November

214 Languages English label English spoken text Inflection ninety-eight-dollars ninety-eight dollars ST ninety-nine-dollars ninety-nine dollars ST one-hundred-dollars one hundred dollars ST two-hundred-dollars two hundred dollars ST three-hundred-dollars three hundred dollars ST four-hundred-dollars four hundred dollars ST five-hundred-dollars five hundred dollars ST six-hundred-dollars six hundred dollars ST seven-hundred-dollars seven hundred dollars ST eight-hundred-dollars eight hundred dollars ST nine-hundred-dollars nine hundred dollars ST and-zero-cents and zero cents T and-one-cent and one-cent T and-two-cents and two cents T and-three-cents and three cents T and-four-cents and four cents T and-five-cents and five cents T and-six-cents and six cents T and-seven-cents and seven cents T and-eight-cents and eight cents T and-nine-cents and nine cents T and-ten-cents and ten cents T and-eleven-cents and eleven cents T and-twelve-cents and twelve cents T and-thirteen-cents and thirteen cents T and-fourteen-cents and fourteen cents T and-fifteen-cents and fifteen cents T and-sixteen-cents and sixteen cents T and-seventeen-cents and seventeen cents T and-eighteen-cents and eighteen cents T and-nineteen-cents and nineteen cents T 214 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

215 Inflection guide English label English spoken text Inflection and-twenty-cents and twenty cents T and-twenty-one-cents and twenty-one cents T and-twenty-two-cents and twenty-two cents T and-twenty-three-cents and twenty-three cents T and-twenty-four-cents and twenty-four cents T and-twenty-five-cents and twenty-five cents T and-twenty-six-cents and twenty-six cents T and-twenty-seven-cents and twenty-seven cents T and-twenty-eight-cents and twenty-eight cents T and-twenty-nine-cents and twenty-nine cents T and-thirty-cents and thirty cents T and-thirty-one-cents and thirty-one cents T and-thirty-two-cents and thirty-two cents T and-thirty-three-cents and thirty-three cents T and-thirty-four-cents and thirty-four cents T and-thirty-five-cents and thirty-five cents T and-thirty-six-cents and thirty-six cents T and-thirty-seven-cents and thirty-seven cents T and-thirty-eight-cents and thirty-eight cents T and-thirty-nine-cents and thirty-nine cents T and-forty-cents and forty cents T and-forty-one-cents and forty-one cents T and-forty-two-cents and forty-two cents T and-forty-three-cents and forty-three cents T and-forty-four-cents and forty-four cents T and-forty-five-cents and forty-five cents T and-forty-six-cents and forty-six cents T and-forty-seven-cents and forty-seven cents T and-forty-eight-cents and forty-eight cents T and-forty-nine-cents and forty-nine cents T and-fifty-cents and fifty cents T Avaya Media Processing Server VXML Browser User Guide November

216 Languages English label English spoken text Inflection and-fifty-one-cents and fifty-one cents T and-fifty-two-cents and fifty-two cents T and-fifty-three-cents and fifty-three cents T and-fifty-four-cents and fifty-four cents T and-fifty-five-cents and fifty-five cents T and-fifty-six-cents and fifty-six cents T and-fifty-seven-cents and fifty-seven cents T and-fifty-eight-cents and fifty-eight cents T and-fifty-nine-cents and fifty-nine cents T and-sixty-cents and sixty cents T and-sixty-one-cents and sixty-one cents T and-sixty-two-cents and sixty-two cents T and-sixty-three-cents and sixty-three cents T and-sixty-four-cents and sixty-four cents T and-sixty-five-cents and sixty-five cents T and-sixty-six-cents and sixty-six cents T and-sixty-seven-cents and sixty-seven cents T and-sixty-eight-cents and sixty-eight cents T and-sixty-nine-cents and sixty-nine cents T and-seventy-cents and seventy cents T and-seventy-one-cents and seventy-one cents T and-seventy-two-cents and seventy-two cents T and-seventy-three-cents and seventy-three cents T and-seventy-four-cents and seventy-four cents T and-seventy-five-cents and seventy-five cents T and-seventy-six-cents and seventy-six cents T and-seventy-seven-cents and seventy-seven cents T and-seventy-eight-cents and seventy-eight cents T and-seventy-nine-cents and seventy-nine cents T and-eighty-cents and eighty cents T and-eighty-one-cents and eighty-one cents T 216 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

217 Inflection guide English label English spoken text Inflection and-eighty-two-cents and eighty-two cents T and-eighty-three-cents and eighty-three cents T and-eighty-four-cents and eighty-four cents T and-eighty-five-cents and eighty-five cents T and-eighty-six-cents and eighty-six cents T and-eighty-seven-cents and eighty-seven cents T and-eighty-eight-cents and eighty-eight cents T and-eighty-nine-cents and eighty-nine cents T and-ninety-cents and ninety cents T and-ninety-one-cents and ninety-one cents T and-ninety-two-cents and ninety-two cents T and-ninety-three-cents and ninety-three cents T and-ninety-four-cents and ninety-four cents T and-ninety-five-cents and ninety-five cents T and-ninety-six-cents and ninety-six cents T and-ninety-seven-cents and ninety-seven cents T and-ninety-eight-cents and ninety-eight cents T and-ninety-nine-cents and ninety-nine cents T bong - (bong tone) beep - (beep tone) pause.25 - (1/4 second of silence) pause.5 - (1/2 second of silence) a-or-an a LO, MID the the LO, MID of of LO, MID zeroeth zeroeth ST hour hour MID trillion trillion MID millions millions MID billions billions MID trillions trillions MID Avaya Media Processing Server VXML Browser User Guide November

218 Languages English label English spoken text Inflection one-dollars one-dollars T hundredth hundredth ST thousandth thousandth ST 218 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

219 Chapter 7: Debugging and Troubleshooting This chapter covers: 1. Introduction 2. VXML interpreter V-Shell options 3. VXML application events and logging 4. Utilities 5. Common errors 6. HTTP response messages 7. Status code definitions Introduction This chapter provides information related to logging, which includes the location of log files, the format of log files, and the interface to enable or disabling logging. VXML Interpreter V-Shell options VXMLI provides an interface using V-Shell (VSH) commands. The following table lists VXMLI specific commands. disdocdump disdocerrdump disosbdiag Option Argument Description None None <tagid> * Disables logging of all fetched VXML documents to a file. For a detailed description of this option, see VXML page logging on page 226. Disables logging of all fetched VXML documents that contain invalid VXML syntax to a file. For a detailed description of this option, see VXML page logging on page 226. Disables the low level interpreter diagnostic logging for the specified tagid. The tagid specifies Avaya Media Processing Server VXML Browser User Guide November

220 Debugging and Troubleshooting Option Argument Description disosbdiaglines <lnlst> * the component for which logging is enabled. See the Table 14: VXML interpreter configuration parameters on page 73 for a list of tags and their descriptions. Disables low-level interpreter diagnostic logging for the specified lines in lnlst. endocdump endocerrdump enosbdiag enosbdiaglines help reposbdiag status status dbgifstatus dbgifstatus dbgifenable dbgifenable None None <tagid> * <lnlst> * <option> <tagid> * <line#> all <line#> all on off Enables logging of all fetched VXML documents to a file. For a detailed description of this option, see VXML page logging on page 226. Disables logging of all fetched VXML documents that contain invalid VXML syntax to a file. For a detailed description of this option, see VXML page logging on page 226. Enables the low level interpreter diagnostic logging for the specified tagid. The tagid specifies the component for which logging is enabled. All logging is placed in the file $PERIVXMLHOME/ vxmli_diag.mps.#.log. For a list of tags and their descriptions, see the Table 14: VXML interpreter configuration parameters on page 73. Enables low-level interpreter diagnostic logging for the specified lines in lnlst. Provides information (usage and description) about the specified VXMLI option. Reports whether low-level interpreter diagnostic logging is enabled or disabled for the specified tagid. For a list of tags and their descriptions, see the Table 14: VXML interpreter configuration parameters on page 73. Displays status of the phone line port. Displays status of all phone line ports. Shows if the debug server is available and if the specified line is currently debugged. Shows if the debug server is available and if any particular lines are currently debugged. Turns on the debug server. Turns off the debug server. 220 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

221 status command example chanstatus Option Argument Description all For each resource type, shows the configured vendor resource, the label, and the language labels. * This argument symbolizes a number-list-type argument, which uses a list of numbers. A number-list-type argument can include one or more ranges of numbers, for example, 1-10, 12, 16-20). The format of the command is: vxmli option [argument] status command example To display phone line status of all phone lines, issue the following on the VSH command line: vsh#mps.5,vos/tmsi05 {1} -> vxmli status all =============================================================== VXMLI-MPS 5 Phone Line 1-96 Status Report =============================================================== Starting line number...1 Ending line number...96 ====================== VXMLI Phone Line Status =========================== 1 Disc(gip ) 2 Disc(gip ) 3 Disc(gip ) 4 Disc(gip ) 5 Disc(gip ) 6 Disc(gip ) 7 Disc(gip ) 8 Disc(gip ) 9 Disc(gip ) 10 Disc(gip ) 11 Disc(gip ) 12 Disc(gip ) 13 Disc(ans ) 14 Disc(ans ) 15 Disc(ans ) 16 Disc(ans ) 17 Disc(ans ) 18 Disc(ans ) 19 Disc(ans ) 20 Disc(ans ) 21 Disc(ans ) 22 Disc(ans ) 23 Disc(ans ) 24 Disc(ans ) 25 Disc(gip ) 26 Disc(gip ) 27 Disc(gip ) 28 Disc(gip ) 29 Disc(gip ) 30 Disc(gip ) 31 Disc(gip ) 32 Disc(gip ) 33 Disc(gip ) 34 Disc(gip ) 35 Disc(gip ) 36 Disc(gip ) 37 Disc(gip ) 38 Disc(gip ) 39 Disc(gip ) 40 Disc(gip ) 41 Disc(gip ) 42 Disc(gip ) 43 Disc(gip ) 44 Disc(gip ) 45 Disc(gip ) 46 Disc(gip ) 47 Disc(gip ) 48 Disc(gip ) 49 Disc(gip ) 50 Disc(gip ) 51 Disc(gip ) 52 Disc(gip ) 53 Disc(gip ) 54 Disc(gip ) 55 Disc(gip ) 56 Disc(gip ) 57 Disc(gip ) 58 Disc(gip ) 59 Disc(gip ) 60 Disc(gip ) 61 Disc(gip ) 62 Disc(gip ) 63 Disc(gip ) 64 Disc(gip ) 65 Disc(gip ) 66 Disc(gip ) 67 Disc(gip ) 68 Disc(gip ) 69 Disc(gip ) 70 Disc(gip ) 71 Disc(gip ) 72 Disc(gip ) 73 Disc(gip ) 74 Disc(gip ) 75 Disc(gip ) 76 Disc(gip ) 77 Disc(gip ) 78 Disc(gip ) 79 Disc(gip ) 80 Disc(gip ) 81 Disc(gip ) 82 Disc(gip ) 83 Disc(gip ) 84 Disc(gip ) 85 Disc(gip ) 86 Disc(gip ) 87 Disc(gip ) 88 Disc(gip ) 89 Disc(gip ) 90 Disc(gip ) 91 Disc(gip ) 92 Disc(gip ) 93 Disc(gip ) 94 Disc(gip ) 95 Disc(gip ) Avaya Media Processing Server VXML Browser User Guide November

222 Debugging and Troubleshooting 96 Disc(gip ) ==================================================================== dbgifstatus all command example As a further example, in the following all report, DebuggingAvailable: true means that the Debug Server is available. For each line, true or false indicates that the particular line is currently debugged. vsh#common.0,gen/cpassar-2 {4} -> vxmli dbgifstatus all ========================================================= VXMLI Debug Report ========================================================= Debugging Available: true ========================================================= ======================================================================== VXMLI Debugging System Report ======================================================================== 1 Debug( true) 2 Debug(false) 3 Debug(false) 4 Debug(false) 5 Debug(false) 6 Debug(false) 7 Debug(false) 8 Debug(false) 9 Debug(false) 10 Debug(false) 11 Debug(false) 12 Debug(false) 13 Debug(false) 14 Debug(false) 15 Debug(false) 16 Debug(false) 17 Debug(false) 18 Debug(false) 19 Debug(false) 20 Debug(false) 21 Debug(false) 22 Debug(false) 23 Debug(false) 24 Debug(false) 25 Debug(false) 26 Debug(false) 27 Debug(false) 28 Debug(false) 29 Debug(false) 30 Debug(false) 31 Debug(false) 32 Debug(false) 33 Debug(false) 34 Debug(false) 35 Debug(false) 36 Debug(false) 37 Debug(false) 38 Debug(false) 39 Debug(false) 40 Debug(false) 41 Debug(false) 42 Debug(false) 43 Debug(false) 44 Debug(false) 45 Debug(false) 46 Debug(false) 47 Debug(false) 48 Debug(false) 49 Debug(false) 50 Debug(false) 51 Debug(false) 52 Debug(false) 53 Debug(false) 54 Debug(false) 55 Debug(false) 56 Debug(false) 57 Debug(false) 58 Debug(false) 59 Debug(false) 60 Debug(false) 61 Debug(false) 62 Debug(false) 63 Debug(false) 64 Debug(false) 65 Debug(false) 66 Debug(false) 67 Debug(false) 68 Debug(false) 69 Debug(false) 70 Debug(false) 71 Debug(false) 72 Debug(false) 73 Debug(false) 74 Debug(false) 75 Debug(false) 76 Debug(false) 77 Debug(false) 78 Debug(false) 79 Debug(false) 80 Debug(false) 81 Debug(false) 82 Debug(false) 83 Debug(false) 84 Debug(false) 85 Debug(false) 86 Debug(false) 87 Debug(false) 88 Debug(false) 89 Debug(false) 90 Debug(false) 91 Debug(false) 92 Debug(false) 93 Debug(false) 94 Debug(false) 95 Debug(false) 96 Debug(false) ======================================================================== dbgifstatus 1 command example In the following dbgifstatus report for channel one, the debug server is available, and this channel is currently debugged. The Msgs In Queue indicates that the number of messages sent by the GUI that are not processed by the debug server. The Waiting for Msg indicates that if the VXML interpreter sent a message to the GUI and is waiting for a response. 222 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

223 dbgifenable on and off command example vsh#common.0,gen/cpassar-2 {39} -> vxmli dbgifstatus 1 ========================================================= VXMLI Debug Report ========================================================= Debugging Available: true ========================================================= ======================================================================== VXMLI Debugging Channel Report ======================================================================== Channel: 1 Debug: true Msgs In Queue: 0 Waiting for Msg: false ======================================================================== dbgifenable on and off command example The following two examples turn on and off the debug server. vsh#mps.1,vos/cpassar-2 {44} -> vxmli dbgifenable on Start the debug server. vsh#mps.1,vos/cpassar-2 {47} -> vxmli dbgifenable off Shut down the debug server. chanstatus command example In the following example, use the VXMLI chanstatus all command to determine the configured resources, labels, and language labels. vsh#mps.900,vos/cpassar-2 {2} -> vxmli chanstatus all ======================================================================== VXMLI Recognition System Report ======================================================================== Resource: lvr-s Label: DYNAM_001 Hold: FALSE Languages: en-us: DYNAM_001 es-sp: DYNAM_001_SP ======================================================================== ======================================================================== VXMLI MMF System Report ======================================================================== Resource: MMF Label: n/a Avaya Media Processing Server VXML Browser User Guide November

224 Debugging and Troubleshooting Prefetch: FALSE ======================================================================== VXMLI Audio Server System Report ======================================================================== Resource: ausvr Label: NORM Hold: TRUE ========================================================================= VXMLI TTS System Report ======================================================================== Resource: extts-s Label: NORMAL Hold: TRUE Languages: en-us: NORMAL es-sp: NORMAL_SP ======================================================================== VXML application events and logging All VXML application logging and any events related to processing the call are placed in the log file $MPSHOME/common/log/vxmli_event.mps.#.log. The size of the log file is limited by the SBclient.cfg parameter client.log.maxlogsizemb. Each entry of the log file has the following format. Timestamp Thread ID Line Num EVENT Event ID Zero or morekey=values pairs Each key=value pair is separated by the vertical line ( ) character. The following table lists all event identifiers and provides a description of each. The section that follows describes the keys that are available for each event. Event identifier Description 0 Call has started. When MPS Developer invokes a VXML dialog, then each invocation looks like a new call is started. 1 Call has ended. When MPS Developer invokes a VXML dialog, this indicates that the call is returned to MPS Developer. 2 The VXML application executed the <log> statement. 224 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

225 Call Start (event identifier = 0) Call Start (event identifier = 0) This event contains the keys for ANI, DNIS, and the initial URL used to process the call. ANI and DNIS are available only if it is provided by the platform. The following is an example of a call start event. May 26 14:17: EVENT 0 ANI= DNIS= URL = Call End (event identifier = 1) This event contains no keys. The following is an example of a call end event. May 26 14:18: EVENT 1 log (event identifier = 2) The keys are constructed based on the following rules: If you specify the label attribute, then the entry contains label=<text> where <text> is replaced by the text specified by the application for the label attribute. If you specify the expression attribute, then the entry contains expr=<text> where <text> is replaced by the evaluation results of the expression. If the <log> element content is present, then all variables are evaluated, and the entry contains content=<text> where <text> is replaced with the application specified text. For example, the VXML statement <log>new call started</log> creates the following log entry. May 26 14:17: EVENT 2 content=new call started Avaya Media Processing Server VXML Browser User Guide November

226 Debugging and Troubleshooting VXML page logging The interpreter logs to a file any pages that are fetched and executed. Logging is a useful debugging tool for dynamic pages that a server generates. You can configure the interpreter to dump all pages or only pages that contain parse errors. You can enable or disable this logging by either editing the SBclient.cfg file or through vsh. To enable page logging of all pages, configure the SBclient.cfg entry client.log.diagtag.8005 as 1, and restart the VXMLI process. Alternatively, you can execute the VSH command endocdump. This logging is disabled by configuring the entry client.log.diagtag.8005 as 0, and restarting the VXMLI process or by executing the VSH command disdocdump. To enable page logging of pages that contain parse errors, configure the SBclient.cfg entry client.log.diagtag.8004 as 1, and restart the VXMLI process. Alternatively, you can execute the VSH command endocerrdump. This logging is disabled by configuring the entry client.log.diagtag.8004 as 0, and restarting the VXMLI process or by executing the VSH command disdocerrdump. Each page is logged to its own file in the directory $MPSHOME/common/log/vxidump/ mps#_vxmli/00000yyy where YYY is the line number that executes the page. The interpreter logs only the last N pages for each line, where N is equal to the SBclient.cfg setting client.log.maxcontentperchannel. The size of each file is limited to the SBclient.cfg setting client.log.maxcontentsizekb. Logged pages are overwritten in a cyclical fashion, from oldest to newest, when the number of logged pages equals client.log.maxcontentperchannel. You can determine the URL that is logged and the file it is logged to by looking at $MPSHOME/common/log/vxmli_diag.mps.#.log for the tag ID 8005 or The following log entry indicates the URL /vxml/overall_test_speechworks.vxml is logged to the file $MPSHOME/ common/log/vxidump/mps#_vxmli/ / Jan 05 12:18: URL: /overall_test_speechworks.vxml, contentfile: /opt/vps/common/log /vxidump/mps#_vxmli/ / TUCPU=90 TKCPU= Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

227 VXMLI platform integration logging VXMLI platform integration logging Platform integration logging shows logging and errors related to the VXMLI interacting with the platform. For example, it shows resource (LVR) allocation and the result of that allocation. Logging and errors are shown through the DLOG interface. With the DLOG interface you can enable or disable each form of logging to a log file, directly to one or more VSH consoles, or to an internal capture buffer. The default log file is $MPSHOME/common/log/dlog/ vxmli_def.mps.x.dlog. The following table lists all debug objects related to platform integration logging. Debug object name Debug object instance Description LINE None Logging that is not specific to a particular line. LINE CHANNEL Line Number Line Number Line-based logging displays event information in near realtime for the specified line and is generated by the platform thread. This provides debugging information related to the line state machine and processing telephony and media requests. Interpreter-based logging displays event information in near real-time for the specified line and is generated by the interpreter thread, which processes the document for that line. This provides information about the interpreter at the platform integration boundary for each line. ERROR None Display error (LVR allocation failure) information in near real-time. By default, this debug object is always enabled and is stored in the file $MPSHOME/common/log/ dlog/vxmli_def.mps.#.dlog where # is the MPS number in which the VXMLI runs. VXMLI low-level interpreter logging The file $MPSHOME/common/log/vxmli_diag.mps.X.log contains diagnostic logging and errors related the VXML interpretation of a document. The size of the log file is limited by the SBclient.cfg parameter client.log.maxlogsizemb. For example, if a javascript error is encountered while executing a VXML document, a corresponding error occurs. Avaya Media Processing Server VXML Browser User Guide November

228 Debugging and Troubleshooting Errors All logging related to errors has the following format. Timestamp Thread ID Line Num Module Name Error ID Error Text The following is an example of an event that is generated because of a bad fetch. May 26 14:54: com.avaya.vxi 203 URL= Diagnostic Messages Diagnostic messages are used by developers and support staff to trace and diagnose interpreter behavior. These messages are not intended for system operator use. All dialog messages have the following format. Timestamp Thread ID Line Num Tag ID Subtag Diagnostic Text The following is an example of an SBinet diagnostic message related to a bad fetch. May 26 14:53: com.avaya.sbinet 219 URL= Method=GET HTTPStatus=404 HTTPStatusDescription=Notfound You can enable diagnostic messages by setting the appropriate diagnostic tag ID to 1 in the SBclient.cfg file and restarting the interpreter or issuing the VSH command enosbdiag. For example, to enable logging for the tag ID 8000, you must configure the entry client.log.diagtag.8000 as 1 or issue the following VSH command: vxmli enosbdiag 8000 To disable diagnostic messages, configure the entry as 0, and restart the interpreter, or use the following VSH command: vxmli disosbdiag 8000 The following table lists some tags of interest. 228 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

229 Utilities Tag Description 2000 Cache--api 3000 Inet--api 3001 Inet--channel 3002 Inet--stream 3003 Inet--cookie 3004 Inet--validator 3005 Inet--cache 3006 Inet--Timing 3009 Inet--SSL Session ID 3010 Inet--dump docs 4000 JSI 8000 VXI--encoding 8001 VXI--Exceptions 8002 VXI--Message 8003 VXI--URI 8004 Dump documents of pages with parse errors Dump documents of all pages VXI--Recording Utilities The following sections describe the utilities and provide samples. validatedoc This program attempts to retrieve the document specified and verify that it is a valid VXML document. You must give it a local file name or a URL for the VXML document. If VALID is returned, your document runs inside VXMLI. If a failure occurs, check your document or your Web application that generated the document. Avaya Media Processing Server VXML Browser User Guide November

230 Debugging and Troubleshooting Note: This utility does not check for logic errors or javascript errors. SUCCESS D:\cvs-vxi2.0\mps\vxmli>validatedoc sampleapps\voicexmldemo\main.vxml VALID: sampleapps\voicexmldemo\main.vxml FAILURE - invalid VoiceXML D:\cvs-vxi2.0\mps\vxmli>validatedoc overall_test_nuance.vxml Dec 19 16:29: com.avayanetworks.vxi DocumentParser::FetchDocument - Parse error in file " overall_test_nuance.vxml", line 2, column 21 - Unknown element 'vxml' TUCPU=110 TKCPU=200 INVALID: FAILURE - unable to retrieve from Web server D:\cvs-vxi2.0\mps\vxmli>validatedoc Dec 19 16:29: com.avayanetworks.sbinet 219 URL= samples/non_existent.vxml Method=GET HTTPStatus=404 HTTPStatusDescription=Not found TUCPU=90 TKCPU=200 Dec 19 16:29: com.avayanetworks.vxi DocumentParser::FetchBuffer - could not retrieve absolute path of document at URL: non_existent.vxml TUCPU=90 TKCPU=200 Dec 19 16:29: com.avayanetworks.vxi DocumentParser::FetchDocument - exiting with error result 2 TUCPU =90 TKCPU=200 FAILED: Retrieval failed - httpreq This program makes an http request through the command line. This application attempts to make an http request as specified by the input file. Your application can use this program to verify that you can reach your Web server. The httpreq program is used as follows: httpreq [-h hostname] [-p port] [-f inputfile] [-H] -h hostname (localhost) -p port (80) -f inputfile (httpreq.txt) -H Show this message The input file has the following format: GET / HTTP/1.1 Host: MyHostname UserAgent: httpreq Connection: close You can create your own input file and change your request or you can use the default input file provided that retrieves the index page. 230 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

231 Common Errors Common Errors The following sections describe common VXML errors. Insufficient disk space Insufficient disk space usually results from not clearing the cache memory. You must regularly clear the cache as instructed. For more information on clearing the cache, see VXML interpreter cache on page 152. Speech Server fails to retrieve file If the Speech Server fails to retrieve a file (such as a grammar or audio file) from a URI on a Web server, the cause can be related to the Web Server Security Configuration. To correct this problem, check the Web server security configuration, and ensure that it is configured to allow User SYSTEM to retrieve files. HTTP response messages After receiving and interpreting a request message, a Web server responds with an HTTP response message. Response = Status-Line *(( general-header response-header entity-header ) CRLF) CRLF [ message-body ] The first line of a response message is the Status-Line that consists of the protocol version followed by a numeric status code and its associated textual phrase, with each element separated by SP (space) characters. No carriage return (CR) or line feed (LF) is allowed except in the final CRLF sequence. Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF Avaya Media Processing Server VXML Browser User Guide November

232 Debugging and Troubleshooting Status-Code and Reason-Phrase The Status-Code element is a three-digit integer result code that describes the attempt to understand and satisfy the request. The Reason-Phrase provides a short textual description of the Status-Code. The first digit of the Status-Code defines the class of response. The last two digits have no categorization role. Five values are available for the first digit as follows: 1xx: Informational--Request received, continuing process 2xx: Success--The action was successfully received, understood, and accepted 3xx: Redirection--Further action must be taken to complete the request 4xx: Client Error--The request contains bad syntax or cannot be fulfilled 5xx: Server Error--The server failed to fulfill an apparently valid request The individual values of the numeric status codes and an example set of corresponding Reason-Phrases are presented in the following example. For detailed descriptions about the response messages, click the links to the right of the Reason-Phrases. Status-Code = "100" Continue (See Continue on page 234.) "101" Switching Protocols (See Switching Protocols on page 234.) "200" OK (See OK on page 235.) "201" Created (See Created on page 235.) "202" Accepted (See Accepted on page 235.) "203" Non-Authoritative Information (See Nonauthoritative Information on page 235.) "204" No Content (See No Content on page 236.) "205" Reset Content (See Reset Content on page 236.) "206" Partial Content (See Partial Content on page 236.) "300" Multiple Choices (See Multiple Choices on page 237.) "301" Moved Permanently (See Moved Permanently on page 237.) "302" Found (See Found on page 238.) "303" See Other (See See Other on page 238.) "304" Not Modified (See Not Modified on page 238.) "305" Use Proxy (See Use Proxy on page 239.) "306" Unused (See (Unused) on page 239.) "307" Temporary Redirect (See Temporary Redirect on page 239.) "400" Bad Request (See Bad Request on page 240.) "401" Unauthorized (See Unauthorized on page 240.) "402" Payment Required (See Payment Required on page 240.) "403" Forbidden (See Forbidden on page 240.) "404" Not Found (See Not Found on page 240.) "405" Method Not Allowed (See Method Not Allowed on page 240.) 232 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

233 Response-Header fields "406" Not Acceptable Not Acceptable on page 240.) "407" Proxy Authentication Required Proxy Authentication Required on page 241.) "408" Request Timeout (See Request Timeout on page 241.) "409" Conflict (See Conflict on page 241.) "410" Gone (See Gone on page 241.) "411" Length Required (See Length Required on page 242.) "412" Precondition Failed (See Precondition Failed on page 242.) "413" Request Entity Too Large Request Entity Too Large on page 242.) "414" Request-URI Too Long (See Request-URI Too Long on page 242.) "415" Unsupported Media Type Unsupported Media Type on page 242.) "416" Requested Range Not Satisfiable Requested Range Not Satisfiable on page 242.) "417" Expectation Failed Expectation Failed on page 242.) "500" Internal Server Error (See Internal Server Error on page 243.) "501" Not Implemented (See Not Implemented on page 243.) "502" Bad Gateway (See Bad Gateway on page 243.) "503" Service Unavailable (See Service Unavailable on page 243.) "504" Gateway Timeout (See Gateway Timeout on page 243.) "505" HTTP Version Not Supported (See HTTP Version Not Supported on page 243 extension-code extension-code = 3DIGIT Reason-Phrase = *<TEXT, excluding CR, LF> Applications must understand the class of any status code, as indicated by the first digit, and treat any unrecognized response as equivalent to the x00 status code of that class, except that an unrecognized response cannot be cached. For example, if the client receives an unrecognized status code of 431, it determines there was something wrong with its request and treats the response as if it received a 400 status code. Response-Header fields The server uses the Response-Header fields to pass additional information about the response that cannot be placed in the Status-Line. These header fields give information about the server and about further access to the resource identified by the Request-URI. response-header = Accept-Ranges Age ETag Location Proxy-Authenticate Retry-After Server Vary WWW-Authenticate Response-Header field names can be extended reliably only in combination with a change in the protocol version. However, new or experimental header fields can be given the semantics Avaya Media Processing Server VXML Browser User Guide November

234 Debugging and Troubleshooting of Response-Header fields if all parties in the communication recognize them to be Response- Header fields. Unrecognized header fields are treated as Entity-Header fields. Status-Code definitions Each Status-Code is described in the following section and includes a description of which methods it can follow and meta information required in the response. Informational (1xx) This class of status code indicates a provisional response, which consists only of the Status- Line and optional headers and terminates by an empty line. There are no required headers for this class of status code. A client must be prepared to accept one or more 1xx status responses prior to a regular response, even if the client does not expect a 100 (Continue) status message. The user agent can ignore unexpected 1xx status responses. Proxies must forward 1xx responses, unless the connection between the proxy and its client is closed or unless the proxy itself requested the generation of the 1xx response. For example, if a proxy adds an Expect: 100-continue field when it forwards a request, then it need not forward the corresponding 100 (Continue) response Continue The client continues with its request. This interim response is used to inform the client that the initial part of the request is received but not yet rejected by the server. The client continues by sending the remainder of the request or, if the request is already completed, ignoring this response. The server sends a final response after the request is completed Switching Protocols The server understands and complies with the client request, through the Upgrade message header field, for a change in the application protocol used on this connection. The server switches protocols to those defined by the response Upgrade header field immediately after the empty line that terminates the 101 response. The protocol is switched only when it is useful. For example, switching to a newer version of HTTP and switching to a real-time, synchronous protocol is optimal when delivering resources that use such features. 234 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

235 Successful (2xx) Successful (2xx) This class of status code indicates that the client request was successfully received, understood, and accepted OK The request succeeded. The information returned with the response depends on the method used in the request: GET an entity that corresponds to the requested resource is sent in the response HEAD the entity-header fields that correspond to the requested resource are sent in the response without any message body POST an entity that describes or contains the result of the action TRACE an entity that contains the request message as received by the end server Created The request is fulfilled and a new resource created. The newly created resource can be referenced by the URI returned in the entity of the response, with the most specific URI for the resource in a Location header field. The response includes an entity that contain a list of resource characteristics and locations from which the user or the user agent can choose the one most appropriate. The entity format is specified by the media type in the Content-Type header field. The origin server must create the resource before it returns the 201 status code. If the action cannot be performed immediately, the server responds with 202 (Accepted) response instead. A 201 response contains an ETag response header field that indicates the current value of the entity tag for the requested variant just created Accepted The request is accepted for processing, but the processing is not complete. The request can or cannot eventually be acted upon, as it can be disallowed when processing actually occurs. No capability exists to resend a status code from this type of asynchronous operation. The 202 response is intentionally noncommittal. A server can accept a request for some other process (such as a batch-oriented process that is only run once each day) without requiring that the user agent's connection to the server persists until the process is completed. The entity returned with this response includes an indication of the request current status, and either a pointer to a status monitor or some estimate of when the user can expect the request to be fulfilled Nonauthoritative Information The returned meta information in the entity-header is not the definitive set as available from the origin server, but it is gathered from a local or a third-party copy. The set presented is a subset or superset of the original version. For example, including local annotation information about the resource can result in a superset of the meta information known by the origin server. Avaya Media Processing Server VXML Browser User Guide November

236 Debugging and Troubleshooting Use of this response code is not required and is appropriate only when the response is otherwise 200 (OK) No Content The server fulfilled the request but needs not return an entity-body and can return updated meta information. The response includes new or updated meta information in the form of entityheaders which, if present, is associated with the requested variant. If the client is a user agent, it does not change its document view from that which caused the request to be sent. This response is primarily intended to allow input for actions to occur without changing to the user agent's active document view, although any new or updated meta information is applied to the document currently in the user agent's active view. The 204 response does not include a message-body and, therefore, it is always terminated by the first empty line after the header fields Reset Content The server fulfilled the request, and the user agent resets the document view that caused the request to be sent. This response is primarily intended to allow input for actions to occur through user input followed by clearing the form in which the input is provided so that the user can easily initiate another input action. The response cannot include an entity Partial Content The server has fulfilled the partial GET request for the resource. The request included a Range header field that indicates the desired range and included an If-Range header field to make the request conditional. The response includes the following header fields: Either a Content-Range header field, which indicates the range included with this response or a multipart and byte-ranges Content-Type including Content-Range fields for each part. If a Content-Length header field is in the response, its value must match the actual number of OCTETs transmitted in the message-body. Date. ETag and Content-Location if the header was sent in a 200 response to the same request. Expires, Cache-Control, and Vary if the field-value differs from that sent in any previous response for the same variant. If the 206 response is the result of an If-Range request that used a strong cache validator, the response includes no other entity-headers. If the response is the result of an If-Range request that used a weak validator, the response includes no other entity-headers; this prevents inconsistencies between cached entity-bodies and updated headers. Otherwise, the response includes all of the entity-headers returned with a 200 (OK) response to the same request. A cache does not combine a 206 response with other previously cached content if the ETag or Last-Modified headers do not match exactly. A cache that does not support the Range and Content-Range headers does not cache 206 (Partial) responses. 236 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

237 Redirection (3xx) Redirection (3xx) This class of status code indicates that the user agent must take further action to fulfill the request. The action required is performed by the user agent without user interaction only if the method used in the second request is GET or HEAD. A client detects infinite redirection loops because such loops generate network traffic for each redirection. Note: Previous versions of this specification recommended a maximum of five redirections. You must be aware that clients can implement such a fixed limitation Multiple Choices The requested resource corresponds to any one of a set of representations, each with its own specific location. Agent-driven negotiation information (section 12) is provided so that the user (or user agent) can select a preferred representation and redirect its request to that location. Unless it was a HEAD request, the response includes an entity that contains a list of resource characteristics and locations from which the user or user agent can choose the one most appropriate. The entity format is specified by the media type in the Content-Type header field. Depending upon the format and the user agent capabilities, the most appropriate choice occurs automatically; however, this specification defines no standard for such automatic selection. If the server has a preferred choice of representation, it includes the specific URI for that representation in the Location field; user agents use the Location field value for automatic redirection. This response is cacheable unless indicated otherwise Moved Permanently The requested resource is assigned a new permanent URI, and any future reference to this resource uses one of the returned URIs. Clients with link-editing capabilities should automatically relink references to the Request-URI to one or more of the new references returned by the server, where possible. This response is cacheable unless indicated otherwise. The new permanent URI is given by the Location field in the response. Unless the request method was HEAD, the entity of the response contains a short hypertext note with a hyperlink to the new URI. If the 301 status code is received in response to a request other than GET or HEAD, the user agent does not automatically redirect the request unless it can be confirmed by the user, because this can change the conditions under which the request was issued. Note: When automatically redirecting a POST request after receiving a 301 status code, some existing HTTP/1.0 user agents erroneously change it to a GET request. Avaya Media Processing Server VXML Browser User Guide November

238 Debugging and Troubleshooting Found The requested resource resides temporarily under a different URI. Because the redirection can be altered, the client continues to use the Request-URI for future requests. This response is cacheable only if indicated by a Cache-Control or Expires header field. The temporary URI is given by the Location field in the response. Unless the request method was HEAD, the entity of the response contains a short hypertext note with a hyperlink to the new URI. If the 302 status code is received in response to a request other than GET or HEAD, the user agent does not automatically redirect the request unless it can be confirmed by the user, because this can change the conditions under which the request was issued. Note: RFC 1945 and RFC 2068 specify that the client cannot change the method on the redirected request. However, most existing user agent implementations treat 302 as if it were a 303 response that performs a GET on the Location field-value regardless of the original request method. The status codes 303 and 307 were added for servers that wish to make unambiguously clear which kind of reaction is expected of the client See Other The response to the request is under a different URI and is retrieved using a GET method on that resource. This method exists primarily to allow the output of a POST-activated script to redirect the user agent to a selected resource. The new URI is not a substitute reference for the originally requested resource. The 303 response is not cached, but the response to the second (redirected) request is cacheable. The different URI is given by the Location field in the response. Unless the request method was HEAD, the entity of the response contains a short hypertext note with a hyperlink to the new URI. Note: Many pre-http/1.1 user agents do not understand the 303 status. When interoperability with such clients is a concern, the 302 status code is used instead because most user agents react to a 302 response as described here for Not Modified If the client performed a conditional GET request and access is allowed, but the document has not been modified, the server responds with this status code. The 304 response does not contain a message-body and, therefore, it always terminates by the first empty line after the header fields. The response includes the following header fields: Date, unless its omission is required. If a clockless origin server obeys these rules, and proxies and clients add their own Date to any response received without one (as already specified by [RFC 2068]), caches still operate correctly. ETag and Content-Location, if the header is sent in a 200 response to the same request. Expires, Cache-Control, and Vary, if the field-value might differ from that sent in any previous response for the same variant. 238 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

239 Client Error (4xx) If the conditional GET used a strong cache validator, the response includes no other entityheaders. Otherwise, the conditional GET used a weak validator and the response includes no other entity-headers. This prevents inconsistencies between cached entity-bodies and updated headers. If a 304 response indicates that an entity is not currently cached, then the cache disregards the response and repeats the request without the conditional. If a cache uses a received 304 response to update a cache entry, the cache updates the entry to reflect any new field values in the response Use Proxy The requested resource is accessed through the proxy given by the Location field. The Location field gives the URI of the proxy. The recipient must repeat this single request through the proxy. 305 responses are generated only by origin servers. Note: RFC 2068 is not clear that 305 was intended to redirect a single request and to be generated by origin servers only. Not observing these limitations has significant security consequences (Unused) The 306 status code is no longer used, and the code is reserved Temporary Redirect The requested resource resides temporarily under a different URI. Because the redirection is altered on occasion, the client continues to use the Request-URI for future requests. This response is cacheable only if indicated by a Cache-Control or Expires header field. The temporary URI is given by the Location field in the response. Unless the request method was HEAD, the entity of the response contains a short hypertext note with a hyperlink to the new URI, because many pre-http/1.1 user agents do not understand the 307 status. Therefore, the note must contain the information necessary for a user to repeat the original request on the new URI. If the 307 status code is received in response to a request other than GET or HEAD, the user agent must not automatically redirect the request unless it can be confirmed by the user because this can change the conditions under which the request was issued. Client Error (4xx) The 4xx class of status code is intended for cases in which the client potentially erred. Except when responding to a HEAD request, the server includes an entity that contains an explanation of the error situation and whether it is a temporary or permanent condition. These status codes apply to any request method. User agents display any included entity to the user. If the client sends data, a server implementation using TCP careful ensures that the client acknowledges receipt of the packet that contains the response, before the server closes the Avaya Media Processing Server VXML Browser User Guide November

240 Debugging and Troubleshooting input connection. If the client continues to send data to the server after the close, the server TCP stack sends a reset packet to the client, which erases the unacknowledged input buffers from the client before they are read and interpreted by the HTTP application Bad Request The request cannot be understood by the server due to malformed syntax. The client does not repeat the request without modifications Unauthorized The request requires user authentication. The response includes a WWW-Authenticate header field that contains a challenge applicable to the requested resource. The client repeats the request with a suitable Authorization header field. If the request already included Authorization credentials, then the 401 response indicates that authorization is refused for those credentials. If the 401 response contains the same challenge as the prior response, and the user agent already attempted authentication at least once, then the user is presented the entity that was in the response because that entity can include relevant diagnostic information. HTTP access authentication is explained in HTTP Authentication: Basic and Digest Access Authentication Payment Required This code is reserved for future use Forbidden The server understood the request, but refuses to fulfill it. Authorization does not help and the request is not repeated. If the request method is not HEAD and the server needs make public why the request was not fulfilled, it describes the reason for the refusal in the entity. If the server does not make this information available to the client, the status code 404 (Not Found) is used instead Not Found The server found no match to the Request-URI. No indication is given of whether the condition is temporary or permanent. The 410 (Gone) status code is used if the server knows, through some internally configurable mechanism, that an old resource is permanently unavailable and has no forwarding address. This status code is commonly used when the server cannot determine exactly why the request is refused or when no other response applies Method Not Allowed The method specified in the Request-Line is not allowed for the resource identified by the Request-URI. The response includes an Allow header that contains a list of valid methods for the requested resource Not Acceptable The resource identified by the request is capable of generating only response entities that have content characteristics not acceptable according to the accept headers sent in the request. Unless it was a HEAD request, the response includes an entity containing a list of available entity characteristics and locations from which the user or user agent can choose the one most appropriate. The entity format is specified by the media type in the Content-Type header field. Depending on the format and the capabilities of the user agent, the most appropriate choice 240 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

241 Client Error (4xx) is selected automatically. However, this specification does not define any standard for such automatic selection. Note: HTTP/1.1 servers can return responses that are not acceptable according to the accept headers sent in the request. In some cases, letting the server return another response is preferable to sending a 406 response. User agents are encouraged to inspect the headers of an incoming response to determine if it is acceptable. If the response is unacceptable, a user agent temporarily stops receipt of additional data and queries the user for a decision about further actions Proxy Authentication Required This code is similar to 401 (Unauthorized) but indicates that the client must first authenticate itself with the proxy. The proxy returns a Proxy-Authenticate header field that contains a challenge applicable to the proxy for the requested resource. The client can repeat the request with a suitable Proxy-Authorization header field. HTTP access authentication is explained in HTTP Authentication: Basic and Digest Access Authentication Request Timeout The client did not produce a request within the time that the server was prepared to wait. The client can repeat the request without modifications at any later time Conflict The request is not completed due to a conflict with the current state of the resource. This code is allowed only in situations where the user can resolve the conflict and resubmit the request. The response body includes enough information for the user to recognize the source of the conflict. Ideally, the response entity includes enough information for the user or user agent to fix the problem; however, that is not always possible and is not required. Conflicts are most likely to occur in response to a PUT request. For example, if versioning is used and the entity PUT includes changes to a resource that conflict with those made by an earlier (third-party) request, the server can use the 409 response to indicate that it cannot complete the request. In this case, the response entity contains a list of the differences between the two versions in a format defined by the response Content-Type Gone The requested resource is no longer available at the server and no forwarding address is known. This condition is expected to be permanent. Clients with link-editing capabilities delete references to the Request-URI after user approval. If the server cannot determine whether the condition is permanent, the status code 404 (Not Found) is used instead. This response is cacheable unless indicated otherwise. The 410 response is primarily intended to assist with Web maintenance by notifying the recipient that the resource is intentionally unavailable and that the server owners want to remove remote links to that resource. Such an event is common for limited-time, promotional services and for resources that belong to individuals that no longer work at the server site. It is not necessary to mark all permanently unavailable resources as "gone" or to keep the mark for any length of time that is at the discretion of the server owner. Avaya Media Processing Server VXML Browser User Guide November

242 Debugging and Troubleshooting Length Required The server refuses to accept the request without a defined Content-Length. The client repeats the request if it adds a valid Content-Length header field that contains the length of the message-body in the request message Precondition Failed The precondition in one or more of the request-header fields evaluated to false when it was tested on the server. The client uses this response code to place preconditions on the current resource meta information (header field data) and thus prevent the requested method from being applied to a resource other than the one intended Request Entity Too Large The server refuses to process a request because the request entity is larger than the server can process. The server can close the connection to prevent the client from continuing the request. If the condition is temporary, the server includes a Retry-After header field to indicate that it is temporary and the time after which the client can try again Request-URI Too Long The server refuses to service the request because the Request-URI is longer than the server is willing to interpret. This rare condition is likely to occur only when a client improperly converted a POST request to a GET request with long query information, when the client descended into a URI "black hole" of redirection (for example, a redirected URI prefix that points to a suffix of itself), or when the server is under attack by a client attempting to exploit security holes present in some servers using fixed-length buffers for reading or manipulating the Request-URI Unsupported Media Type The server refuses to handle the request because the entity of the request is in a format not supported by the requested resource for the requested method Requested Range Not Satisfiable A server returns a response with this status code if: a request included a Range request-header field; none of the range-specifier values in this field overlap the current extent of the selected resource; and the request did not include an If-Range request-header field. For byte-ranges, this means that the first-byte-pos of all of the byte-range-spec values was greater than the current length of the selected resource. When this status code is returned for a byte-range request, the response includes a Content- Range entity-header field that specifies the current length of the selected resource. This response does not use the multipart or byte-ranges content-type Expectation Failed The expectation in an Expect request-header field is not met by this server, or if the server is a proxy, the server has unambiguous evidence that the request is not met by the next-hop server. 242 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

243 Server Error (5xx) Server Error (5xx) Response status codes that begins with the digit 5 indicate cases in which the server is aware that it has erred or is incapable of performing the request. Except when responding to a HEAD request, the server includes an entity that contains an explanation of the error situation and whether it is a temporary or permanent condition. User agents display any included entity to the user. These response codes apply to any request method Internal Server Error The server encountered an unexpected condition that prevented it from fulfilling the request Not Implemented The server does not support the functionality required to fulfill the request. This response is appropriate when the server does not recognize the request method and cannot support it for any resource Bad Gateway The server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request Service Unavailable The server cannot currently handle the request due to a temporary overloading or server maintenance. The implication is that this is a temporary condition that is alleviated after a delay. If known, the length of the delay is indicated in a Retry-After header. If no Retry-After is specified, the client handles the response as it does a 500 response. Note: The existence of the 503 status code does not imply that a server must use it when it becomes overloaded. Some servers want to refuse the connection Gateway Timeout The server, while acting as a gateway or proxy, did not receive a timely response from the upstream server specified by the URI (for example, HTTP, FTP, LDAP) or some other auxiliary server (such as DNS) it needed to access in attempting to complete the request. Note: Some deployed proxies are known to return 400 or 500 when DNS lookups time out HTTP Version Not Supported The server does not support, or refuses to support, the HTTP protocol version that was used in the request message. The server indicates that cannot complete the request using the same major version as the client, other than with this error message. The response contains an entity that describes why that version is not supported and what other protocols are supported by that server. Avaya Media Processing Server VXML Browser User Guide November

244 Debugging and Troubleshooting 244 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

245 Chapter 8: Samples This chapter covers: 1. Introduction 2. VoiceXMLDemo 3. CCXML dialogstart 4. CCXML dialoguser Introduction The following table lists the applications that are distributed as samples. All samples are in the directory shown in the table in the following path. $MPSHOME/PERIvxml/samples Directory File Description vxml toolkit GetUserInput.vxml InvokeVXML.ppr Uses the toolkit to invoke vxml from MPS Developer. alarm handoff alarm.vxml getcall.vxml handoff.vxml HandoffGetLine.ppr Generates alarms that are saved in the alarm log. Performs application hand-offs between MPS Developer and VXML and VXML to MPS Developer. Avaya Media Processing Server VXML Browser User Guide November

246 Samples Directory File Description HandoffOffer.ppr numdemo samples record saverec numdemo-dtmf.vxml numdemo-speech.vxml overall_test_nuance.vxml overall_test_speechworks.vmxl overall_test_ibm.vmxl recordnopost.vxml record.vxml base64.h base64.cpp Logfile.cpp MultipartRequest.cpp MultipartParser.cpp Part.cpp Standard numdemo app supporting DTMF only. Standard numdemo app supporting recognition and DTMF. Application testing several features of VXML on the Avaya platform using inline Nuance grammars. Application testing several features of VXML on the Avaya platform using inline SRGS grammars. Application testing several features of VXML on the Avaya platform using inline SRGS grammars. Recording to a WAV file. Recording to a WAV file and then posting the WAV file to a Web server. Sample server-side application to process a WAV file sent from record.vxml. 246 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

247 Introduction stats Directory File Description VoiceXMLDemo statistic.vmxl audio_server.vxml builtin.vxml Menu application that shows how to increment application counters. Use this application for the detailed description. The VoiceXMLDemo set of vxml files is one application that tests various features of VXML. It uses a root document, gotos, and subdialogs to traverse all of the VXML documents. xfr fexit.vxml inline_grammar.vxml main.vxml options.vxml mixed_initiative.vxml mmf.vxml record.vxml touch_tone.vxml VoiceXMLDemo_root.vxml xfer.vxml xferlisten.vxml xferwhisprec.vxml Simple transfer. Transfer allowing the caller to hear the transfer progress. Plays a recording to the operator before the transfer is completed. Avaya Media Processing Server VXML Browser User Guide November

248 Samples Directory File Description ccxml/dialogstart answer.ccxml account.vxml Shows how to use CCXML for call control and vxml for dialog. ccxml/dialoguser dialoguser.ccxml dialoguser.vxml Shows how a VXML dialog can send a Dialog.User event to a CCXML application. VoiceXMLDemo This section presents the call-flow diagram for each part of the Avaya VXML demonstration and includes the respective code. main.vxml call-flow diagram 248 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

249 main.vxml code main.vxml code <?xml version="1.0" encoding="utf-8"?> <!-- Document : main.vxml Created on : February 11, 2003, 2:19 PM Author : CPASSAR Description: Purpose of the document follows. --> <vxml xmlns=" xmlns:xsd=" xsd:schemalocation=" version="2.0" application="voicexmldemo_root.vxml"> <!-- Ask the User if they are interested in hearing our demo --> <form id="form_continuedemo"> <block> <log>new call Started.</log> <prompt>welcome to Avaya Voice XML 2.0 demonstration! </prompt> </block> <field name="field_continuedemo" type="boolean"> <prompt>would you like to try the demonstration? </prompt> <filled> <if cond="field_continuedemo=='true'"> <log>user chose to enter demo.</log> <prompt>great. Lets continue.</prompt> <goto next="menu.vxml"/> Avaya Media Processing Server VXML Browser User Guide November

250 Samples <else/> <log>user chose to exit demo.</log> <prompt>ok, you can call back later.</prompt> <goto next="fexit.vxml"/> </if> </filled> </field> </form> </vxml> 250 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

251 options.vxml call-flow diagram options.vxml call-flow diagram options.vxml code <?xml version="1.0" encoding="utf-8"?> Avaya Media Processing Server VXML Browser User Guide November

252 Samples <!-- Document : menu.vxml Created on : February 11, 2003, 3:50 PM Author : CPASSAR Description: Purpose of the document follows. --> <vxml xmlns=" xmlns:xsd=" xsd:schemalocation=" version="2.0" application="voicexmldemo_root.vxml"> <form id="form_mainmenu"> <!-- Declare a variable to store the users choice of the next document. --> <var name="form_mainmenu_nextdocument"/> <!-- Which document would the user like to try? --> <field name="field_mainmenu"> </block> <field name="field_continuedemo" type="boolean"> <prompt> Please select the test you would like to perform. Standard Prompt. Wave File. Touch tone. Builtin Grammar. Inline Grammar. Mixed Initiative. Record. Exit. </prompt> <option dtmf="1" value="mmf.vxml">standard Prompt</option> <option dtmf="2" value="audio_server.vxml">wave File</option> <option dtmf="3" value="touch_tone.vxml">touch Tone</option> <option dtmf="4" value="builtin.vxml">builtin Grammar</option> <option dtmf="5" value="inline_grammar.vxml">inline Grammar</ 252 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

253 options.vxml code option> <option dtmf="6" value="mixed_initiative.vxml">mixed Initiative</ option> <option dtmf="7" value="record.vxml">record</ option> <option dtmf="8" value="fexit.vxml"> Exit </ option> <filled> <!-- Save the users choice --> <assign name="form_mainmenu_nextdocument" expr="field_mainmenu"/> </filled> </field> <!-- Execute the specified document and come back to this menu. --> <subdialog name="form_mainmenu_subdialog" srcexpr="form_mainmenu_nextdocument" /> <!-- Clear the menu, so we reprompt the user. --> <block name="field_mainmenu_block1"> <clear namelist="field_mainmenu Form_MainMenu_SubDialog Field_MainMenu_block1"/> </block> </form> </vxml> Avaya Media Processing Server VXML Browser User Guide November

254 Samples mmf.vxml call-flow diagram 254 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

255 mmf.vxml code mmf.vxml code <?xml version="1.0" encoding="utf-8"?> <!-- Document : mmf.vxml Created on : February 11, 2003, 4:57 PM Author : CPASSAR Description: Purpose of the document follows. --> <vxml xmlns=" xmlns:xsd=" xsd:schemalocation=" voicexml20/vxml.xsd" version="2.0" application="voicexmldemo_root.vxml"> <form id="form_mmf"> <block> You have chose to hear a standard MMF prompt. Here are the days of the week. <audio src="builtin:sunday"/> <audio src="builtin:monday"/> <audio src="builtin:tuesday"/> <audio src="builtin:wednesday"/> <audio src="builtin:thursday"/> <audio src="builtin:friday"/> <audio src="builtin:saturday"/> You can also play an MMF prompt using the application and element name. Here are the days of the week again, referenced by application and element. <audio src="builtin:numset/sunday"/> <audio src="builtin:numset/monday"/> <audio src="builtin:numset/tuesday"/> <audio src="builtin:numset/wednesday"/> <audio src="builtin:numset/thursday"/> <audio src="builtin:numset/friday"/> <audio src="builtin:numset/saturday"/> <return/> </block> Avaya Media Processing Server VXML Browser User Guide November

256 Samples </form> </vxml> audio_server.vxml call-flow diagram audio_server.vxml code <?xml version="1.0" encoding="utf-8"?> <!-- Document : audio_server.vxml Created on : February 12, 2003, 9:43 AM 256 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

257 audio_server.vxml code Author : CPASSAR Description: Purpose of the document follows. --> <vxml xmlns=" xmlns:xsd=" xsd:schemalocation=" voicexml20/vxml.xsd" version="2.0" application="voicexmldemo_root.vxml"> <form id="form_audioserver"> <block> You choose to hear a wave file prompt. This wave file is retrieved from a Web server. First, lets speak the Sterling audio. <audio src=" Sterling.wav"> The Sterling Audio U.R.L. does not exist. </audio> Now, lets speak the customer service audio. <audio src=" swbtz39.wav"> The customer service U.R.L. does not exist. </audio> <return/> </block> </form> </vxml> Avaya Media Processing Server VXML Browser User Guide November

258 Samples touch_tone.vxml call-flow diagram touch_tone.vxml code <?xml version="1.0" encoding="utf-8"?> <!-- Document : touch_tone.vxml Created on : February 12, 2003, 9:47 AM Author : CPASSAR Description: Purpose of the document follows. --> <vxml xmlns=" xmlns:xsd=" xsd:schemalocation=" voicexml20/vxml.xsd" 258 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

259 touch_tone.vxml code version="2.0" application="voicexmldemo_root.vxml"> <form id="form_touchtone"> <field name="field_touchtone"> You have selected the touch tone demo. <grammar src="builtin:dtmf /digits?minlength=1;maxlength=5"/> <prompt> Please enter one to five digits </prompt> <filled> <prompt> You entered <value expr="field_touchtone" class="digits" mode="recorded"/> </prompt> <return/> </filled> </field> </form> </vxml> Avaya Media Processing Server VXML Browser User Guide November

260 Samples builtin.vxml call-flow diagram 260 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments?

261 builtin.vxml call-flow diagram Avaya Media Processing Server VXML Browser User Guide November

262 Samples builtin.vxml code <?xml version="1.0" encoding="utf-8"?> <!-- Document : builtin.vxml Created on : February 12, 2003, 10:06 AM Author : CPASSAR Description: 262 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

263 builtin.vxml code Purpose of the document follows. --> <vxml xmlns=" xmlns:xsd=" version="2.0" xsd:schemalocation=" application="voicexmldemo_root.vxml"> <menu id="menu_builtin"> <prompt> You chose the builtin grammar demo. Please select the builtin grammar to try: Boolean, Currency, Date, Digits, Number, Phone, Time, Return </prompt> <choice dtmf="1" next="#form_boolean">boolean </choice> <choice dtmf="2" next="#form_currency">currency </choice> <choice dtmf="3" next="#form_date">date</choice> <choice dtmf="4" next="#form_digits">digits </choice> <choice dtmf="5" next="#form_number">number </choice> <choice dtmf="6" next="#form_phone">phone</ choice> <choice dtmf="7" next="#form_time">time</choice> <choice dtmf="8" next="#form_return">return</ choice> </menu> <!-- Builtin boolean test --> <form id="form_boolean"> <block> <prompt> This is the builtin boolean grammar. </prompt> Avaya Media Processing Server VXML Browser User Guide November

264 Samples </block> <field name="field_boolean" type="boolean"> <prompt> Please say yes or no, and I will speak it back. </prompt> <filled> <prompt bargein="false"> You said <value expr="field_boolean"/> </prompt> <goto next="#menu_builtin"/> </filled> </field> </form> <!-- Builtin currency test --> <form id="form_currency"> <block> <prompt> This is the builtin currency grammar. </prompt> </block> <field name="field_currency" type="currency"> <prompt> Please say a money amount, and I will speak it back. </prompt> <filled> <prompt> 264 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

265 builtin.vxml code You said <value expr="field_currency" class="currency" mode="recorded"/> </prompt> <goto next="#menu_builtin"/> </filled> </field> </form> <!-- Builtin date test --> <form id="form_date"> <block> <prompt> This is the builtin date grammar. </prompt> </block> <field name="field_date" type="date"> <prompt> Please say a date, and I will speak it back. </prompt> <filled> <prompt> You said <value expr="field_date" class="date" mode="recorded"/> </prompt> <goto next="#menu_builtin"/> </filled> </field> </form> Avaya Media Processing Server VXML Browser User Guide November

266 Samples <!-- Builtin digits test --> <form id="form_digits"> <block> <prompt> This is the builtin digits grammar. </prompt> </block> <field name="field_digits" type="digits?length=3"> <prompt> Please say 3 digits, and I will speak it back. </prompt> <filled> <prompt> You said <value expr="field_digits" mode="recorded" class="number:digits"/> </prompt> <goto next="#menu_builtin"/> </filled> </field> </form> <!-- Builtin number test --> <form id="form_number"> <block> <prompt> This is the builtin number grammar. </prompt> </block> 266 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

267 builtin.vxml code <field name="field_number" type="number"> <prompt> Please say a number, and I will speak it back. </prompt> <filled> <prompt> You said <value expr="field_number" mode="recorded" class="number"/> </prompt> <goto next="#menu_builtin"/> </filled> </field> </form> <!-- Builtin phone grammar --> <form id="form_phone"> <block> <prompt> This is the builtin phone grammar. </prompt> </block> <field name="field_phone" type="phone"> <prompt> Please say a phone number, and I will speak it back. </prompt> <filled> <prompt> You said <value expr="field_phone" mode="recorded" class="telephone"/> Avaya Media Processing Server VXML Browser User Guide November

268 Samples </prompt> <goto next="#menu_builtin"/> </filled> </field> </form> <!-- Builtin time grammar --> <form id="form_time"> <block> <prompt> This is the builtin time grammar. </prompt> </block> <field name="field_time" type="time"> <prompt> Please say a time, and I will speak it back. </prompt> <filled> <prompt> You said <value expr="field_time" mode="recorded" class="time"/> </prompt> <goto next="#menu_builtin"/> </filled> </field> </form> <!-- Return control back to the calling dialog. --> <form id="form_return"> 268 Avaya Media Processing Server VXML Browser User Guide November 2013 Comments? infodev@avaya.com

269 inline_grammar.vxml call-flow diagram <block> <return/> </block> </form> </vxml> inline_grammar.vxml call-flow diagram Avaya Media Processing Server VXML Browser User Guide November

Avaya Software Keycode Installation Guide

Avaya Software Keycode Installation Guide Avaya Software Keycode Installation Guide 2010 Avaya Inc. P0607323 04 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document

More information

Using Manage Alarm Tool

Using Manage Alarm Tool Using Manage Alarm Tool Release 1.0 Issue 1 April 2013 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is complete and

More information

Avaya Client Applications Configurator User Guide

Avaya Client Applications Configurator User Guide Avaya Client Applications Configurator User Guide Release 6.3 02-604198 Issue 02.01 February 2014 2014 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the

More information

IP Office 6.1 Embedded Voic Mailbox User Guide

IP Office 6.1 Embedded Voic Mailbox User Guide Embedded Voicemail Mailbox User Guide 15-604067 Issue 08a - (18 August 2010) 2010 AVAYA All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document

More information

Avaya CallPilot Mini Message Networking User Guide

Avaya CallPilot Mini Message Networking User Guide Part No. P0989498 02.1 Avaya CallPilot Mini Message Networking User Guide 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document

More information

IP Office Release 7.0 IP Office Essential Edition - Quick Version Embedded Voic User Guide

IP Office Release 7.0 IP Office Essential Edition - Quick Version Embedded Voic User Guide IP Office Essential Edition - Quick Version Embedded Voicemail User Guide 15-604067 Issue 09a - (21 February 2011) 2011 AVAYA All Rights Reserved. Notices While reasonable efforts have been made to ensure

More information

IP Office. IP Office Mailbox Mode User Guide Issue 11b - (15 May 2010)

IP Office. IP Office Mailbox Mode User Guide Issue 11b - (15 May 2010) Mailbox Mode User Guide 15-601131 Issue 11b - (15 May 2010) 2010 AVAYA All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete and

More information

Avaya Aura Call Center Elite Multichannel Documentation Roadmap

Avaya Aura Call Center Elite Multichannel Documentation Roadmap Multichannel Documentation Roadmap Release 6.4 Issue 2 April 2015 2015 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is

More information

Implementing Avaya Flare Experience for Windows

Implementing Avaya Flare Experience for Windows Implementing Avaya Flare Experience for Windows 18-604043 Issue 1 July 2012 2012 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

Avaya Converged Office 2007 User Guide Microsoft Office Communications Server 2007

Avaya Converged Office 2007 User Guide Microsoft Office Communications Server 2007 Avaya Converged Office 2007 User Guide Microsoft Office Communications Server 2007 Avaya Communication Server 1000 Release 7.5 Document Status: Standard Document Version: 04.01 Document Number: NN43001-123

More information

IP Office Release 9.0

IP Office Release 9.0 Embedded Voicemail User Guide (IP Office Mode) 15-604067 Issue 13a - (13 February 2014) 2014 AVAYA All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in

More information

System-wide Call Appearance (SWCA) Features Card. Avaya Business Communications Manager Release 6.0

System-wide Call Appearance (SWCA) Features Card. Avaya Business Communications Manager Release 6.0 System-wide Call Appearance (SWCA) Features Card Avaya Business Communications Manager Release 6.0 Document Status: Standard Document Number: NN40010-101 Document Version: 04.02 Date: October 2010 2010

More information

User Guide for Avaya Equinox Add-in for IBM Lotus Notes

User Guide for Avaya Equinox Add-in for IBM Lotus Notes User Guide for Avaya Equinox Add-in for IBM Lotus Notes Release 9.0 Issue 1 January 2017 2014-2017, Avaya, Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

Avaya Meridian Integrated RAN Release 2.0 Telephone Set-Based Administration User Guide. Avaya Communication Server 1000 Release 7.

Avaya Meridian Integrated RAN Release 2.0 Telephone Set-Based Administration User Guide. Avaya Communication Server 1000 Release 7. Avaya Meridian Integrated RAN Release 2.0 Telephone Set-Based Administration User Guide Avaya Communication Server 1000 Release 7.5 Document Status: Standard Document Number: P0888275 Document Version:

More information

Avaya Aura Contact Center Documentation Roadmap

Avaya Aura Contact Center Documentation Roadmap Documentation Roadmap Release 6.2 NN44400-113 03.02 30 July 2012 2012 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is complete

More information

Avaya 3100 Mobile Communicator - Web UI User Guide. Avaya 3100 Mobile Communicator Release 3.1

Avaya 3100 Mobile Communicator - Web UI User Guide. Avaya 3100 Mobile Communicator Release 3.1 Avaya 3100 Mobile Communicator - Web UI User Guide Avaya 3100 Mobile Communicator Release 3.1 Document Status: Standard Document Number: NN42030-110 Document Version: 04.04 Date: July 2010 2009 2010 Avaya

More information

IP Office. Embedded Voic User Guide (IP Office Mode) Issue 12a (26 February 2013)

IP Office. Embedded Voic User Guide (IP Office Mode) Issue 12a (26 February 2013) Embedded Voicemail User Guide (IP Office Mode) 15-604067 Issue 12a (26 February 2013) 2013 AVAYA All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this

More information

IP Office Intuity Mailbox Mode User Guide

IP Office Intuity Mailbox Mode User Guide Intuity Mailbox Mode User Guide 15-601130 EN-S Issue 12b - (03 October 2011) 2011 AVAYA All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document

More information

Using Avaya Flare Communicator for ipad Devices

Using Avaya Flare Communicator for ipad Devices Using Avaya Flare Communicator for ipad Devices Release 8.1 Issue 0.1 June 2012 2012 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this

More information

IP Office Basic Edition

IP Office Basic Edition Norstar Mode - Embedded Voicemail User Guide (IP Office Mode) 15-604067 Issue 12f - (19 August 2013) 2013 AVAYA All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

IP Office 9.0 IP Office Server Edition Reference Configuration

IP Office 9.0 IP Office Server Edition Reference Configuration IP Office 9.0 IP Office Server Edition Reference Configuration Release 9.0.3 15-604135 May 2014 2014 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

Nortel CallPilot Multimedia Messaging User Guide

Nortel CallPilot Multimedia Messaging User Guide Nortel CallPilot Multimedia Messaging User Guide 5.0 NN44200-106, 01.05 August 2010 2010 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in

More information

Avaya Callback Assist Considerations for Avaya Call Management System

Avaya Callback Assist Considerations for Avaya Call Management System Avaya Callback Assist Considerations for Avaya Call Management System Release 4.6.2.0 December 2017 2015-2017 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that

More information

Avaya CallPilot 5.0 Library Listing

Avaya CallPilot 5.0 Library Listing Avaya CallPilot 5.0 Library Listing 5.0 NN44200-117, 01.04 December 2010 2010 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

Avaya Aura Call Center Elite Documentation Roadmap

Avaya Aura Call Center Elite Documentation Roadmap Avaya Aura Call Center Elite Documentation Roadmap May 2013 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is complete

More information

Release Notes for Avaya Aura Appliance Virtualization Platform Release

Release Notes for Avaya Aura Appliance Virtualization Platform Release Release Notes for Avaya Aura Appliance Virtualization Platform Release 7.0.0.0 Release Notes Issue 1.0, August 24, 2015 2015 Avaya Inc. All rights reserved. Notice While reasonable efforts have been made

More information

Telset Administration

Telset Administration BCM Rls 6.0 Telset Administration Task Based Guide Copyright 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete

More information

Avaya Agile Communication Environment Communicator Add-in User Guide

Avaya Agile Communication Environment Communicator Add-in User Guide Avaya Agile Communication Environment Communicator Add-in User Guide Release 3.0 April 2012 2012 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

Avaya Aura Contact Center Documentation Roadmap

Avaya Aura Contact Center Documentation Roadmap Documentation Roadmap Release 6.3 NN44400-113 Issue 04.02 May 2013 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is

More information

IP Office Platform. Avaya IP Office Platform Embedded Voic User Guide (Intuity Mode) Issue 15b - (22 January 2015)

IP Office Platform. Avaya IP Office Platform Embedded Voic User Guide (Intuity Mode) Issue 15b - (22 January 2015) Avaya Embedded Voicemail User Guide (Intuity Mode) 15-604067 Issue 15b - (22 January 2015) 2015 AVAYA All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

Avaya Call Management System Documentation Roadmap

Avaya Call Management System Documentation Roadmap Documentation Roadmap Release 18 Issue 1 October 2015 2015, Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is complete and

More information

BCM50 Rls 6.0. Router IP Routing. Task Based Guide

BCM50 Rls 6.0. Router IP Routing. Task Based Guide BCM50 Rls 6.0 Router IP Routing Task Based Guide Copyright 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete

More information

Avaya Aura Call Center Elite Documentation Roadmap

Avaya Aura Call Center Elite Documentation Roadmap Avaya Aura Call Center Elite Documentation Roadmap Release 7.1 Issue 1 May 2017 2014-2017, Avaya, Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

Avaya IP Key Expansion Module (KEM) User Guide. Avaya Business Communications Manager Release 2.0

Avaya IP Key Expansion Module (KEM) User Guide. Avaya Business Communications Manager Release 2.0 Avaya IP Key Expansion Module (KEM) User Guide Avaya Business Communications Manager Release 2.0 Document Status: Standard Document Number: NN40050-103 Document Version: 04.02 Date: October 2010 2010 Avaya

More information

Administering Avaya Flare Communicator for ipad Devices and Windows

Administering Avaya Flare Communicator for ipad Devices and Windows Administering Avaya Flare Communicator for ipad Devices and Windows 01.AF June 2012 2012 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in

More information

WLAN Location Engine 2340 Using the Command Line Interface

WLAN Location Engine 2340 Using the Command Line Interface WLAN Location Engine 2340 Using the Command Line Interface Avaya WLAN 2300 Release 6.0 Document Status: Standard Document Number: NN47250-505 Document Version: 01.02 2010 Avaya Inc. All Rights Reserved.

More information

Avaya Aura Offsite Agent User Guide

Avaya Aura Offsite Agent User Guide Avaya Aura Offsite Agent User Guide Release 6.2 NN44400-120 03.03 30 July 2012 2012 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this

More information

User Guide for Scopia Video Gateway for Microsoft Lync and Skype for Business

User Guide for Scopia Video Gateway for Microsoft Lync and Skype for Business User Guide for Scopia Video Gateway for Microsoft Lync and Skype for Business Release 9.1 December 2017 2014-2017, Avaya Inc. All Rights Reserved. 2014-2017, Avaya Inc. All Rights Reserved. Notice While

More information

Avaya CallPilot Mini/150 Desktop Messaging Quick Reference Guide

Avaya CallPilot Mini/150 Desktop Messaging Quick Reference Guide Part No. P0990116 03.1 Avaya CallPilot Mini/150 Desktop Messaging Quick Reference Guide 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information

More information

Avaya 1120E IP Deskphone User Guide. Avaya Business Communications Manager Release 6.0

Avaya 1120E IP Deskphone User Guide. Avaya Business Communications Manager Release 6.0 Avaya 1120E IP Deskphone User Guide Avaya Business Communications Manager Release 6.0 Document Status: Standard Document Number: NN40050-104 Document Version: 04.02 Date: May 2010 2010 Avaya Inc. All Rights

More information

BCM Rls 6.0. ipview WallBoard. Task Based Guide

BCM Rls 6.0. ipview WallBoard. Task Based Guide BCM Rls 6.0 ipview WallBoard Task Based Guide Copyright 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete

More information

IP Office Platform. Using Voic Pro in Intuity Mode Issue 10a - (16 January 2015)

IP Office Platform. Using Voic Pro in Intuity Mode Issue 10a - (16 January 2015) Using Voicemail Pro in Intuity Mode 15-601066 Issue 10a - (16 January 2015) 2015 AVAYA All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

Avaya Agile Communication Environment Mobility Application for BlackBerry

Avaya Agile Communication Environment Mobility Application for BlackBerry Avaya Agile Communication Environment Mobility Application for BlackBerry Release 2.3.2 NN10850-028, 04.02 March 2011 2011 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made

More information

IP Office. TAPI Link Installation Issue 12a - (14 January 2013)

IP Office. TAPI Link Installation Issue 12a - (14 January 2013) TAPI Link Installation 15-601034 Issue 12a - (14 January 2013) 2013 AVAYA All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is complete

More information

AG/SR 2330 Installation Reference

AG/SR 2330 Installation Reference SCS 4.0 AG/SR 2330 Installation Reference Task Based Guide Copyright 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document

More information

Administering Avaya Flare Experience for Windows

Administering Avaya Flare Experience for Windows Administering Avaya Flare Experience for Windows Release 1.1 18-604156 Issue 4 September 2013 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

BCM Rls 6.0 DHCP. Task Based Guide

BCM Rls 6.0 DHCP. Task Based Guide BCM Rls 6.0 DHCP Task Based Guide Copyright 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete and accurate

More information

Call Pilot Auto-Attendant

Call Pilot Auto-Attendant BCM Rls 6.0 Call Pilot Auto-Attendant Task Based Guide Copyright 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is

More information

VoiceXML Application Development Recommendations

VoiceXML Application Development Recommendations VoiceXML Application Development Recommendations Version: 1.1 July 2014 This document contains information proprietary to West Corporation. This document shall not be reproduced, transformed to other documents,

More information

Avaya Aura Messaging Web Access Feature Description

Avaya Aura Messaging Web Access Feature Description Avaya Aura Messaging Web Access Feature Description Release 6.3.1 Issue 2 July 2014 2014 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in

More information

Using Avaya Aura Messaging Web Access

Using Avaya Aura Messaging Web Access Using Avaya Aura Messaging Web Access Release 6.3.1 Issue 4 July 2014 2014 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

Upgrading Intelligent Customer Routing

Upgrading Intelligent Customer Routing Upgrading Intelligent Customer Routing Release 7.0 Issue 1 December 2013 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

Avaya Agent for Desktop Release Notes

Avaya Agent for Desktop Release Notes Avaya Agent for Desktop Release Notes Release 1.4.3 Issue 1.0 October 2016 2015-2016 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this

More information

> Port Mirror via SMLT Cluster Technical Configuration Guide. Ethernet Routing Switch 8600/8800. Engineering. Avaya Data Solutions

> Port Mirror via SMLT Cluster Technical Configuration Guide. Ethernet Routing Switch 8600/8800. Engineering. Avaya Data Solutions Ethernet Routing Switch 8600/8800 Engineering > Port Mirror via SMLT Cluster Technical Configuration Guide Avaya Data Solutions Document Date: Document Number: NN48500-630 Document Version: 1.0 2011 Avaya

More information

Avaya Agile Communication Environment Web Browser and Office Add-ins Application Fundamentals

Avaya Agile Communication Environment Web Browser and Office Add-ins Application Fundamentals Avaya Agile Communication Environment Web Browser and Office Add-ins Application Fundamentals Release 2.3.2 NN10850-031, 05.02 March 2011 2011 Avaya Inc. All Rights Reserved. Notice While reasonable efforts

More information

Using Avaya VDI Agent

Using Avaya VDI Agent Using Avaya VDI Agent Release 1 Issue 1 April 2014 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is complete and accurate

More information

Release Notes for Operation Support System Release

Release Notes for Operation Support System Release Release Notes for Operation Support System Release 1.2.0.1 Release Notes Issue 1.2.0.1, 12/10/2016 2016 Notice While reasonable efforts have been made to ensure that the information in this document is

More information

Avaya one-x Communicator Centralized Administration Tool

Avaya one-x Communicator Centralized Administration Tool Avaya one-x Communicator Centralized Administration Tool August 2010 2010 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

VoiceXML Reference Version 1.6 June 2001

VoiceXML Reference Version 1.6 June 2001 VoiceXML Reference Version 1.6 June 2001 BeVocal, Inc. 1380 Bordeaux Drive Sunnyvale, CA 94089 2001. BeVocal, Inc. All rights reserved. 2 VOICEXML REFERENCE Table of Contents Preface 11 Audience 11 Conventions

More information

Avaya Call Redirection Manager Snap-in Reference

Avaya Call Redirection Manager Snap-in Reference Avaya Call Redirection Manager Snap-in Reference Release 1.1 March 2016 2016 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

Intelligent Customer Routing. Release Notes

Intelligent Customer Routing. Release Notes Intelligent Customer Routing Release Notes Release 7.0.1 March 2015 2015 Avaya Inc. All Rights Reserved Notice While reasonable efforts have been made to ensure that the information in this document is

More information

Avaya Aura Contact Center Documentation Roadmap

Avaya Aura Contact Center Documentation Roadmap Avaya Aura Contact Center Documentation Roadmap Release 6.4 4400-113 Issue 05.02 December 2014 2014 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

WLAN 233X Access Points and Microsoft DHCP Technical Brief. Wireless LAN 2300 Engineering

WLAN 233X Access Points and Microsoft DHCP Technical Brief. Wireless LAN 2300 Engineering Wireless LAN 2300 Engineering WLAN 233X Access Points and Microsoft DHCP Technical Brief Avaya Data Solutions Document Date: Document Number: NN48500-551 Document Version: 2.1 2010 Avaya Inc. All Rights

More information

Using Avaya VDI Communicator

Using Avaya VDI Communicator Using Avaya VDI Communicator Release 2.0 October 2014 2014 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is complete and

More information

Avaya Aura 6.2 Feature Pack 3

Avaya Aura 6.2 Feature Pack 3 Avaya Aura 6.2 Feature Pack 3 WebLM 6.3.4 on VMware Release Notes Release 6.3.4 Issue: 1.2 October 2013 Copyright 2013 Avaya Inc. All rights reserved. Use pursuant to the terms of your signed agreement

More information

Using Avaya Flare Experience for Windows

Using Avaya Flare Experience for Windows Using Avaya Flare Experience for Windows Release 1.1 18-604158 Issue 2 February 2013 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in

More information

Intelligent Customer Routing. Developer Guide

Intelligent Customer Routing. Developer Guide Intelligent Customer Routing Developer Guide Release 7.0.1 March 2015 2015 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

Avaya Branch Gateways 6.3 (build ) Release Notes

Avaya Branch Gateways 6.3 (build ) Release Notes Avaya Branch Gateways 6.3 (build 33.13.0) Release Notes Issue 1 May 6, 2013 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts were made to ensure that the information in this document

More information

Administering Avaya Flare Experience for ipad Devices and Windows

Administering Avaya Flare Experience for ipad Devices and Windows Administering Avaya Flare Experience for ipad Devices and Windows 01.AF December 2012 2012 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

Avaya one-x Mobile Client for BlackBerry - Avaya one-x Client

Avaya one-x Mobile Client for BlackBerry - Avaya one-x Client Avaya one-x Mobile Client for BlackBerry - Avaya one-x Client Enablement Services and Extension to Cellular (EC500) converged client Release 6.1.2 SP1 Release Notes Issue 1.0 23 August 2012 2012 Avaya

More information

Release Date: Aug 17, 2012 Purpose: Software maintenance release to support the Secure Router product.

Release Date: Aug 17, 2012 Purpose: Software maintenance release to support the Secure Router product. Secure Router 3120/ Secure Router 1000 Series Software Release ReadMe 1. Release Summary Release Date: Aug 17, 2012 Purpose: Software maintenance release to support the Secure Router product. 2. Notes

More information

Engagement Call Control Release Notes

Engagement Call Control Release Notes Engagement Call Control Release Notes Release 3.3 Issue 1 July 2017 2017, Avaya, Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

Avaya 3456 UC Client User Guide. Avaya Communication Server 1000 Release 7.5

Avaya 3456 UC Client User Guide. Avaya Communication Server 1000 Release 7.5 Avaya Communication Server 1000 Release 7.5 Document Status: Standard Document Number: NN43080-100 Document Version: 02.01 Date: December 2010 2010 Avaya Inc. All Rights Reserved. Notices While reasonable

More information

WLAN Release Notes. Release Notes for Avaya Wireless Orchestration System (WOS-E) Version Avaya Inc - External Distribution

WLAN Release Notes. Release Notes for Avaya Wireless Orchestration System (WOS-E) Version Avaya Inc - External Distribution WLAN 9100 Release Notes Release Notes for Avaya Wireless Orchestration System (WOS-E) Version 8.0.4-7401 Avaya Inc - External Distribution 1. Introduction Avaya WOS-E version 8.0.4-7401 is a feature release

More information

IP Office Essential Edition PARTNER Mode M7100 Phone User Guide

IP Office Essential Edition PARTNER Mode M7100 Phone User Guide PARTNER Mode M7100 Phone User Guide - Issue 3e - (22 May 2011) 2011 AVAYA All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete

More information

WLAN Release Notes. Release Notes for Avaya Wireless Orchestration System (WOS) Version Avaya Inc - External Distribution

WLAN Release Notes. Release Notes for Avaya Wireless Orchestration System (WOS) Version Avaya Inc - External Distribution WLAN 9100 Release Notes Release Notes for Avaya Wireless Orchestration System (WOS) Version 8.1.4-8076 Avaya Inc - External Distribution 1. Introduction WOS Enterprise 8.1.4-8076 is a feature release that

More information

BCM Rls 6.0. Redundancy. Task Based Guide

BCM Rls 6.0. Redundancy. Task Based Guide BCM Rls 6.0 Redundancy Task Based Guide Copyright 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete and accurate

More information

Using Avaya Aura Messaging

Using Avaya Aura Messaging Using Avaya Aura Messaging Release 6.2 Issue 3 October 2013 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document is complete

More information

Using Avaya Communicator for Microsoft Lync 2013 on IP Office Platform

Using Avaya Communicator for Microsoft Lync 2013 on IP Office Platform Using Avaya Communicator for Microsoft Lync 2013 on IP Office Platform Release 9.1 02-604413 Issue 2 May 2015 2015 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure

More information

Avaya Aura System Platform Overview

Avaya Aura System Platform Overview Avaya Aura System Platform Overview Release 6.0 June 2010 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete

More information

BST Doorphone Installation and Configuration Guide. Avaya Business Communications Manager

BST Doorphone Installation and Configuration Guide. Avaya Business Communications Manager BST Doorphone Installation and Configuration Guide Avaya Business Communications Manager Document Status: Standard Document Number: NN40010-302 Document Version: 02.01 Date: May 2010 2010 Avaya Inc. All

More information

Release Notes for Avaya Engagement Designer Release 3.1 Service Pack 2 ( ) Release Notes Issue 1, 2/18/2016

Release Notes for Avaya Engagement Designer Release 3.1 Service Pack 2 ( ) Release Notes Issue 1, 2/18/2016 Release Notes for Avaya Engagement Designer Release 3.1 Service Pack 2 (3.1.0.2 ) Release Notes Issue 1, 2/18/2016 Notice While reasonable efforts have been made to ensure that the information in this

More information

Avaya Enterprise Policy Manager Configuration - Devices

Avaya Enterprise Policy Manager Configuration - Devices Avaya Enterprise Policy Manager Configuration - Devices Avaya Enterprise Policy Manager 5.1.3 Document Status: Standard Document Number: NN48011-500 Document Version: 02.03 Date: June 2011 2011 Avaya Inc.

More information

IP Office Essential Edition Quick Version Phone Based Administration

IP Office Essential Edition Quick Version Phone Based Administration Quick Version Phone Based Administration - Issue 3b - (23 February 2011) 2011 AVAYA All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document

More information

Using the Avaya IP Office Contact Center Salesforce Plug-In

Using the Avaya IP Office Contact Center Salesforce Plug-In Using the Avaya IP Office Contact Center Salesforce Plug-In Release 10.1.2 Issue 1 April 2018 2015-2018, Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the

More information

IP Office Basic Edition Quick Mode T7100 Phone User Guide

IP Office Basic Edition Quick Mode T7100 Phone User Guide Quick Mode T7100 Phone User Guide - Issue 4a - (03 October 2011) 2011 AVAYA All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete

More information

Administering Intelligent Customer Routing

Administering Intelligent Customer Routing Administering Intelligent Customer Routing Release 7.0 Issue 1 December 2013 2013 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

Using Avaya Communicator for ipad on IP Office Platform

Using Avaya Communicator for ipad on IP Office Platform Using Avaya Communicator for ipad on IP Office Platform Release 9.1 December 2014 Notice While reasonable efforts have been made to ensure that the information in this document is complete and accurate

More information

Release Notes for Avaya Aura Communication Manager Messaging R VMware vappliance Software with SP5 (for CMM )

Release Notes for Avaya Aura Communication Manager Messaging R VMware vappliance Software with SP5 (for CMM ) Release Notes for Avaya Aura Communication Manager Messaging R6.3.100 VMware vappliance Software with SP5 (for CMM 6.03.0.141.0) Release Notes Issue 1, 10-August-2015 2011-2015 Avaya Inc. All rights reserved.

More information

IP Office Essential Edition IP Office Essential Edition - Norstar Version Phone Based Administration

IP Office Essential Edition IP Office Essential Edition - Norstar Version Phone Based Administration - Norstar Version Phone Based Administration - Issue 3d - (31 May 2011) 2011 AVAYA All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is

More information

BCM Rls 6.0. InTouch. Task Based Guide

BCM Rls 6.0. InTouch. Task Based Guide BCM Rls 6.0 InTouch Task Based Guide Copyright 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete and accurate

More information

Avaya Message Networking 6.3 GA Release Notes

Avaya Message Networking 6.3 GA Release Notes Avaya Message Networking 6.3 GA Release Notes July 07, 2014 Notice While reasonable efforts have been made to ensure that the information in this document is complete and accurate at the time of printing,

More information

Using Avaya Communicator for Microsoft Lync 2010 on IP Office Platform

Using Avaya Communicator for Microsoft Lync 2010 on IP Office Platform Using Avaya Communicator for Microsoft Lync 2010 on IP Office Platform Release 10 August 2016 2016, Avaya, Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

IP Office. Using a Voic Pro IP Office Mode Mailbox Issue 11a - (Thursday, April 5, 2018)

IP Office. Using a Voic Pro IP Office Mode Mailbox Issue 11a - (Thursday, April 5, 2018) Using a Voicemail Pro Mode Mailbox 15-601131 Issue 11a - (Thursday, April 5, 2018) 2018 AVAYA All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this

More information

Avaya Aura Session Manager Release 6.1 Service Pack 1 Release Notes

Avaya Aura Session Manager Release 6.1 Service Pack 1 Release Notes Avaya Aura Session Manager Release 6.1 Service Pack 1 Release Notes Release 6.1 Service Pack 1 February 2011 Issue 1 2011 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made

More information

BCM50 Rls 6.0. Router - IP Firewall. Task Based Guide

BCM50 Rls 6.0. Router - IP Firewall. Task Based Guide BCM50 Rls 6.0 Router - IP Firewall Task Based Guide Copyright 2010 Avaya Inc. All Rights Reserved. Notices While reasonable efforts have been made to ensure that the information in this document is complete

More information

Avaya VDI Communicator Overview and Planning

Avaya VDI Communicator Overview and Planning Avaya VDI Communicator Overview and Planning Release 2.0 October 2014 2014 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this document

More information

IP Office Contact Center IVR Editor Scenarios Task Based Guide

IP Office Contact Center IVR Editor Scenarios Task Based Guide IP Office Contact Center IVR Editor Scenarios Task Based Guide Release 9.0.3 Issue 1.01 10 2014 Legal 2014 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that

More information

Administering Avaya one-x Mobile Lite for Avaya Communication Server 1000

Administering Avaya one-x Mobile Lite for Avaya Communication Server 1000 Administering Avaya one-x Mobile Lite for Avaya Communication Server 1000 Release 6.1.2 May 2012 2012 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information

More information

Using Avaya Flare Communicator for ipad Devices

Using Avaya Flare Communicator for ipad Devices Using Avaya Flare Communicator for ipad Devices 18-603963 Issue 1 January 2012 2012 Avaya Inc. All Rights Reserved. Notice While reasonable efforts have been made to ensure that the information in this

More information