按任意键盘键挂断 Asterisk 呼叫
Hangup an Asterisk call by pressing any keyboard key
我已经能够通过按任意键盘按钮挂断星号呼叫(如果它可以命名为 "call")。流程如下所示:
(调用文件复制到出站目录)->
Asterisk 检测到它并读取调用文件 ->
在调用文件中有指令 运行 context "test" in 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
如您所见,拨号方案和 AGI 文件尽可能简单。关键是我只知道通过按 phone 上的数字允许播放被 DTMF 数字(如上面的 AGI 代码注释)中断的方法。但仅此而已。
也许有人知道如何在按下任何键盘键时结束通话(当然还有停止播放)?
有可能吗?
感谢帮助!
按下按键时创建对某些脚本的 http GET 请求。
在脚本中使用
asterisk -rx "channel request hangup CHANNEL_NAME_HERE"
当然,您需要为您的电台使用的轨道通道做一些工作,例如通过 AMI 事件。
我已经能够通过按任意键盘按钮挂断星号呼叫(如果它可以命名为 "call")。流程如下所示:
(调用文件复制到出站目录)->
Asterisk 检测到它并读取调用文件 ->
在调用文件中有指令 运行 context "test" in 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
如您所见,拨号方案和 AGI 文件尽可能简单。关键是我只知道通过按 phone 上的数字允许播放被 DTMF 数字(如上面的 AGI 代码注释)中断的方法。但仅此而已。
也许有人知道如何在按下任何键盘键时结束通话(当然还有停止播放)?
有可能吗?
感谢帮助!
按下按键时创建对某些脚本的 http GET 请求。
在脚本中使用
asterisk -rx "channel request hangup CHANNEL_NAME_HERE"
当然,您需要为您的电台使用的轨道通道做一些工作,例如通过 AMI 事件。