主页   下载   购买 代理 论坛  关于我们   联系我们
| English
产品家族
语音天使
电话秘书
语音猫
支持
论坛
推荐硬件
技术园地
 
购买信息
声明
价格列表

TAPI

TAPI简介

所谓tapi,即是Telephony Application Programming Interface.是一套用来编写与电信业务相关的程序的函数.tapi是由microsoft和intel以及一些电信公司合作开发的,最早要追溯到1994年.TAPI提供了通用的方法来对付各种各样的种类繁多的硬件.包括数据,语音传真,视频等在内的多种信息都可以用tapi传输. 因此用tapi编制的程序有很强的通用性.而且不同的windows程序之间可以共享设备.

从win3.1开始到windows2000.都支持tapi.不同的tapi版本对应不同的windows版本.最早的版本是tapi1.3,随同win3.1一块发行.但是后来的windows版本都不支持tapi1.3 .win95是第一个嵌入tapi的操作系统.最初发行的时候,win95支持tapi1.4.tapi1.4中的改进并不大,最大的改进就是可以编写32位的应用程序.windows nt4.0 中首先引进了tapi2.0,tapi2.0中有许多改进,包括ACD支持和PBX特性支持.1997年,microsoft推出了TAPI2.1.这是第一个同时支持win95,win98和nt,win2000的tapi版本.请注意,在win95,98中,如果安装了TAPI2.1,TAPI2.O Service prividers可以使用.但是在windows NT中TAPI2.O Service prividers不能发挥任何作用.比如说unimodem就是TSP(TAPI SERVER PRIVIDER)的一种,是用来控制modem的.在NT中unimodem就不起作用,因此,语音功能就没有了.TAPI3.0 是win2000的一部分.据我所知,tapi3.0在win9x和nt中不能用.

什么是 TAPI Service Provider(TSP),什么是Unimodem/v

 "Service Provider" 这个术语不过是driver(驱动程序)的一个很有趣别称罢了.
一个TSP就是一个可以使TAPI应用程序和不同类型的TAPI设备沟通的驱动程序.
WIN9x和winNT中自带了一个叫做Unimodem的TSP.uni是universal(普遍) 的缩写.Unimodem
支持许许多多的各种经常用的modem.当使用其他的设备,比如说,PBX's,语音卡等设备时,
就得使用硬件厂商提供的TSP.
TSP负责把TAPI函数解释成硬件能接受的命,并且将硬件返回的事件转换
成TAPI程序能识别的形式.不同的通信设备具有不同的特性,所以不同的TSP
支持不同的TAPI函数.也有可能一种TSP支持不同类型的设备.因此根据接入的设备
不同,TSP发挥的作用也不同.比如如果你用的TSP支持来电显示,你的modem也支持
来电显示,那么windows应用程序就可以通过TAPI获得来电显示信息.同样的TSP,如果你的modem
不支持,那么就没有来电显示功能.反之,如果TSP不支持来电显示,modem支持也不行.
所以,当程序没有按期望的那样运行时,可能是您的TSP或设备不行,或者两个都不行.
tapi程序和TSP的兼容性
有三个因素:
a. 操作系统
操作系统是向前兼容的.
如果你正在使用一个只支持tapi2.0的操作系统,你的应用程序和tsp只支持tapi2.1,那么程序将不能运行.
b.TSP
当TSP被TAPI加载时,它会主动判断当前TAPI的版本,是不是它所支持的版本.
比如,一个TSP可能支持TAPI1.3至TAPI2.1,也可能只支持TAPI1.4.一个TSP只能被安装
在它所支持的环境中,比如.一个只支持TAPI2.1的TSP不能安装在TAPI1.4或TAPI2.0的环境中.
c. 应用程序本身
和TSP一样,应用程序本身也会判断TAPI版本是否与其兼容.应用程序必须找到一个TAPI版本.它必须小于
或等于操作系统支持的TAPI版本.还必须被所安装的TSP支持.

举个例子,假设一个操作系统带有TAPI2.1,安装了两个TSP.TSP1只支持TAPI2.1,TSP2支持TAPI1.3至TAPI2.1
.如果现在运行一个只支持TAPI1.4的程序,它可以使用任何一个TSP.很显然TSP2是可用的
因为TAPI1.4介于TSP所支持TAPI版本之间.TSP也可用是因为操作系统可以把TAPI1.4的调用转换成TAPI2/1的调用.
Unimodem 和UnimodemV

什么是UNIMODEM?

Unimodem是微软提供的一个TSP,它是WIN9X和WINNI的一部分.unimodem支持许许多多,各种类型的modem.Unimodem只支持TAPI中很少的一部分功能.它不能发现震铃信号并摘机应答,也不能在线路上播放或录制语音.不能检测按键.

什么是Unimodem V

Unimodem也是一个TSP,是微软1995年11月推出的.它支持Unimodem所有的功能,而且支持更多的功能,比如判断震铃,摘机应答,语音功能,收集按键.Unimodem/V支持的modem相对unimodem较少.要想知道您的猫是不是被Unimodem支持,请查看Unimodem/v的readme文件.或者联系您的modem厂商.如果您的modem没有在readme文件中列出,为了使用unimodem/v您需要一个modem厂商提供的.inf文件.您可以在http://www.microsoft.com/hwdev/modem/处下载到Unimode/v

