I have be able to hangup an asterisk call (if it can be named "call") by pressing any keyboard button. Flow looks like this:
(Call file is copied to outbound directory) ->
Asterisk detects it and read call file ->
in call file there is instruction to run context "test" in dialplan ->
in context "test" there is instruction to run AGI(PHP) script ->
in AGI script there is command "EXEC PLAYBACK test_music"
Dialplan:
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
So as you can see, dialplan and AGI file are as simplest as may be. The point is I know only the way to allow playback to be interrupted by a DTMF digit (as in AGI code -comment above) by pressing digits on phone. But thats it.
Maybe someone know how to end a call (and stop playback of course) when any keyboard key is pressed?
Is it even possible?
Thanks for help!
On key pressed create http GET request to some script.
In script use
asterisk -rx "channel request hangup CHANNEL_NAME_HERE"
Sure you need do some staff for track channel used by your station, for example via AMI events.