楊宗長
(武漢大學電信學院,湖北,武漢,430072)
摘要: TAPI 3.0(The Microsoft® Windows® Telephony Application Programming Interface)是一個改進的TAPI,是傳統的公眾交換電話網(PSTN)和IP網絡技術的融合。基于TAPI 3.0的IP電話技術使得聲音、數據和視頻在現有的基于IP的局域網(LAN)、廣域網(WAN)和Internet上統一起來;TAPI3.0為建立Office CTI(數字辦公平臺)提供了一個便捷而強大的方法。
關鍵詞:TAPI3.0 ; Microsoft;公眾交換電話網; IP;數字辦公平臺
中圖分類號:TN915.9 文獻標識: A
The Development of Office CTI with TAPI 3.0
YANG Zong-chang
(College of Electronic Information , Wuhan University, Wuhan 430072, China)
Abstract: Telephony Application Program Interface (TAPI) 3.0 is an evolutionary API providing convergence of both traditional PSTN telephony and IP telephony. IP telephony is an emerging set of technologies that enables voice, data, and video collaboration over existing LANs, WANs, and the Internet. TAPI 3.0 enables IP telephony on Microsoft® Windows® operating systems by providing simple and generic methods for building an Office CTI.
Key words: TAPI3.0; Microsoft; PSTN ; IP;Office CTI
在以IP技術為基礎的局域網、廣域網以及互聯網上的IP電話能夠將語音、數據和視頻集成在一起,這是一項正在逐步發展并走向成熟的技術。IP電話使用開放的IETF(Internet Engineering Task Force)和ITU(International Telecommunications Union)的標準,使得多媒體能夠在任何使用IP的鏈路上傳輸,在物理介質和物理位置上都給用戶提供了很大的靈活性。例如,用戶可以選擇使用ADSL、ISDN、衛星或雙絞線就可以作為傳輸媒體,同時用戶的位置也可以隨意地選取,通過Web、E-mail和數據網將全世界的個人、商業、學校和政府聯在了一起。
一、CTI(Computer Telephony Integration)簡介
CTI (Computer Telephony Integration,計算機電話集成),俗稱呼叫中心,是傳統的公眾交換電話網(PSTN)和計算機通信技術的融合。CTI應用中涉及到計算機應用中的各個方面,而電話語音技術是其中的核心。因此就必須利用各種應用程序接口(API)來構建自己的應用系統。雖然各個設備供應商都提供自己的API,但對用戶來說,更希望使用一種標準的API,從硬件層中抽象出來,可以不再為每種不同的硬件專門寫代碼,而利用系統設備無關特性無須重復編寫代碼,給開發帶來極大的方便。另一方面,從決策者來說,運用設備無關的標準API,使系統升級和更新時能避免重復投資,降低費用,保留現有資源。因此API的選擇就顯得非常重要。目前各種應用程序接口也正在發展之中,也尚未形成CTI業界的認同標準。
當前得到認可的API有三種:微軟公司TAPI、Novell和AT&T的TSAPI以及Sun公司的JTAP。TSAPI由Novell和AT&T共同開發,實現把電話系統與Netware網絡集成在一起。TSAPI是出現最早的語音應用程序接口,在市場方面也取得過一些成績。但由于公司的經營策略和昂貴的客戶許可費用的羈絆,加之,Netware在網絡操作系統的競爭中已經失去領先地位,因此它已經失去了發展的動力。JTAPI是由Sun公司提出的基于Java語言的應用程序接口。由于JTAPI是基于Java的應用接口,使得JTAPI的對象獨立于操作系統和硬件平臺,支持跨平臺的應用。JTAPI定義了一套類庫,包含電話功能和擴充功能。JTAPI結合了傳統的電話服務和Web處理能力,具有較強的功能。但是,基于Java的特性,使得JTAPI在擁有強大功能的同時,也失去了普及和推廣的基礎。
TAPI由微軟提供,并且已內建于微軟操作系統之中。在TAPI中定義了設備(LINE和PHONE)和媒體流。通過LINE可操縱交換機、語音卡、MODEM等,通過PHONE可操縱電話機、麥克風等設備。而通過媒體流則可以區分不同的媒體,如數據、語音、傳真等,從而觸發不同的處理進程。TAPI是Windows開放服務結構(WOSA)的一部分。可以與其他Windows API有機的結合起來,建造靈活、強大的應用。但是,雖然倚著強大的微軟,借著Windows廣泛用戶基礎,TAPI 2.x以前的版本并沒有表現出超出其他電話編程接口的、更突出的特性。正是隨著Windows 2000的發布,隨著CTI產業的蓬勃發展,擁有了更出色特性的TAPI 3.0終于引起了廣泛注目。

