The Telephony Application Programming Interface is a Microsoft Windows API,
which provides computer telephony integration and enables PCs running
Microsoft Windows to use telephone services. Different versions of TAPI are
available on different versions of Windows. TAPI allows applications to
control telephony functions between a computer and telephone network for data,
fax, and voice calls. It includes basic functions, such as dialing, answering,
and hanging up a call. It also supports supplementary functions, such as hold,
transfer, conference, and call park found in PBX, ISDN, and other telephone
systems. TAPI is used primarily to control either
modems or, more recently, to control business telephone system handsets. When
controlling a PBX handset, the driver is provided by the manufacturer of the
telephone system. Some manufacturers provide drivers that allow the control
of multiple handsets. This is traditionally called "third-party
control". Other manufacturers provide drivers that allow the control of a
single handset. This is called "first-party control". Third-party
drivers are designed to allow applications to see and/or control
multiple extensions at the same time. Some telephone systems only permit one
third-party connection at a time. First-party drivers are designed to
allow applications to monitor and/or control one extension at a time.
Telephone systems naturally permit many of these connections simultaneously.
Modem connections are by nature first-party.
TAPI can also be used to control voice-enabled telephony devices,
including voice modems and dedicated hardware such as Dialogic cards.
History TAPI was introduced in 1993 as the
result of joint development by Microsoft and Intel. The first publicly available
version of TAPI was version 1.3, which was released as a patch on top of
Microsoft Windows 3.1. Version 1.3 drivers were 16-bit only. Version 1.3 is
no longer supported, although some MSDN development library CDs still contain
the files and patches. With Microsoft Windows 95, TAPI was
integrated into the operating system. The first version on Windows 95 was TAPI
1.4. TAPI 1.4 had support for 32-bit applications.
The TAPI standard supports both connections from individual computers
and LAN connections serving any number of computers.
TAPI 2.0 was introduced with Windows NT 4.0. Version 2.0 was the first version
on the Windows NT platform. It made a significant step forward by supporting
ACD and PBX-specific functionality. In 1997, Microsoft released TAPI version
2.1. This version of TAPI was available as a downloadable update and was the
first version to be supported on both the Microsoft Windows 95 and Windows
NT/2000 platforms. TAPI 3.0 was released in 1999 together
with Windows 2000. This version enables IP telephony by providing simple and
generic methods for making connections between two or more computers and now
also offers the ability to access any media streams involved in the
connection. Windows XP included both TAPI 3.1 and
TAPI 2.2. TAPI 3.1 supports the Microsoft Component Object Model and
provides a set of COM objects to application programmers. This version
uses File Terminals which allow applications to record streaming data to
a file and play this recorded data back to a stream. A USB Phone TSP was also
included which allows an application to control a USB phone and use it as a
streaming endpoint. TAPI 3.0 or TAPI 3.1 are not available on operating systems
earlier than Windows 2000 and Windows XP respectively.
The Telephony Server Application Programming Interface is a similar
standard developed by Novell for NetWare servers.
TAPI 2.x vs TAPI 3.x It is a common misconception that TAPI
3.0 replaces TAPI 2.x. TAPI 2.x and earlier versions were
written in C; the API uses pointers to structures. Consequently, TAPI 2.x is
easy to access from C or C++ applications, but it can be awkward to
use from many other programming languages.
TAPI 3.x was designed with a Component Object Model interface. This was done
with the intent of making it accessible to higher level applications such as
developed in VB or other environments that provide easy access to COM but
don't deal with C-style pointers. TAPI 3.x has a slightly different set of
functionality than TAPI 2.x. The addition of integrated media control was
the most significant addition. But TAPI 3.x doesn't include all functionality
that TAPI 2.x does, like support for the Phone class.
One very notable issue with TAPI 3.x is the lack of support for managed code. As
documented in Microsoft KB Article 841712, Microsoft currently has no plans
to support TAPI 3.x directly from .Net programming languages. However, Mark
Smith has provided a Managed C++ library called ITAPI3 and other developers such
as Mondago provide .Net libraries to work indirectly with TAPI enabled PBXs.
One often overlooked reason an application developer might choose
between TAPI 2.x and TAPI 3.x should be the hardware vendors recommendation.
Even though TAPI provides an abstract model of phone lines, telephony
applications are still heavily impacted by the specific behavior of the
underlying hardware. Troubleshooting behavior issues usually requires both
software and hardware vendors to collaborate. Because there is almost a
1:1 relationship between the TAPI Service Provider interface and the TAPI
2.x interface, collaboration is often easier if the application is designed
using TAPI 2.x. Experience with TAPI 3.x varies significantly between hardware
vendors. TAPI compliant hardware
Telephony hardware that supports TAPI includes most voice modems and some
telephony cards such as Dialogic cards. The following telephone systems provide
Tapi drivers. Often these are only available for 32 bit operating systems.
Many of these drivers are licensed and thus incur a charge to use. In other
cases, alternative drivers are available for separate purchase from iQ
NetSolutions, C4B Com For Business, Estos and Mondago:
See also TSAPI
JTAPI Microsoft NetMeeting
Microsoft telephone number format Telephony Service Provider
H.323 External links
MSDN Library about TAPI Andreas Marschall's TAPI and TSPI FAQ
Former TAPI MVP Michael Dunn's TAPI FAQ www.tapi.info Wiki Site about TAPI
Way2Call - Hi-Phone telephony modem, TAPI compliant telephony device
ExceleTel TeleTools - Telephony development tools for VCL, ActiveX, and
.NET TAPI programming JulMar ATAPI.NET and ITAPI3, TSP++ for
TSPI development, and samples iQ NetSolutions
PhonePc CTI - telephony MiddleWare for TAPI
Voice CTI - telephony software for TAPI ESTOS
Mondago C4B Com For Business, XPhone TAPI Server