Завершите вызов Asterisk нажатием любой клавиши клавиатуры

Я смог повесить вызов звездочки (если его можно назвать «вызов»), нажав любую кнопку клавиатуры. Поток выглядит так:

(Файл вызова копируется в исходящий каталог) ->
Звездочка обнаруживает это и читает файл вызова ->
в файле вызова есть инструкция для запуска контекста «тест» в плане набора ->
в контексте «тест» есть инструкция для запуска скрипта 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-кода выше) нажатием цифр на телефоне. Но это так.

Может быть, кто-то знает, как завершить вызов (и, конечно, остановить воспроизведение) при нажатии любой клавиши клавиатуры?

Это вообще возможно?

Спасибо за помощь!

0

Решение

По нажатию клавиши создайте http GET запрос к какому-либо скрипту.

В сценарии использования

asterisk -rx "channel request hangup CHANNEL_NAME_HERE"

Конечно, вам нужно нанять некоторый персонал для отслеживания канала, используемого вашей станцией, например, через события AMI.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]