圖-1微軟TAPI
二、微軟TAPI3.0 特性
微軟的TAPI3.0(The Microsoft® Windows® Telephony Application Programming Interface)正是一種適應IP技術發展而出現的一種接口函數,它能夠支持傳統的PSTN電話和IP電話兩種電話,為用戶提供了一個良好的開發環境。TAPI 將傳統電話與 IP 電話合并于單一的公用接口中。TAPI 不僅提供傳統的電話服務提供程序,而且還提供 H.323 會議和 IP 多播會議。這可以在網絡上提供多媒體交流(例如語音、視頻和數據)并允許各組之間進行高效率地交流。
微軟的TAPI3.0提供了一個簡單和基本的方法,來完成兩臺或多臺計算機連接的建立和傳輸媒體的訪問。它將呼叫控制的功能抽象出來,以屏蔽不同的、不兼容的通訊協議,為應用程序提供一個統一的接口TAPI,目前它的第三版本:TAPI3.0。
IP電話保持穩步增長,許多企業和組織開始從昂貴的、不靈活的、電路交換的公用電話網向智能的、靈活的、廉價的IP網絡轉變。微軟預期到該趨勢,因此建立起強大的計算機電話體系結構 3.0適合于快速方便地IP電話應用程序的開發。

圖-2 TAPI 應用體系結構
三、TAPI 3.0開發設計
微軟的TAPI3.0集成了傳統電話的媒體流控制功能。另外,將原來的TAPI2.1發展為COM組件模式,允許TAPI應用程序以任何一種語言來寫,如C/C++或微軟的VB。
除了支持傳統電話的功能外,微軟的TAPI3.0還支持標準的H.323會議和IP廣播會議,微軟的TAPI3.0還提供Qos質量保證,從而提高會議質量和網絡的管理能力。
1.基于COM組件模型的TAPI3 的開發設計結構
TAPI3.0 設計開發示意結構如下:從上面可以看到,TAPI 3.0由四個主要構件組成:

