我正在开发一个应用程序,允许用户使用他们的手机访问他们的邮箱。 我开发了一个IVR菜单,用户可以使用它来检索邮件。更具体地说,我在perl中编写了一个AGI来检索邮件。问题是AGI执行需要相当长的时间。为此,我需要让我的用户在执行agi时听到背景中播放的一些音乐。也就是说,我需要在我的拨号方案中同时执行“AGI”和“MusicOnHold”应用程序。任何线索我怎么能实现这一目标?
答案 0 :(得分:1)
这可能不是您期望的答案,但如果您计划通过电话创建适当的应用程序,请查看除星号之外的其他解决方案。 yate和(据我所知 - 从未尝试过任何严肃的事情)freeswitch实现了一个更加异步的接口,你可以将来电连接到你想要的任何声源而不会失去对它的控制。对于高级应用程序,它们可能是更好的选择。
Asterisk对于简单的逻辑来说很酷,但是如果你需要在后台进行一些处理并且在某种状态下将呼叫留在一个未定义的时间,那么它就很难管理。
答案 1 :(得分:1)
您可以从SET MUSIC ON
个应用程序发出AGI
,处理您的计算,然后发出SET MUSIC OFF
。
如果您希望音乐可以中断,请发出以下信息:
CONTROL STREAM FILE <filename> "0123456789*#" "0" "" "" ""
第二个参数是能够中断音乐的数字列表。
最好不要混用AGI
和dialplan命令。
AGI
能够满足拨号方案的所有功能,但AGI
以完整的编程语言实现,因此可以让您更好地控制执行逻辑。
答案 2 :(得分:0)
完整的执行需要很长时间,还是只是启动应用程序?如果整个执行时间太长,那么你可以做Quassnoi所说的,一旦AGI程序启动就开始播放音乐。
如果启动时间是问题,那么您可能需要使用FastAGI实现某些功能,以便您的应用程序始终运行并通过套接字侦听连接。在有大量AGI呼叫的环境中,性能要好得多。