SIP 替代 TAPI?

SIP alternative to TAPI?

我们在基于 java 的客户端中使用 TAPI 技术 连接到 PBX 硬件 以使用 CTI 操作(开始通话、处理接听电话等)。 要连接到 TAPI,我们使用 gjtapi 项目。我们从我们的客户端 gui 开始调用,我们可以监视事件,我们在连接到客户端的 telephone 设备上看到事件。

作为替代方案,我尝试了 SIP 协议,我们也可以开始通话,但是当我们使用 SIP 协议连接时,telephone 设备被绕过,我们在设备上看不到任何东西。例如,当使用 TAPI 并且我们接到电话时,我们会在 phone 和我们的图形用户界面上看到来电,它们是同步工作的。但是当我使用 SIP 连接并接听电话时,telephone 设备上没有任何反应。那是错误的 setting/implementation 还是 SIP 的行为,它提供了某种软 phone?

TAPI 是第 3 方技术:意味着您的应用程序不执行 "work",它会向 PBX 发送命令以代表您执行 "work"。

在 SIP 中,你必须自己做所有事情:你可以设置一个到某个地方的呼叫,但你在告诉其他事情要做什么方面非常有限。

您可以从 SIP 中获得与 TAPI 类似的功能,但涉及的内容要多得多。你需要把你自己作为"man-in-the-middle"。例如,您希望从设备向外部呼叫:

  • 首先(从您的应用程序)调用设备
  • 第二次调用(从您的应用程序)到外部方
  • 第三次连接两端

但是,如果您之后想要类似 TAPI 的控制,则需要保留您的应用程序 "in the loop"。 SIP 只能控制您直接参与的内容。这意味着您需要:

  • 长号通话(音频通过您的应用)
  • 使用媒体旁路(音频在 2 方之间传输)但您保持信号

这也可能很危险,因为这意味着您的应用 "in between" 所有呼叫:这意味着如果它崩溃,所有呼叫都会丢失!

我建议您不要低估让这样的东西正常工作所需的工作量。还有其他替代方案,如 CSTA,许多 PBX 支持他们自己的专有接口来实现这种控制。但在我看来,TAPI 可能是第 3 方呼叫控制的更好选择(特别是如果你想支持超过 1 个 PBX 供应商)

您可以结合使用 SIP 和 TAPI,而不必更改任何代码。例如,您可以像现在一样为您的 PBX 使用 TSP(电话服务提供商),并且很可能会处理您需要的一切。但是,您也可以通过 SIP 连接到 PBX。调用的控制方式存在技术差异,但最终结果基本相同。您还可以绕过 PBX 并使用任何 SIP 中继或 PBX 公开的 SIP 中继。要使用 SIP,您可以使用我们的 SIP 通信服务器软件之类的软件,它是 TAPI 和 SIP 之间的桥梁。该选项允许您使用所有现有 TAPI 代码来处理 SIP。免责声明:我为 ExceleTel 工作,该公司制造和销售 TAPI/SIP 组件和解决方案。