我需要为朋友的公司设置一个简单的IVR系统,让呼叫者通过按电话键浏览菜单。它有点像公交车时刻表。
今天的日程安排按'1',明天的日程安排按'2'和 等等。
它只是一个信息系统,即没有导航路线会以真人结束,但只播放音频信息。
现在,我以前从未设置过这样的东西,并在Google上进行了一些挖掘。似乎我将能够使用Asterisk实现这一目标。
答案 0 :(得分:16)
这完全有可能。
您需要了解的内容:
Asterisk在H323
方面存在一些问题。如果您的提供商提供SIP
,请向他们询问SIP
。
您可以在IVR
的拨号计划中构建整个extensions.conf
,但对于复杂的任务,最好使用AGI
。这些是Perl
或Python
或任何实现您的IVR
逻辑的语言脚本。每个AGI
会话跨越子进程,如果您希望频繁连接,请使用FastAGI
和网络守护进程。
多个并发呼叫不是问题,我在一台简单的PC上安装Asterisk会处理数百个同时呼叫。
可能真正影响效果的唯一因素是声音转换和音调检测。
要提高效果,您应该:
坚持使用一个编解码器(我使用µLaw
),强制所有SIP
连接使用该编解码器,并使用sox -t ul
将所有声音文件预转换为它。一旦你完成它,所有Asterisk操作都等于从磁盘读取文件字节并通过网络发送它们只需基本包装。没有数学,除了简单的read-wrap-send操作之外什么都没有。
要求您的提供商检测他身边的音调并使用RFC 2833
将其发送给您带外。音调检测是一项耗费CPU的操作,让他们自己动手。
我个人在2,66 MHz Celeron IV
上使用2048 MB RAM
在Fedora 10 X86_64
下运行Asterisk。 150个连接一次正常工作,没有延迟。
每个连接的总流量约为9.6 KByte/sec
。对于现代VPS,应该没有任何问题。
答案 1 :(得分:2)
星号岩石。对于几行,简单的P3或更好的将做。不要虚拟化PBX; Asterisk依赖于非常精确的计时。
FreePBX使得设置IVR非常容易 - 获得了一个不错的基于网络的前端,并支持一些很酷的Asterisk工具。
编辑:FreePBX不是Asterisk - 它是一个漂亮的界面,为您生成配置。如果你想要一个简单的瞄准和射击解决方案,Trixbox默认包含它。如果您的VoIP帐户支持多个传入线路,那么Asterisk会很好地使用它们。您还需要足够的Internet带宽和良好的QoS。对于业务系统中的多行,我会坚持使用专用连接,这样当用户访问网络时您就不会遇到丢失。
答案 2 :(得分:2)
构建IVR应用程序的最佳方法是使用W3C.org设计的VoiceXML(http://www.w3.org/TR/voicexml21/)。 Asterisk并没有配备VoiceXML浏览器,但有些公司为Asterisk提供软件,如SoftSyl Technologies(http://www.softsyl.com)。
Cisco和Avaya等公司也提供VoiceXML浏览器,但不适用于Asterisk。
答案 3 :(得分:2)
如果你是新鲜的,我会建议学习FreeSWITCH而不是Asterisk。结构更好,还附带一些预先构建的示例,包括IVR菜单,IVR语法非常简单:http://wiki.freeswitch.org/wiki/IVR_Menu
我正在Xen虚拟服务器上运行FreeSWITCH实例,它可以在多个同时调用的情况下完美运行。
答案 4 :(得分:1)
您可以在拨号计划中执行此操作...
[menu-main]
exten => s,1,Noop()
exten => s,n(msg),Background(ForTodayPress1TomorrPress2)
exten => s,1,Goto(menu-today)
exten => s,2,Goto(menu-tomorrow)
exten => i,1,Playback(invalid)
exten => i,n,Goto(msg)
exten => t,1,Goto(msg)
[menu-today]
etc...
[menu-tomorrow]
etc...
或者正如其他人建议您可以使用任何可以写入stdin并从stdout读取的语言来执行此操作。 phpagi实现是我特别喜欢的味道。它可能适合这个例子,因为PHP在一个单独的盒子上运行,所以它不会在任何负载下影响PBX。
[menu-main]
exten => s,1,Noop()
exten => s,n(msg),Background(ForTodayPress1TomorrPress2)
exten => s,1,Goto(menu-today,s,1)
exten => s,2,Goto(menu-tomorrow,s,1)
exten => i,1,Playback(invalid)
exten => i,n,Goto(msg)
exten => t,1,Goto(msg)
[menu-today]
exten => s,1,Noop()
exten => s,n,agi(http://myapache/agi/readschedule.php)
exten => s,n,Hangup()
答案 5 :(得分:1)
对于更复杂的IVR,您可以尝试Astive Toolkit,特别是如果您需要数据库或Web服务迭代。
答案 6 :(得分:1)
Asterisk中的IVR设计并不困难,但是有一个“学习悬崖”与启动和运行第一台Asterisk服务器有关。
正如其他人所说,通话质量就是一切。支付您的IVR提示和公告的专业级录音。确保您使用的是64k代码,例如uLaw和aLaw; GSM(手机)可能在带宽上很便宜,但它打破了客户对质量的期望。
我强烈建议您将IVR放入其自己的拨号计划上下文中,然后将其直接调用。这样可以更轻松地管理菜单选项等内容。对于每个选项子集,请使用不同的拨号计划上下文。
尝试将菜单设置为“浅”。如果需要三个以上的菜单选项来获取客户所需的信息,他们很可能会挂断,或者只需按“0”即可与人交谈。这违背了你的IVR。
如果您打算使用数据库查找或帐户身份验证等做一些相当酷的事情,我建议使用“AGI” - Asterisk Gateway Interface - 应用程序。我个人最喜欢的是“Adhearsion”,它与DB / Web端的Ruby / Rails很好地融合。
如果您需要帮助或了解更多信息,请与我们联系。
答案 7 :(得分:0)
我过去曾使用过IVR,但主要是使用大型系统而且从未使用过Asterisk。我快速浏览了一下他们的网站(http://www.asterisk.org/),看起来非常有用,你在那里查了一下吗?
答案 8 :(得分:0)
它与编程无关,但......
看看trixbox.org,它支持从思科到snom手机的配置 它的Asterisk / Freepbx mod以及一个不错的ui下的一切!
我在澳大利亚有一家提供商将它们添加为gsm主干,花了3个小时来设置4部电话。支持IVR
唯一的问题可能是......录音的语音质量
答案 9 :(得分:0)
非常简单。我正在使用sipgate.de作为我的星号的提供者。 你需要设置一个拨号方案。
这也很简单。看看here。 你也可以看一下extensions.conf。 里面有一些样品。 这也是适合您的问题的样本。 要连接到sipgate,请查看他们的知识库。 有一些星号配置的样本。
sipgate是免费的,除了你正在拨打电话。
答案 10 :(得分:0)
如果您想设置Asterisk IVR,您还可以使用一些拖放式基于Web的工具,以便制作简单的自动助理(如您的示例中)或复杂的IVR(管理脚本或数据库驱动的IVR)。 一个选项是 Cally Square 。看看这里: http://www.callysquare.com/