我试图设置一个IVR或更具体的使用Asterisk的自动助理。 除了简单的自动菜单系统之外,我不需要任何花哨的东西,而不用拨打分机(现在)只要按下同一电话线(POTS)1或按下播放录音2.服务器运行Asterisk&IVR将处于离实际陆线较远的位置。
目标:客户呼叫陆线。 远程服务器应答呼叫并处理自动菜单系统。 根据select,回应:(按1)响同一条陆线,(按2)播放录音。
这是我的问题:
任何意见将不胜感激。
谢谢
你对这些要求的解释有点混乱,但是如果我理解正确的话,是的,它可以很容易地完成。 一个问题是,如果只有一条POTS线连接到星号服务器,则一次只能拨打/接听一个电话。 在这种情况下,您需要接受来自用户的input(1或2),然后如果他们按下“1”,则在拨出相同线路之前先挂断电话。 显然,如果您将附加的POTS线路连接到服务器,或者如果使用IAX / SIP进行呼叫,问题就会消失。
不,如果您不打算使用VoIP呼叫传输,则不需要注册IAX提供商。
就硬件而言,您需要一台服务器机器(其质量取决于您的冗余/正常运行时间要求)。 在这个用例中(一次只能调用一次),性能肯定不是一个因素。 任何旧盒子都可以。 您还需要一个FXO适配器 – 这可以采取从Digium / Sangoma /等PCI卡的forms。 或者也可以是从POTS到SIP的转换的外部ATA。 我想另外一个select就是使用Xorcom渠道库 – 通过USB连接到你的服务器。
这是一个非常简单的例子,你可以如何在dialplan中实现它…
[sample-ivr] exten => s,1,Wait,1 exten => s,n,Answer exten => s,n,Set(COUNT=0) exten => s,n,Wait,1 ; Give Caller ID some time exten => s,n(greet),Playback(thank-you-for-calling) ; "Thank you for calling" exten => s,n,Read(RESPONSE|mainline-ivr-recording|1
3) ; Custom IVR Recording "Press 1 for X, Press 2 for Y…" exten => s,n,Goto(s-${RESPONSE}|1) ; Read the callers response exten => s,n,Goto(s,greet) exten => s-,1,Set(COUNT=$[ ${COUNT} + 1 ]) ; If caller fails to enter a response, then COUNT + 1 exten => s-,n,GotoIf($[ ${COUNT} = 2 ]?s-,bye:s,greet) exten => s-,n(bye),Playback(goodbye) exten => s-,n,Hangup() ; If they press 1 exten => s-1,1,Wait(0.5) exten => s-1,n,Dial(DAHDI/G1/5551212) exten => s-1,n,Hangup() ; If they press 2 exten => s-2,1,Wait(0.5) exten => s-2,n,Playback(lots-o-monkeys) exten => s-2,n,Playback(goodbye) exten => s-2,n,Hangup()
这不包括无效的input(如果主叫方按5?),但应该让你开始。 要拨出POTS,您需要TDM或模拟卡以及T1或固定电话(分别),或IAX或SIP提供商,允许您将呼叫路由出站。