【发布时间】:2012-06-17 15:20:19
【问题描述】:
我正在用星号设置 DISA。 我想做的是在星号接收 DTMF 时向呼叫者播放音乐。 当接收到“#”的 DTMF 时,DTMF 将停止播放
我尝试过使用 background() 和回放() 命令,但它们没有达到目的!
有什么想法吗?
汗
【问题讨论】:
我正在用星号设置 DISA。 我想做的是在星号接收 DTMF 时向呼叫者播放音乐。 当接收到“#”的 DTMF 时,DTMF 将停止播放
我尝试过使用 background() 和回放() 命令,但它们没有达到目的!
有什么想法吗?
汗
【问题讨论】:
您可以尝试使用phpagi。有一个叫做 fastpass_get_data 的函数,可以在播放声音的同时获取 dtmf 输入。
http://phpagi.sourceforge.net/phpagi22/api-docs/phpAGI/AGI.html#fastpass_get_data
【讨论】:
我假设仅使用内置 DISA 应用程序不能满足您的需求。如果是,就使用它。
对星号进行编程有不同的方法。您可以使用普通的拨号方案、ael 拨号方案、AGI、AMI,甚至可以用 C 编写自己的模块。
您可以在拨号方案中做更多的事情,但通常通过 AGI 使用真实语言会导致代码更具可读性。
使用拨号方案应用程序 StartMusicOnHold、StopMusicOnHold 以及 Read 或 WaitExten,您应该能够做您想做的事。运行 asterisk -rx 'core show application StartMusicOnHold' 等,以了解其中的每一个。
您基本上想运行 StartMusicOnHold,然后使用 Read 或 WaitExten 收集数字直到完成(可能将它们收集到一个通道变量中),然后运行 StopMusicOnHold。
【讨论】: