проверку после соединения сделать?
exten => X.,1,MYSQL(Connect connid localhost asteriskuser SomePassAster01 asterisk) exten => _X.,n,Gotoif($["${connid}" = ""]?false) exten => _X.,n(false),Playback(error) exten => _X.,n,MYSQL(Query resultid ${connid}SELECT\SUM(billsec)\FROM\cdr\WHERE\src=${CALLERID(num)}) exten => _X.,n,MYSQL(Fetch fetchid ${resultid} billing) exten => _X.,n,MYSQL(Clear ${resultid}) exten => _X.,n,GotoIf($["${fetchid}"="1"]?true:false) exten => _X.,n,GotoIf($["${billing}" < "1"]?call:end) exten => _X.,n(call),Dial(SIP/300) exten => _X.,n,MYSQL(Clear ${resultid}) exten => _X.,n,Hangup() exten => _X.,n(false),Playback(goodbye) exten => _X.,n,Hangup()
Diana92 ( 2014-01-22 16:50:22 +0400 )редактироватьВ диалплане, который в вопросе топика, вставить проверку (exten => _X.,n,Gotoif($["${connid}" = ""]?false)) сразу после первой строки. Все.
Olpag ( 2014-01-22 16:54:15 +0400 )редактироватьсоединения нет, специально чтоб не путаться поставила другую метку для соединения, и поставила плэйбэк типа ошибка, только потом он проиграл второй плэйбэк гудбай. вот так вот. не пойму в чем проблема. имя пользователя пароль все правильно. или мне ввести имя рут и его пароль?
Diana92 ( 2014-01-22 18:07:00 +0400 )редактироватьиспользуйте funcodbс или mysql realtime. не используйте эту старую appmysql. она не удалена ИСКЛЮЧИТЕЛЬНО из совместимости.
meral ( 2014-01-22 20:47:36 +0400 )редактироватьне надо использовать AGI. никогда. если вашей проффесиональности не хватате на fastAGI лучше вообеще не пишите. ато вон freepbx до сих пор страдает потому как один раз один експерт всунул agi-set-callerid скрипт.
meral ( 2014-01-23 02:13:47 +0400 )редактироватьНормально AGI работает, не надо тут ля-ля. Конечно не надо использовать его как во freepbx, когда в процессе одного звонка запускается десяток AGI скриптов. А если один вызов полностью в одном скрипе обрабатывается то это работает достаточно быстро.
switch ( 2014-01-23 09:39:36 +0400 )редактироватьа где я могу с нуля прочитать про AGI? Все что нашла в гугле, это для разбирающихся людей хД. С нуля как писать AGI скрипт где прочитать? Можно книги или еще что?
Diana92 ( 2014-01-23 10:36:18 +0400 )редактироватьto meral: не надо переходить на личности... я показал направление, а что конкретно использовать - AGI или FastAGI, топикстартер, я думаю, разберется. В любом случае, изучать начнет с AGI...
to Diana:
http://www.voip-info.org/wiki/view/Asterisk+AGI
http://www.voip-info.org/wiki/view/Asterisk+FastAGI
Olpag ( 2014-01-23 14:35:36 +0400 )редактироватьне показывайте неправильные направления. задолбало потом отвечать на вопросы типа "почему астериск такой тормозной".
meral ( 2014-01-23 16:46:18 +0400 )редактироватьmeral: решение должно быть сообразно задаче. по производительности - лучше один asyncagi скрипт (фактически - управление всей АТС через AMI в асинхронном режиме). НО!если asyncagi скрипт упадет то вся АТС грохнется... главное в АТС - это надежность. asyncagi не только сложнее в реализации - он существенно проигрывает в надежности AGI по определению. не всегда можно отследить внешним планировщиком, даже если он очень хорошо написан - висит asyncagi скрипт или просто работает... планировщик например может прибить и перезапустить asyncagi скрипт по-ошибке и все вызовы упадут... можно конечно форкать отдельный процесс на каждый вызов при поступлении - но тогда в чем отличие от простого agi? imho asyncagi нужен для конкретных и весьма специфичных задач, которые нельзя решить в синхронном режиме...fastagi же практически ничем не отличается от простого agi - только по сети (скрипты AGI могут исполнятся на отдельном сервере - особо смысла, если вызовов не тысячи одновременно - скорее случай оператора связи )
octopas ( 2014-01-25 08:57:27 +0400 )редактироватьfastagi скрипты вполне надежны. отличие от простого agi в том, что 1) используется меньше памяти 2) потоки fastagi создаются с запасом и не во время звонка, что убирает пики cpu. 3) не расходуется ресурсы на пересоздание и перекомпиляцию(здраствуй phpagi) каждый раз. у меня количество разных систем с fastagi перевалило за сотню уже. сложность программирования - такая же.
meral ( 2014-01-25 13:01:25 +0400 )редактировать
не пытайтесь реализовать алгоритм какого-либо биллинга в диалплане. это - неправильно. правильней звать из диалплана radius и а с самим радиусом использовать биллинговое решение которое имеет с ним сопряжение через libradius, таких очень много, в том числе есть бесплатные. или можно обратиться к профессионалам - все настроят :) любые заплатки и "наколеночные" решения рано или поздно упираются в "потолок" - в данном случае невозможность автоматизированной отладки и много другое...
octopas ( 2014-01-25 11:47:28 +0400 )редактировать