Telephony Application Programming Interface

Last updated

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.

Contents

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.

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 (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 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 [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

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 [3] and a 2.x wrapper for .NET. [4] Other developers provide libraries to work indirectly with TAPI enabled PBXs. [5]

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 modems (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. [6]

Many 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 (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

Related Research Articles

Voice over Internet Protocol (VoIP), also called IP telephony, is a method and group of technologies for voice calls, the delivery of voice communication sessions over Internet Protocol (IP) networks, such as the Internet.

Computer telephony integration, also called computer–telephone integration or CTI, is a common name for any technology that allows interactions on a telephone and a computer to be coordinated. The term is predominantly used to describe desktop-based interaction for helping users be more efficient, though it can also refer to server-based functionality such as automatic call routing.

GeoPort is a serial data system used on some models of the Apple Macintosh that could be externally clocked to run at a 2 megabit per second data rate. GeoPort slightly modified the existing Mac serial port pins to allow the computer's internal DSP hardware or software to send data that, when passed to a digital-to-analog converter, emulated various devices such as modems and fax machines. GeoPort could be found on late-model 68K-based machines as well as many pre-USB Power Macintosh models and PiPPiN. Some later Macintosh models also included an internal GeoPort via an internal connector on the Communications Slot. Apple GeoPort technology is now obsolete, and modem support is typically offered through USB.

E.123 is an international standard by the standardization union (ITU-T), entitled Notation for national and international telephone numbers, e-mail addresses and web addresses. It provides guidelines for the presentation of telephone numbers, email addresses, and web addresses in print, on letterheads, and similar purposes.

<span class="mw-page-title-main">Asterisk (PBX)</span> PBX software

Asterisk is a software implementation of a private branch exchange (PBX). In conjunction with suitable telephony hardware interfaces and network applications, Asterisk is used to establish and control telephone calls between telecommunication endpoints, such as customary telephone sets, destinations on the public switched telephone network (PSTN), and devices or services on voice over Internet Protocol (VoIP) networks. Its name comes from the asterisk (*) symbol for a signal used in dual-tone multi-frequency (DTMF) dialing.

<span class="mw-page-title-main">Business telephone system</span> Multiline telephone system typically used in business environments

A business telephone system is a multiline telephone system typically used in business environments, encompassing systems ranging in technology from the key telephone system (KTS) to the private branch exchange (PBX).

A remote access service (RAS) is any combination of hardware and software to enable the remote access tools or information that typically reside on a network of IT devices.

<span class="mw-page-title-main">VoIP phone</span> Phone using one or more VoIP technologies

A VoIP phone or IP phone uses voice over IP technologies for placing and transmitting telephone calls over an IP network, such as the Internet. This is in contrast to a standard phone which uses the traditional public switched telephone network (PSTN).

The Apple USB Modem is a combined 56 kbit/s data modem and 14.4 kbit/s fax external USB modem introduced by Apple Inc. after the internal 56k modem was dropped on the October 12, 2005 iMac G5 revision. While it looks similar, it should not be confused with Apple's optional USB Ethernet Adapter accessory, available for its MacBook Air and MacBook Pro Retina range of laptops since 2008.

Mp3/3gpp/wav

A Radio Interface Layer (RIL) is a layer in an operating system which provides an interface to the hardware's radio and modem on e.g. a mobile phone.

Unified communications (UC) is a business and marketing concept describing the integration of enterprise communication services such as instant messaging (chat), presence information, voice, mobility features, audio, web & video conferencing, fixed-mobile convergence (FMC), desktop sharing, data sharing, call control and speech recognition with non-real-time communication services such as unified messaging. UC is not necessarily a single product, but a set of products that provides a consistent unified user interface and user experience across multiple devices and media types.

An IP PBX is a system that connects telephone extensions to the public switched telephone network (PSTN) and provides internal communication for a business. An IP PBX is a PBX system with IP connectivity and may provide additional audio, video, or instant messaging communication utilizing the TCP/IP protocol stack.

<span class="mw-page-title-main">Elastix</span>

Elastix is a unified communications server software that brings together IP PBX, email, IM, faxing and collaboration functionality. It has a Web interface and includes capabilities such as a call center software with predictive dialing.

CT Connect is a software product that allows computer applications to monitor and control telephone calls. This monitoring and control is called computer-telephone integration, or CTI. CT Connect implements CTI by providing server software that supports the CTI link protocols used by a range of telephone systems, and client software that provides an application programming interface (API) for telephony functions.

Telephony Server Application Programming Interface was a computer telephony integration standard developed and promoted by Novell and AT&T. It consisted of a number of call control commands for switching calls, voice mail and call logging using NetWare servers. Unlike the competing Telephony Application Programming Interface from Microsoft and Intel, it was a server-based system that did not expect client-side equipment to handle call switching. This was important to AT&T, which sold large telephone switches that Telephony Server Application Programming Interface was intended to work with.

<span class="mw-page-title-main">Modem</span> Device that modulates an analog carrier signal to encode digital information

A modulator-demodulator or modem is a computer hardware device that converts data from a digital format into a format suitable for an analog transmission medium such as telephone or radio. A modem transmits data by modulating one or more carrier wave signals to encode digital information, while the receiver demodulates the signal to recreate the original digital information. The goal is to produce a signal that can be transmitted easily and decoded reliably. Modems can be used with almost any means of transmitting analog signals, from light-emitting diodes to radio.

A softphone is a software program for making telephone calls over the Internet using a general purpose computer rather than dedicated hardware. The softphone can be installed on a piece of equipment such as a desktop, mobile device, or other computer and allows the user to place and receive calls without requiring an actual telephone set. Often, a softphone is designed to behave like a traditional telephone, sometimes appearing as an image of a handset, with a display panel and buttons with which the user can interact. A softphone is usually used with a headset connected to the sound card of the PC or with a USB phone.

An automatic dialer is an electronic device or software that automatically dials telephone numbers. Once the call has been answered, the autodialer either plays a recorded message or connects the call to a live person.

References

  1. 1 2 3 "MSDN: TAPI Applications - Device Control - Canonical Address".
  2. 1 2 "Microsoft Technet: Dialing Rules and Canonical Address Format".
  3. "ITAPI3 - Managed TAPI 3.0 .NET wrapper". GitHub . 15 March 2021.
  4. "ATAPI.NET - Managed library for TAPI development with .NET". GitHub . 12 November 2021.
  5. "Siptapi".
  6. "Programmer's Reference".