媒体监视

当呼叫处于 连接 状态时,可以通过呼叫传输数据。 调用媒体类型指示 (数据类型,例如,其数据类型或更高级别的协议) 此媒体流。

TAPI 允许向应用程序提供有关呼叫媒体类型更改的通知。 通知指示呼叫的新媒体类型。 服务提供商决定如何做出此决定。 例如,服务提供商可以使用媒体流的信号处理来确定媒体类型,也可以依赖于分配给不同媒体流的独特振铃模式,或者依赖于带外信号协议中传递的信息元素。 与媒体类型确定的实现方式无关,应用程序只需在现有调用中通知媒体类型更改。

有关详细信息以及当前定义的 TAPI 媒体类型或模式的列表,请参阅 LINEMEDIAMODE_常量。 服务提供商可能会为高度专用的设备实现特定于提供程序的媒体类型。 有关这些信息的信息可在设备文档中找到。

TAPI 定义的媒体类型包括:

  • 未知。 呼叫的媒体类型目前未知 - 呼叫未分类。
  • 交互式语音。 在呼叫上检测到语音能量,呼叫作为交互式语音呼叫处理,在应用程序端与人员。
  • 自动语音。 在呼叫中检测到语音能量,呼叫作为语音呼叫处理,但应用程序端没有人员,例如使用应答机应用程序。
  • 数据调制解调器。 呼叫上的调制解调器会话。 当前的调制解调器协议要求被调用的工作站启动握手。 对于传入数据调制解调器调用,应用程序通常无法进行正检测。 服务提供商如何做出此决定是其选择。 例如,在接听传入呼叫后一段静默时间可以用作启发式方法,以决定这可能是数据调制解调器呼叫。
  • G3 传真。 呼叫中的组 3 传真会话。
  • G4 传真。 呼叫上的组 4 传真会话。
  • Tdd。 呼叫的媒体流使用电话设备实现聋人协议。
  • 数字数据。 未指定格式的数字数据流。
  • Teletex、Videotex、Telex、Mixed。 这些对应于同名的远程信息处理服务。
  • ADSI。 调用上的模拟显示服务接口会话。 ADSI 通过下载到电话的字母数字信息以及手机上的软按钮的使用来增强语音呼叫。

应用程序可以使用 lineMonitorMedia 在指定调用上启用或禁用媒体监视。 应用程序指定它感兴趣的监视媒体类型,启用媒体监视时,检测媒体类型更改会导致应用程序收到 LINE_MONITORMEDIA 消息通知。 此消息提供检测到媒体类型更改的调用句柄以及新媒体类型。

lineGetCallInfo 报告的呼叫的媒体类型与LINE_MONITORMEDIA消息报告的媒体类型事件之间存在区别。 呼叫的媒体类型完全由呼叫的所有者应用程序确定,不会由媒体监视事件自动更改。 一个例外是初始媒体类型确定,TAPI 动态链接库可以执行该确定来选择呼叫的第一个所有者。 人们可能会争辩说,在这种情况下,库是调用的所有者。

默认媒体类型监视针对已打开线路设备的媒体类型执行。 这使传入呼叫的媒体类型能够在根据应用程序需求将呼叫移交给应用程序之前确定。 呼叫的媒体监视范围受呼叫生存期的约束。 呼叫 断开连接空闲时,呼叫上的媒体监视立即结束。

应用程序可以通过调用 lineGetID 获取与打开的线路关联的各种设备类的设备标识符。 此函数采用行句柄、地址或调用句柄和设备类说明。 它返回与开行设备、地址或呼叫关联的给定设备类的设备的设备标识符。 如果设备类为“tapi/line”,则返回线路设备的设备标识符。 如果设备类为“mci/wave”,则 mci waveaudio 设备的设备标识符将返回 ((如果支持) ),这允许通过线路上的呼叫录制或播放音频等活动。

应用程序可以使用返回的设备标识符和相应的媒体 API 来查询设备的功能,然后打开媒体设备。 例如,如果应用程序需要使用线路作为波形设备,则必须首先调用 waveInGetDevCaps 和/或 waveOutGetDevCaps 来确定设备的波形功能。 北美中电话支持的典型波形数据格式是 8 位 m-law,每秒 8000 个样本,但波形设备驱动程序可以将此采样率和编译为其他更常见的多媒体音频格式。

为了随后使用波形 API 打开用于音频播放的线路设备,应用程序会调用 waveOutOpenwaveOutOpen 的实现特定于设备,有多种选项可用于实现此函数。