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 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 noon as opposed to 12 AM). 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.
Note
A fileset deals with audio files so does not apply when the Say It Smart value is rendered in TTS only.
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 compatibility.
All Java classes
related to Say It Smart plugins are found in the
com.audium.server.sayitsmart
package.
Note |
Unlike elements, 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. You must 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. |