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

ArticlesMake Voice Response Sing


May 1996 / Features / Make Voice Response Sing
David S. Linthicum

Press a few buttons on your phone, and an interactive-voice-response (IVR) system will report your checking-account balance, deliver the closing prices of your stocks, or confirm that Visa received your latest payment. If you're like most callers, you're happy to communicate with a computer instead of a human as long as you get accurate information quickly and you don't have to tax your brain to use the system.

These are all worthy goals, but speed and ease of use on the user side usually mean headaches and complexity behind the scenes, where programmers work. IVR systems are no exception. They test your programming mettle for pulling together multitasking operations, shared resources, and myriad hardware comp onents. If you do it right, you will keep your customers happy and loyal. But if you trip up, a crippled IVR system frustrates customers and loses sales.

Fortunately, help is available. IVR development has moved forward from its pioneering days, and the trend today is for smaller and less expensive IVR applications that leverage affordable PC technology. The programming tools available to build these systems offer rapid application development (RAD) capabilities riding on top of popular development tools, such as Microsoft's Visual Basic. These tools can turn IVR into a "bolt-on technology" so that developers can make just about any application answer the phone and speak with callers.

Multitasking Muscle

IVR builds on audiotex technology, the venerable method of using telephony and audio menus. However, IVR goes beyond simple menu trees by helping callers to perform calculations on-line or talk directly to an application using enhanced speech-recognition technology. When it's time for the system to respond to caller inquir ies, recorded messages are just one option. IVR systems can send faxes or E-mail and even talk to you using text-to-speech and simultaneous voice/data technologies.

In the corporate world, IVR systems typically use distributed databases on servers that are linked via client/server middleware, such as Open Database Connectivity (ODBC), Ethernet, or TCP/IP networks (see the sidebar "Hardware Building Blocks" ). By nature, IVR applications support multiple operations. If you're building an application for an OS that isn't multitasking--for example, DOS and Windows 3.1--you have your work cut out for you.

But don't gloat, even if you develop for Windows NT and 95, Unix, or OS/2. Within these multitasking OSes, it's difficult to do the real-time parallel programming necessary for IVR because you have to allocate resources among so many ports. You must launch many processes that run in parallel and share resources in real time. Each process must compete with other processes for processor time, memory, and IVR devices. If you don't handle this well, callers will experience delays, and in the IVR world, every delay is a threat that callers will hang up.

To deal with the trickiness of real-time multitasking and interprocess communications (IPC) with a single-tasking OS, you must learn how to make up for the OS's deficiencies. If you're using DOS, the IVR system must be able to shut down single-tasking OS services to run tasks in parallel. For example, the product might boot DOS and then shut the OS down while the IVR server becomes the OS.

In multitasking environments, a device-manager process can ensure that the IVR system allocates ports evenly among tasks. You might also consider using multiprocessing computers that have the ability to assign tasks to specific processors to reduce the risk of processes getting in each other's way.

High-Level Programming

Fortunately, a number of IVR development tools exist that can help you sort out the complexities of buildin g an IVR system. There are three basic types of IVR development environments: applications generators, third-generation languages (3GLs) using IVR APIs, and fourth-generation-language (4GL) development environments with value-added IVR capabilities.

Applications generators can speed development time by freeing you from the low-level details of programming. What does programming freedom mean for IVR? For one thing, applications generators directly address the problems of multitasking. Even if you're building a system for DOS or Windows, a generator can provide an executable that makes the application run like a multitasking OS. The applications generator moves the underlying OS out of the way to perform these complex operations. You simply write a single-tasking application description and then scale to the requirements of your IVR system.

Applications generators also have built-in mechanisms to communicate with IVR hardware, and there's no need to write to hardware-specific APIs or to various pr oprietary phone systems. In addition, applications generators provide debugging tools, voice-prompt recording software, and other toolkits to help you build IVR applications.

