我将使用 Java(没有 PBX)开发一个在线 IVR 应用程序。在软件需求中,我更喜欢在 Java 端实现一些数学计算和数据库通信。
如您所知,不同的技术已准备好与 Java 集成,例如 JTAPI、Zanzibar OpenIVR、Moho、VoiceXML、CCXML、Jive、Prophecy、Vocent、Voxeo 等。
现在的问题是:最好的解决方案是什么?哪一个最容易到达?哪一个效率最高?你推荐开源框架吗?是否有任何用于处理 IVR 系统的 Windows API?
如果您打算使用 Java 来做 VoiceXML,您应该看看Rivr,一个开源的 VoiceXML 对话引擎。
Rivr 让您可以用 Java 语言自然地编写您的调用流。因此,您可以重用所有可用的 Java 工具(例如调试器、单元测试框架、覆盖测试工具)来开发调用流。您还可以从所有 IDE 功能(重构、源导航、版本控制等)中受益。
API 非常简单。您可以使用单个方法编写完整的调用流。无需定义“状态”或操作模板或 XML 文件。
与服务器端逻辑的集成是微不足道的,因为您只是为服务器端编码。
这里的信息太少,无法提供直接的答案,但我会尝试为您提供一些基础知识。
IVR 应用程序开发的标准是用于对话(呼叫者交互)的 VoiceXML 和用于呼叫控制的 CCXML。后者并不常见。还有许多专有解决方案。您对开放标准与专有解决方案的选择应该更多地与供应商/解决方案锁定有关。即使使用开放标准,您也可能会使用自定义增强功能并获得一定数量的锁定,但可移植性会更容易。您可以直接对电话板进行编码(如果您是电话新手,则具有挑战性并且通常记录不充分)或使用提供端到端功能的解决方案。我发现很少有人移植 IVR 应用程序,因此我将重点关注您的应用程序的可支持性、功能和易用性。
平台选择涉及范围广泛。您有前提(现场)和托管解决方案。您主要有高端企业解决方案和低端解决方案。很少有中间立场的解决方案。功能(电话和集成功能)差异很大。
从电话的角度来看,没有什么是理所当然的。特别是转会。有很多方法可以转接电话。如何完成将受到您的连接的限制。一条通往 CO(电话公司)的模拟线路可以有多种机制,并且通常由您决定使用哪种机制。并非所有电话平台都支持您的需求。挂断检测,至少在模拟线路上,也可以抓住新手。托管解决方案通常可以让您避免大多数此类问题。由于设备之间的兼容性,VoIP 解决方案更加复杂(是的,有标准,很多标准,有很多可选部件,然后有自定义风格)。
特别是对于 Windows,您可以使用 Lync,但它很复杂……尽管您将探索的许多解决方案都会很复杂。
简而言之,没有最好的解决方案。您对技术、要求和预算的了解将推动决策。我通常在内部部署和托管配置中使用企业 IVR,这些配置通常面向大型呼叫中心。我接触过许多开源解决方案。由于系统和电话配置,内部部署的任何内容都可能很复杂。托管解决方案通常会为您完成大部分工作。
我知道这些是“法律标准”。但是您也应该将 Asterisk(使用 AGI/AMI)作为您项目的考虑因素。如果您决定尝试 Asterisk 和 Java,请查看astivetoolkit.org,它可能会很有帮助。
来自 Twilio 的 Ricky 在这里。
对我来说,为特定问题选择最好的工具是我最喜欢开发人员的任务之一。解决这个问题的一种方法是抽出一天的时间,在每个潜在的选项上花一两个小时。我通常会探讨几个问题:
我敢肯定,根据您想要探索的场景,还有很多问题(它是否符合我的预算?我可以将它与我已经了解和喜爱的技术一起使用吗?)。
如果您正在考虑构建 IVR,我们有一个API可以提供帮助。我们刚刚放弃了一些新教程,包括一个使用 Java 的非平凡的、生产就绪的 IVR 应用程序。