Archives
 
 
 
  Special
 
 
 
  About Us
 
 
 

Newsletter
Free E-mail Newsletter from BYTE.com

 
    
           
Visit the home page Browse the four-year online archive Download platform-neutral CPU/FPU benchmarks Find information for advertisers, authors, vendors, subscribers Request free information on products written about or advertised in BYTE Submit a press release, or scan recent announcements Talk with BYTE's staff and readers about products and technologies

ArticlesVisual Toolkits for Audio Apps


April 1996 / Reviews / Visual Toolkits for Audio Apps

If you need to build an interactive voice-response system, these programs will answer the call

Brett Glass

When you make a phone call, you're more likely to get an interactive voice-response (IVR) system than a human being. Ever wonder who's designing these systems, and what tools they're using?

You may find the answers here. In this review, we compare the latest telephony components for visual programming environments such as Microsoft's Visual Basic and Borland's Delphi. Because these custom controls work in programming environ ments that are already a snap to use, you can crank out a voice-response system in a matter of hours, rather than weeks.

All the tools in this survey let you create applications that answer incoming c alls, make outgoing calls, receive and transmit touch tones, and play and record messages. But beyond this point, features vary greatly. If you want caller ID capability, seamless incoming and outgoing fax, a "flowchart" design interface, or other special features, look carefully at the descriptions that follow to make sure you pick the right tool for the job.

None of these products imposes any practical limit on the complexity of the IVR systems you can design. Using any of these components, you will be able to easily create a system that keeps callers informed or entertained for hours without ever connecting them to a human being. Of course, getting lost in a twisty maze of recorded messages is probably not every caller's idea of a good time.

Some Fiddling Required

We tested each set of tools with the hardware and operating system recommended by the manufacturer. All but Pronexus recommended cards made by Dialogic, while Pronexus recommended a card made by Rhetorex. (The R hetorex hardware came with a programmer's toolkit, but it did not contain any visual components.) We used Visual Basic 4.0, running under NT, for all the components except for VBVoice and VoiceBocx, for which we used VB 3.0 running under Windows 95.

Ironically, the most difficult task was getting the hardware working. Both brands of telephony boards were unnecessarily difficult to install. The default IRQ for the Dialogic card is IRQ 3, which is reserved for the serial port (usually attached to a serial mouse) in virtually every machine.

Additionally, the Rhetorex and Dialogic boards use shared memory, a technique that--at least on the ISA bus--can consume a whopping 128 KB of valuable address space in the critical upper-memory area. This may deprive the system of valuable upper-memory blocks needed by Windows, DOS TSRs, or built-in ROMs on adapter cards. It may also cause conflicts with memory managers that can't always detect and avoid the shared RAM.

Some of the driver software uses so ftware interrupt vectors in the range 60H-7FH as an entry point. Many software products and some VGA boards also use these vectors, a conflict that can create compatibility problems. Microsoft's Plug and Play (PnP) for Windows 95 might solve these problems, but none of the cards we tried has built-in PnP support. In the meantime, expect to fiddle with your system--perhaps for several hours--before getting a telephony board to work.

Once the boards were installed and the drivers loaded, we set to work creating a simple answering-machine program--one that just answers the phone and plays a message. We then built a more advanced program that also accepts messages. In all but one case, this took between half an hour and one hour, and we were able to "crib" code from examples supplied with the products. One product, however, surprised us by allowing us to build the answer-only machine in less than five minutes (more on this shortly).

VBVoice

All the tools we survey here are capab le of creating simple IVR systems, but when it comes to ease of programming, there's no contest: Pronexus' VBVoice stands alone. This product's compelling visual approach is to telephony system design what Visual Basic itself is to programming. Unlike the other products in this review, which require extensive coding in Visual Basic or C++, VBVoice lets you create your call-processing system visually. All you must do is string the unique VBVoice controls together (using "rubber band" lines) into a flowchart that dictates the progress of a call. As the call "enters" and "exits" controls on the flowchart, the voice card plays announcements to the user. Transitions within the flowchart can also trigger Visual Basic events, allowing your code to interact with the call.

VBVoice comes with a collection of controls so extensive that your VB palette will explode with a daunting array of new, unfamiliar tools. But once you've explored these, you'll be pleased with what you find. Some of the more interesting items include: A Language control, which changes the language used to handle the call; a GetDigits control, which gets touch tones; DataFind, DataGet, and DataNew controls, which use VB's built-in database engine to manipulate a database; and PlayMsgs, which implements a complete tone-controlled voice mailbox. There's even a control that you can use to create conference calls among multiple lines (though it works only with certain telephony boards).

VBVoice's flowcharting technique frees the programmer from having to write code to control the progress of the call (though it's certainly possible to do so). Within minutes of installation, we found that we could create a simple announce-only answering-machine program by creating an instance of the phone control, connecting it to a hang-up control, and associating an announcement with the hang-up control. This first application took us only about five minutes to create, even though we were unfamiliar with the product.

