我正在尝试使用 Asterisk 设置 IVR,或者更具体地说是自动话务员。除了简单的自动菜单系统之外,我不需要任何花哨的东西,并且不需要拨打分机号(目前),只需按 1 即可拨打同一电话线(POTS),按 2 即可播放录音。运行 Asterisk 和 IVR 的服务器将位于远离实际固定电话的位置。
目标:客户拨打固定电话。远程服务器接听电话并处理自动菜单系统。根据选择,响应:(按 1)拨打同一固定电话,(按 2)播放录音。
以下是我的问题:
- 这个设置可行吗?
- 我需要注册一个IAX VOIP 提供商?(不会拨打/接听 VOIP 电话)只会拨打普通 POTS 电话。(可能固定电话在美国境外)
- 我需要什么硬件?远程服务器端和客户端(POTS 固定电话)
如有任何评论我将不胜感激。
谢谢
答案1
您对要求的解释有点令人困惑,但如果我理解正确的话,是的,这可以很容易地完成。一个问题是,如果您只有一条 POTS 线路连接到星号服务器,那么您一次只能拨打/接听一个电话。在这种情况下,您需要接受用户的输入(1 或 2),然后如果他们按了“1”,则挂断电话,然后再拨回同一条线路。显然,如果您将其他 POTS 线路连接到服务器或使用 IAX/SIP 进行呼叫,这个问题就会消失。
不,如果您不打算使用 VoIP 呼叫传输,则无需注册 IAX 提供商。
就硬件而言,您需要一台服务器(服务器的质量取决于您的冗余/正常运行时间要求)。在这种用例(一次接听一个电话)中,性能当然不是一个因素。任何旧盒子都可以。您还需要一个 FXO 适配器 - 它可以采用 Digium/Sangoma/etc 的 PCI 卡形式,也可以是执行从 POTS 到 SIP 转换的外部 ATA。我想另一个选择是使用 Xorcom 频道库 - 它们通过 USB 连接到您的服务器。
答案2
这是一个非常简单的例子,说明如何在拨号计划中实现它......
[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()
这不考虑无效输入(如果呼叫者按 5 会怎样?),但应该可以帮助您入门。要拨出 POTS,您要么需要 TDM 或模拟卡和 T1 或固定电话(分别),要么需要 IAX 或 SIP 提供商,以便您可以将呼叫路由到外拨。