Developer's Guide

CHAPTER 12: SAY IT SMART PLUGINS VOICEXML PROGRAMMING GUIDE
FOR CISCO UNIFIED CUSTOMER VOICE PORTAL RELEASE 4.0(1)
61
Chapter 12: 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.
Custom Say It Smart plugins are integrated into both Unified CVP VoiceXML Server and
Unified CVP VoiceXML Studio as easily as Unified CVP 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 Unified CVP 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 Unified CVP VoiceXML Studio and Unified 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.
Similar to configurable elements, a Say It Smart plugin is constructed by creating a Java class
that extends an abstract base class, SayItSmartBase. The base class defines abstract methods
that must be implemented by the plugin to describe how Unified CVP VoiceXML Studio
displays the plugin. A plugin that is to appear in VoiceXML 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
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 is 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