A sophisticat ed telephony application may require a large, complex flowchart. So, to keep the form from becoming cluttered with hard-to-follow crisscrossing lines, VBVoice lets you create named connections. Instead of being shown as lines that run all the way from one control to another, these connections appear as arrows with text labels. (As in an electronic schematic diagram, two arrows with the same label are considered to be connected.) There's also a control called InConn that lets parts of your flowchart occupy different VB forms. Incoming and outgoing fax capability aren't included in the package but are available in another package called VBFax. The two products will integrate smoothly; faxes can be sent or received during a call initiated in VBVoice.

Like VoySys' VoysAccess software (described later), VBVoice lets you record messages with a PC sound card as well as with the telephony card itself. This is a useful feature, since most cards, designed for the narrow 3000-Hz bandwidth of a telephone line, rec ord sound with much lower fidelity than good sound cards do.

The VBVoice manual contains a complete reference to the package's VB controls. Unfortunately, it doesn't provide a complete, printed tutorial, so new users may need to explore the examples on the disk to learn the tricks of using this rich environment.

The 16-bit (VBX) version of VBVoice contains drivers for several brands of telephony cards, including Dialogic, Pika, and Rhetorex. The 32-bit (OCX) version, which was in beta at the time we looked at it, will use Microsoft's telephony API (TAPI), and so it should work with any TAPI-capable card when it ships. The OCX version adds some new features, such as an outline view (useful for large applications) and OLE support.

VoysAccess

VoySys' VoysAccess is a more traditional visual component that works with Dialogic telephony boards. VoysAccess encapsulates a programmer's library that allows you to control an IVR session by manipulating the properties and methods of a single custom control. This means that you'll have to write code in Visual Basic or C++ to control the flow of a call.

Along with the mundane functions you expect from a telephony toolbox--dialing calls, playing messages, responding to tones, etc.--VoysAccess supports caller ID on incoming calls and automatic "flash hook" call transfers (the way you transfer calls on most PBXes). However, we could find no evidence of fax capability.

VoysAccess comes bundled with VoysSmith, a waveform editor that lets you record, play, and modify waveform files via a sound card. Once you've captured a sound, you can add special effects or overlay other sound files to produce interesting announcements and sounds. The only catch: It won't work without a sound card; you can't use it to record or play messages directly through the telephony board.

The new OCX version of VoysAccess is much easier to understand than the older VBX version, with intuitively named methods and properties. (Because of shortcomings in the design of VBXes, the older VBX version of VoysAccess had to use "action properties" to trigger actions.) While the OCX control maintains downward compatibility with programs written for the VBX, it now lets you use mnemonic method names to perform call-handling tasks.

The manual we received with VoysAccess was an incomplete draft, so we could not judge the quality of the final printed documentation. The beta disk contained only one sample application; there could be more in the finished product. Nonetheless, we were able to create a simple answering-machine application in about half an hour by modifying the sample code.

Visual Voice Pro

Stylus Innovation's Visual Voice Pro is a mixed bag: It combines the best examples and documentation of the bunch with an awkward programming interface. Visual Voice, like VoysAccess, is a single custom control that encapsulates a library of telephony routines.

We tested both the V BX and the OCX versions of this control, which are nearly identical. Both use action properties to control the handling of the call. This is not nearly as efficient as flowcharting or method-based programming and requires you to include and remember many cryptic definitions for constants.

To ameliorate this shortcoming, the Visual Voice package comes with a code-generating tool called Voice Workbench that lets you script your application in user-friendly dialogues. Voice Workbench then uses the script to write Visual Basic code that you can paste into your application. This takes some of the tedium out of using action properties. However, unless your application falls within the bounds of what Voice Workbench can do automatically, you'll still need to dictate the overall "flow" of the application by massaging the generated code, and you may need to learn what many of the Visual Voice action constants do.

Visual Voice does have great strengths in other areas, however. The Voice Monitor feature le ts you view and control the progress of calls on several lines at once. A virtual phone accessory program lets you test your entire application via a sound card. The package includes fax support, and you can add caller ID support with a special toolkit. (It's thrown in for free if you buy the Visual Voice version for IBM's MWave DSP.) Voice-recognition and complete text-to-speech capabilities are also available as options. Documentation is excellent, and copious programming examples are included, along with a copy of the book Visual Basic Telephony by Krisztina Holly and Chris Brookins (Flatiron Publishing, 1995). A separate version of Visual Voice handles TAPI.

VoiceBocx

While the spelling of Parity Software's VoiceBocx implies that the product is an OCX, it is, in fact, a VBX. Like Visual Voice Pro, VoiceBocx provides conventional properties and action properties that let your application control a telephony board. Another included VBX from Parity S oftware, called VoiceHub Tool, acts like Visual Voice Pro's Voice Monitor.

