Когда в компании возникает ситуация, в которой необходимо настраивать телефонию, перед исполнителем открывается множество возможностей реализации данной задачи. Например, можно использовать довольно известные сервисы по типу Mango Office, однако, поддержание работы этого сервиса может обойтись компании в копеечку. Поэтому, с наибольшей вероятностью, руководство затребует от исполнителя какое-нибудь OpenSource решение, которое позволит звонить как во внешний мир, так и внутри компании. Для реализации подобного сервиса существует Asterisk — свободное решение компьютерной телефонии с открытым исходным кодом от компании Digium. Его одного было бы достаточно, если бы администрированием телефонии занимался исключительно системный администратор, который готов заводить пользователей и вытаскивать записи разговоров при помощи терминала (благо, Asterisk располагает таким функционалом). Однако, зачастую это не так, поэтому требуется организовать и визуальное представление телефонии, которым станет FreePBX. FreePBX — графический интерфейс пользователя с открытым исходным кодом, предназначенный для управления Asterisk.
Разобравшись с исходными данными задачи, следует рассмотреть среду, в которой данное решение будет реализовываться. В первую очередь нам понадобится сервер (или виртуальная машина) на базе Linux. В данной статье используется дистрибутив Ubuntu 20.04.04 Live Server. Его можно бесплатно загрузить с официального сайта.
Следует отметить, что FreePBX предлагают готовый дистрибутив Linux, базирующийся на CentOS и включающий в себя как Asterisk, так и FreePBX. Это удобное решение, однако, оно содержит большое количество коммерческих предложений по приобретению модулей, а также требует активации. Грубо говоря — много лишних действий и никакого контроля происходящего. По этой причине было решено устанавливать пакеты вручную.
Руководство будет разделено на несколько частей. На данном этапе мы рассмотрим установку и настройку Asterisk. Остальные манипуляции будут освещены в следующих материалах.
Когда среда для развертывания сервиса будет готова, можно переходить к установке. Для начала следует обновить имеющиеся пакеты:
apt-get update -y
apt-get upgrade -y
После обновления пакетов, установим все зависимости, требуемые для работы Asterisk:
apt-get install unzip git gnupg2 curl libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev subversion -y
Зависимости установлены, переходим к установке самого Asterisk. Скачаем его с официального сайта при помощи утилиты wget. Добавлю, что на текущий момент (октябрь 2022г.), последней версией является 18-ая. Если Вы желаете установить старую версию, смените число «18» из ссылки на «17», «16» и так далее:
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
Скачанный архив запакован в формате .tar. Распакуем его:
tar -xvzf asterisk-18-current.tar.gz
После распаковки следует перейти в распакованную директорию Asterisk и запустить скрипты установки:
cd asterisk-18.*
contrib/scripts/get_mp3_source.sh
contrib/scripts/install_prereq install
Для конфигурации Asterisk, после завершения предыдущих скриптов, осуществляем следующее:
./configure
Результатом данной команды будет вот такой вывод:
Далее сконфигурируем аддоны и модули Asterisk:
make menuselect
Выбирать аддоны и модули следует осторожно. В особенности, это касается звуковых файлов, так как их загрузка может занимать достаточное количество времени.
Выбираем модули в соответствии с изображениям:
Также рекомендуется установить русскоязычные пакеты, в соответствии с англоязычными, отображёнными на скриншотах.
Выбрав модули, вводим команду:
make -j2
Успешность выполнения команды сигнализирует данный вывод:
Далее установим сам Asterisk:
make install
После установки получим такой вывод:
Далее запустим попорядку следующие команды, установив конфигурации и предустановки:
make samples
make config
ldconfig
Установив Asterisk в нашу систему, необходимо сконфигурировать его работу. Первым делом создадим учётную запись и группу Asterisk, чтобы программа запускалась не только от имени администратора:
groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
Проведем настройку аудио для пользоватлея Asterisk:
usermod -aG audio,dialout asterisk
Теперь выдадим разрешения на влпдение Asterisk:
chown -R asterisk.asterisk /etc/asterisk
chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk.asterisk /usr/lib/asterisk
Для правильной работы Asterisk от имени нужной группы и пользователя, необходимо отредактировать файл конфигурации Asterisk:
nano /etc/default/asterisk
В данном файле нам необходимо раскомментрровать (убрать из начала символы точки с запятой) следующие строки:
AST_USER="asterisk"
AST_GROUP="asterisk"
Сохраняем данные изменения и переходим к работе с другим файлом:
nano /etc/asterisk/asterisk.conf
Делаем то же самое с другими строчками:
runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.
Как и в предыдущий раз, сохраняем файл. Теперь сделаем перезапуск всего Asterisk:
systemctl restart asterisk
Проверим статус работы:
systemctl status asterisk
Рещультатом предыдущей команды должен стать такой вывод:
После их выполнения заново перезапустим установленный Asterisk:
systemctl restart asterisk
Если все сделано правильно, можем перейти к командной строке самого Asterisk:
asterisk -rvv
В случае успеха мы увидим что-то такое:
Для выхода из CLI достаточно просто ввести exit
Тем не менее, в некоторых случае на данном этапе возникает ошибка. Система не может опеределить факт запуска Астериск, не пуская нас в команднудю строку. Это – большая проблема, так как FreePBX в последствие не сможет подключиться к Asterisk. Для её решения достаточно выдать права ряду диркеторий. В первую очередь, папке /var/run и её содержимому /asterisk нужны права 755 (или 777).
После данных процедур перезапускаем Asterisk и проверяем возможность перехода в CLI:
systemctl restart asterisk
asterisk -rvv
На данном этапе установку Asterisk можно считать завершённой. В дальнейших материалах мы рассмотрим процесс наладки FreePBX, а также произведем настройку Samba для создания общедоступной папки с аудиозаписями звонков.