Cisco Cisco Unified Customer Voice Portal 11.0(1) Developer's Guide
C
HAPTER
10:
S
AY
I
T
S
MART
P
LUGINS
C
ISCO
CVP V
OICE
XML 3.1
Programmer
Guide
Chapter 10: Say It Smart Plugins
Similar to the ability for a developer to create custom elements, a developer can create their own
Say It Smart plugins. A developer can produce plugins that handle brand new Say It Smart types
as well as plugins that extend the functionality of existing Say it Smart plugins. Due to the
integration requirements for Say It Smart plugins, they can be built only by using the Java API.
Say It Smart plugins. A developer can produce plugins that handle brand new Say It Smart types
as well as plugins that extend the functionality of existing Say it Smart plugins. Due to the
integration requirements for Say It Smart plugins, they can be built only by using the Java API.
Custom Say It Smart plugins are integrated into both CVP VoiceXML Server and CVP
VoiceXML Studio as easily as CVP VoiceXML Say It Smart plugins are. They can be deployed
for a specific application or shared across all applications and are configured in the Studio in the
same manner CVP VoiceXML Say It Smart plugins are. With such seamless integration and
effortless deployment, a developer can, over time, create entire libraries of custom Say It Smart
plugins to use for their voice applications or potentially for resale.
VoiceXML Studio as easily as CVP VoiceXML Say It Smart plugins are. They can be deployed
for a specific application or shared across all applications and are configured in the Studio in the
same manner CVP VoiceXML Say It Smart plugins are. With such seamless integration and
effortless deployment, a developer can, over time, create entire libraries of custom Say It Smart
plugins to use for their voice applications or potentially for resale.
This chapter describes in detail how to create custom Say It Smart plugins and integrate them
into both CVP VoiceXML Studio and CVP VoiceXML Server.
into both CVP VoiceXML Studio and CVP VoiceXML Server.
Design
Say It Smart plugins were designed to be very simple to build, extend, and deploy. Much of the
design mirrors that of custom configurable elements, though Say It Smart plugins are simpler
and set far fewer restrictions. Their sole purpose is to take input representing formatted data and
convert it into a list of pre-recorded audio files with TTS backups and pauses if desired.
design mirrors that of custom configurable elements, though Say It Smart plugins are simpler
and set far fewer restrictions. Their sole purpose is to take input representing formatted data and
convert it into a list of pre-recorded audio files with TTS backups and pauses if desired.
Similar to configurable elements, a Say It Smart plugin is constructed by creating a Java class
that extends an abstract base class,
that extends an abstract base class,
SayItSmartBase
. The base class defines abstract methods
that must be implemented by the plugin to describe how CVP VoiceXML Studio displays the
plugin. A plugin that is to appear in Studio must implement a Java marker interface named
plugin. A plugin that is to appear in Studio must implement a Java marker interface named
SayItSmartPlugin
. Unlike elements, though, Say It Smart plugins have two execution methods,
one for converting data to a set of audio files with TTS backups, and the other for converting the
data using TTS only. These execution methods may throw a
data using TTS only. These execution methods may throw a
SayItSmartException
that is used
to indicate the inability of the plugin to convert the data passed to it.
The configuration of a Say It Smart plugin involves four options. The first is the Say It Smart
type (such as phone number or date). Each type must be defined in a separate plugin class. The
second option is the chosen input format. Input formats list how to expect the input data to arrive
(such as a date with just the month and year or a date with the month, day and year). A plugin
defines all the input formats it supports. The next option is the chosen output format. Output
formats list how to render the converted data (such as reading back a time where 12:00AM is
read back as “noon” as opposed to “12 A M”). Output formats are dependent on input formats,
so when the input format changes, the list of output formats available changes accordingly. The
plugin defines these dependencies using a configuration method. The final option is the fileset.
Filesets determine what group of audio files are used to render the same data (such as one that
reads back a better-sounding number by requiring more audio files). Filesets are dependent on
type (such as phone number or date). Each type must be defined in a separate plugin class. The
second option is the chosen input format. Input formats list how to expect the input data to arrive
(such as a date with just the month and year or a date with the month, day and year). A plugin
defines all the input formats it supports. The next option is the chosen output format. Output
formats list how to render the converted data (such as reading back a time where 12:00AM is
read back as “noon” as opposed to “12 A M”). Output formats are dependent on input formats,
so when the input format changes, the list of output formats available changes accordingly. The
plugin defines these dependencies using a configuration method. The final option is the fileset.
Filesets determine what group of audio files are used to render the same data (such as one that
reads back a better-sounding number by requiring more audio files). Filesets are dependent on
Copyright 2001 - 2005 Audium Corporation. All Rights Reserved. 10/05
65