计算机应用研究
APPLICATION RESERCH OF COMPUTERS
2000  Vol.17　No.1　P.33-34，52




TAPI3.0的体系结构与应用
黄求根　吴宛萍　卢强华
摘 要 在阐述TAPI接口背景的基础上，从应用的角度全面地分析了TAPI与WOSA体系的关系，TAPI3.0的层次模型，TAPI3.0的对象以及与TAPI3.0有关的ActiveX控件。
关键词 TAPI IP电话 WOSA ActiveX控件
1　引言
　　100多年前，贝尔发明了电话。在即将过去的一个世纪里，电话为人类的文明和进步作出了巨大的贡献。在本世纪的下半叶，电子计算机在军事、商业等因素的推动下，以一种超常的速度向前发展。由单机到网络，由局域网到广域网、因特网。范围越来越大，距离越来越远的网络互连，使人们很自然地想到，应该利用早已遍及世界的电话网。电话和计算机，终于殊途同归，它们的结合导致了IP电话的诞生。
　　IP电话是将语音、电视和数据合为一体，在基于IP协议(Internet Protocol)的局域网、广域网和因特网上工作的新技术。IP电话应用IETF和ITU标准使多媒体信息流能在任何使用IP协议的网络上传输，并向用户提供物理媒体和物理位置连接的机动性。IP电话通过目前已经遍及全世界的网络，连接到世界各地的个人、公司、学校以及政府机构等。IP电话的使用，不仅使得个人和团体能够降低他们利用现有的语音和广播电视服务的成本，而且能够扩展其用途，例如电视会议、应用共享、远程交换、远程办公、远程教育、人员培训、电视邮件、实时文件协作以及电视购物等。
　　当一项新技术即将出现时，用户看到的是更便捷、舒适的使用；开发商看到的则是潜在的巨大商业机会。在高科技时代，谁掌握了某项技术的标准或规范，谁就掌握了这项技术的今天和明天。英特尔和微软合作开发了在视窗平台下应用IP电话的微软视窗电话应用程序设计接口TAPI(Telephony Application Programme Interface)的规范。随着Windows平台从16位发展为32位，TAPI也逐步升级到TAPI3.0。TAPI帮助用户实现电话网与计算机网的结合，为应用程序提供了一套支持电话通讯的方法，它是视窗电话技术的核心。
2　TAPI与WOSA
　　视窗开放服务结构WOSA(Windows Open Services Architecture)旨在为程序员提供一个开发环境，使他们能避开各种硬件设备和软件环境的复杂的内在细节，以专注于自己的应用。
　　全面地讲，TAPI实际上是由TAPI和TSPI (Telephony Service Provider Interface)电话服务提供者接口两个部分所组成的。TAPI是一个为程序员提供的工具包，使他们能够为微软视窗环境下的用户开发提供个人电话的应用程序。TSPI也是一个为程序员提供的工具包，使他们能够进行后端服务的开发，以操纵来自符合TAPI规范的应用的请求，也就是说，它提供了一种连接到某一特定通信设备的方法。正因为如此，所以，TSPI也常常是由那些通信设备制造商提供的。
　　视窗电话是WOSA的组成部分之一。微软提供一个称为TAPI.DLL的动态链接库，TAPI.DLL处在TAPI和TSPI之间，TAPI被来自用户的应用程序所调用，而TSPI则被服务单元所执行。TAPI.DLL管理那些来自用户的应用程序对TAPI功能的调用，并将其发送到适当的服务单元以执行这些功能。由于TAPI.DLL具有将对某一特定通信设备的形式调用转换为对某一特定通信设备的实际调用的功能，所以，TAPI.DLL也被称为形实替换层。在WOSA体系下TAPI，TAPI.DLL以及TSPI之间的关系如图1所示。

