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

关于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绑定,但是就用于开发电话应用程序的成熟框架而言,我们还不存在。至少在开源世界中。


推荐阅读

    linux移动文档命令?

    linux移动文档命令?,文件,名称,系统,位置,目录,信息,命令,源文件,目标,文件

    linux命令文档下载?

    linux命令文档下载?,工具,网络,系统,工作,基础,数据,名称,管理,位置,代理,lin

    linux命令chm文档?

    linux命令chm文档?,电脑,系统,文件,首页,百度,软件,电机,管理,产品,设备,谁知

    linux中编辑文档命令?

    linux中编辑文档命令?,状态,工作,命令,电脑,信息,第一,系统,编辑,终端,文件,L

    linux常用命令文档?

    linux常用命令文档?,工作,系统,地址,管理,网络,命令,信息,目录,操作,文件,lin

    linux打开文档命令?

    linux打开文档命令?,密码,图片,系统,标准,命令,文件,终端,发行,信息,情况,Lin

    linux进入文档命令?

    linux进入文档命令?,工作,地址,图片,系统,标准,命令,信息,设备,一致,发行,Lin

    linux上传文档命令?

    linux上传文档命令?,服务,工具,密码,系统,软件,工作,电脑,综合,命令,文件,Lin

    linux如何命令建文档?

    linux如何命令建文档?,时间,名字,文件,系统,新增,命令,文件名,密码,工作,目

    linux命令打开文档?

    linux命令打开文档?,系统,软件,图片,电脑,一致,环境,名称,发行,中心,官方网

    linux剪切文档命令是?

    linux剪切文档命令是?,标准,系统,数据,文件,命令,地方,第一,位置,电子,名字,l

    linux简单的文档命令?

    linux简单的文档命令?,系统,地址,标准,工作,命令,数据,管理,时间,信息,单位,l

    linux查询文档命令?

    linux查询文档命令?,工作,地址,标准,命令,管理,信息,文件,目录,内容,终端,lin

    linux基本命令框架?

    linux基本命令框架?,系统,基础,网络,设备,管理,基础知识,环境,管理系统,概

    linux命令和应用程序?

    linux命令和应用程序?,软件,系统,环境,管理,基础,情况,位置,电脑,工具,中心,

    linux文档常用命令?

    linux文档常用命令?,系统,工作,地址,管理,命令,信息,基础,目录,常用命令,文

    linux命令文档离线版?

    linux命令文档离线版?,地址,系统,工作,标准,命令,信息,管理,文件,单位,数据,

    linux文档注释命令?

    linux文档注释命令?,地址,工作,系统,信息,标准,情况,命令,目录,注释,文件,Lin