Telephony Application Programming Interface

From Wikipedia, the free encyclopedia
Jump to: navigation, search

The Telephony Application Programming Interface (TAPI) 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 (PBX) 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.


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 (VoIP) by providing simple and generic methods for making connections between two (using H.323) or more (using IP Multicast) 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 (Telephony Service Provider) 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 (TSAPI) is a similar standard developed by Novell for NetWare servers.

Telephone address format[edit]

TAPI uses Microsoft canonical address format for telephone numbers[1][2] to make phone calls. It is a derivative of E.123 international notation.

The canonical address is a text string with the following format: +Country␣(AreaCode)␣ SubscriberNumber | Subaddress ^ Name CRLF. Area code, subaddress and name are optional; the latter can carry extension number for direct inward dialing and calling party name, as used by ISDN/E1/T1 telecommunication protocols.

Dialing rules are used to transform the canonical phone number into a dialable calling sequence for the modem, depending on the user's location. The dialing rules include variable-length dialing for area code, trunk access and international access prefixes, as well as central office access and calling card/credit card numbers.[1][2]

The calling sequence can contain dialable numbers such as digits 0-9 and DTMF tones ABCD*#, formatting characters ␣ . -, and control characters ! P T , W @ $ ? ; which correspond to the Dial command of the Hayes AT command set. The following control characters are defined: [1]

! - hookflash, i.e. half second on-hook followed by half second off-hook;
P - pulse dialing mode;
T - tone dialing mode;
, - pause dialing (duration specified by the device);
W - wait for dial tone;
@ - wait for "quiet answer", i.e. the ringback tone followed by several seconds of silence;
$ - wait for a billing signal, such as credit card prompt tone;
? - indicates that the user is to be prompted before continuing (results in an application error since the API has no means to implement a user prompt);
; - the number is not complete and will be finished later (only valid in a dialable number).

TAPI 2.x vs TAPI 3.x[edit]

It is a common misconception that TAPI 3.0 (or TAPI 3.1) 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 (COM) 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 (.NET environment). 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 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 (TSP) 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[edit]

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 other suppliers.

Manufacturer Model Manufacturer Support (32 bit) Manufacturer Support (64 bit) Notes
3Com NBX Yes - Platform has been discontinued.
Aastra 400 Yes Yes
Aastra 800 - - Based on a PBX from Detewe
Aastra MX-ONE Yes - New version of Ericsson MD110
Alcatel OXO Yes -
Alcatel OXE Yes -
Allworx 6x, 6x12, 10x, 24x, and 48x Yes Yes Native driver only supports 1st party TAPI
AltiGen AltiGen Yes -
Avaya BCM Yes - Formerly Nortel BCM
Avaya Communication Manager - -
Avaya CS1000 - - Formerly Nortel CS
Avaya Index Yes - Platform has been discontinued. Formerly SDX Index
Avaya IP Office Yes Yes
Broadsoft Broadworks - -
Broadsoft M6 Yes -
Cisco 320 - - TAPI drivers may be possible for the handsets rather than the PBX
Cisco 500 / Call Manager Express - -
Cisco Call Manager Yes Yes
E-MetroTel UCx50, UCx450, UCx1000 Yes Yes
Ericsson-LG eMG80 Yes Yes Driver uses UDP for communication. Can be sensitive to poor network conditions.
Ericsson-LG iPECS Yes Yes Driver uses UDP for communication. Can be sensitive to poor network conditions.
Ericsson-LG ipLDK Yes - Driver uses UDP for communication. Can be sensitive to poor network conditions.
InterTel Axxess - -
Innovaphone Innovaphone Yes Yes
LG LDK Yes - Driver uses UDP for communication. Can be sensitive to poor network conditions.
Mitel 3000 - - Sold as BT Versatility in the UK
Mitel 3250 - - Sold as BT Quantum in the UK
Mitel MiVoice Business - - Mitel did have a TAPI driver until it was discontinued in 2007
Mitel MiVoice Office 250 - -
NEC-Philips iS3000 Yes -
NEC-Philips Aspire (aka IPC500) Yes - Platform has been discontinued.
NEC-Philips XN120 (aka IPC100) Yes - Platform has been discontinued.
NEC SL1000 Yes Yes
NEC SV8100 Yes Yes
NEC SV9100 Yes Yes
Nitsuko DXE600 Yes - Platform has been discontinued.
Nortel Meridian Yes - Platform has been discontinued. See Avaya CS1000
Nortel Norstar Yes - Hardware (DTA) required
Panasonic KX-TD Yes -
Panasonic KX-TDA Yes Yes
Panasonic KX-TDE Yes -
Panasonic KX-NCP Yes -
Panasonic KX-NS1000 Yes -
Samsung OfficeServ Yes -
Selta SAMIP Yes -
Siemens 3000 Yes -
Siemens 4000 - -
Siemens 8000 - -
Siemens OpenOffice Yes -
Sipleo Sipleo Yes Yes
ShoreTel ShoreTel Yes Yes
SpliceCom Maximizer Yes -
Tadiran IS2000 Yes -
Talkswitch IS2000 Yes -
Tekelec M6 Yes - See Broadsoft M6
Teldat Hybird Yes -
Teltronics Cerato IP Yes -
Toshiba CIX - -
Toshiba CTX - -
Toshiba ipEdge - -
Way2Call Hi-Phone Desktop Lite Yes Yes
Way2Call Hi-Phone Desktop Pro Yes Yes
Way2Call Way2Call Maestro Yes Yes
Wildix All Wildix WMS UC Series > rel. 2.0 Yes Yes
Zultys MX Yes -
ZyXEL X6004/X2002 Yes -

See also[edit]


  1. ^ a b c MSDN: TAPI Applications - Device Control - Canonical Address
  2. ^ a b Microsoft Technet: Dialing Rules and Canonical Address Format

External links[edit]