Установка 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

Установка админского пароля на Yealink

Итак, расскажу про способ смены админского пароля на телефонах Yealink при имеющемся доступе под пользователем user через веб-интерфейс. Заходим в веб-интерфейс телефона: Settings -> Configuration и там пункт Import CFG Configuration File. Создаем файл с любым именем, но содержание должно быть таким: #!version:1.0.0.1 ### This file is the exported MAC-all.cfg. lang.gui = Russian lang.wui = Russian ### For security, the following parameters with password haven't been display in this file. security....

12 February 2025 · 1 min · Dmitriy Q

Включение удаленного входа по паролю для root

После установки Ubuntu понадобилось мне дать удаленный доступ по паролю. Быстро нагуглил что нужно в конфиге sshd (etc/ssh/sshd_config) раскомментировать поле с PermitRootLogin yes, хорошо, делаю, перезагружаю sshd - не пускает, PuTTY ругается что вход возможен только по pubkey. Ищу ещё - нашёл что нужен ещё PasswordAuthentication yes, делаю, перезагружаю sshd, но всё равно не работает! Путём долгого поиска выясняется что нужен параметр challenge-response, который сейчас включается параметром KbdInteractiveAuthentication yes. Перезагружаю sshd и наконец PuTTY запросил пароль после ввода логина....

16 January 2025 · 1 min · Dmitriy Q

Настройка телефонов SCCP (Cisco) Asterisk

В настройках FreePBX → Extensions → Add Estension → Другое устройство → Сохранить. Внутренний номер пользователя — номер, который нам требуется создать, у нас 2134; Отображаемое имя — имя, например «***** Anna»; Псевдоним номера ИД — не трогаем; Псевдоним SIP → номер что мы вводили во внутреннем номере - 2134; Прокручиваем страничку ниже Устройство использует custom технологию dial → SCCP/2134 Сохранить (Submit). Далее перемещаемся в консоль и будем исправлять файлы sccp_extensions....

25 December 2024 · 2 min · Dmitriy Q

Инструкция по восстановлению прошивки телефонов Yealink

Обзор В этом руководстве разъясняется, как использовать режим восстановления, чтобы подготовить телефон, когда он не запускается. IP-телефоны Yealink поддерживают режим восстановления только по протоколу TFTP. Как правило, когда IP-телефон Yealink включен и подключен к сети должным образом, он успешно запустится и будет готов к использованию. В случае, если IP-телефон случайно выключен при обновлении, системные данные во флеш-памяти могут быть повреждены, и это делает IP-телефон незагружаемым. Поэтому мы настоятельно рекомендуем не отключать питание при обновлении прошивки или конфигурации телефона....

26 November 2024 · 2 min · Dmitriy Q

Multicast Paging в Asterisk

В настройках Yealink указываем как на скриншоте - адрес и порт, которые будет прослушивать телефон на наличие мультикаста. В диалплан прописываем экстен для вызова пейджинга: [ext-paging] exten => *91,hint,Custom:PAGE91 exten => *91,1,NoOP(Multicast Paging) same => n,Set(CONNECTEDLINE(name-charset,i)=utf8) same => n,Set(CONNECTEDLINE(name,i)=Selector) same => n,Set(CONNECTEDLINE(num,i)=*91) same => n,Wait(1) same => n,Page(MulticastRTP/basic/239.0.0.1:6061) same => n,Hangup() И теперь при вызове *91 на телефонах, у кого указаны подобные настройки, будет срабатывать пейджинг.

26 November 2024 · 1 min · Dmitriy Q

Простой пример работы AGI

Рассмотрим работу AGI на примере скрипта: #!/usr/bin/php7.3 -q <?php require('phpagi.php'); $AGI = new AGI(); $filepath = "/var/www/html/statistic.local/"; //Путь к файлу $filedb = $AGI->request['agi_arg_1']; //Имя файла с базой $ls = $AGI->request['agi_arg_2']; //Лицевой счет абонента $fullfile = $filepath . $filedb; $arr = file($fullfile); foreach($arr as $v){ if (strpos($v,$ls,0) !== false){ $string = $v; $ls_array = explode('|', $string); if ($ls == $ls_array[2]){ $dolg = $ls_array[6]; break; } } } $summa = explode('.',$dolg); $summa_rub = (int) $summa[0]; $summa_kop = (int) $summa[1]; if ($summa_rub % 10 == 1){ $sound_r = "rouble"; } elseif (in_array(($summa_rub % 10), [2, 3, 4])){ $sound_r = "roublya"; } elseif (in_array(($summa_rub % 10), [5,6,7,8,9,0])){ $sound_r = "roubley"; } if ($summa_kop % 10 == 1){ $sound_k = "copeck"; } elseif (in_array(($summa_kop % 10), [2, 3, 4])){ $sound_k = "copeck-i"; } elseif (in_array(($summa_kop % 10), [5,6,7,8,9,0])){ $sound_k = "copecks"; } $AGI->set_variable('DOLG',$dolg); $AGI->set_variable('DOLG_R',$summa[0]); $AGI->set_variable('DOLG_K',$summa[1]); $AGI->set_variable('sound_r',$sound_r); $AGI->set_variable('sound_k',$sound_k); ?...

25 November 2024 · 2 min · Dmitriy Q

Обзор возможностей Asterisk

Внутренние номера Внутренние номера в Asterisk могут быть 3-х, 4-х и более значными, могут быть и двух, но двухзначными принято делать коды функций, хоть они как правило и начинаются с символа *. Каждому номеру возможно задать описание с дополнительной информацией — будь то должность человека или его Фамилия и Имя. Естественно каждому номеру необходим пароль. Так же имеется возможность распределять номерам имеющиеся внешние исходящие номера. Начиная с 13 версии появилась возможность мультирегистрации для внутренних номеров — это значит что под одним внутренним номером может быть зарегистрировано несколько устройств: настольный телефон и софтфон на смартфоне например....

13 November 2024 · 6 min · Dmitriy Q

Модуль детализации звонков

Выглядит он так: Задается множество фильтров по различным параметрам, без фильтров покажет все вызовы начиная с самых последних: При наличии значка возможно прослушать или скачать запись кликнув по соответствующей кнопке. Возможна фильтрация по содержащимся цифрам в номере: Причем фильтрация возможна по содержанию цифр внутри номера, в начале или конце и с использованием инверсии «Не». При включении «Дополнительных фильтров» возможна фильтрация по входящему номеру (DID) Параметр в Куда звонили означает конечную точку вызова, s - означает что вызов пришел куда-то на голосовое меню или прочее направление и далее не продвинулся, а номер - означает конечного оператора....

13 November 2024 · 1 min · Dmitriy Q

Работа с CLI Asterisk

CLI (Command Line Interface) - очень полезный инструмент диагностики и отладки при работе с Asterisk. Войти в него можно командой asterisk -rvv (или sudo asterisk -rvv), где количество v (verbose) означает детальность вывода, а r подключение к Asterisk. При этом отобразится пользователь, от которого запущен Asterisk, его версия, имя машины, на которой запущено приложение и pid процесса. *CLI> означает интерактивный режим работы в CLI Asterisk. Список всех доступных для Вашего Asterisk команд можно узнать командой core show help....

2 November 2024 · 9 min · Dmitriy Q