圖-3 TAPI3 設計開發示意結構
■TAPI 3.0 COM API
■TAPI Server
■Telephony Service Providers (TSP)
■Media Stream Providers (MSP)
TAPI Server是從TAPI 3.0和TAPI 2.1中把TSPI(Telephony Service Providers Interface)抽取出來,是為了使TAPI 3.0能夠使用TAPI 2.1 的TSP。
TSP和MSP構成Service Providers。它們當然要一起出現,TSP為呼叫控制(Call Control)服務,而MSP為媒體控制(Media Control)服務。
Telephony Service Providers(TSP)接受來自TAPI的與協議無關的呼叫,并把它們轉換為相關協議的呼叫。在TAPI 3.0中綁定了兩個IP相關的TSP:H.323 TSP,和IP Multicast Conferencing TSP(IP多點傳送會議TSP)。
Media Service Providers(MSP)提供了一個一致的接口來處理呼叫中的各種媒體流。
TAPI 3.0包含三個控制接口,提供給開發者使用:
■Call and Media Controls(呼叫和媒體)
■Call Center Controls(呼叫中心)
■Multicast Conferencing(多點會議)
Call and Media Controls由一系列COM對象、接口和方法構成,用以建立兩臺或多臺計算機之間的呼叫。其中包括五個主要的對象TAPI、Address、Terminal、Call、和CallHub。
TAPI對象代表了所有Telephony資源。TAPI 3.0應用必須首先創建一個TAPI對象的實例,然后對它初始化。
Address對象定義了一個能建立和接受呼叫的實體。通過這個實體,應用程序可以查詢指定的地址是否支持某種特定的媒體類型;可以列舉當前與某地址關聯的呼叫;可以創建一個轉移呼叫等等。
Terminal對象定義了一個媒體流的發起者或接受者,比如麥克風或揚聲器。應用程序選擇適當的Terminal來開始媒體流的傳送。
Call對象定義了兩個或多個地址之間的連接。Call對象可以想象成電話的主控模式。所有的呼叫控制都要通過Call對象。在CallHub中的每一個成員就是一個Call對象。
CallHub對象定義了一個在多方呼叫中的集合體。如果擁有必須的權限,通過CallHub對象可以控制呼叫中的其他參與者。CallHub對象不能直接由應用程序創建。它是當有呼叫通過TAPI3.0接入時間接建立的。通過CallHub對象用戶可以解析出在一個呼叫或會議中的其他參與者,可以對其他相關的遠程Call對象進行呼叫控制。
Call Center Controls提供一組對象,幫助開發者建立呼叫中心。利用Call Center Controls可以實現預撥號、呼叫隊列和路有管理、排隊機、座席控制等呼叫中心的核心功能。
IP Multicast Conferencing Controls允許開發者創建多媒體多點IP會議系統,它由三個主要部分來實現:Directory Controls操縱服務器會議列表;Conference Blob Controls控制指定會議;Multicast COM Interfaces允許應用程序從服務器上獲得多點傳送地址。
2、如何使用TAPI對象
用TAPI能夠比較方便地執行一個呼叫和作一個呼叫應答,它給編程者帶來了很大的方便。下面是執行一個呼叫和呼叫應答的大體過程。
2.1執行一個呼叫
(1) 創建和初始化一個TAPI對象
(2) 用TAPI對象解析在一個計算機上的可用地址
(3) 解析每一個地址對象所支持的地址類型
(4) 選擇一個地址對象
(5) 用Address對象中的CreateCall方法創建一個Call對象
(6) 選擇Call對象的適當終端
(7) 用Call對象的Connect方法執行一次呼叫
2.2呼叫應答
(1) 創建和初始化一個TAPI對象
(2) 用TAPI對象解析在一個計算機上的可用地址
(3) 解析每一個地址對象所支持的地址類型
(4) 選擇一個地址對象
(5) 根據不同的媒體類型用適當的Address對象來登記
(6) 用一個Address對象登記呼叫事件句柄
(7) TAPI通過ITCallNotification通知一個呼叫,并創建一個Call對象
(8) 選擇Call對象的適當終端
(9) 用Call對象的Connect方法執行呼叫
(10)用Call對象的Answer方法執行應答
四、 Office CTI 設計
不少的企業或組織常常需要配置不同的網絡來滿足不同的需要,例如語音、數據和視頻傳輸都采用不同的網絡結構。每一個都有不同的要求,這些網絡從安裝、維護到配置,費用都很昂貴。而且由于這些網絡物理上的不同,集成也很困難,同時限制了它們的很多潛在用途。因此很有必要建立“Office CTI”,即數字辦公平臺。
微軟的TAPI3.0將呼叫控制的功能抽象出來,以屏蔽不同的、不兼容的通訊協議,為應用程序提供一個統一的接口,因此構建基于TAPI3.0的Office CTI,它通過IP 傳輸方式將語音、視頻和數據集成在一起,有效地將三網合一,降低了費用,提高了管理效率和工作效率。可見Office CTI將是一個能提供包括電話、實時文檔征集、遠程教育、員工培訓和視頻會議,以及視頻郵件等綜合服務的數字辦公平臺。

圖-4 Office CTI (企業數字辦公平臺)示例
五、 結束語
TAPI 3.0自從開始露面就引起人們的廣泛關注,而設備供應商也表現出極大的興趣;隨著Win2K、XP系列的廣泛應用,CTI產業為擁有了更出色特性的TAPI 3.0終于引起了廣泛注目,基于TAPI 3.0所開發的數字服務平臺將以其優異的性能價格比和極大的擴展空間,得到越來越多用戶的青睞。
參考文獻:
[1]Microsoft.MSDN 2004. Microsoft Corporation,2004.
[2] [美]Anthony Jones, Jim Ohlund 編著.楊合慶 譯.Microsoft Windows 網絡編程(第二版).北京:清華大學出版社,2002.
[3] [美] Nabajgoti Barkakati.Visual C++ 開發指南. 北京:電子工業出版社,2002.