通过按任意键盘键挂断星号通话

时间:2018-11-27 13:34:13

标签: php asterisk agi dialplan

通过按任意键盘按钮,我可以挂断星号呼叫(如果可以将其命名为“ call”)。流看起来像这样:

(呼叫文件已复制到出站目录)->
星号检测到它并读取呼叫文件->
在调用文件中,在Dialplan中有运行上下文“ test”的指令->
 在“测试”上下文中,有运行AGI(PHP)脚本的指令->
在AGI脚本中,有命令“ EXEC PLAYBACK test_music”

拨号方案:

exten => s,1, Answer()
exten => s,n, agi(test_agi.agi)
exten => s,n, Hangup

AGI(test_agi.agi):

#!/usr/bin/php -q       
<?php
require'phpagi.php';    
set_time_limit(60);     
ob_implicit_flush(false);

# create file handles if needed
if (!defined('STDIN'))
{
   define('STDIN', fopen('php://stdin', 'r'));
}
if (!defined('STDOUT'))
{
    define('STDOUT', fopen('php://stdout', 'w'));
}
if (!defined('STDERR'))
{
   define('STDERR', fopen('php://stderr', 'w'));
}

fwrite(STDOUT, "EXEC PLAYBACK test_music '79#'\n"); //79# interruption marks

如您所见,Dialplan和AGI文件尽可能简单。关键是我只知道通过按电话上的数字来允许播放被DTMF数字打断的方法(如上述AGI代码-注释中所述)。就是这样。

也许有人知道按下任意键盘键时如何结束通话(当然停止播放)?

有可能吗?

感谢帮助!

1 个答案:

答案 0 :(得分:1)

按下键后,向某些脚本创建http GET请求。

在脚本中使用

asterisk -rx "channel request hangup CHANNEL_NAME_HERE"

确定需要为您的电台使用的跟踪通道做一些工作,例如通过AMI事件。