图1　TAPI与WOSA
3　TAPI3.0的层次模型
　　TAPI3.0是基于COM(Component Object Model)的APIs，它支持传统的公共交换电话网PSTN(Public Switch Telephone Network)与IP电话的结合。
　　TAPI3.0在视窗平台上通过提供简单的方法实现机器之间的连接，从而实现IP电话。在TAPI3.0中，服务提供者接口扩充了连接到IP电话的功能。也就是说，TAPI3.0从连接层上抽象出来，因此开发应用时无需考虑是否连接到了PSTN、ISDN、程控交换机还是IP网络上。TAPI3.0支持基于H.323会议系统和多点传送会议系统的标准，利用Windows NT5.0的ActiveX目录服务以简化一个机构内部的配置。QoS(Quality-of-service)支持对电视电话会议性能以及网络易管理性的改善。通过DirectShow(MS DirectX媒体服务之一)过滤器提供对媒体流的访问。
　　TAPI3.0有关PSTN和IP的功能由三个主要部分提供：电话与媒体的控制、媒体流控制和目录控制。图2显示上述控制如何与PSTN网和IP网之间相互作用。

图2　TAPI3.0的层次结构
　　媒体流控制使用实时传输协议DirectShow过滤器，该协议要求Windows NT5.0或以上版本。由于DirectShow过滤器是Windows NT5.0的一部分，因此，不需要额外地安装。
　　用于IP会议的目录控制，要求至少有一个ILS(Internet Locator Service)或NTDS(NT Directory Service)服务器处在适当的位置。如果没有NTDS服务器，那么终端用户必须知道ILS服务器的名字，否则，就用NTDS服务器自动定位ILS服务器。
　　电话与媒体的控制是一系列简单的对象、接口和方法，用于实现机器之间的电话连接。在TAPI3.0的文本中，电话是一个不仅与PSTN电话网上的语音传送有关，而且还与传送内容的媒介能力有关的术语。
　　TAPI3.0对电话与媒体的功能进行了抽象和提炼，以使那些不同的，甚至表面上矛盾的通信协议能够共存于一个公共的应用接口之中。因为TAPI3.0是基于COM的，所以TAPI3.0的应用程序可以采用任何一种语言来写。但是，某些方法对于用VB等写的自动客户应用程序则是例外。
　　通过DirectShow，TAPI3.0实现对媒体的访问。DirectShow是一个称之为过滤器的可插入组件的标准系统，其排列结构称之为过滤器图。过滤器图管理器监视过滤器的连接，并控制媒体流的数据流程。
4　TAPI3.0的对象
　　TAPI3.0包含有4个主要的代码单元：TAPI3.0 COM对象、TAPI服务器、电话服务提供单元(TSPs)和媒体服务提供单元(MSPs)。
　　TAPI3.0的COM对象主要有以下5个：TAPI、地址、终端、电话和电话集线器，这些对象及其相关的接口如图3所示。

图3　TAPI中的对象
4.1　TAPI
　　TAPI对象是一个应用指向TAPI3.0的入口指针。一个TAPI3.0的应用必须在其初始化之前产生一个TAPI服务器对象的实例。TAPI对象给出本地计算机访问的所有电话资源，从而允许应用程序列举所有的本地和远程的地址。当系统跨越多层服务器时，远程地址可以是分布式的。
4.2　地址
　　地址对象是一个呼叫对象给出的源指针和目标指针。TAPI3.0可以从地址对象获得传输媒体和终端的支持。一个应用可以在一个地址对象上等待一个对内的呼叫对象，或者从一个地址对象产生一个对外的呼叫对象。
4.3　终端
　　所谓终端对象是一个连接的起点的交接器和终点的接收器。终端对象既可以被理解为人们交往所使用的电话或麦克风之类的硬件，也可以是一个文件或接收输入，产生输出的设备能力。终端对象允许用户选择自己所用的设备，如果需要的话，它还提供一个通用的方法对这些设备进行控制，例如选择音频或视频控制。如果某一应用不要求TAPI3.0设置这个终端，那么它可以不指定终端。但是，当电话设置为使用DirectShow，而且已经有一个或几个媒体流，那么这时唯一适当的选择是不指定终端。
4.4　呼叫
　　所谓呼叫对象是一个本地地址与一个或几个其它地址之间的地址连接。图4表示两位个人之间的通话。呼叫对象为pCallA和pCallB，而呼叫集线器对象为pCallHub。用户为A和B。

