Доброго времени суток ! Имеется FreePBX 15.0.16 .В диал плане :
[zay]
exten => _.,1,Answer()
exten => _.,n,Background(/var/lib/asterisk/sounds/ru/custom/6_zay,skip)
exten => _.,n,AGI(zay.php,${CALLERID(num)}, ${STRFTIME(${EPOCH},,%Y.%m.%d - %H:%M)}, ${CALLERID(name)})
exten => _.,n,Hangup()
Скрипт php сложный и выполняется 25 - 30 сек. Что происходит.После произнесения звонящему 6_zay уходит на выполнение zay.php и если звонящий не положит трубку в эти 25 -30 сек то все нормально отрабатывает. Ну и соответственно если положит то выполнение скрипта прерывается. Как бы реализовать - сначала отпустить звенящего Hangup() а вот потом продолжить выполнение php ? DeadAGI - не помогает
Если нужно, делайте hangup, ну а пост-обработку делайте в h экстене или же навешивая hangup_handler.
Это в случае если этот скрипт ничего не рулит в схеме прохождения звонка конечно, не играет ничего и не распознает.
Тривиально гуглится(выдает тоже мой ответ, но то таке)
https://stackoverflow.com/questions/32391634/set-waiting-tone-for-asterisk-agi-function-processing
А вообще откройте для себя threads и многопоточное программированние. Положена ли трубка в текущем потоке можно узнать запросив ${CHANNEL(state)} через $agi->getfullvariable.
https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Function_CHANNEL
Задан: 2020-12-04 13:21:54 +0400
Просмотрен: 725 раз
Обновлен: Dec 21 '20
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Для чего выполняется скрипт?
zzuz ( 2020-12-04 20:56:25 +0400 )редактировать