Telephony Application Programming Interface
The Telephony Application Programming Interface (TAPI) is a
TAPI is used primarily to control either modems or, more recently, to control business telephone system (PBX) handsets. When controlling a
TAPI can also be used to control voice-enabled telephony devices, including voice modems and dedicated hardware such as
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
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
The
servers.Telephone address format
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
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
- ! - hookflash, i.e. half second off-hook;
- P - pulse dialing mode;
- T - tone dialingmode;
- , - pause dialing (duration specified by the device);
- W - wait for dial tone;
- @ - wait for "quiet answer", i.e. the ringback tonefollowed 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
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 (
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
On
Many
Third party drivers are often available for the telephone systems that don't have drivers made by the manufacturers.
See also
- TSAPI
- JTAPI (Java Telephony API)
- Microsoft NetMeeting
- Microsoft telephone number format
- Telephony Service Provider
- H.323
References
- ^ a b c "MSDN: TAPI Applications - Device Control - Canonical Address".
- ^ a b "Microsoft Technet: Dialing Rules and Canonical Address Format".
- ^ "ITAPI3 - Managed TAPI 3.0 .NET wrapper". GitHub. 15 March 2021.
- ^ "ATAPI.NET - Managed library for TAPI development with .NET". GitHub. 12 November 2021.
- ^ "Siptapi".
- ^ "Programmer's Reference".