Страница 1 из 1
завершить вызов досрочно(До поднятия трубки)
Добавлено: 27 мар 2018, 20:36
SuperTone
Если я Начал вызов с помощью команды Originate, я могу завершить вызов досрочно(До поднятия трубки)?
Пытался использовать "Hangup: Завершение соединение на заданном канале. (необходимые привилегии: call,all)"
Получал:
[Response] => Success
[Message] => Channel Hungup
Но вызов всё равно шел.
Re: завершить вызов досрочно(До поднятия трубки)
Добавлено: 28 мар 2018, 07:13
Kroteg
Приложение создает исходящий вызов и соединяет его с указанными екстеншенами или приложениями. Выполнение диалплана блокируется, пока приложение не вернет статус вызова, неудачный или отвеченный, а затем выполнение диалплана продолжается.Приложение возвращает переменную канала ${ORIGINATE_STATUS}
Так почему бы не задать условие при котором в любом случае переход на хэнгап? Т.е. описать все возможные значения:
- FAILED
- SUCCESS
- BUSY
- CONGESTION
- HANGUP
- RINGING
Re: завершить вызов досрочно(До поднятия трубки)
Добавлено: 28 мар 2018, 07:30
virus_net
Мимо.
Он спрашивает как завершить вызов ДО возврата и соответственно завершения команды.
Но не показывает ни как он делал вызов, ни диалплана, ни как пытался завершить, ни что видит в CLI. Вообщем по сути ничего кроме "не работает".
Вывод ? Ждёт телепатов.
Можно догадаться, что это делается через AMI, но гадать остальное желания нет.
Re: завершить вызов досрочно(До поднятия трубки)
Добавлено: 28 мар 2018, 10:55
Repz
SuperTone писал(а):вызов с помощью команды Originate, я могу завершить вызов досрочно?
нет.
Можете создать свой originate = dial+dial+bridge и извращаться над данной конструкцией сколько душе угодно.
Re: завершить вызов досрочно(До поднятия трубки)
Добавлено: 28 мар 2018, 23:43
SuperTone
Код не приводил так как в теории спрашивал.
Я даже не знаю как представить всё что происходит.. вот куски
Это я пробовал для теста - так работает.
в php:
Код: Выделить всё
...
$params = [
'Channel' => $number,
'Context' => 'DialPlan2',
'Priority' => 1,
'Exten' => 's',
'Async' => 'true',
'Callerid' => CALLERID
];
$asm->add_event_handler('DialBegin', 'onDialBegin');
$res = $asm->send_request('Originate', $params);
...
function onDialBegin($a, $b) {
global $asm;
sleep(15);
$params = [
'Channel'=>$b['DestChannel']
];
$asm->send_request('Hangup', $params);
}
...
Так работает. Т.е. позвонит немого(15сек) и сам себя завершает - брать тубку не требовалось.
!! Пока писал пост разобрался.))
В моем исполнении я пытался завершить дозвон внутри AGI скрипта, который вызывался из диалплана
пример: same => n,AGI(mod.php)
Вот когда я вынес процедуру завершения из "AGI(mod.php)", тогда заработало.
Повторюсь до этого я получал "[Response] => Success, [Message] => Channel Hungup:", но по факту не работало.
Вопрос закрыт.