Введение
Microsoft Windows API
Интерфейс программирования приложений для телефонии (TAPI) — это API Microsoft Windows, обеспечивающий интеграцию компьютерной телефонии и позволяющий компьютерам под управлением Microsoft Windows использовать телефонные услуги. Различные версии TAPI доступны для разных версий Windows. TAPI позволяет приложениям управлять функциями телефонии между компьютером и телефонной сетью для передачи данных, факсов и голосовых вызовов. Он включает в себя базовые функции, такие как набор номера, ответ на вызов и завершение вызова. Также поддерживаются дополнительные функции, такие как удержание, переадресация, конференц-связь и перехват вызовов, используемые в PBX, ISDN и других телефонных системах. TAPI в основном используется для управления модемами или, в последнее время, для управления аппаратами бизнес-телефонных систем (PBX). При управлении аппаратом PBX драйвер предоставляется производителем телефонной системы. Некоторые производители предоставляют драйверы, позволяющие управлять несколькими аппаратами. Это традиционно называется "управление третьей стороной". Другие производители предоставляют драйверы, позволяющие управлять одним аппаратом. Это называется "управление первой стороной". Драйверы управления третьей стороной разработаны для обеспечения возможности приложений видеть и/или управлять несколькими линиями одновременно. Некоторые телефонные системы допускают только одно подключение управления третьей стороной одновременно. Драйверы управления первой стороной разработаны для обеспечения возможности приложений контролировать и/или управлять одной линией одновременно. Телефонные системы, как правило, допускают множество таких подключений одновременно. Модемные подключения по своей природе являются подключениями управления первой стороной. TAPI также может использоваться для управления голосовыми телефонными устройствами, включая голосовые модемы и специализированное оборудование, такое как платы Dialogic.
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 был представлен в 1993 году в результате совместной разработки Microsoft и Intel. Первой общедоступной версией TAPI была версия 1.3, выпущенная как обновление для Microsoft Windows 3.1. Драйверы версии 1.3 были исключительно 16-битными. Версия 1.3 больше не поддерживается, хотя некоторые CD-диски с библиотекой разработки MSDN все еще содержат файлы и обновления для нее. С выходом Microsoft Windows 95, TAPI был интегрирован в операционную систему. Первой версией TAPI для Windows 95 была версия 1.4, поддерживающая 32-битные приложения. Стандарт TAPI поддерживает как подключения от отдельных компьютеров, так и подключения по локальной сети, обслуживающие любое количество компьютеров. TAPI 2.0 был представлен вместе с Windows NT 4.0 и стал первой версией TAPI для платформы Windows NT, значительно расширив функциональность за счет поддержки ACD и специфических функций PBX. В 1997 году Microsoft выпустила версию TAPI 2.1, доступную в виде загружаемого обновления и ставшую первой версией, поддерживаемой как на платформах Microsoft Windows 95, так и на Windows NT/2000. TAPI 3.0 был выпущен в 1999 году вместе с Windows 2000. Эта версия обеспечила поддержку IP-телефонии (VoIP), предоставляя простые и универсальные методы для установления соединений между двумя (с использованием H.323) или более (с использованием IP-мультикаста) компьютерами, а также возможность доступа к любому медиапотоку (драйвер MSP), участвующему в соединении. Windows XP включала как TAPI 3.1, так и TAPI 2.2. TAPI 3.1 поддерживает Microsoft Component Object Model и предоставляет набор COM-объектов для разработчиков приложений. Эта версия использует файловые терминалы, позволяющие приложениям записывать потоковые данные в файл и воспроизводить их обратно в поток. Также был включен TSP (провайдер телефонных услуг) для USB-телефона, позволяющий приложению управлять USB-телефоном и использовать его в качестве потоковой конечной точки. TAPI 3.0 или TAPI 3.1 недоступны на операционных системах, предшествующих Windows 2000 и Windows XP соответственно. TSAPI (интерфейс программирования приложений для серверов телефонии) — аналогичный стандарт, разработанный Novell для серверов NetWare.
Формат телефонного адреса
TAPI использует канонический адресный формат Microsoft для телефонных номеров при совершении телефонных звонков. Он является производным от международной нотации E.123. Канонический адрес представляет собой текстовую строку следующего формата: +Country␣(AreaCode)␣SubscriberNumber | Subaddress ^ Name CRLF. Код зоны, подадрес и имя являются необязательными; последний может содержать добавочный номер для прямого входящего вызова и имя вызывающего абонента, как это используется в телекоммуникационных протоколах ISDN/E1/T1. Правила набора используются для преобразования канонического номера телефона в набираемую последовательность для модема, в зависимости от местоположения пользователя. Эти правила включают в себя наборы переменной длины для кода зоны, доступа к магистрали и международного префикса, а также доступа к центральной станции и номера телефонных/кредитных карт. Также существует обертка 2.x для NET. Другие разработчики предоставляют библиотеки для косвенной работы с АТС, поддерживающими TAPI. Часто упускаемой из виду причиной, по которой разработчик приложения может выбрать между TAPI 2.x и TAPI 3.x, является рекомендация производителя оборудования. Несмотря на то, что TAPI предоставляет абстрактную модель телефонных линий, поведение телефонных приложений по-прежнему сильно зависит от специфики базового оборудования. Устранение проблем с поведением обычно требует сотрудничества между поставщиками программного и аппаратного обеспечения. Поскольку существует практически однозначное соответствие между интерфейсом поставщика услуг TAPI (TSP) и интерфейсом TAPI 2.x, сотрудничество часто проще, если приложение разработано с использованием TAPI 2.x. Опыт работы с TAPI 3.x существенно различается у разных производителей оборудования.
Аппаратное обеспечение, соответствующее требованиям TAPI
В Windows поддержка TAPI была практически повсеместной в телефонном оборудовании, таком как голосовые модемы (внутренние и внешние) и компьютерные платы расширения, например, телефонные карты Dialogic. Единственным заметным исключением, не поддерживавшим TAPI изначально, был Avaya Communication Manager, который использовал исключительно интерфейс TSAPI для подключения. Многие АТС предоставляют модемные интерфейсы, соответствующие стандарту TAPI. К АТС, совместимым с TAPI, относятся 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 и ZyXEL (X6004/X2002). Для телефонных систем, у которых нет драйверов от производителей, часто доступны драйверы сторонних разработчиков.