TAPI was defined with substantial, ongoing input from the telephony and computing industries from all over the world. These efforts, including extensive input from independent software and hardware vendors, have made TAPI a truly open industry standard.
TAPI works with a variety of PC processors, runs on industry standard hardware platforms, and as has been noted earlier, the hardware abstraction of TAPI is a huge contribution to openness. Its switch-fabric independence means TAPI-compatible applications can be run on a wide variety of PC and telephony hardware and support a variety of network services.
TAPI developers and their applications also benefit from the openness and industry standards that are such a foundation of the Windows NT and Windows 95 operating systems and complementing WOSA elements.
Because TAPI is based on the Windows operating system, telephony applications can be developed and tested using standard tools that are widely available. TAPI developers can program in C, C++, Visual Basic®, or any of a number of other popular programming languages. This frees developers from having to learn the Hayes "AT" command set, which historically has been the dominant telephony programming model.
The AT command set is useful, but suffers from limitations including bandwidth, a strict command-response model, in-band notifications and commands (call control commands and messages cannot be easily invoked during a call), a limitation to the 7-bit ASCII character set, and a lack of standardization across the industry beyond the most basic functions.
Microsoft's Windows 95 includes the "Universal Modem Driver," a Windows Telephony service provider intended to be able to control virtually any AT command set-based modem. Its modem configuration information consists of 50 files totaling over 1.3 megabytes of data and defining interoperability with over 800 modem models in the USA alone—and this just covers the most important features of the most popular modems. The variations between products claiming compliance to such a long-standing industry standard is striking.
Probably the greatest limitation with the AT command set is that it uses a completely different syntax and structure from the programming models used by the majority of application developers today for most of their work, such as C and C++. The need to learn an entirely new programming environment limits the utility of the AT command set. Likewise, any telephony API that departs in significant ways from the most familiar programming environment will have a longer and higher learning curve, be more prone to errors and confusion, require additional training and support, and have lesser acceptance among application developers.
With TAPI, developers can easily take advantage of other elements of the operating system such as related data transfer APIs for access to the media stream of the call. Such integration with the operating system allows for the creation of higher-level constructs such as Visual Basic custom controls, OLE controls, and C++ object libraries that are closely tied to other elements in the system.
In addition to the solid usability and intuitive interfaces that are part of the Windows environment, TAPI allows developers to create usability features specific to telephony such as dialing location independence. TAPI-enabled applications can include features to help users create and manipulate sets of dialing properties for the locations from which they use their computers.
In Windows Telephony, users can store telephone numbers in their applications and address books in a "location independent" form, such as the notation specified in ITU-T Recommendation E.123 (which calls for a string in the form "+cc (ac) ln" where "cc" is a country code, "ac" is an area (or city) code, and "ln" is the local subscriber number within that city). The user configures the telephony service for the dialing requirements of their location, including the country code and area code of the location, area codes and exchanges that are local or toll calls, outside line access codes, call waiting prefix codes, tone or pulse dialing, telephone credit card access numbers, and so forth. Applications can then request TAPI to "translate," or convert, the number in international (location-independent) form into the series of dialable digits and other dialing instructions needed to complete the call at the current location.
TAPI can store many such sets of location dialing properties for users who frequently move their computers between office, home, and other remote locations.
The location independence enabled by this CTI API service facilitates other important enterprise services, such as "global address books." For example, a corporation may make available (through a Messaging API address book service provider) a single enterprise-wide directory of phone numbers. In a multinational corporation, if the telephony API provided no number conversion, the numbers in this global directory would have to be manually dialed by each caller, extracting the portion of the number relevant to the location and adding such prefix and suffix digits as are needed to complete each call. With location-specific dialing properties, however, telephony applications software can easily apply local dialing procedures and thereby automatically dial calls from the global address book.
Another example is that of a multinational service, such as CompuServe or MSN™, The Microsoft Network that publishes a list of its access numbers in hundreds of cities worldwide. Without the location independence offered by phone number translation based in the CTI API, users would have to manually add prefixes and other dialing instructions to the access numbers published by the network; location independence allows for the distribution of a single global access number directory from which the correct access number can be properly and automatically dialed, so long as the user has correctly specified their local dialing instructions. Applications can also take advantage of knowledge of the selected location to automatically use the correct access number.
TAPI will also use operating system services such as Plug and Play to automatically detect the attachment of new devices and make them available to applications. Inserting a PCMCIA modem, or powering up the system with a new telephony device attached, should result in the system automatically detecting the new hardware, loading the correct driver into the telephony environment (or requesting the user to insert a diskette containing the driver). Telephony drivers that consist of software only, such as the client portion of a client/server LAN-based system, should be able to be installed, configured, and upgraded remotely over the LAN using software such as Microsoft Systems Management Server, and be made immediately available for use.
ActiveX is a set of technologies that enables software components to interoperate in a networked environment, providing end users with a richer, more interactive experience. The ActiveX technologies are enhancements to OLE, Microsoft's component software technology, which has become a well-established, industry standard since the introduction of OLE in 1994. ActiveX Controls are small, efficient modules that implement specific, specialized functions.
Software companies around the world create ActiveX Controls, including companies such as Borland, ORACLE and Sybase/Powersoft. The result has been the creation of more than 1,000 ActiveX controls, which are available for developers to use as building blocks in creating applications.
For telephony developers, ActiveX Controls from companies such as Stylus Innovation, Technically Speaking, and Pronexus provide plug-in components that can make the job of creating applications much easier. This allows a broader population of developers to concentrate on the unique features of their programs, rather than the plumbing. ActiveX also allows developers to work with a rich variety of programming languages, including Visual Basic, Visual C++®, Borland Delphi, Borland C++, Java, and Java-enabled tools. These graphical user-based programming tools speed up the development process substantially and provide programming and customization of telephony that have long been desired but which were not possible before now.