VoiceXML Implementation for Cisco Voice Browser

Table of Contents

VoiceXML Implementation for Cisco Voice Browser
VoiceXML 1.0 Element Implementation
VoiceXML Properties Implementation
Standard Session Variables Implementation
Built-in Type Implementation
The <value> Data Format
Using the Voice Browser Cache

VoiceXML Implementation for Cisco Voice Browser


This appendix contains the following sections:

VoiceXML 1.0 Element Implementation

Table B-1 describes the Cisco CRA implementation of VoiceXML1.0 elements.


Note   At run time, the system ignores unsupported or unimplemented attributes.

Table B-1   VoiceXML 1.0 Element Implementation

Element Attributes Notes

<assign>

name
expr

Fully supported by Cisco's CRA implementation.

<audio>


caching
fetchtimeout
fetchint

The following attributes are not supported:

  • caching
  • fetchint

The following audio file formats are supported:

  • audio/wav.

The following codec is supported for each file format:

  • G.711 ulaw

<block>

name
expr
cond

Fully supported by Cisco's CRA implementation.

<break>

msec
size

Fully supported by Cisco's CRA implementation.

<catch>

event
count
cond

Fully supported by Cisco's CRA implementation.

<choice>

dtmf
next
event
expr
caching
fetchaudio
fetchint
fetchtimeout

The following attributes are not supported:

  • caching
  • fetchint

<clear>

namelist

Fully supported by Cisco's CRA implementation.

<disconnect>

no attributes

Fully supported by Cisco's CRA implementation.

<div>

type

Not implemented in Cisco's CRA implementation.

To be replaced by SSML in VoiceXML 2.0.

<dtmf>


scope
type
caching
fetchint
fetchtimeout
xml:lang

This element is handled exactly like <grammar>.

To be replaced by SRGF in VoiceXML 2.0.

The following attributes are not supported:

  • caching
  • fetchint

The following attribute defined in VoiceXML 2.0 is supported:

  • xml:lang

<else>

no attributes

Fully supported by Cisco's CRA implementation.

<elseif>

cond

Fully supported by Cisco's CRA implementation.

<emp>

level

Not implemented in Cisco's CRA implementation.

To be replaced by SSML in VoiceXML 2.0.

<enumerate>

no attributes

Fully supported by Cisco's CRA implementation.

<error>

count
cond

Fully supported by Cisco's CRA implementation.

<exit>

expr
namelist

Fully supported by Cisco's CRA implementation.

Parameters are returned to variables configured in the Voice Browser step.

<field>

name
expr
cond
type
slot
modal

Fully supported by Cisco's CRA implementation.

<filled>

mode
namelist

Fully supported by Cisco's CRA implementation.

<form>

id
scope

Fully supported by Cisco's CRA implementation.

<goto

next
expr
nextitem
expritem
caching
fetchaudio
fetchint
fetchtimeout

The following attributes are not supported:

  • caching
  • fetchint

<grammar>

 

xml:lang

scope
type
caching
fetchint
fetchtimeout

The following attributes are not supported:

  • caching
  • fetchint

The platform supports only the Nuance GSLgrammar format, which is the default when type is not specified. Other accepted type values are:

  • "application/x-gsl"
  • "text/gsl"

The following attribute defined in VoiceXML 2.0 is supported:

  • xml:lang

<help>

count
cond

Fully supported by Cisco's CRA implementation.

<if>

cond

Fully supported by Cisco's CRA implementation.

<initial>

name
expr
cond

Fully supported by Cisco's CRA implementation.

<link>

next
expr
event
caching
fetchaudio
fetchint
fetchtimeout

The following attributes are not supported:

  • caching
  • fetchint

<log>

label
expr

This element defined in VoiceXML 2.0 is fully supported by Cisco's CRA implementation.

<menu>

id
scope
dtmf

Fully supported by Cisco's CRA implementation.

<meta>

name
content
http-equiv

The following attribute is not supported:

  • http-equiv

<noinput>

count
cond

Fully supported by Cisco's CRA implementation.

<nomatch>

count
cond

Fully supported by Cisco's CRA implementation.

<object>

name
expr
cond
classid
codebase
codetype
data
type
archive
caching
fetchaudio
fetchint
fetchtimeout

No platform object is supported in Cisco's CRA implementation.

<option>

dtmf
value

Fully supported by Cisco's CRA implementation.

<param>

name
expr
value
valuetype
type

Fully supported by Cisco's CRA implementation.

<prompt>

bargein
cond
cont
timeout
xml:lang

The following attributes are not supported:

  • bargein
  • timeout

The following attribute defined in VoiceXML 2.0 is supported:

  • xml:lang

<property>

name
value

Supported in Cisco's CRA implementation.

See VoiceXML Properties Implementation for the list of properties supported.

<pros>

rate
vol
pitch
range

Not implemented in Cisco's CRA implementation.

To be replaced by SSML in VoiceXML 2.0.

<record>

name
expr
cond
modal
beep
maxtime
finalsilence
dtmfterm
type

