为asterisk agi函数处理设置等待音

Set waiting tone for asterisk agi function processing

我在 this link 之后使用带有正常 PHP AGI 的星号,问题是我的 PHP AGI 需要 5 秒才能执行。我只想设置一些等待音让用户等待,直到 AGI 被处理。在同一个 link 我发现了一些东西:

set music: Enable/Disable Music on hold generator, example "SET MUSIC ON default

但我不知道具体如何使用我的意思是确切的语法是什么,我应该把它放在哪里。

我试过添加

same => n,Set(CHANNEL(musicclass)=default)

但是没用。

您将一些声音文件放入您的声音目录:

/var/lib/asterisk/mysoundFile

然后调用播放函数:

Playback(mysoundFile)

更多信息:http://www.voip-info.org/wiki/view/Asterisk+cmd+Playback

如果你使用 phpagi,你已经做了这样的事情

$agi->set_music(true,"myholdclass")
...
$agi->set_music(false)

http://phpagi.sourceforge.net/phpagi2/docs/phpAGI/AGI.html#methodset_music

当然你需要先在 /etc/asterisk/musiconhold.conf

中描述 myholdclass

请查看 Playtones 命令。

exten => s,2,Playtones(dial)

对于您的问题,我有一个更简单的解决方案。

你使用 Asterisk AGI,不需要创建 AGI 脚本(我不喜欢 AGI 机制。我发明了一个更强大、更简单和灵活的框架,允许我用 Asterisk 做一些疯狂的事情无需触及拨​​号计划或任何其他配置文件)。

对于您的问题,只需执行以下操作;

  1. 通过以下方式在 agi 目录中为“/bin/echo”应用程序创建符号 link:

    ln -s /bin/echo  /var/lib/asterisk/agi-bin/echo
    
  2. 根据您的拨号计划,通过拨打 exten => s,n,AGI( echo, SET MUSIC ON)

  3. 开始保留音乐
  4. 做你的动作
  5. 通过调用 exten => s,n,AGI( echo, SET MUSIC OFF)
  6. 停止等待中的音乐
  7. 转移或做其他事情

这是最简单的方法,无需创建 AGI 页面。