我可以通过按下任何键盘按钮挂断星号呼叫(如果可以将其命名为"call"(。流程如下:
(调用文件被复制到出站目录(->
Asterisk检测到它并读取调用文件->
在调用文件中有在拨号计划中运行上下文"测试"的指令->
1在上下文"测试"中有运行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
正如你所看到的,拨号计划和AGI文件是最简单的。关键是我只知道如何通过按下电话上的数字来允许播放被DTMF数字中断(如上面AGI代码注释中所示(。但就是这样。
也许有人知道当按下任何键盘键时如何结束通话(当然也停止播放(?
这可能吗?
谢谢你的帮助!
按键时,创建对某个脚本的http GET请求。
在脚本中使用
asterisk -rx "channel request hangup CHANNEL_NAME_HERE"
当然,你需要为你的车站使用的轨道通道配备一些工作人员,例如通过AMI事件。