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.
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 Builder for Call Studio
displays the plugin. A plugin that is to appear in the Builder 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:00 AM is read back as
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 output formats, so when
the output format changes, the list of filesets available changes accordingly.
The plugin defines these dependencies using a configuration method.
A fileset deals
with audio files so does not apply when the Say It Smart value is rendered in
As usually occurs with
components configured in Builder for Call Studio, each type, input format,
output format, and fileset has a real name, display name, and description. The
display name is shown in the Builder in dropdown menus. The real name is used
everywhere else. This design allows the Say It Smart plugin developer to use a
display name that visually represents the appropriate information but choose a
real name that is small, easy to remember, and will not change. As long as the
real name stays the same, the developer can change the display name of any
component without affecting backwards compatibility. At this point, the
descriptions are not displayed in the Builder and are there for future
All Java classes
related to Say It Smart plugins are found in the
Say It Smart plugin classes are instantiated as needed. This means that the
developer is free to use static, member, and local variables as they would
expect. It is still recommended to avoid using static variables in Say It Smart
plugin classes unless they are static final because static variables will be
reset whenever the application is updated.