Todays CTI applications are complex and can encompass a variety of
designs and interfaces with the computer systems upon which they run. Whether you need a
simple auto-attendant or an elaborate IVR system, you have two choices. You can shop
around for a turnkey system that comes closest to satisfying your requirements. Such a
system must have sufficient customization features to allow you to tailor the system to
your specifications. Your other choice is to develop a system from the ground up.
Fortunately, todays PC technologies allow the developer to implement
CTI systems that can rival the already established telephony products on the market. Using
telephony and speech boards and the right application generator (appgen), a developer can
quickly develop sophisticated CTI applications which are easy to maintain, scale, and
customize. One of the greatest benefits of using an appgen is the freedom of developing
custom CTI applications to suit specific requirements, while easily modifying the
applications as requirements change.
One such app-gen, Artisofts Visual Voice Pro, has been around since
1993. The latest release (4.0) of Visual Voice Pro is more powerful and flexible than its
predecessors. Built on the foundation of ActiveX control, Visual Voice Pro can be used in
a variety of development environments such as Microsofts Visual Basic, Visual C++,
Visual FoxPro, and Borlands Delphi. Visual Voice Pro operates on Dialogic boards
with additional support for Aculab T1 digital lines.
Our test machine was a Pentium 120 with 32 Megabytes of RAM running Windows NT
Workstation. Even though Visual Voice Pro controls are ActiveX controls (which makes them
compatible with several development environments), we still believe that Visual Basic is
the ideal platform to use for Visual Voice Pro, since it has an easy-to-use interface
ideal for quick application development. We used Visual Basic 5.0 as our development
platform to test Visual Voice Pro. We installed the hardware platform for our CTI
application to execute on. We used the Dialogic D/41D (donated to our labs by Dialogic
through our TMC labs benefactors program) which has interfaces for up to 4 POTS
connections. Installing Dialogic boards under Windows NT is a multi-step process.
First, we plugged the board into one of the available ISA slots and switched on the PC.
Then from the Dialogic Drivers CD-ROM provided with Visual Voice Pro (thank you, Artisoft)
we installed the drivers and configuration files for the Dialogic board. Next, we ran the
Board Configuration utility from the Dialogic program group and added the D/41D board to
the list of installed boards. To insure correct installation, we ran the Dialogic
Diagnostics utility and chose a complete test. The diagnostics process took several
minutes and produced a screen showing the results of the test (Figure 7). The board had
failed the PC interrupt test. Here is where the Visual Voice Pro installation manual came
to our rescue. We had lost the original documentation for the D/41D board, but the Visual
Voice Pro installation manual had a good section on hardware installation which guided us
to the correct DIP switch on the D/41D board to change the interrupt value. We turned the
PC back on and ran the test again.
No errors were detected this time. Using the manual as our guide, we added the Streams
Environment to our Windows NT network protocol list and restarted the PC. Now it was time
to install the driver for our board, which we did by choosing the Service Startup Mode
program from the Dialogic program group and starting the driver from this application. We
then set the startup mode to Automatic so the drivers would be started automatically every
time we restarted our PC. Finally, we used the multithreaded GUIbased application to test
the correct operation of the board by successfully opening and closing the board channels.
We connected two POTS lines to the board and concluded the hardware installation portion.
Our next step was to install Visual Voice Pro from the CD-ROM. We liked the fact the we
were given choices to install or skip sample files for several development platforms
(Figure 8). At the end of the installation, a window was displayed asking for the Test
mode. Visual Voice Pro programs can be accessed in two ways. Using the Virtual Phone
program (built using the Test control) which utilizes the sound board and simulates a
telephone, the developer can test the application without having to use the telephony
board. This makes the test process easier and faster and the development machine is not
required to be outfitted with telephony boards or telephone lines. The other testing
method is, of course, to use the telephony board for real-life testing, but given the
Virtual Phone capability, there is a good chance that the telephony board testing can be
postponed until the final stages of the development process. We chose the Sound Card
option and clicked on OK. The installation successfully completed and created the Visual
Voice Pro 4.0 program group containing the related utilities and sample programs. We were
now ready to testdrive the appgen.
Visual Voice Pro is accompanied by two printed manuals which are also available in Adobe
Acrobat format on the CD-ROM. These are the Installation manual covering the hardware and
software installations and the Getting Started manual covering the basics of Visual Voice
Pro. We found the manuals complete, well organized, and very useful. The Getting Started
manual contains plenty of examples and figures to make the learning time as short as
possible. We would have liked a reference manual for the ActiveX controls either as a
separate book or as part of the Getting Started manual. Developers often rely on the
reference manuals to quickly locate the appropriate information.
Online help for Visual Voice Pro was fairly complete with good reference information on
Visual Voice Pro ActiveX controls. However, we wanted to see more comprehensive coverage
on some of the topics. For example, we thought that there could have been more information
provided for Voice Manager and Voice Service. Finally, some of the utilities did not come
with help files at all (or the setup program failed to install them) which we found rather
surprising. These included the Visual Voice ActiveX Control Experimenter and the Trace
Visual Voice Pro 4.0 comes with the following features:
- Single or multi-threaded support for multiple lines for superior performance.
- Low memory demand allowing a 96-line application to be loaded in as little as 15 MB of
- Support for up to 96 simultaneous phone lines on a single PC.
- Available in various line configurations (e.g., 2-, 4-, 12-, 24-, and 96line).
- Graphical utilities such as Code Wizard to generate fully commented code for frequently
used telephony functions, and Prompt Manager to record, play back, manage, and generate
code for voice prompts.
- Advanced call progress algorithms.
- Custom tone detection and generation for PBX integration and fax call handling.
- Call identification using called number (DID/DNIS) or the callers number (caller
- WAV, PCM, and ADPCM Voice File Support.
- T1, E1, and ISDN Digital Support.
The Visual Voice environment is configured by the vvoice32.ini file which can be accessed
by the Phone Line Configuration Wizard. From here one can configure the Visual Voice
environment with analog (POTS) or Digital (T1) lines and set other signaling and timing
parameters if T1 service is used. The changes are saved in the vvoice32.ini file and are
used every time a Visual Voice program is executed. Since we were using the D/41D card, we
chose the Dialogic Analog option.
Visual Voice Pro comes with a good number of sample EXE files and, in order for us to
see a Visual Voice Pro application in action, we ran the simple order entry program.
Because we had previously selected the test mode (using the sound board rather than the
telephony device) we launched the Virtual Phone program to simulate the telephone
activity. Virtual Phone provides the user with a digit keypad simulating DTMF tones,
On-hook/Off-hook button, and caller ID information.
The order entry sample program is a simple IVR application allowing the caller to enter
an order number and retrieve pricing and date information regarding the order which is
played back on the phone. The application uses a database to match an entered order number
with existing ones to find the corresponding information or notify the caller if the order
number is not found. The application ran successfully, proving to us that the Visual Voice
Pro environment was installed and configured correctly, so we decided to write a short
application to gauge the power and usability of Visual Voice Pro for ourselves.
In Visual Basic 5.0, we started a new project which brought up the list of project
templates to start with. We recognized the Visual Voice Multithreaded EXE and Standard EXE
templates. One of the great new features of Visual Voice Pro 4.0 is its ability to control
all the lines using one multithreaded program. Until now, the only option to use all the
ports had been to run an instance of the program for each line. For example, for a 96-line
system, one had to have 96 running instances of the particular Visual Voice program.
While Windows platforms (especially Windows NT) should (in theory) be able to
handle numerous programs running simultaneously, this approach is rather inefficient,
cumbersome, and to some degree unstable. With multithreading capability built into Visual
Voice Pro, one instance of the application can control the entire system in a much more
efficient manner, reducing resource consumption, boosting speed, and enhancing stability.
Unfortunately, under Visual Basic 5.0, only multithreaded ActiveX EXE projects are
supported: this means they cannot support user interfaces such as forms or message boxes
but on the positive side they use very little resources. (We are happy to
report that this limitation has been resolved by the Service Pack 2 of Visual Basic 5.0
allowing for standard multi-threaded applications with GUI.) The multithreaded
applications are therefore written and executed differently from the standard ones and
they run unattended.
Creating A Database
We chose the Standard EXE project and were brought into the Visual Basic
development environment. Our goal was to create an application to make outbound calls to
certain numbers collected from a database, make an announcement when the call is answered,
and hang up. As you may imagine, such capability can be enhanced to create powerful
automated advertising campaigns, broadcast messages, or predictive dialers. Since we
needed a database for our application to interface with, we launched Microsoft Access and
quickly created a database table and populated it with a few records containing IDs,
names, telephone numbers, and so on.
Back on the Visual Basic project, the Visual Voice Standard EXE template had created a
new project with a single form containing the Voice ActiveX control. An ActiveX control
(descendant of OCX and VBX controls) is a reusable software component that can be used
within applications. ActiveX controls have associated properties, methods, and events
which are used by the developer to orchestrate the behavior of the particular control.
Visual Voice Pro comprises the following ActiveX controls.
- Voice Control This is the heart of Visual Voice, adding telephony and
voice capabilities to the applications.
- Voice Monitor Control This control monitors the activity of Visual Voice
applications that contain a Voice Manager object.
- Visual Link Control Provides communications link between applications.
- Visual Voice Tools Control Provides useful voice file functions such as
conversions and index file creation.
- Test Control Used to simulate phone activity for the application. In
order for our application to access our database we placed a Data Access Object (DAO)
Control on our form and configured it to interface with our Access database table. We then
placed a DBGrid control and configured it to interface with our DAO control to provide us
with a viewing window into our table records as well as allow us to modify the table
records. As a side note, we could have also used the Visual basic Data Form Wizard to
create an interface to our database. At this point, the database side of the project was
completed and we were ready to complete the telephony side.
We added a button on our form that, when clicked, would initiate a call to the
currently selected record in our database. We positioned the cursor inside the
Click event of the newly created button and invoked the Visual Voice Pro Code
Wizard to add the code for us. The Code Wizard works in concert with Visual Basic to add
code to the application by gathering information from the developer. One must know exactly
where in the program to place the cursor in order for the Code Wizard to insert the
appropriate code. We wished that the Code Wizard could be improved enough to create entire
CTI applications all by itself, but nevertheless we found the Code Wizard a useful tool in
developing our telephony application.
We chose the Place an outbound call option and on the next screen we
specified that the phone number to be dialed would be supplied by our database. The wizard
then proceeded to collect some more information from us including dialing instructions,
call analysis, and error handling instructions. Finally, we were prompted for the voice
prompt to play when a call connection is established. We were given two choices at this
point: Enter a VOX or WAV file to be played; or use the Prompt Manager to construct the
voice to be used in the project on-thefly. We clicked on the Prompt Manager button, which
brought us into the Prompt Manager screen.
From this application, we could create voice files, phrases which are voice entries
into an indexed file, and strings, which are produced by concatenating voice files,
phrases, and other values. We especially liked the string capability which allows the
developer to conF struct the strings using constants and variables from the program or a
database. In this scenario, one string can be used to make a formatted announcement using
values supplied by the program or the database. We recorded our voice message file and
used the Insert Prompt button to drop the file name back into the Code Wizard
field which was requesting the voice prompt. We then clicked on the Finish button and
observed as Code Wizard inserted the appropriate code in the Click event of the button.
Running The Telephony Project
In order to run the project using the telephony board we invoked the Visual Voice
Setup program and turned off the test mode by selecting the Telephony Device (rather than
the Sound Card) option. Back in Visual Basic, we ran the program and observed as the
project form popped up with the DBGrid control populated with our database records. We
selected a record and clicked on the button. The application was able to successfully call
the number (a second telephone in the lab), wait for an answer, play the voice prompt, and
hang up. We must say that although our application was a simple test, we were quite
impressed with the ease and the speed of setting up the telephony application using Visual
The Visual Voice Pro applications can also be started using the VMonitor control. The
Visual Voice Monitor application (built using the VMonitor control) starts and monitors
one or more Visual Voice applications and can be used to display their status and control
their behavior. It is especially useful for handling multiple lines, providing a single
source to access and manage the applications or classes (for multi-threaded applications).
The Voice Monitor application utilizes the Voice Service (Vservice.exe) to manage
communication with the Visual Voice applications. The Voice Service is also responsible
for starting and stopping specific instances of a class.
As mentioned before, standard (singlethreaded) Visual Voice applications can handle
only one line per instance. In order to handle multiple lines, separate instances of the
application must be launched with each one allocating a different line. Since this
approach puts too much demand on the resources, multithreaded applications can be used to
handle the entire group of lines from one running application. In this scenario, the Voice
Manager object (an OLE automation object) is employed to provide the interface (through
Voice Service) to application instances for retrieving startup parameters, report status,
and receive commands from the VMonitor control. While multithreaded Visual Voice Pro
applications must use the Voice Manager object, single-threaded applications are not
required (but recommended) to do so.
Another application supplied with Visual Voice Pro is the Trace utility which
lets the user view the progress of the running application as it executes. It can be
customized to display certain types of trace messages or messages from certain controls.
Another utility, the Visual Voice ActiveX Experimenter provides the user with a powerful
tool to test the functionality of the Visual Voice Pro ActiveX controls such as Voice
control. Visual Voice Pro can also be used in conjunction with Symantecs Winfax or
Microsoft Fax to handle fax calls in addition to voice calls. For high-volume fax
applications, however, Artisoft provides Visual Fax (used with fax boards) to handle
situations such as network fax or broadcast fax applications.
Finally, we want to mention that the telephony boards (including Dialogic boards) come
with their own Software Development Kits (SDK) allowing the developers to write their
applications directly to the hardware. Such hardwarespecific applications are often
cumbersome to write, difficult to port, and tough to maintain. Application generators such
as Visual Voice Pro abstract and hide many of the complex details of the hardware,
allowing the developer to concentrate on the application rather than the hardware. But for
those who may still choose to brave the esoteric world of telephony, Visual Voice Pro
provides the way to write directly to the telephony boards as well.
If you are a CTI reseller or an enduser interested in developing your own telephony
applications (Voicemail, IVR, predictive dialer, etc.) Visual Voice Pro 4.0 gives you the
tools needed to quickly and efficiently build your applications. Visual Voice Pro can
support up to 96-line systems, analog and digital T1 interfaces, PBX and Centrex
environments, and other services such as caller ID and ANI. Built as a collection of
ActiveX controls and graphical utilities, Visual Voice Pro can be employed in almost any
development environment, although in our opinion it finds its home with Visual Basic.
Among the notable features of version 4.0 is support for multi-threaded applications,
considerably less memory requirement, and Code Wizard to facilitate application
development. Areas where we would like to see improvement include stronger wizards to
generate complete telephony applications from scratch, Internet telephony capability, and
support for other boards in the industry.