首页 / 知识

关于ruby:用于IVR的Asterisk AGI框架;格斗替代品?

2023-04-17 11:19:00

关于ruby:用于IVR的Asterisk AGI框架;格斗替代品?

Asterisk AGI framework for IVR; Adhearsion alternative?

我正在尝试开始使用Asterisk和Ruby编写可伸缩的电信级应用程序。我原本打算为此使用Adhearsion框架,但它没有所需的成熟度,并且严重缺乏其文档资料。 AsteriskRuby似乎是一个不错的选择,因为它有据可查并且由Vonage编写。

有人在部署基于AGI的IVR应用程序方面有经验吗?您使用了什么框架(如果有)?如果有理由,我什至会考虑使用非Ruby。谢谢!


SipX确实是错误的答案。我已经在SipX 3.10.2上编写了一些极其复杂的VoiceXML,并且自从SipX 4删除了要求将IVR编译为JAR的接口的SipXVXML以来,一切都变得毫无意义。最重要的是,北电申请破产,开源版本的文档非常差,对VXML 2.0(自3.10.2起)和SIP标准(自3.10.2起)的依从性差,不能很好地适应ITSP。我将为执行PBX而做的专为bangup的工作而称赞。但是作为IVR,如果我要再做一次,我会做一些不同的事情。我不知道该怎么办,但有所不同。我现在正在玩Trixbox CE,并且正在尝试将其绑定到JVoiceXML或VoiceGlue。

此外,请不要阅读SipX Wiki的废话。它将SipX 3.10与AsteriskNOW 1与Trixbox 1进行比较。这就像将Mac OS X与Win95进行比较!更为现实的比较是将SipX 4(将于2009年第一季度到期)与Asterisk 1.6和Trixbox 2.6进行比较,这表明它们在可扩展性和高可用性领域中取得了几乎相同的结果。 SipX胜出。但是,为了成熟和稳定,我建议使用Asterisk。

此外,我在SipXVXML上的真实表现是:
Dell PowerEdge R200,至强双核3.2GHz,可处理17次抖动前的呼叫。
HP DL380 G4,双核Xeon HT 3.2 GHz,在长时间停顿之前可以处理30个电话。

我将在完成对VoiceGlue和JVoiceXML的评估后发布我的发现,但我认为我将最终编写一个从AGI调用的自定义PHP,因为所有工具都是Asterisk固有的。


随着v0.8.1的发布,您应该重新访问Adhearsion,并且文档最近已经变得更好。在这里看看:

http://adhearsion.com
http://docs.adhearsion.com
http://api.adhearsion.com


如果您正在寻找"电信级"应用程序,则可能需要研究SipXecs而不是星号。它功能强大,免费且开放源代码,北电可提供商业支持。您可以通过使用ruby(或任何其他语言)的Web Services API与之交互。

有关更多信息,请参见SipXecs Wiki。该站点上有一个比较矩阵,用于将功能与AsteriskNOW和TrixBox进行比较。


对于小型应用程序,我在perl中使用Asterisk :: AGI。快速AGI也有扩展。对于较大的应用程序,例如VoIP运营商的后端,我使用类似于Java编写的OrderlyCalls(我自己的代码)的东西。尽管从Java fastagi引擎开始并将其扩展到您的需求,OrderlyCalls还是很棒的。


用PHP编写的简单而灵活的小Asterisk AGI IVR
http://freshmeat.net/projects/phpivr


再臭。在使用PHPAGI将客户端的IVR从SipX迁移到Asterisk之后,我必须说,我还没有遇到过任何其他简单而又强大的体系结构。今天,我将在与之前测试SipX相同的硬件上对Trixbox CE 2.8进行压力??测试。但是我必须说,将PHPAGI用于IVR和将Asterisk CLI用于调试非常有效,这使我开发IVR的速度远远超过了其他公司。我今天正在努力实施TTS和ASR,并且会在可能的时候发布我的压力测试结果。


我已经广泛使用JAGIServer,即使它不再处于开发中,它也非常好并且易??于使用。它是FastAGI的接口,我建议您使用它而不是简单的AGI。

此框架的新版本是OrderlyCalls,它似乎具有更多功能,但是由于我不需要它们,因此我没有尝试过。

我想这一切都取决于您要使用AGI做什么;通常我有一个比较复杂的拨号计划来收集和验证所有用户输入,然后使用AGI连接到Java应用程序,该程序将读取一些变量,对其进行处理(执行操作,查询等),然后进行更多设置AGI通道上的变量并断开连接。此时,拨号计划将继续进行,具体取决于Java应用程序设置的变量的结果。

这真的非常快,因为您在Java应用程序上有一个ServerSocket,它可以接收来自AGI的传入连接,并使用新的套接字和JAGIProcessor的新实例创建一个JAGIClient(您必须编写该文件,对象,它将完成所有处理),然后在线程池中运行JAGIClient。
您的JAGIProcessor实现了processCall方法,它在其中完成所需的所有工作,并与作为参数传递的JAGIClient进行交互,以读取和设置变量或执行AGI接口允许您执行的任何操作。

因此,您一直在运行Java应用程序,它可以是简单的J2SE应用程序,也可以是容器上的EE应用程序,这无关紧要;一旦运行,它将立即非常快速地处理AGI请求,因为不必启动新的进程(与简单的AGI相比,它为每个AGI调用运行一个程序)。


我在这里,这里和这里问了一些相关的问题。我正在使用Microsoft的Speech Server,并且对了解现有的任何替代方案(尤其是开源替代方案)非常有经验。您可能会在这些问题之一的答案中找到一些不错的信息。


确实没有任何其他框架。当然,每种语言都有AGI绑定,但是就用于开发电话应用程序的成熟框架而言,我们还不存在。至少在开源世界中。


框架用于应用程序文档

最新内容

相关内容

猜你喜欢