Как стать автором
Обновить

Комментарии 10

Спасибо за статью, интересно было прочитать. Возник вопрос, а почему Вы использовали Node.js как промежуточное звено, а не прямое обращение в Mongo из AGI скрипта?
Немного не понял вопроса. Здесь нет как такового AGI-скрипта, AGI-запрос идет сразу на AGI-сервер (AGI(agi://localhost:3000)), который написан на Javascript'е для выполнения на node.js. AGI-сервер при запуске также подключается к mongodb и работает в режиме ожидания запросов от астериска. Пришел запрос из диалплана — работает сценарий — взять номер, сделать получить направления операторов из БД, найти подходящее, вернуть статусы в диалплан астериска.

Или вопрос был: а зачем этот Node.js здесь вообще, можно написать простой AGI-скрипт, который будет работать также?
Спасибо, я понял Вас. Я подумал, что из диалплана происходит обращение к AGI-скрипту, который в свою очередь обращается к сервису на Node.js.
За статью об реализации такой возможности в астериск(хотя и не нативно) — спасибо.

Не рекламы ради…
Мы уже давно пользуемся freeswitch с модулем mod_lcr.
вот и меня мучает вопрос: почему такой простой функционал не реализован среди стандартных модулей астериска?

freeswitch после астериска вообще песня: )
Хочется какой-то способ временно выключать звонки через какого-то оператора. Может быть действительно через задание весов, но чтобы был способ управлять этим не только через вебинтерфейс, но и через cli/agi

(например для ситуаций, когда у оператора авария, но звонки он не отбивает, а принимает, просто дальше они не проходят. Или для тарифных планов с каким-то количеством включённых бесплатных минут в день\месяц, чтобы выбрать их, а потом через этот пир по возможности не звонить)
ок, спасибо за комментарий по теме развития lcr finder'а.

при аварии на стороне оператора, наверное, таки удобнее веб-интерфейс: зашел, выключил кнопкой, позвонил оператору, выяснил время устранения, затем позже зашел опять, включил, проверил звонком.

вот с тарифными планами интереснее: надо учитывать сколько минут проговорил уже, т.е. или дополнительный запрос в agi делать или cdr анализировать, получается биллинг: )

про включение/выключение через cli/agi не понял: делать выключение оператора из команды консоли или по звонку?

Ну вот да, тащить внутрь LCR-логики статистику по звонкам — наверное излишне. Я это могу и сам в диалплане или где-то снаружи посчитать по CDR, просто чтобы были ручки для выключения\включения пиров в LCR\задания весов. Из консоли, или передавая какие-то параметры в AGI
Подумал, что если добавить ручки для включения операторов в веб-интерфейс, то поскольку там используется angular, который будет дергать определенные url и получать результат в json, то эти же запросы могут быть доступны и для сторонних приложений.

Еще можно просто передавать список требуемых операторов в параметрах AGI запроса и получать сравнение только по ним.
или анализ параметров при звонках на направления (средняя длительность, количество не ответов и тд) с апдейтом направления для выставления «веса».
На это все навесить уведомление админа о том что направление косячное и в итоге чтото будет похоже на VoIP Studio для Mera по функционалу.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.