6 причин писать диалплан asterisk на lua

Синтаксически

  1. Переменные диалплана? Структуры lua: строки, таблицы.
  2. макросы, gosub’ы? нет, спасибо. Используем функции.
  3. GotoIf? Нормальные циклы и условия вместо скачков по приоритетам и контекстам.
  4. ODBC? Нет, спасибо, наелся. Используем прямое подключение к mysql, mongo, redis.
  5. Чего-то не хватает? Используем пакеты luarocks.
  6. Отладка, ошибки? Да, хоть в астериск, хоть в kibana-logstash-graylog и еще куда-то там.
  7. Бонус: тесты. Покрытие кода диалплана тестами.

Методологически

  1. Удобное написание – более красивое и качественное оформление кода.
  2. Более логичные блоки и более полная обработка различных вариантов.
  3. Большее количество вариантов обработки.
  4. Вся логика в одном месте: нет такого – запросы в одном месте, логика диалплана в другом.

 

Минусы

  1. мы в рамках астериска. lua – это более удобный обработчик звонка. Но не более.
  2. Нет взаимодействия между каналами. Требуется придумывать свои схемы для обмена данными.
  3. Нет удобного доступа к встроенной БД, нет удобного доступа к разделяемому пространству с разных каналов.

Вывод: все тоже самое. Мировая скорбь. Но чем больше проект, чем гибче функциональность требуется от астериска, от телефонной системы, тем более гибкий инструмент хочется использовать. И lua гибче раза в полтора стандартного диалплана.*

*по оценкам британских ученых-фундаменталистов

 

Что хочется?

Скрестить tarantool И asterisk. : )

6 причин писать диалплан asterisk на lua

7 thoughts on “6 причин писать диалплан asterisk на lua

  1. fforp says:

    > Нет взаимодействия между каналами. Требуется придумывать свои схемы для обмена данными.
    А вот это поясните, в чем разница между extensions.conf и lua ?

    Liked by 1 person

    1. extensions.conf – конфигурационный файл , где диалплан пишется синтаксисом установленным астериском, а extensions.lua – пишется на lua языке программирования, получается скрипт, который должен провести звонок как диалплан, но по пути он может и еще много полезного сделать. Еще немного есть здесь: https://habrahabr.ru/post/271939/ Извини, что не сразу ответил. Тут какая-то интересная система комментариев : )

      Like

      1. fforp says:

        Да, это я читал, спасибо.
        Я имел ввиду: в чем именно выражается отсутствие взаимодействия между каналами, если мы переходим на lua

        Like

      2. Здесь не столько “если мы переходим на lua”, а в целом по астериску мы не можем каким-то простым образом рулить одним каналом из другого : ) вот как. Или вот например есть концепция Local канала, я не могу в Lua написать сценарий для него и на этапе Dial закинуть этот сценарий для этого канала, он должен быть заранее написан. Но это, вероятно, из области “кабы не было зимы”..

        Like

      3. fforp says:

        Вот оно что, спасибо !
        У нас необходимости в таких манипуляциях пока нет. Видимо не доросли -)

        Like

  2. два asterisk 1.8
    на slackware14
    соединяю по IAX2
    если extensions.conf или extensions.ael – все работает

    если же диалплан начинаю писать в extensions.lua – беда…
    при звонке с одного сервера на второй – второй молча падает. (и наоборот)

    вопрос: Slackware14? Asterisk1.8? или LUA?

    Like

Leave a comment