在AGI文件中的MOH期间获取DTMF

问题描述 投票:0回答:1

我有 asterisk 13.21.0 并开发了一个基于 perl 的 agi。我正在尝试使用 agi 中的 EXEC() 函数执行带有“m”选项的 WaitExten 应用程序。 例如。 $AGI->exec("WaitExten","2,m(默认)"); 上面的代码在 while 循环中,我不断检查呼叫者是否输入了任何 DTMF。它工作正常,但问题是每次执行上述行时音频都会中断。因此,它播放的不是连续的 moh,而是中间有 1 秒的暂停。

如何摆脱这个问题?在继续 MOH 的同时,还有其他替代方法可以在 AGI 中收听 DTMF 吗? 任何帮助将不胜感激。 谢谢你。

asterisk agi
1个回答
0
投票

如果启用莫赫序列,只有两种方式获取 DTMF。

  1. 是通过featuremap/application map,会发出一些应用,很难在AGI中实现。
  2. 是通过 waitexten,它将转到扩展,因此根本无法在 AGI 中使用。

但是,只需将 moh 文件直接提供给读取或后台应用程序,您就可以实现类似的行为。

AGI 不适合用户后台/等待,因此您应该使用以 moh 音乐文件作为文件名的 Read 应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.