java java中的IVR开发
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/17692504/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
IVR Development in java
提问by Amin Shahnazari
I'm going to develop an on-line IVR application using Java (without PBX). In the software requirements there are some mathematical calculations and database communication which I prefer to implement on Java side.
我将使用 Java(不带 PBX)开发一个在线 IVR 应用程序。在软件需求中,我更喜欢在 Java 端实现一些数学计算和数据库通信。
As you know, different technologies are ready to integrate with Java, such as JTAPI, Zanzibar OpenIVR, Moho, VoiceXML, CCXML, Jive, Prophecy, Voicent, Voxeo etc.
如您所知,不同的技术已准备好与 Java 集成,例如 JTAPI、Zanzibar OpenIVR、Moho、VoiceXML、CCXML、Jive、Prophecy、Voicent、Voxeo 等。
Now the question is: What is the best solution? Which one is easiest to reach? Which one have the best efficiency? Do you recommend Open Source frameworks? Is there any Windows API for handling IVR systems?
现在的问题是:最好的解决方案是什么?哪一个最容易到达?哪个效率最高?你推荐开源框架吗?是否有任何用于处理 IVR 系统的 Windows API?
回答by gawi
If you're going to do VoiceXML with Java, you should take a look at Rivr, an open-source VoiceXML dialogue engine.
如果您打算使用 Java 进行 VoiceXML,您应该看看Rivr,一个开源的 VoiceXML 对话引擎。
Rivr let you code your callflow naturally in the Java language. Thus you can reuse all the available Java tools (e.g. debugger, unit testing framework, coverage test tool) to develop the callflow. You also benefit from all your IDE features too (refactorings, source navigation, version control, etc).
Rivr 让您可以用 Java 语言自然地编写调用流。因此,您可以重用所有可用的 Java 工具(例如调试器、单元测试框架、覆盖测试工具)来开发调用流。您还可以从所有 IDE 功能中受益(重构、源代码导航、版本控制等)。
The API is very simple. You can code a complete callflow with a single method. No need to define "states" or to manipulate templates or XML files.
API 非常简单。您可以使用单个方法编写完整的调用流程。无需定义“状态”或操作模板或 XML 文件。
Integration with server-side logic is trivial since you are only coding for the server side.
与服务器端逻辑的集成是微不足道的,因为您只是在为服务器端编码。
回答by Jim Rush
There is far too little information here to provide a direct answer, but I'll try to give you some basics.
这里的信息太少,无法提供直接的答案,但我会尽力为您提供一些基础知识。
The standards for IVR application development is VoiceXML for dialog (caller interaction) and CCXML for call control. The latter is not as commonly available. There are also numerous proprietary solutions. Your choice of an open standard versus a proprietary solution should be more about vendor/solution lock in. Even with the open standards, you'll likely use custom enhancements and have some amount of lock in, but portability will be easier. You can code directly to the telephony boards (challenging and usually poorly documented if you are someone new to telephony) or work with solutions that provide end to end capability. I find very few people porting IVR applications so I would focus on supportability of your application, features and ease of use in your decision.
IVR 应用程序开发的标准是用于对话(呼叫者交互)的 VoiceXML 和用于呼叫控制的 CCXML。后者并不常见。还有许多专有解决方案。您对开放标准与专有解决方案的选择应该更多地与供应商/解决方案锁定有关。即使使用开放标准,您也可能会使用自定义增强功能并有一定程度的锁定,但可移植性会更容易。您可以直接编码到电话板(如果您是电话新手,这将具有挑战性并且通常记录不佳)或使用提供端到端功能的解决方案。我发现很少有人移植 IVR 应用程序,因此我将重点关注您的应用程序的可支持性、功能和易用性,以便您做出决定。
Platform choices run the spectrum. You have premise (onsite) and hosted solutions. You mostly have high end enterprise solutions and low end solutions. There are very few middle ground solutions. Features (telephony and integration capabilities) vary dramatically.
平台选择涉及范围广泛。您拥有前提(现场)和托管解决方案。您大多拥有高端企业解决方案和低端解决方案。很少有中间立场的解决方案。功能(电话和集成功能)差异很大。
From a telephony perspective, take nothing for granted. In particular, transfers. There are many ways to transfer a call. How it is done will be constrained by your connection. An analog line to the CO (phone company) can have multiple mechanisms and the one in place will typically be dictated to you. Not all telephony platforms will support what you need. Hangup detection, at least on analog lines, can also catch the novice out. Hosted solutions will typically allow you to avoid most of these problems. VoIP solutions are even more complicated due to compatibility between devices (yes there are standards, lots of them, with lots of optional parts and then there are custom flavors).
从电话的角度来看,没有什么是理所当然的。尤其是转会。有多种方法可以转移呼叫。如何完成将受您的连接限制。连接到 CO(电话公司)的模拟线路可以有多种机制,其中一个通常由您决定。并非所有电话平台都支持您的需求。挂断检测,至少在模拟线路上,也可以让新手脱颖而出。托管解决方案通常可以让您避免大多数这些问题。由于设备之间的兼容性,VoIP 解决方案更加复杂(是的,有标准,很多,有很多可选部分,然后有自定义风格)。
For windows specifically, you can use Lync, but it is complicated...though many of the solutions you will explore will be complicated.
特别是对于 Windows,您可以使用 Lync,但它很复杂……尽管您将探索的许多解决方案都很复杂。
In short, there is no best solution. Your knowledge of the technologies, requirements and budget are going to drive the decision. I've generally worked with enterprise IVRs in on premise and hosted configurations that are typically fronting large call centers. I have come in contact with many of the open source solutions. Anything on premise is likely to be complicated because of the system and telephony configuration. Hosted solutions have typically done most of that for you.
简而言之,没有最好的解决方案。您对技术、要求和预算的了解将推动决策。我通常与企业 IVR 一起工作在通常面向大型呼叫中心的内部和托管配置中。我接触过很多开源解决方案。由于系统和电话配置,任何内部部署都可能变得复杂。托管解决方案通常为您完成了大部分工作。
回答by Pedro Sanders
I know that those are "de jure standards". But you should also take Asterisk(with AGI/AMI) as a consideration for your project. If you decide to try Asterisk and Java, take a look of astivetoolkit.orgit may be very helpful.
我知道这些是“法律上的标准”。但是您也应该将 Asterisk(带有 AGI/AMI)作为您项目的考虑因素。如果您决定尝试 Asterisk 和 Java,请查看astivetoolkit.org,它可能会很有帮助。
回答by rickyrobinett
Ricky from Twilio here.
来自 Twilio 的 Ricky。
For me, picking the best tool for a particular problem is one of my favorite tasks a developer. One technique to figuring this out is blocking off a day and spending an hour or two with each potential option. A few question I'll typically explore:
对我来说,为特定问题选择最佳工具是我作为开发人员最喜欢的任务之一。解决这个问题的一种方法是安排一天的时间,并在每个潜在选项上花费一两个小时。我通常会探讨的几个问题:
- Which tool is the easiest to get started with?
- Which tool has the best documentation?
- Which tool has an engaged community that I can learn from?
- 哪个工具最容易上手?
- 哪个工具有最好的文档?
- 哪个工具有我可以学习的参与社区?
I'm sure there are a ton more questions depending on your scenario you'd want to explore (Does it fit within my budget? Can I use it with the technologies I already know and love?).
我敢肯定,根据您想要探索的场景,还有很多问题(它是否符合我的预算?我可以将它与我已经知道和喜欢的技术一起使用吗?)。
If you're looking at building an IVR, we have an APIthat could help. We just dropped some new tutorials including a non-trivial, production ready IVR application using Java.
如果您正在考虑构建 IVR,我们有一个API可以提供帮助。我们刚刚发布了一些新教程,包括使用 Java 的重要的、可用于生产的 IVR 应用程序。