The following attributes are not supported:

  • modal
  • finalsilence
  • type (use only the default format)

Voice recording supports the following codec:

  • G.711 ulaw

Simultaneous recognition and recording is not supported.

Note Note that the record variable should be used only for submitting the audio using the <submit> element. Use of the variable in other ECMAScript expression is not supported.

<reprompt>

no attributes

Fully supported by Cisco's CRA implementation.

<return>

event
namelist

Fully supported by Cisco's CRA implementation.

<sayas>

phon
sub
class

Not implemented in Cisco's CRA implementation.

To be replaced by SSML in VoiceXML 2.0.

<script>


charset
caching
fetchint
fetchtimeout

The following attributes are not supported:

  • caching
  • fetchint

<subdialog>

name
expr
cond
modal
namelist

method
enctype
caching
fetchaudio
fetchtimeout
fetchint

The following attributes are not supported:

  • modal (always modal, attribute to be removed in VoiceXML 2.0)
  • caching
  • fetchint

<submit>

next
expr
namelist
method
enctype
caching
fetchaudio
fetchint
fetchtimeout

The following attributes are not supported:

  • caching
  • fetchint

<throw>

event

Fully supported by Cisco's CRA implementation.

<transfer>

name
expr
cond
dest
destexpr
bridge
connecttimeout
maxtime

The following attributes are not supported:

  • bridge (only blind transfer)
  • connecttimeout

The dest attribute supports both the phone: URL syntax used in VoiceXML 1.0 and the tel: URL syntax required by VoiceXML 2.0. The tel: URL syntax is described in [RFC2806].

<value>

expr
mode
class
rec

The following attribute is not supported:

  • rec

The class attribute is implemented only when the mode attribute is also set to "recorded".

<var>

name
expr

Fully supported by Cisco's CRA implementation.

<vxml>

version
base
lang
xml:lang
application

The following attribute defined in VoiceXML 2.0 is supported:

  • xml:lang

VoiceXML Properties Implementation

Table B-2 lists standard VoiceXML 1.0 properties supported in CRA implementation.

Table B-2   Supported Standard VoiceXML 1.0 Properties

Property Name Description

bargein

Specifies whether or not barge-in to voice prompts is allowed. Allowed values are "true" and "false". Default value is "true".

fetchtimeout

Sets the timeout for fetching the content from the web. The default value is "4s".

timeout

The time after which a noinput event is thrown by the platform. The default value is "5s".

termchar

Specifies the termination keys to be used in a particular DTMF recognition. More than one key can be specified. The default value is "#". Use blank " " to represent no termination key. (Recognition ends with timeout.)

termtimeout

Specifies the timeout in seconds for DTMF recognition. The default value is "4s".

Table B-3 lists other proprietary properties supported.

Table B-3   Supported Proprietary Properties

Property Name Description

com.cisco.dtmf.termlength

Specifies the maximum number of DTMF digits to be recognized. The recognition returns as soon as this maximum number of digits has been entered. The user does not need to enter the termination key or wait for timeout. The default value is "32".

com.cisco.tts.gender

Select male or female voice for Text-to-Speech prompts. The allowed values are "male" and "female" (default).

Standard Session Variables Implementation

Table B-4 lists supported standard session variables.

Table B-4   Supported Standard Session Variables

Variable Description

session.telephone.ani

Automatic Number Identification (ANI). This variable provides the calling party number.

session.telephone.dnis

Dialed Number Identification Service (DNIS). This variable provides the number that the caller dialed.

session.telephone.iidigits

Not supported.

session.telephone.uui

Not supported.

session.telephone.rdnis 

Redirect Dialed Number Information Service (RDNIS). This variable is proposed in VoiceXML 2.0. It provides the number from which a call diversion or transfer was invoked.

(This variable is undefined if the number is unavailable.)

Example: Suppose person A subscribes to a voice messaging service, and forwards all calls to a voice server. Person B then calls A and gets routed to the voice server. A VoiceXML application on the voice server sees RDNIS as A's number, DNIS as the number of the voice server, and ANI as B's number.

Built-in Type Implementation

Supported built-in types are listed below:

  • Boolean
  • date
  • digits
  • currency
  • number
  • phone
  • time

Some deviations are listed below:

  • Digit grammar accepts maximum of 16 digits.
  • Number built-in grammar does not support decimal numbers. It accepts number from 0 to 999,999.
  • Phone built-in grammar does not support extension recognition.
  • Parameterization of built-in types is not implemented.

Built-in grammar files are in the directory <install_directory>\grammars\system\.

Grammars of the languages are filed in the respective directories designated by the locales.


Note   Any modification to these files demands a through knowledge of GSL grammar syntax and is done at the customer's risk.

The <value> Data Format

The <value> data format can be used to format text, such as dates and times, into spoken form. The expr attribute can specify a ECMAScript Date object or a string. If it is a string, the CRA Voice Browser attempts to parse it into a machine format.