常见TAPI问题

1为什么得到LINEERR_OPERATIONUNAVAIL
当在win95或者win95以后的版本上运行一些在tapi2.0推出以前编写的例程时,许多TAPI函数
返回LINEERR_OPERATIONUNAVAIL或其他类似的错误.这是因为在TAPI2/0中许多函数和结构已经变动了
多数开发工具编译程序时默认TAPI2.0为当前版本.
要纠正这个错误,可以在包含TAPI.H之前把#define TAPI_CURRENT_VERSION 0x00010004插入到代码中去.
这将使编译器知道TAPI1.4正在被使用.


2往外打出时为什么在电话接通前得到一个LINECALLSTATE_CONNECTED消息?

检测接通并不是件容易的事.要检测接通,设备必须能够识别回铃音,忙音的频率和它们有音和无音的持续时间以及线路噪音等.多数语音modem主要是为电话答录功能而设计的,并没有考虑到打出的情况,所以一般modem都不能判断摘机.现在有些modem能够判断摘机,但是不同型号的modem判断的准确性差别很大.
所使用的TSP也是一个关键因素.Unimodem TSP并不支持接通过程检测.Unimodem/V TSP中加入了少许的接通检测功能.当使用Unimodem/V TSP拨打一个号码后,Unimodem/V TSP总是会在拨打完毕一两秒后盲目的产生一LINECALLSTATE_CONNECTED消息.如果在发出LINECALLSTATE_CONNECTED消息之后,检测到忙音,Unimodem/V TSP会发出一个LINECALLSTATE_DISCONNECTED ,相应的dwParam2参数被设置成LINEDISCONNECTMODE_BUSY.
当使用不同的TSP,不同的硬件,你将会看到不同的结果.来自Dialogic 和 Rhetorex公司的TSP和相应的语音卡具备良好的检测性能,可以检测出忙音和接通.用于PBX(分组交换机)的TSP可以提供更多的信息,因为PBX可以完全控制电话线路.要想知道具体什么时候可以得到什么消息,可以使用一些测试程序比如TAPI Brower(见资料下载)测试相应的TSP和设备.

3.为什么我的程序不能检测对方挂机?

有许多不同的原因.这首先取决于使用的电话线路.当电话挂断后线路上将产生一个特殊的信号.在许多地方电话挂断后线路中的电流将在瞬间降低.在使用专用分组交换机的系统中,某个电话挂断时通常电流并不降低,而是产生一个忙音信号,一个数字信号,或者混合的DTMF信号.

许多老的modem不能检测到电流的降低,但是当CD线信号终止后,它们就判断通讯终止了.电话答录机,多数标准modem和其他的设备都能检测到电流的降低.
不幸的是不能检测挂机的原因经常要追朔到使用的TSP.Unimodem和Unimodem/V不能检测到线路电流的降低,即使modem本身能检测到.Unimodem/V能够检测到忙音信号,不幸的是许多地方挂机时不产生忙音信号.忙音信号多用于PBX(分组交换机系统).在这种环境下,使用Unimodem/V,在挂机时将如期望的那样得到一个LINECALLSTATE_DISCONNECTED事件.
这个问题取决于使用的硬件,线路以及TSP.要验证在使用某个线路,设备,TSP时,会不会产生 LINECALLSTATE_DISCONNECTED消息,可以用TAPI Browser测试一下.

要想知道更多关于挂机时电流降低的问题,请到 loop current vist http://www.sandman.com/loopcur.html



4:怎样用TAPI收发传真

传真是被TAPI中忽略的一个领域. 在过去几年里许多TAPI开发者要求微软为通过TAPI收发传真制定一个标准,但是微软一直没有解决这个突出的问题.这对于开发这来说 ,意味着要靠自己想办法实现传真.假设你现在正在编一个语音程序,可以在Voice Modem,PBX,Isdn等等其他的支持LINEMEDIAMODE_AUTOMATEDVOICE media mode的系统上运行.如果你想添加传真功能,由于许多TSP既支持LINEMEDIAMODE_AUTOMATEDVOICE 又支持LINEMEDIAMODE_G3FAX,你也许会指望能通过TAPI在这些系统中实现传真.但是由于TAPI里没有为传真提供API函数,你必须使用其他的API函数,所以你在一个系统中实现的传真功能没,在别的系统中就无法使用.在TAPI里最经常用到传真的是FAX MODEM,因为FAX MODEM价格便宜,普及率高.用FAX MODEM 实现传真有以下几种办法:

1全部用AT命令实现所有的发送接收任务.可以在 ITU web site.里找到关于AT命令方面的资料.

2:使用vb,vc等开发工具里带的MAPI Control调用Microsoft Fax.Microsoft Fax是Windows自带的一个程序.这个办法有很多局限.

3:使用专门的FAX Activex Control


联系我们 关于我们 苏ICP备05080947号 Copy Right:2001-2008 士邦软件 0518-86230396