简体   繁体   English

Java IVR开发

[英]IVR Development in java

I'm going to develop an on-line IVR application using Java (without PBX). 我将使用Java(无PBX)开发一个在线IVR应用程序。 In the software requirements there are some mathematical calculations and database communication which I prefer to implement on Java side. 在软件需求中,我更喜欢在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?

If you're going to do VoiceXML with Java, you should take a look at Rivr , an open-source VoiceXML dialogue engine. 如果要使用Java 编写 VoiceXML,则应查看开源的VoiceXML对话引擎Rivr

Rivr let you code your callflow naturally in the Java language. Rivr使您可以自然地用Java语言编写呼叫流程。 Thus you can reuse all the available Java tools (eg debugger, unit testing framework, coverage test tool) to develop the callflow. 因此,您可以重用所有可用的Java工具(例如调试器,单元测试框架,覆盖率测试工具)来开发调用流。 You also benefit from all your IDE features too (refactorings, source navigation, version control, etc). 您还将从所有IDE功能(重构,源导航,版本控制等)中受益。

The API is very simple. 该API非常简单。 You can code a complete callflow with a single method. 您可以使用单个方法编写完整的调用流程。 No need to define "states" or to manipulate templates or XML files. 无需定义“状态”或操作模板或XML文件。

Integration with server-side logic is trivial since you are only coding for the server side. 与服务器端逻辑的集成是微不足道的,因为您只为服务器端编码。

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. IVR应用程序开发的标准是用于对话(呼叫者交互)的VoiceXML和用于呼叫控制的CCXML。 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应用程序的人很少,因此在决定时我将重点关注应用程序的可支持性,功能和易用性。

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. 到CO(电话公司)的模拟线路可以有多种机制,通常会由您决定一种机制。 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). 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. 我通常在内部和托管配置中使用企业IVR,这些配置通常位于大型呼叫中心的前面。 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. 托管解决方案通常可以为您完成大部分工作。

I know that those are "de jure standards". 我知道这些是“法律上的标准”。 But you should also take Asterisk(with AGI/AMI) as a consideration for your project. 但是,您还应该将Asterisk(带有AGI / AMI)作为您项目的考虑因素。 If you decide to try Asterisk and Java, take a look of astivetoolkit.org it may be very helpful. 如果您决定尝试使用Asterisk和Java,请查看astivetoolkit.org,这可能会很有帮助。

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 API that could help. 如果您正在考虑构建IVR,我们有一个可以帮助您的API We just dropped some new tutorials including a non-trivial, production ready IVR application using Java . 我们刚刚删除了一些新教程,其中包括使用Java编写的,可用于生产的IVR应用程序

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM