Страница 1 из 1

AGI в исходящий маршрут

Добавлено: 13 фев 2020, 16:14
skynetyar
Добрый день!
FreePBX 14
Задача встроить в исходящий маршрут AGI php скрипт, логирующий все исходящие звонки со всей информацией.

Таким образом я делаю с входящими маршрутами в extensions_override_freepbx.conf создал [ext-group] и [ext-queues] в которых успешно встраиваю свой AGI скрипт.

Но застрял на исходящих маршрутах, какой можно использовать контекст для этого?
Пробовал [macro-dialout-trunk] [macro-hangupcall] результат спорный, в каких то случаях не пишется информация в каких то дублируется..

Встраиваю таким образом
exten => h,n,AGI(agi.php,${ANSWEREDTIME},${DIALSTATUS})

В самом скрипте ничего необычного все из статей...

Прошу совета?!

Re: AGI в исходящий маршрут

Добавлено: 13 фев 2020, 17:22
ded
Вы не указываете, что всё это во FreePBX, надо догадываться.

Исходящие маршруты выполняются из контекста outbound-allroutes-custom, где выбираются приоритеты из вэб-секции Outbound routes. Если все нужные находятся за пределами этой станции, т.е. внешние, то можно попробовать добавить контекст
[outbound-allroutes-custom]
exten => h,1,AGI(agi.php,${ANSWEREDTIME},${DIALSTATUS})
exten => h,n,Hangup()

Но для чего это делать, если данные ${ANSWEREDTIME},${DIALSTATUS}) есть в таблице MySQL - cel
база данных - asteriskcdrdb
Можно просто создать php-запрос из неё и всё увидеть.

Re: AGI в исходящий маршрут

Добавлено: 13 фев 2020, 17:32
skynetyar
Большое спасибо за ответ!
Да,это действительно проще достать из базы и оправить куда нужно..
Но задача стоит такая что при каждом окончании звонка или начале что то подобие хука должно производиться на другой сервер в так называемую самопальную CRM , в которой практически сразу нужны эти данные о звонке.
Ничего лучшего как встроить AGI я не придумал для этих целей..
И успешно реализовал это в входящей маршрутизации.

Читал что в FreePBX 15 добавили некое API ,но еще не нюхал даже его...

Спасибо за ответ, буду пробовать!

Re: AGI в исходящий маршрут

Добавлено: 13 фев 2020, 17:35
ded
skynetyar писал(а):Читал что в FreePBX 15 добавили некое API ,но еще не нюхал даже его...
Вообще то больше 10 лет есть AMI и 5 лет назад добавилось ARI. Уже пора понюхать!

Re: AGI в исходящий маршрут

Добавлено: 14 фев 2020, 10:01
skynetyar
ded писал(а): [outbound-allroutes-custom]
exten => h,1,AGI(agi.php,${ANSWEREDTIME},${DIALSTATUS})
exten => h,n,Hangup()
К сожалению это не заработало..

Re: AGI в исходящий маршрут

Добавлено: 14 фев 2020, 10:45
ded
Нулевая информация. Состояние переменных проверяли?

Код: Выделить всё

exten => h,1,NoOp(Answered time ${ANSWEREDTIME} and dialstatus is ${DIALSTATUS})
exten => h,n,AGI(agi.php,${ANSWEREDTIME},${DIALSTATUS})
exten => h,n,Hangup()
Дебаг смотрели?
CLI> agi set debug on

По моему разумению в ваш скрипт надо отдавать только UNIQUEID плеча вызова на хэнгапе
exten => h,n,AGI(get_data.php,${UNIQUEID})
а вот в этом get_data.php делать запрос в asteriscdrdb по этому UNIQUEID. С другой стороны - ещё не совершился Hangup в этот момент, транзакция не завершена.

Re: AGI в исходящий маршрут

Добавлено: 14 фев 2020, 17:19
skynetyar
В общем решил данный вопрос таким методом..
В extensions_override_freepbx.conf переопределил [macro-dialout-trunk] в нем добавил
exten => s,n,Set(CHANNEL(hangup_handler_push)=hdlr-callback,s,1(${DIAL_NUMBER},${REALCALLERIDNUM:-10}))

[hdlr-callback]
exten => s,1,Verbose(0, -----hdlr-php-cdr------)
same => n,DumpChan()
same => n,Noop( ${ANSWEREDTIME},${DIALSTATUS} )
same => n,AGI(agi.php,${ANSWEREDTIME},${DIALSTATUS},${ARG2},${ARG1})
same => n,Return()