Because you operate the control by setting action properties, this VBX is, again, more difficult to work with than an OCX with methods or VBVoice's flowcharting interface. And of the visual controls described here, VoiceBocx is the most Spartan one. We found no fax capability, nor was it clear whether the package could handle caller ID. The documentation was limited to one small, though well-written, manual of approximately 250 pages, and there were only four small sample applications on the disk.

Parity Software has put its heart into another product--Voice Operating System 5, or VOS5--which we also received. While it doesn't qualify for this review because it's not a visual programming component (it's actually a C-like language of its own), VOS5 is quite powerful. It comes with two excellent books describing the language and PC telephony in general, and it has capabilities, such as fax, that are not present in VoiceBocx . VoiceBocx may be useful as a very small, simple VBX for telephony applications, but VOS5 is clearly the more powerful product.

Enter Your Selection

Of the products we worked with for this review, Pronexus' VBVoice stands head and shoulders above the rest when it comes to productivity and ease of use. VoySys' VoysAccess has shown substantial improvements in the latest (32-bit) version, moving away from action properties to embrace a simpler, method-oriented programming model. Stylus Innovation's Visual Voice Pro uses action properties but provides the best documentation, the most examples, and the widest variety of add-on features. Parity Software's VoiceBocx is the smallest and simplest component, but it may require the most effort to use. Parity's VOS5 product is a much more powerful and robust programming environment, and it's worth a close look if you're willing to use a proprietary language to develop IVR applications.


PRODUCT INFORMATION


VBVoice
  VBX, 1 line...................$ 395
  VBX, 2 lines..................$ 695
  VBX, 4 lines..................$ 995
  VBX, 8 lines..................$1295
  OCX, 4 lines..................$ 795
  OCX, 24 lines.................$1995
  OCX, 64 lines.................$2995

Pronexus
Carp, Ontario, Canada
Phone:    (613) 389-0033
Fax:      (613) 839-0035
Circle 1164 on Inquiry Card.

Visual Voice
  2 lines.......................$ 495
  4 lines.......................$ 995
  12 lines......................$1895
  24 lines......................$2995

Stylus Innovation
Cambridge, MA
Phone:    (617) 621-9545
Fax:      (617) 621-7862
Internet: 
http://www.stylus.com

Circle 1162 on Inquiry Card.

VoiceBocx
  Software only, two
 lines.......$ 595
  Software and hardware,
    two lines....................$1185

Parity Software
Sausalito, CA
Phone:    (415) 332-5656
Fax:      (415) 332-5657
Circle 1163 on Inquiry Card.

VoysAccess
  VBX software only.............$595
  Hardware and software, SDK....$995

VoySys Corp.
Fremont, CA
Phone:    (800) 786-9797 or (510) 252-1100
Fax:      (510) 252-1101
Circle 1161 on Inquiry Card.

HotBYTEs
 - information on products covered or advertised in BYTE


Head and Shoulders Above the Rest

screen_link (36 Kbytes)

Pronexus ' VBVoice stands head and shoulders above the other tools for ease of use. You create VBVoice applications by drawing "flowcharts" that describe the flow of a call.


Visual Voice Pro

screen_link (49 Kbytes)

Stylus Innovation's Visual Voice Pro has the best documentation and gives you the most examples of the lot, along with a code generator to ease programming.


VoysAccess

screen_link (38 Kbytes)

VoySys' VoysAccess is a single custom control that lets you control the flow of a call programmatically.


VoiceBocx

screen_link (45 Kbytes)

Despite its name, VoiceBocx from Parity Software is a VBX, not an OCX. It's the simplest but least feature-rich of the products we tested.


Brett Glass is a computer consultant, writer, and teacher who lives in Laramie, Wyoming. You can reach him by sending E-mail to rogue@well.com .

Up to the Reviews section contentsGo to previous article: Go to next article: Whither TAPI?SearchSend a comment on this articleSubscribe to BYTE or BYTE on CD-ROM  
Flexible C++
Matthew Wilson
My approach to software engineering is far more pragmatic than it is theoretical--and no language better exemplifies this than C++.

more...

BYTE Digest

BYTE Digest editors every month analyze and evaluate the best articles from Information Week, EE Times, Dr. Dobb's Journal, Network Computing, Sys Admin, and dozens of other CMP publications—bringing you critical news and information about wireless communication, computer security, software development, embedded systems, and more!

Find out more

BYTE.com Store

BYTE CD-ROM
NOW, on one CD-ROM, you can instantly access more than 8 years of BYTE.
 
The Best of BYTE Volume 1: Programming Languages
The Best of BYTE
Volume 1: Programming Languages
In this issue of Best of BYTE, we bring together some of the leading programming language designers and implementors...

Copyright © 2005 CMP Media LLC, Privacy Policy, Your California Privacy rights, Terms of Service
Site comments: webmaster@byte.com
SDMG Web Sites: BYTE.com, C/C++ Users Journal, Dr. Dobb's Journal, MSDN Magazine, New Architect, SD Expo, SD Magazine, Sys Admin, The Perl Journal, UnixReview.com, Windows Developer Network