Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Telephony Application Programming Interface
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Microsoft Windows API}} The '''Telephony Application Programming Interface''' ('''TAPI''') is a [[Microsoft Windows]] [[Application programming interface|API]], which provides [[computer telephony integration]] and enables [[personal computer|PC]]s 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 [[Private branch exchange|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 [[Private branch exchange|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 Corporation|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 [[Microsoft Developer Network|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 [[local area network|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 [[Automatic call distributor|ACD]] and [[Private branch exchange|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 [[streaming media|media stream]] (MSP driver) 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== TAPI uses Microsoft canonical address format for telephone numbers<ref name="MSDN_TAPI_Canonical_Address">{{cite web| url = https://msdn.microsoft.com/en-us/library/ms726017.aspx#canonical_addresses| title = MSDN: TAPI Applications - Device Control - Canonical Address| date = 7 January 2021}}</ref><ref name="TechNet_Canonical_Address">{{cite web| url = https://technet.microsoft.com/ru-ru/library/cc772545(v=ws.10).aspx| title = Microsoft Technet: Dialing Rules and Canonical Address Format| date = 2 July 2012}}</ref> to make phone calls. It is a derivative of [[E.123]] international notation. The canonical address is a text string with the following format: <code>+Country␣(AreaCode)␣ SubscriberNumber | Subaddress ^ Name CRLF</code>. Area code, subaddress and name are optional; the latter can carry extension number for [[direct inward dialing]] and [[caller ID|calling party name]], as used by [[ISDN]]/[[E-carrier|E1]]/[[T-carrier|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 [[Telephone card|calling card]]/[[credit card]] numbers.<ref name="MSDN_TAPI_Canonical_Address"/><ref name="TechNet_Canonical_Address"/> The calling sequence can contain dialable numbers such as digits <code>0-9</code> and [[DTMF]] tones <code>ABCD*#</code>, formatting characters <code> β£ . -</code>, and control characters <code>! P T , W @ $ ? ;</code> which correspond to the Dial command of the Hayes [[AT command set]]. The following control characters are defined: <ref name="MSDN_TAPI_Canonical_Address"/> :! - 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); :<nowiki>;</nowiki> - 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 (programming language)|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 language]]s.<ref>{{Citation |last=Smith |first=Mark |title=markjulmar/atapi.net |date=2025-03-24 |url=https://github.com/markjulmar/atapi.net |access-date=2025-03-24}}</ref> 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 [[Visual Basic|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 ([[Microsoft .NET|.NET]] environment). As documented in Microsoft KB Article [http://support.microsoft.com/default.aspx?scid=kb;en-us;841712 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<ref>{{Cite web|url=https://github.com/markjulmar/itapi3|title = ITAPI3 - Managed TAPI 3.0 .NET wrapper|website = [[GitHub]]|date = 15 March 2021}}</ref> and a 2.x wrapper for .NET.<ref>{{Cite web|url=https://github.com/markjulmar/atapi.net|title=ATAPI.NET - Managed library for TAPI development with .NET|website=[[GitHub]]|date=12 November 2021}}</ref> Other developers provide libraries to work indirectly with TAPI enabled PBXs.<ref>{{Cite web|url=https://sourceforge.net/projects/siptapi/|title = Siptapi}}</ref> 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 [[Windows]], TAPI support was almost universal in [[telephony]] hardware such as [[voice modem]]s (both internal and external) and computer expansion boards such as [[Dialogic telephony cards]]. The only notable exception who never natively supported TAPI was the Avaya Communication Manager, which relied solely on the [[TSAPI]] interface for connectivity.<ref>{{cite web| url = https://downloads.avaya.com/css/P8/documents/100141354| title = Programmer's Reference}}</ref> Many [[Private branch exchange|PBX]] systems provide TAPI-compliant modem interfaces. TAPI compatible PBX solutions include [[Aastra]] (400/800), [[Aastra]] (MX-ONE), [[Alcatel]] (OXO/OXE), [[Avaya]] (BCM, IP Office), [[Cisco]] (Call Manager), [[Ericsson-LG]] (eMG80, iPECS, ipLDK), NEC-Philips (iS3000, IPC100/500), [[NEC]] (SL1000, SV8100/9100), Nitsuko (DXE600/328), [[Panasonic]] (KX-TDA/TDE/NCP, KX-NS1000), [[Samsung]] (OfficeServ), [[Unify GmbH & Co. KG|Unify]] (3000/4000, Openscape Office), [[ShoreTel]], and [[ZyXEL]] (X6004/X2002). Third party drivers are often available for the telephone systems that don't have drivers made by the manufacturers. ==See also== * [[TSAPI]] * [[Java Telephony API|JTAPI]] (Java Telephony API) * [[Microsoft NetMeeting]] * [[Microsoft telephone number format]] * [[Telephony Service Provider]] * [[H.323]] ==References== <references/> ==External links== * [[MSDN]] [https://learn.microsoft.com/en-us/previous-versions/ms950407(v=msdn.10)?redirectedfrom=MSDN Library about TAPI] * [https://www.i-b-a-m.de/Andreas_Marschall's_TAPI_and_TSPI_FAQ.htm Frequently Asked Questions] {{Microsoft APIs}} [[Category:Telephony]] [[Category:Microsoft application programming interfaces]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation
(
edit
)
Template:Cite web
(
edit
)
Template:Microsoft APIs
(
edit
)
Template:Short description
(
edit
)