图4　用户A和用户B的通话过程
　　应当指出，所有的呼叫控制都是通过呼叫对象来完成的。我们可以将呼叫对象视为一次通话过程中出现的第一个角色。利用呼叫集线器对象CallHub，一个有安全要求的用户可以发现并潜在地控制通话过程中的其它参与者。例如，在图4中，用户A的应用利用对象pCallA实现全部的呼叫控制，而用户B的应用则利用对象pCallB实现全部的呼叫控制。用户A的应用利用呼叫集线器对象pCallHub到达对象pCallB，因此，用户A的应用能够利用对象pCallB发现有关用户B的信息。如果用户A拥有足够的授权，用户A的应用也能够从用户B的视角出发，利用对象pCallB执行呼叫控制。
4.5　呼叫集线器
　　如我们在呼叫对象中所述，所谓呼叫集线器对象，即相关呼叫的集合。一个呼叫集线器对象不能由一个应用直接产生。当一个进入的呼叫通过TAPI3.0所接收时，一个呼叫集线器对象就间接地产生了。当TAPI3.0的应用必须对呼叫过程进行监视时，可以通过两种途径实现：一是呼叫集线器将RegisterCallHubAddress方法注册到TAPI服务器，二是通过让呼叫对象将ITCallNotificationEven接口注册到地址对象。
5　与TAPI3.0有关的ActiveX控件
　　TAPI是一个比较复杂的体系，程序员直接对TAPI进行开发不会是一件轻松的工作。TAPI3.0支持ActiveX控件。除了微软提供的1,000多个可重用ActiveX控件之外，还有许多公司在开发各种专用的ActiveX控件，其中当然包括与TAPI3.0有关的ActiveX控件，如Excele tel的Teletools。在VB、VC++、DELPHI等基于组件的可视化编程环境下，程序员可以在自己的程序中直接利用这些ActiveX控件，避免了大量重复烦琐的编程，以便将主要精力用于特定的应用，从而大大缩短了应用程序的开发周期。
6　结束语
　　IP电话是一项有着十分广阔的应用前景的新技术，在微软视窗环境下，这项技术的核心是TAPI。TAPI在IP电话的应用过程中不断地得到完善和发展。在TAPI3.0中为开发人员提供了建立CTI应用所需的所有工具。TAPI3.0对ACD(自动呼叫分配)、代理、群组和路由的支持使它完全能够胜任呼叫中心应用的创建。
　　此外我们还看到，就IP电话而言，微软提供了从WOSA到TAPI，到可重用的ActiveX控件，即从操作系统到开发平台，到应用级的全面的支持，这是极具战略眼光的考虑。当我们致力于民族信息产业的振兴时，微软的成功给我们以许多启示。
黄求根（武汉纺织工学院计科系 武汉 430074）
吴宛萍（武汉纺织工学院计科系 武汉 430074）
卢强华（武汉纺织工学院计科系 武汉 430074）
参考文献
1Jim Boyce等著, 王建华等译. WINDOWS NT4.0安装与配置手册. 北京：机械工业出版社, 1998
2http://madras.npac.syr.edu/people/abba/Tapi.htm IP Telephony, 1999
3http://www.wilco-telephony.co.uk/tapi.html, The TAPI Factor, 1999
4http://technet.microsoft.com/cdonline/content/complete/boes/bo /win2ksrv/technote/tapi30.htm, IP Telephony with TAPI 3.0 (Windows Operating System), 1999 
5ExceleTel Inc. Windows Telephony Architecture, 1998
收稿日期：1999年8月23日