Choices include Info Systems' Talkie, International Voice Systems' IVS Builder, and Lucent's (formerly AT&T's) Intuity Conversant. These products offer graphical point-and-click interfaces with script- and forms-based IVR development systems. They also include IVR-oriented libraries and components for use with C and C++ or with client/server development environments, such as Visual Basic, PowerBuilder, and Delphi.

Just keep in mind that IVR applications generators are task specific. Don't expect them to perform other applications development chores for you.

Higher-End Tools

Turnkey IVR systems with 4GL environments generally fall into the high-end and midrange categories. High-end products cost as much as $100,000 and can serve hundreds or even thousands of callers simultaneously.

For example , Invesco Funds, a mutual-fund brokerage in Denver, Colorado, uses five Intuity Conversant systems. Each system has two T-1 trunks (equivalent to 48 lines), which lets Invesco handle a total of 240 lines distributed across all its systems. Invesco can process as many as 40,000 calls per day. Using Ethernet, the IVR systems link to remote databases running on several NCR 3600 minicomputers that act as database servers for account information.

Like a lot of high-end IVR products, Conversant sits at the end of a toll-free phone number. Callers using Conversant can call this number to find out the value of a fund, or, when they supply a personal identification number, receive account balances and private information.

You can tell midrange IVR systems from high-end systems largely by caller capacity: midrange systems allow fewer simultaneous callers. Typically, high-end systems can handle hundreds of callers simultaneously, while midrange systems top out at less than 100 callers. Midrange systems, ho wever, are more affordable; they cost tens of thousands--rather than hundreds of thousands--of dollars. Both classes of systems usually work with standard 4GL development environments for DOS or Windows, which means you can customize an IVR system to meet your individual needs.

For example, Voysys sells boards and software that ride on top of ISA-bus computers. With the company's VoysAccess, you can build IVR applications using FoxPro or Visual Basic. FoxPro provides the programming language as well as the database. If FoxPro isn't your favorite environment, then consider VoysAccess for Visual Basic or Pronexus's VBVoice , which comes in 16- and 32-bit versions. Like VoysAccess, VBVoice is a PC-based development environment for rolling your own IVR applications.

Visual Voice Pro , from Stylus Innovation, employs custom controls, such as VBXes and OCXes, as well as DLLs that you can access from most applications development environments. Visual Voice Pro ha ndles up to 24 calls simultaneously and supports Telephony API (TAPI)-compliant hardware, multiline voice-response boards, and most fax modems.

Press for Success

Even with the best tools available, you still need careful planning and solid programming techniques to launch a successful IVR installation (for more information, see the sidebar "IVR Tips" ). Like any complex application, IVR systems require testing, debugging, and a sound design.

But with careful planning and the right programming tools, the telephone keypad can act as an aid to unlock corporate information rather than acting as the panic buttons for an IS staff.


WHERE TO FIND

Lucent Technologies, Inc.
Basking Ridge, NJ
(800) 325-7466, ext. 895
(908) 953-3943

http://www.att.com

Pronexus
Carp, Ontario, Canada
(613) 839-0033
fax: (613) 839-0035

http://www.voysys.com

Stylus Innovation
(a division of Artisoft)
Cambridge, MA
(617) 621-9545
fax: (617) 621-7862
sales@stylus.com

http://www.stylus.com

Voysys Corp.
Fremont, CA
(800) 786-9797
(510) 252-1100
fax: (510) 252-1101

http://www.voysys.com


HotBYTEs
 - information on products covered or advertised in BYTE


Pronexus

screen_link (42 Kbytes)

Pronexus uses a PC-based development environment that allows developers to roll their own IVR applications. Microsoft's Visual Basic is the development platform of choice for Pronexus.


Visual Voice Pro

screen_link (67 Kbytes)

Visual Voice Pro, a software toolkit for building Windows telephony applications, provides many flavors of plug-in products, including VBXes, OCXes, and DLLs.


David S. Linthicum is a technical manager with EDS in Falls Church, Virginia. You can reach him by sending E-mail to 70742.3165@compuserve.com .

Up to the Features section contentsGo to next article: Hardware Building BlocksSearchSend 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