ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

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

Сообщение skynetyar » 13 фев 2020, 17:14

Добрый день!
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})

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

Прошу совета?!
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 432
Зарегистрирован: 18 авг 2016, 14:25

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

Сообщение ded » 13 фев 2020, 18:22

Вы не указываете, что всё это во 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-запрос из неё и всё увидеть.
ded
 
Сообщений: 15826
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение skynetyar » 13 фев 2020, 18:32

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

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

Спасибо за ответ, буду пробовать!
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 432
Зарегистрирован: 18 авг 2016, 14:25

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

Сообщение ded » 13 фев 2020, 18:35

skynetyar писал(а):Читал что в FreePBX 15 добавили некое API ,но еще не нюхал даже его...

Вообще то больше 10 лет есть AMI и 5 лет назад добавилось ARI. Уже пора понюхать!
ded
 
Сообщений: 15826
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение skynetyar » 14 фев 2020, 11:01

ded писал(а):[outbound-allroutes-custom]
exten => h,1,AGI(agi.php,${ANSWEREDTIME},${DIALSTATUS})
exten => h,n,Hangup()


К сожалению это не заработало..
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 432
Зарегистрирован: 18 авг 2016, 14:25

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

Сообщение ded » 14 фев 2020, 11:45

Нулевая информация. Состояние переменных проверяли?
Код: выделить все
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 в этот момент, транзакция не завершена.
ded
 
Сообщений: 15826
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение skynetyar » 14 фев 2020, 18:19

В общем решил данный вопрос таким методом..
В 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()
Всё знают и всё понимают только дураки да шарлатаны.(с)А.П Чехов.
skynetyar
 
Сообщений: 432
Зарегистрирован: 18 авг 2016, 14:25


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 48

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH