Завершите вызов Asterisk нажатием любой клавиши клавиатуры - PullRequest
0 голосов
/ 27 ноября 2018

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

(файл вызова копируется в исходящий каталог) ->
Asterisk обнаруживает его и читает файл вызова ->
в файле вызова есть инструкция для запуска контекста "test "в плане набора ->
в контексте" test "есть инструкция для запуска сценария AGI (PHP) ->
в сценарии AGI есть команда" 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

Итак, как видно, план набора номеров и файл AGI настолько просты, насколько это возможно.Дело в том, что я знаю только способ, позволяющий прерывать воспроизведение цифрой DTMF (как в коде AGI выше), нажимая цифры на телефоне.Но это все.

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

Возможно ли это?

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

1 Ответ

0 голосов
/ 27 ноября 2018

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

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

asterisk -rx "channel request hangup CHANNEL_NAME_HERE"

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

...