Comments 22
Добрый день, спасибо за статью.
мне понравилось использование npm для быстрой разработки и распространения приложенияна мой взгляд весьма сомнительное преимущество, особенно если не имели опыта работы с Node.js. в своих проектах использую библиотеку pyst для работы с AGI и AMI на python.
Т.е. если бы астериск умел записать файл, а потом его передать по AGIвообщем-то файл записать можно, да и передать файл тоже можно, правда не силами AGI(собственно для этого протокол и не предназначен), а например через sftp(не знаю, имеет ли node.js библиотеки для работы с sftp) скопировать записанный файл на удаленный сервер.
+1
Я имел опыт с Node.js, поэтому пишу о своих мироощущениях. В целом, согласен, что кто чем умеет, тем и рисует.
По поводу передачи файла: в voicer'е у меня было также разделение по машинам — одна с астериском, вторая с приложением, обошлись пока просто монтированием sshfs. там пришлось правда сделать отдельные настройки директории с файлами для астериска и для приложения.
По поводу передачи файла: в voicer'е у меня было также разделение по машинам — одна с астериском, вторая с приложением, обошлись пока просто монтированием sshfs. там пришлось правда сделать отдельные настройки директории с файлами для астериска и для приложения.
0
Почему все забили на lua? Это же намного быстрее чем AGI. Ну в 1.8 я еще понимаю, на в 12-13 версиях AGI уже как костыль смотрится честно говоря…
+1
Я AEL использую, вполне удобно и читабельно.
+1
lua это lua, а agi хочешь perl,python,php,c,java,lua…
+1
AGI тяжелее за счет того что это внешний интерфейс… Гораздо тяжелее. И не важно в каком исполнении он будет — сетевом или файловом.
0
Меня интересовала минимальное взаимодействие астериска и дополнительного сервиса. Поэтому FastAGI. Плюс то, что я знаю и понимаю, поэтому node.js. К тому же, активно у меня используемый сервис — это для определения входящих по регионам на 8800, там несколько сотен звонков в час, что для AGI вполне по силам.
Диалплан на lua? Может быть. Вот в недавней статье приводится инфо, что работает все очень хорошо и быстро. Я писал, что можно поделить диалплан на маршрутизацию звонка и допвычисления. Вот для маршрутизации может быть стоит использовать.
А еще вопрос: можно ли часть диалплана использовать из lua, а часть нативного диалплана, который может вызывать куски диалплана на lua? Типа, макросы написать на lua, а затем при необходимости их использовать в диалплане.
Диалплан на lua? Может быть. Вот в недавней статье приводится инфо, что работает все очень хорошо и быстро. Я писал, что можно поделить диалплан на маршрутизацию звонка и допвычисления. Вот для маршрутизации может быть стоит использовать.
А еще вопрос: можно ли часть диалплана использовать из lua, а часть нативного диалплана, который может вызывать куски диалплана на lua? Типа, макросы написать на lua, а затем при необходимости их использовать в диалплане.
0
Да. Можно. Смешивается все отлично. Читаются переменные и тд. Я вообще всю работу с базади данных (mysql, redis) вынес в lua. быстрые и удобные коннекторы + работа с функциями диалплана сразу из ядра- очень достойное решение.
+1
Спасибо, вот теперь я точно хочу это попробовать сделать.
0
в продолжение темы пара вопросов:
как вы организуете extensions.lua? Т.е. не все же лежит в одном файле? как-то делится на модули?
не понял тему Long Running Operations (Autoservice). После 10-го астериска надо заморачиваться?
каким lua модулем вы цепляетесь к mysql, mongo?
пробовали делать какое-то динамическое добавление extensions? типа в веб-интерфейсе добавли абонента: добавили параметры в sip.conf, а затем прописали ему внутренний номер в extensions.
простейший диалплан я набросал, работает: )
забавно было в консоли астериска дебажить lua скрипт
как вы организуете extensions.lua? Т.е. не все же лежит в одном файле? как-то делится на модули?
не понял тему Long Running Operations (Autoservice). После 10-го астериска надо заморачиваться?
каким lua модулем вы цепляетесь к mysql, mongo?
пробовали делать какое-то динамическое добавление extensions? типа в веб-интерфейсе добавли абонента: добавили параметры в sip.conf, а затем прописали ему внутренний номер в extensions.
простейший диалплан я набросал, работает: )
забавно было в консоли астериска дебажить lua скрипт
0
Ну у меня на данный момент инклюдов файлов нет. Но вообще реорганизация предстоит естественно.
Long Running Operations (Autoservice) как раз таки после 10 астериска -заморачиваться не надо, а до 10 — как раз нужно.
По поводу конфигурирования екстеншнов — я не пишу диалпаны для каждого екстеншна. Я как правило пишу набор функций и храню екстеншны и соответсвие функций (или контекстов, когда как) в базе. Универсальней получается. Не люблю я эти все деревянные хардкодинговые решения.
Mongo не пользую. Пользую в основном redis
моудль redis-lua
и mysql
модуль LuaSQL
вообще набор библиотек у lua очень широк. Делать можно очень многое.
Long Running Operations (Autoservice) как раз таки после 10 астериска -заморачиваться не надо, а до 10 — как раз нужно.
По поводу конфигурирования екстеншнов — я не пишу диалпаны для каждого екстеншна. Я как правило пишу набор функций и храню екстеншны и соответсвие функций (или контекстов, когда как) в базе. Универсальней получается. Не люблю я эти все деревянные хардкодинговые решения.
Mongo не пользую. Пользую в основном redis
моудль redis-lua
и mysql
модуль LuaSQL
вообще набор библиотек у lua очень широк. Делать можно очень многое.
+1
>>Я как правило пишу набор функций и храню екстеншны и соответсвие функций (или контекстов, когда как) в базе.
А можно пример кода этого момента?
>>вообще набор библиотек у lua очень широк.
да, я уже заценил luarocks, на стандартные нужды хватает: )
а как делаете отладку? Ну, т.е. постоянно app.noop() используете? или можно как-то более развернуто посмотреть значения таблиц lua?
а не в курсе как происходит работа с диалпланом lua в астериске? Т.е. астериск при загрузке pbx_lua.so парсит extensions.lua в диалплан и далее его держит в памяти, проводя каждый звонок по диалплану? Меня интересует, можно ли держать в памяти какие-то данные, а какие-то данные можно выставлять для каждого звонка?
А можно пример кода этого момента?
>>вообще набор библиотек у lua очень широк.
да, я уже заценил luarocks, на стандартные нужды хватает: )
а как делаете отладку? Ну, т.е. постоянно app.noop() используете? или можно как-то более развернуто посмотреть значения таблиц lua?
а не в курсе как происходит работа с диалпланом lua в астериске? Т.е. астериск при загрузке pbx_lua.so парсит extensions.lua в диалплан и далее его держит в памяти, проводя каждый звонок по диалплану? Меня интересует, можно ли держать в памяти какие-то данные, а какие-то данные можно выставлять для каждого звонка?
0
А можно пример кода этого момента?
Коммерческая тайна. Не могу разглашать. как нить статью напишу по этому поводу)) чтобы без кода проектного. обобщить.
по отладке когда как — если это не диалплан как таковой то сначала скрип стандартным способом тестирую а потом заливаю его как часть диалплана. в dialplan да. Через NoOp
Астериск не парсит lua. он его проверяет изначально на ошибки обычным интерпритатором и потом при вхождении звонка — запускает скрипт его обработки, коим является extensions.lua
Все что можно держать в памяти обычным диалпланом — то можно держать в памяти и с помощью lua.
Ну либо я не совсем понял ваш вопрос)))
+1
>>как нить статью напишу по этому поводу)) чтобы без кода проектного. обобщить.
киньте, пожалуйста, потом ссылку
по отладке, в wiki астериска нашел пример для замены стандартного print — print через консоль астериска: )
extensions.lua частично таки парсится, т.к. таблица extensions добавляется в диалплан, видно dialplan show
Память еще потестирую, но в целом, наверное для этого лучше использовать redis.
киньте, пожалуйста, потом ссылку
по отладке, в wiki астериска нашел пример для замены стандартного print — print через консоль астериска: )
extensions.lua частично таки парсится, т.к. таблица extensions добавляется в диалплан, видно dialplan show
Память еще потестирую, но в целом, наверное для этого лучше использовать redis.
0
А еще вот особенность заметил: чуть что-то в extensions.lua не так, то при перезагрузке module reload pbx_lua.so астериск вылетает тут же. У вас так же? Это мне кажется как-то не очень нормальное поведение. Астериск 11.18, lua 5.2
0
В память заносится только табличка с еxtensions
Нет. У меня не вылетает. Но я использую 5.1 и астериск 13.
Возможно дело в кривой омпиляции модуля на 11 астериске. Помню при подключении сторонних модулей lua в 12 была проблема что не видел астериск этих модулей. Приходилось в ручную переписывать кусок кода chan_sip по-моему. Точнее в ручную выставлять значение флага одного.
В 13 это уже было решено. Так что вполне возможно проблема связана как то с этим.
Нет. У меня не вылетает. Но я использую 5.1 и астериск 13.
Возможно дело в кривой омпиляции модуля на 11 астериске. Помню при подключении сторонних модулей lua в 12 была проблема что не видел астериск этих модулей. Приходилось в ручную переписывать кусок кода chan_sip по-моему. Точнее в ручную выставлять значение флага одного.
В 13 это уже было решено. Так что вполне возможно проблема связана как то с этим.
+1
А у тебя точно работают контексты из extensions.conf c контекстами в extensions.lua?
Я пробую сделать
где outbound описан в extensions.conf, а подключить его хочу чтобы во вне звонили по направлениям из outbound. У абонента назначен local, на inner внутренние номера уходят.
Я пробую сделать
extensions = {
["local"] = {
include = {'inner', 'outbound'}
};
["inner"] =inner(conf);
};
где outbound описан в extensions.conf, а подключить его хочу чтобы во вне звонили по направлениям из outbound. У абонента назначен local, на inner внутренние номера уходят.
0
fastAGI который сетевой совсем ничего. или у Вас были реальные а не теоретические проблеммы с перформансом fastAGI?
0
Я бы сказал так — в любом случае на lua нагрузка будет меньше потому что функции работают напрямую с ядром. Не через какие либо интерфейсы. Я не говорю что fastAGI плох. Просто отпала необходимость в подобных интефейсах когда появилась возможность прямого кодинга. + lua сам по себе очень быстрый язык и у него очень много плюшек вплоть до впиливания функций напрямую на C.
P. S. Я как бы не против чего либо другого ине настаиваю. Прсото факт констатирую что это очень удобный интерфейс.
P. S. Я как бы не против чего либо другого ине настаиваю. Прсото факт констатирую что это очень удобный интерфейс.
+1
Подходы разные нужны. Я против 'Ну в 1.8 я еще понимаю, на в 12-13 версиях AGI уже как костыль смотрится честно говоря'.
— Мешать все в кучу не красиво. IMHO.
— Есть конфиг телефонии — отдельно, есть бизнес логика — отдельно.
— Разработчик и админ-телефонист в одном лице встречаются реже чем по отдельности.
— Если что то тяжелое то через fastAGI замасштабировать легче.
— Мешать все в кучу не красиво. IMHO.
— Есть конфиг телефонии — отдельно, есть бизнес логика — отдельно.
— Разработчик и админ-телефонист в одном лице встречаются реже чем по отдельности.
— Если что то тяжелое то через fastAGI замасштабировать легче.
+1
Sign up to leave a comment.
Быстрые помощники для вашего Asterisk'а