Table B-5 lists the formats used to parse the string. The format is language dependent. If the string cannot be parsed, the <value> data format is ignored.

Table B-5   <value> Data Format

Language code Date format Time format

de-DE

EEEE, d. MMMM yyyy

d. MMMM yyyy

dd.MM.yyyy

dd.MM.yy

H.mm' Uhr 'z

HH:mm:ss z

HH:mm:ss

HH:mm

en-CA

EEEE, MMMM d, yyyy

MMMM d, yyyy

d-MMM-yy

dd/MM/yy

h:mm:ss 'o''clock' a z

h:mm:ss z a

h:mm:ss a

h:mm a

en-GB

dd MMMM yyyy

dd MMMM yyyy

dd-MMM-yy

dd/MM/yy

HH:mm:ss 'o''clock' z

HH:mm:ss z

HH:mm:ss

HH:mm

en-US

EEEE, MMMM d, yyyy

MMMM d, yyyy

MMM d, yyyy

M/d/yy

h:mm:ss a z

h:mm:ss a z

h:mm:ss a

h:mm a

es-CO

EEEE d' de 'MMMM' de 'yyyy

d' de 'MMMM' de 'yyyy

d/MM/yyyy

d/MM/yy

hh:mm:ss a z

hh:mm:ss a z

hh:mm:ss a

hh:mm a

es-MX

EEEE d' de 'MMMM' de 'yyyy

d' de 'MMMM' de 'yyyy

d/MM/yyyy

d/MM/yy

hh:mm:ss a z

hh:mm:ss a z

hh:mm:ss a

hh:mm a

fr-CA

EEEE d MMMM yyyy

d MMMM yyyy

yy-MM-dd

yy-MM-dd

 

H' h 'mm z

HH:mm:ss z

HH:mm:ss

HH:mm

 

fr-FR

EEEE d MMMM yyyy

d MMMM yyyy

d MMM yy

dd/MM/yy

HH' h 'mm z

HH:mm:ss z

HH:mm:ss

HH:mm

Table B-6 lists the legend of the format. The information is based on Sun JDK's java.text.SimpleDateFormat documentation.

Table B-6   Format Legend

Symbol Meaning Presentation Example

G

era designator

(Text)

AD

y

year

(Number)

1996

M

month in year

(Text & Number)

July & 07

d

day in month

(Number)

10

h

hour in am/pm (1~12)

(Number)

12

H

hour in day (0~23)

(Number)

0

m

minute in hour

(Number)

30

s

second in minute

(Number)

55

S

millisecond

(Number)

978

E

day in week

(Text)

Tuesday

D

day in year

(Number)

189

F

day of week in month

(Number)

2 (2nd Wed in July)

w

week in year

(Number)

27

W

week in month

(Number)

2

a

am/pm marker

(Text)

PM

k

hour in day (1~24)

(Number)

24

K

hour in am/pm (0~11)

(Number)

0

z

time zone

(Text)

Pacific Standard Time

'

escape for text

(Delimiter)

 

''

single quote

(Literal)

'

The count of pattern letters determines the format:

  • Text
    • 4 or more pattern letters—Use full form.
    • Fewer than 4 pattern letters—Use short or abbreviated form if one exists.
  • Number
    • The minimum number of digits.

Shorter numbers are zero-padded to this amount. Year is handled specially; that is, if the count of 'y' is 2, the Year will be truncated to 2 digits.

  • Text & Number
    • 3 or over—Use text.
    • Fewer than 3—Use number.

Any characters in the pattern that are not in the ranges of ['a'...'z'] and ['A'...'Z'] will be treated as quoted text. For instance, characters like ':', '.', ' ', '#' and '@' will appear in the resulting time text even they are not enclosed within single quotes.

Using the Voice Browser Cache

Any document retrieved via HTTP GET in a VoiceXML document can be cached; for example, other VoiceXML documents, grammars, and audio files. The voicexml.dtd file will not be cached because the XML parser loads DTDs.

When the cache is enabled, all HTTP responses with a code of 200 are stored in the cache unless they exceed the size limit.

HTTP Cache keys are based on the URL. If the URL is a HTTP GET with values, the values will be part of the cache key as well.

When a request is made for the same URL, the cache response is checked for expiration. If it has not expired (based on the expires HTTP response header), a conditional HTTP request is made using the last-modified and/or etag values from the cached response.

If none of these headers were present in the cached response, it is assumed that the response is not cacheable.

The value of expires is subject to clock differences between computers. Last-modified is unaffected as it is sent back to the server as is.

There is no support for any other headers (including cache-control) or VoiceXML pragma headers.

Cache replacement policy is LRU.

Dynamic web pages (JSP, ASP, PHP, cgi-bin, etc.) are cacheable provided they are accessed via HTTP GET and they return the listed response header.

Contents cached based on HTTP headers use the following HTTP response headers:

  • etag
  • last-modified
  • expires

Contents cached based on HTTP headers send the following HTTP request headers:

  • if-none-match
  • if-last-modified