Установка Freepbx из скрипта

В противовес официальному скрипту установки я решил сделать скрипт установки FreePBX 16 и Asterisk 18 из исходников на Ubuntu Linux 24.04. После тестов с 20 версией Asterisk всё заработало и теперь там собирается 20 версия. Сначала это была версия для собственных нужд, но после решил сделать и публичную, вырезав лишнее. Небольшое разъяснение Скрипт разбит на функции: preinstall install_dahdi install_libpri install_asterisk install_apache_php install_mariadb_con install_nodejs install_freepbx install_cdr set_firewall set_rinetd set_tftp inst_scripts customize Лишнее можно закомментировать перед запуском скрипта....

14 April 2025 · 2 min · Dmitriy Q

Краткий обзор API FreePBX

Несколько месяцев назад мне закидывали удочку как создавать экстен во FreePBX, я ковырял запрос создания, но он получался очень длинным. И тут несколько дней назад в чате Asterisk Russian Community кто-то интересовался как можно создать диапазон номеров, даже кое-кто утверждал что такое было, но порыскав я не нашёл, зато наткнулся на API FreePBX и даже в gist.gihtub.com одного из разработчиков FreePBX нашёл скрипт удаления экстена с АТС. Попросил в чате поправить его на диапазон и мне прислали в личку простенький, но рабочий вариант....

5 March 2025 · 2 min · Dmitriy Q

Умная маршрутизация вызовов

Чтобы разгрузить секретаря, на которого валится множество вызовов с голосового меню решил сделать умную маршрутизацию чтобы вызовы клиентов направлять на звонивших им операторов, в том числе полезно учитывая множество переадресаций на сотовые в компании. Решил зайдествовать func_odbc - добавляем в файл /etc/asterisk/func_odbc.conf: ; это уже должно быть там [general] dsn=asteriskcdrdb prefix=ODBC ;а это наша функция [MOBILE] writehandle=asteriskcdrdb synopsis=The function searches for the extension that last dialed this number. syntax=${CALLERID(number):-10} readsql=SELECT cnum FROM cdr WHERE dst like '%${ARG1}' ORDER BY calldate DESC LIMIT 1 Добавляем в /etc/asterisk/extensions_custom....

18 February 2025 · 1 min · Dmitriy Q

Дневник сборки дистрибутива

Решил немного “интерактивить” и писать что-то вроде дневника по решению ошибок и добавлению функций в скрипт сборки. Скрипт собирает текущий релиз 20 версии Asterisk и 16 версии FreePBX. Публичный репозитарий Проект разработки 19.12.2024 Исправлена ошибка установки CDR Viewer MOD - были лишние пробелы после EOF в предыдущей функции и исправил ошибку с незапросом пароля для пользователя. Начал писать веб-оболочку для редактирования пользователей - добавление в .htpasswd работает, теперь надо продумать как добавлять пользователей и в конфиг CDR Viewer MOD....

18 December 2024 · 1 min · Dmitriy Q

Оценка качества обслуживания в Asterisk (альтернатива)

Альтернативное решение для оценки качества (на примере 200 очереди). В файл /etc/asterisk/queues_post_custom.conf вносим редакцию для 200 очереди чтобы получить номер ответившего агента (можно и проще, но не срабатывало с IAX): [200](+) setinterfacevar=yes Создаем таблицу service_survey в БД asteriskcdrdb для значений: CREATE TABLE `service_survey` ( `num` varchar(20) DEFAULT NULL, `operator` varchar(20) DEFAULT NULL, `queue` varchar(20) DEFAULT NULL, `valuation` varchar(20) DEFAULT NULL, `date` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; В func_odbc.conf добавляем функцию записи в базу: [qam] writehandle=asteriskcdrdb writesql=INSERT INTO service_survey (num,operator,queue,valuation,date) VALUES ('${ARG1}','${ARG2}','${ARG3}','${ARG4}',NOW()) Клепаем само меню в /etc/asterisk/extensions_custom....

25 November 2024 · 2 min · Dmitriy Q

Оценка качества обслуживания в Asterisk

Поступил заказ сделать модуль оценки работы оператора и качества оказания услуги. За основу взял статью merion networks. Всё делалось на FreePBX 15 и Asterisk 18. В файл /etc/asterisk/queues_post_custom.conf вносим редакцию для нужной очереди (например 500) чтобы получить номер ответившего агента (можно и проще, но не срабатывало с IAX): [500](+) setinterfacevar=yes Клепаем само меню в /etc/asterisk/extensions_custom.conf: [assessment] exten => _X.,1,Answer() same => n,Set(CHANNEL(language)=ru) same => n,Set(COUNT=1) same => n,Wait(1) same => n,Playback(custom/qam-intro) same => n,Set(TIMEOUT(digit)=1) same => n,NoOP(Count: ${COUNT}) same => n,GotoIf($["${COUNT}" = "1"]?...

22 November 2024 · 3 min · Dmitriy Q

Установка модулей во FreePBX не из репозитория

Сегодня разберем как установить модуль без доступа к репозиториям Sangoma или вообще без доступа в интернет. Заходим в модуль FreePBX Управление модулями -> Admin -> Module Admin. Вкладка Module Updates и жмём кнопку Upload Modules. Можно выбрать как загрузку из веба, так и с жесткого диска. Загрузка (с жесткого диска) - 2 пункт. Жмёте Обзор, выбираете файл со своего компьютера и по нажатию кнопки Upload (From Hard Disk) он загрузится, проверится и при успешной проверке на соответствие модулю установится....

13 November 2024 · 1 min · Dmitriy Q

Задание определенного направления (выход через конкретный транк)

Для начала создаем нужный нам маршрут: Подключения → Исходящая маршрутизация. Задаем произвольно описание, необходимый нам CallerID и транк, через который будет передаваться вызов с этим CallerID (если транк с регистрацией и допустим только один CallerID, то можно указать «Форсировать использование транкового CID (Force Trunk CID) в настройках транка») Задаем необходимые (допустимые) нам шаблоны набора номеров: Можете включить запись вызова: После этого обязательно Сохраняем и Применяем изменения. Как видим — появился новый маршрут в исходящих маршрутах....

2 November 2024 · 2 min · Dmitriy Q