- Как скачать, установить и настроить через FreePBX за 15 минут
- Подготовка сервера
- Установка
- Сборка DAHDI
- Сборка LibPRI
- Установка Asterisk
- Настройка и запуск
- Ошибки запуска
- Предупреждения при запуске
- Заведение первых номеров
- Проверка
- Подготовка системы
- 1. Время
- 2. Настройка firewall
- 3. Установка пакетов
- 4. Создание пользователя
- Настройка веб-сервера
- Сервер баз данных
- NGINX
- PHP и компоненты
- NGINX + PHP
- NodeJS
- Установка Asterisk
- Установка FreePBX
- CDR и подключение к базе данных
- Читайте также
- Файлы для первоначальной настройки
- Установка Asterisk из исходников
- Сборка и установка необходимых зависимостей и пакетов.
- Установка и установка их исходников
- Подключение абонентов
- Добавление плана звонков
- Настройка транка
- Редактирование dialplan
- Ошибки в настройке Asterisk
- Расширенные настройки Asterisk
- Настройка голосового меню (IVR)
- Голосовая почта
- Очередь входящих звонков (queue)
- Статистика звонков (cdr viewer)
- Запись разговоров (record)
- Музыка на ожидании (hold on)
- Конференции
- Перевод, перехват и переадресация звонков
- Настройка Asterisk с помощью fail2ban
- Настройка обратного звонка
- Настройка черного списка
- Настройка умной предустановленной переадресации вызовов
- Автообзвон
- Отправка факсов на e-mail
- Преимущества Asterisk
Как скачать, установить и настроить через FreePBX за 15 минут

Бытует мнение, что для того, чтобы установить Asterisk, сначала нужно установить Linux на компьютер, или сервер. А что делать, если отказ от Windows невозможен? Просто установите Asterisk под Windows!
• Устанавливаем VirtualBox: Всё время жмем далее и со всем соглашаемся;
• Далее в окне программы нажимаем «Файл» > «Импорт конфигураций». Указываем путь до скачанного образа;
• После импорта нам останется запустить получившуюся виртуальную машину и приступать к настройке телефонии в офисе.
Что Вы получите:
В итоге Вы получите полнофункциональную систему телефонии Asterisk 13 с WEB интерфейсом FreePBX 14. Система телефонии работает под Windows.
Видео по установке Asterisk под Windows:
Что еще нужно сделать для телефонизации офиса?
Конечно же, дать пользователям телефонии и руководству удобный русскоязычный доступ к статистике и записям звонков.
Обычно, Директору, секретарю, или начальникам отделов требуется смотреть статистику звонков. Также им необходимо искать и прослушивать записи разговоров.
В решении этой задачи Вам поможет Windows программа HelloAsterisk.
Посмотрите обзор поиска звонков в программе HelloAsterisk:
Тематические термины: Asterisk, Linux, Ubuntu
Инструкция позволит быстро познакомиться с сервером Asterisk, выполнив базовые действия по установке и настройке сервера. Нижеописанные действия протестированы на Ubuntu 16.04 и Asterisk 15.
Подготовка
Установка
Сборка DAHDI
Сборка LibPRI
Установка Asterisk
Настройка и запуск
Возможные ошибки
Возможные предупреждения
Заведение первых номеров (extensions)
Проверка
Подготовка сервера
Актуализируем список пакетов:
Установка
Установку можно выполнить с помощью команды apt install asterisk. Но в данной инструкции мы разберем установку путем сборки из исходников.
Рекомендуется установить Asterisk с DAHDI (драйверы плат интерфейсов телефонии) и LibPRI (библиотека для работы с потоковыми TDM-интерфейсами). Сначала необходимо собрать DAHDI, затем LibPRI и только потом — Asterisk.
Устанавливаем пакеты, необходимые для корректной сборки DAHDI и LibPRI:
apt install make gcc
Сборка DAHDI
Распаковываем его и переходим в распакованный каталог:
tar -xvf dahdi-linux-complete-current.tar.gz
Собираем пакет и устанавливаем его:
Выходим из каталога dahdi:
Сборка LibPRI
tar -xvf libpri-current.tar.gz
Собираем и устанавливаем:
Выходим из каталога libpri:
Установка Asterisk
Переходим по ссылке https://downloads.asterisk.org/pub/telephony/asterisk и копируем ссылку на последнюю версию asterisk. Используя ссылку, скачиваем исходник:
* в моем случае, последняя версия была 15.
Распаковываем архив и переходим в папку, появившуюся после распаковки:
tar -xvf asterisk-*.tar.gz
Устанавливаем библиотеки для работы с mp3:
./configure —prefix=/usr —sysconfdir=/etc —localstatedir=/var —libdir=/usr/lib64 —with-dahdi —with-pri —with-iconv —with-libcurl —with-speex
- —with-dahdi — с драйверами DAHDI.
- —with-pri — с библиотекой PRI.
- —with-iconv — с возможностью конвертации кодировок (будет не лишним для поддержки русских символов).
- —with-libcurl — возможность извлекать данные посредством CURL-запросов (по http).
- —with-speex — дополнительный VBR-кодек (используется на многих софт-фонах).
** список всех доступных опций можно посмотреть командой ./configure -h.
Мы должны увидеть логотип астериска:
.$$$$$$$$$$$$$$$=..
.$7$7.. .7$$7:.
.$$:. ,$7.7
.$7. 7$$$$ .$$77
..$$. $$$$$ .$$$7
..7$ .?. $$$$$ .?. 7$$$.
$.$. .$$$7. $$$$7 .7$$$. .$$$.
.777. .$$$$$$77$$$77$$$$$7. $$$,
$$$~ .7$$$$$$$$$$$$$7. .$$$.
.$$7 .7$$$$$$$7: ?$$$.
$$$ ?7$$$$$$$$$$I .$$$7
$$$ .7$$$$$$$$$$$$$$$$ :$$$.
$$$ $$$$$$7$$$$$$$$$$$$ .$$$.
$$$ $$$ 7$$$7 .$$$ .$$$.
$$$$ $$$$7 .$$$.
7$$$7 7$$$$ 7$$$
$$$$$ $$$
$$$$7. $$ (TM)
$$$$$$$. .7$$$$$$ $$
$$$$$$$$$$$$7$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.
Вызываем оконное меню настройки модулей:
Для большинства случаев, настройки можно оставить по умолчанию. В противном случае рекомендуется изучить опции и выбрать необходимые. После нажимаем Save & Exit.
Затем собираем исходник:
И выполняем установку:
Установим примеры конфигурационных файлов и документацию:
Устанавливаем скрипт инициализации (для автозапуска):
Устанавливаем скрипты для отсекания логов:
Создаем конфигурационный файл для указания дополнительного пути с библиотеками:
Добавляем в него одну строчку:
* это путь до каталога с библиотеками, с которым мы собирали asterisk (опция —libdir).
Настройка и запуск
Открываем конфигурационный файл:
И редактируем следующее:
Создаем системную учетную запись asterisk:
chown -R asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /usr/lib64/asterisk
chown -R asterisk:asterisk /var/log/asterisk
Исправляем ошибки и предупреждения. В моем случае были следующие.
Ошибки запуска
enabled = no
No directory URL or host found. Модуль для работы lpad неправильно настроен или не настроен.
PostgreSQL RealTime: Failed to connect database asterisk on 127.0.0.1. Модуль для работы с СУБД PostgreSQL.
Failed to open /dev/dahdi/transcode: No such file or directory. Ошибку можно увидеть, если нет оборудования DAHDI.
Вышеописанные ошибки возникают из-за включенных, но не используемых модулей. Отключаем:
noload => res_config_ldap.so
noload => res_config_pgsql.so
noload => codec_dahdi.so
Предупреждения при запуске
- Unable to find a valid server address or name.
- Process_dahdi: Ignoring any changes to …
- CEL pgsql config file missing global section.
- Cel_tds module had config problems; declining load.
Отключаем следующие модули:
noload => res_phoneprov.so
noload => app_dahdiras.so
noload => chan_dahdi.so
noload => res_pjsip_phoneprov_provider.so
noload => cel_pgsql.so
noload => cel_tds.so
Список всех загружаемых модулей можно посмотреть командой:
ls -la /usr/lib64/asterisk/modules/
Разрешаем сервис asterisk и запускаем его:
systemctl enable asterisk
systemctl start asterisk
Заведение первых номеров
Для первой настройки достаточно завести 2 номера с возможностью подключения по SIP.
Создаем правило обработки вызова (контекст). Открываем следующий файл:
И добавляем в него следующее:
* создаем контекст с именем outcaling для четырехзначных номеров (XXXX) с вызовом по SIP по внутреннему номеру.
Открываем следующие конфигурационный файл:
И добавляем в него два внутренних номера (extensions):
systemctl restart asterisk
Проверка
Все, что происходит в Asterisk можно посмотреть в лог-файле командой:
tail -f /var/log/asterisk/messages
Для теста настроенного сервера можно воспользоваться IP-телефоном или софт-фоном на компьютере или телефоне. Например, а качестве SIP-клиента под Windows можно установить бесплатную программу 3CX, для Android — Zoiper.
Подробнее рассмотрим настройку 3CX. Скачиваем ее с официального сайта. Устанавливаем, приняв лицензионное соглашение и нажимая далее. После установки запускаем приложение и на запрос отвечаем, что создадим новый профиль. Нажимаем New и вводим данные для подключения:

Используемые термины: Asterisk, FreePBX, Ubuntu, NGINX.
Самый быстрый способ установить Asterisk + FreePBX — использовать ISO-образ FreePBX Distro. Но мы рассмотрим установку данной сборки на Linux Ubuntu «с нуля».
Данная инструкция написана на примере установки Asterisk 18 LTS и FreePBX 16 — хоть на момент написания этих строк, последняя версия астериска была 20-я, FreePBX 16 поддерживает, максимум, Asterisk 19. В качестве веб-сервера для FreePBX мы будем использовать NGINX.
Подготовка системы
Для корректной работы сервера необходимо настроить системное время, открыть порты в брандмауэре и создать пользователя asterisk. Также мы установим несколько пакетов и создадим учетную запись, от которой будет работать Asterisk.
1. Время
Задаем часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время. Список всех зон можно посмотреть командой timedatectl list-timezones.
Устанавливаем сервис для синхронизации времени:
apt install chrony
И запускаем его с разрешением автозапуска:
systemctl enable chrony —now
2. Настройка firewall
Мы должны открыть порты:
- 5060 (tcp/udp) — SIP.
- 5061 (tcp/udp) — SIP over TLS.
- 80 (tcp) — http.
- 443 (tcp) — https.
- Диапазон от 10000 до 20000 (udp) — голосовой трафик.
В Ubuntu для управления брандмауэром, как правило, использоваться iptables. Рассмотрим настройку.
Открываем порты для астериска и веб-сервера:
iptables -I INPUT -p tcp —match multiport —dports 5060,5061 -j ACCEPT
iptables -I INPUT -p udp —match multiport —dports 5060,5061 -j ACCEPT
iptables -I INPUT -p tcp —match multiport —dports 80,443 -j ACCEPT
iptables -I INPUT -p udp —dport 10000:20000 -j ACCEPT
Для сохранения правил установим:
3. Установка пакетов
Выполним установку пакетов:
apt install wget tar language-pack-ru
- wget — утилита для загрузки файлов по сети.
- tar — для распаковки архивов.
- language-pack-ru — русская локаль. Она нужна, чтобы у нас была возможность выбрать русский интерфейс во FreePBX.
4. Создание пользователя
Нам нужен общий пользователь, от которого будет работать Asterisk и веб-сервер. Это необходимо, чтобы веб-сервер имел доступ к каталогам астериска.
Создаем пользователя командой:
Настройка веб-сервера
Для работы FreePBX нам необходим веб-сервер и СУБД. В нашем примере мы установим связку NGINX + PHP + MariaDB + NodeJS.
Сервер баз данных
apt install mariadb-server
Стартуем сервис и разрешаем его автозапуск:
systemctl enable mariadb —now
Задаем пароль для суперпользователя СУБД:
NGINX
Для установки веб-сервера вводим команду:
apt install nginx
Открываем конфигурационный файл:
В секции http добавим опцию:
* данный параметр разрешает загрузку файлов размером до 128 Мб.
Перезапускаем nginx и разрешаем автозапуск:
systemctl enable nginx

PHP и компоненты
Прежде чем начать установку, необходимо изучить документацию к устанавливаемой версии FreePBX в части требований версии PHP. Например, для нашей 16-й версии это можно сделать на странице с описанием релиза.
Также имейте ввиду, что для каждой версии дистрибутива Ubuntu характерна установка своей версии PHP. Иногда, для установки определенной версии нам потребуется подключить дополнительный репозиторий. Подробнее читайте в инструкции Установка разных версий PHP на Linux Ubuntu.
Установим интерпретатор php и компоненты, необходимые для работы FreePBX:
apt install php php-fpm php-bcmath php-gd php-json php-mbstring php-mysqlnd php-pear php-snmp php-zip php-curl
В процессе установки php устанавливается apache, но нам он не нужен — вводим команду для запрета его автозапуска:
systemctl disable apache2
Теперь смотрим установленную версию php командой:
В моем случае была 7.4. Для дальнейшего удобства мы создадим переменную с указанием версии:
Теперь открываем настройки для php командой:
Правим значения для следующих опций:
- upload_max_filesize — максимальный объем загружаемого файла.
- post_max_size — максимальный объем всех загружаемых файлов за один раз.
- date.timezone — временная зона.
- memory_limit — максимальный объем памяти, который может использовать интерпретатор.
Открываем настройки php-fpm:
Задаем значения для следующих опций:
* FreePBX должен работать с файлами в каталоге /etc/asterisk. Владельцем этого каталога будет пользователь asterisk, поэтому обработка php должна выполняться тоже от данного пользователя, чтобы иметь соответствующие права на редактирование конфигурационных файлов.
Разрешаем php-fpm и перезапускаем сервис:
NGINX + PHP
Свяжем наш веб-сервер с php. Для этого откроем конфигурационный файл:
Добавим следующие строки в разделы http — server:
* в данном примере мы создаем секцию location для обработки php через php-fpm. Обратите внимание, что в моем случае для взаимодействия используется сокет /run/php/php7.4-fpm.sock. Для другой версии PHP путь будет другим.
Выполним проверку конфигурации:
И перезапустим nginx:
nginx -s reload
Создадим файл php в домашней директории nginx:
<?php phpinfo(); ?>

Мы готовы идти дальше.
NodeJS
Последний компонент для нашего веб-сервера — NodeJS.
В стандартном репозитории Ubuntu может быть очень старая версия данного компонента. Установим репозиторий для nodejs 16:
Теперь можно выполнить установку:
apt install nodejs
Убедиться в установке можно командой просмотра версии:
Наш веб-сервер готов к работе.
Установка Asterisk
Мы будем устанавливать 18-ю версию Asterisk. На странице загрузки мы можем посмотреть все версии АТС и ссылки на них:

Распаковываем архив и переходим в него:
tar -xvf asterisk-*.tar.gz
Устанавливаем зависимости для астериска:
Если система запросит телефонный код страны, вводим 7 (если мы настраиваем телефонию для России).
В итоге, мы должны увидеть:
#############################################
## install completed successfully
#############################################
Чистим временные файлы, которые появились после установки зависимостей:
Добавляем библиотеку для работы с mp3:
* в данном примере мы конфигурируем исходник без дополнительных опций. Полный перечень опций и что они означают можно посмотреть командой ./configure -h.
Мы должны увидеть:
.$$$$$$$$$$$$$$$=..
.$7$7.. .7$$7:.
.$$:. ,$7.7
.$7. 7$$$$ .$$77
..$$. $$$$$ .$$$7
..7$ .?. $$$$$ .?. 7$$$.
$.$. .$$$7. $$$$7 .7$$$. .$$$.
.777. .$$$$$$77$$$77$$$$$7. $$$,
$$$~ .7$$$$$$$$$$$$$7. .$$$.
.$$7 .7$$$$$$$7: ?$$$.
$$$ ?7$$$$$$$$$$I .$$$7
$$$ .7$$$$$$$$$$$$$$$$ :$$$.
$$$ $$$$$$7$$$$$$$$$$$$ .$$$.
$$$ $$$ 7$$$7 .$$$ .$$$.
$$$$ $$$$7 .$$$.
7$$$7 7$$$$ 7$$$
$$$$$ $$$
$$$$7. $$ (TM)
$$$$$$$. .7$$$$$$ $$
$$$$$$$$$$$$7$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.
configure: Package configured for:
configure: OS type : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : pc : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : pc : linux-gnu :
Продолжаем настройку — запускаем меню для выбора параметров:
Можно оставить значения по умолчанию и сохранить настройки.
Теперь можно запустить сборку астериска:
Мы должны увидеть сообщение об успешной сборке:
+——— Asterisk Build Complete ———+
+ Asterisk has successfully been built, and +
+ can be installed by running: +
+ +
+ make install +
+——————————————-+
Устанавливаем скрипты для автозапуска АТС и готовые конфигурационные файлы:
Ранее мы создали пользователя asterisk, от которого должен запуститься наш сервер телефонии. Для этого откроем файл:
defaultlanguage = ru
documentation_language = ru_RU
Задаем владельца для следующих каталогов:
chown -R asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /var/log/asterisk
Откроем файл с настройкой модулей:
Можно добавить модуль chan_sip:
load = chan_sip.so
Мы должны увидеть Asterisk Ready:

После успешной проверки, можно запустить Asterisk в качестве демона:
systemctl enable asterisk
systemctl start asterisk
Установка FreePBX
Возвращаемся в домашнюю папку пользователя:
apt install sox mpg123
- sox — консольная утилита для преобразования аудиофайлов из одного формата в другой.
- mpg123 — аудиопроигрыватель/декодер реального времени.
Скачиваем портал для управления астериском:
* мы скачаем freepbx версии 16.
Распаковываем скачанный архив:
tar zxf freepbx-*.tgz
Переходим в распакованный каталог:
Запускаем скрипт проверки работы Asterisk:
STARTING ASTERISK
Asterisk is already running
Начнется установка — в конце мы должны увидеть:
You have successfully installed FreePBX
Доустановим модуль управления сертификатами:
fwconsole ma downloadinstall certman
Обновим все компоненты:
fwconsole ma updateall
fwconsole reload —verbose

После входим в панель администратора под созданной учетной записью. Система нас запросит региональные настройки:

Теперь открываем конфигурационный файл:
#include manager_additional.conf
#include manager_custom.conf
;include manager_additional.conf
;include manager_custom.conf
Перезапускаем сервис Asterisk:
systemctl restart asterisk
Asterisk + FreePBX настроен.
CDR и подключение к базе данных
В моем случае, не работало ведение CDR, а при вводе в консоли asterisk команды:
> odbc show
ODBC DSN Settings
——————
Name: asteriskcdrdb
DSN: MySQL-asteriskcdrdb
Last fail connection attempt: 2021-05-08 10:25:52
Number of active connections: 0 (out of 5)
Logging: Disabled
То есть, нет подключения к базе данных asteriskcdrdb. А при попытке подключиться к нужному DSN из командной строки:
isql -v MySQL-asteriskcdrdb
То есть, проблема в отсутствии необходимой библиотеки при подключении к базе данных.
Нам необходимо выполнить 2 действия:
- Установить коннектор ODBC.
- Изменить драйвер для подключения к СУБД в odbc.ini.
Так как в данной инструкции мы используем в качестве севера баз данных MariaDB, нам необходим соответствующий коннектор. Для его установки воспользуемся инструкцией Настройка в Linux подключения к MariaDB из PHP с помощью ODBC.
После открываем файл:
В разделе MySQL-asteriskcdrdb задаем новое значение для параметра driver, а также проверяем что есть директива Server со значением нашего сервера баз данных:
* список доступных драйвером можно посмотреть в файле /etc/odbcinst.ini.
Открываем конфигурационный файл:
Проверяем наличие следующей записи (если ее нет, добавляем):
* в данном примере описано подключение к СУБД с драйвером MariaDB и путем до файла с библиотекой (отдельно для 32- и 64-разрядной версии).
systemctl restart asterisk
После можно проверить, что Asterisk подключился к базе:
Мы должны увидеть:
ODBC DSN Settings
——————
Name: asteriskcdrdb
DSN: MySQL-asteriskcdrdb
Number of active connections: 1 (out of 5)
Logging: Disabled
Читайте также
Вам могут быть полезны следующие инструкции:
1. Установка и базовая настройка сервера Asterisk на Ubuntu.
2. Настройка очередей звонков в Asterisk.
IP-АТС Asterisk умеет все то же, что и традиционная АТС, плюс поддерживает актуальные для бизнеса VoIP-протоколы: голосовую почту, конференц-связь, центр обработки звонков, интерактивное меню, хранение записей. Рассказываем, как настроить с нуля базовый функционал «Астериск» АТС и получить рабочий сервер компьютерной телефонии.
Для примера настройки Asterisk возьмем офис с такими характеристиками:
- 3 отдела, в которых работают 25 сотрудников;
- используются трехзначные телефонные номера;
- услуги предоставляет один SIP-провайдер.
Не советуем устанавливать Asterisk из репозитория, так как при данной установке может установиться не та версия Asterisk и необходимых к ней зависимостей. В данном случае используем установку Asterisk из исходников.
В разных операционных системах (Cent Os, Ubunty и др.) отличаются команды и необходимые зависимости.
Файлы для первоначальной настройки
Настройка Asterisk – это, по сути, редактирование конфигурационных файлов в директории /etc/asterisk/. К таким файлам относят:
- pjsip.conf – настройка мультимедийной библиотеки PJSIP;
- extensions.conf – настройка диалплана: вызовы, переадресация, мелодии на удержании, автосекретарь и прочее;
- asterisk.conf – настройка путей к используемым папкам Asterisk;
- cdr.conf – основные настройки отчета о звонках Call Detail Record;
- rtp.conf – настройки протокола RTP;
- features.conf – параметры перехвата и парковки вызова, максимальное время набора и переадресации, DTMF-коды абонентских функций;
- modules.conf – данные о модулях загрузки при старте Asterisk;
- musiconhold.conf – конфигурации музыки на удержании;
- iax.conf – соединения по протоколу IAX для объединения между собой двух и более АТС;
- voicemail.conf – параметры голосовой почты;
- logger.conf – параметры журналирования работы Asterisk.
Установка Asterisk из исходников
Сборка и установка необходимых зависимостей и пакетов.
Вначале нужно установить дополнительные пакеты, которые необходимы для установки и работы Asterisk. Без части из этих пакетов Asterisk вообще откажется устанавливаться (к примеру, если отсутствует gcc). Без некоторых пакетов Asterisk установится и даже будет работать, однако часть функционала окажется недоступна.
Например, пакет bison необходим для обработки выражений в файле extensions.conf. Еще пример: libnewt необходим для работы интерфейса управления astman. Для сервера Asterisk он не требуется, но без этого пакета у вас не будет приложения astman, которое является отдельной программой.
Приводим пример установки Asterisk 13 в системе Cent OS 6.9:
yum -y install gcc gcc-c++ make ncurses-devel libxml2-devel sqlite-devel bison kernel-headers kernel-devel openssl openssl-devel newt newt-devel flex curl sox binutils
Для 12-13 версии Asterisk требуется установка пакетов uuid и janson. Для установки библиотеки uuid в RHEL / Centos выполните команду:
yum -y install libuuid-devel
. Для установки библиотеки jansson в RHEL / Centos выполните команду:
yum -y install jansson-devel (предварительно требуется установка репозитория epel): yum install epel-release
После обновляем систему до последней версии командой yum update –y и перегружаем ее:
Установка и установка их исходников
Настройка Asterisk выполняется в чистом виде, без дополнительных плат расширения и модемов. Так вы получите максимально эффективное и рабочее решение – программную АТС, которую можно легко переносить с одного сервера на другой. Для этого необходимо установить Asterisk с нуля, инсталлировать pjproject с jansson, обновить систему и отключить SELinux.
Для начала отключим Selinux. Для этого заходим /etc/selinux/config и ставим: SELINUX=DISABLED.
Также выключаем FireWall (iptables):
- Проверка статуса: service
- Отключение: service
- Отключение из автозагрузки: chkconfig iptables off
- Перегружаем систему:
git clone git://github.com/asterisk/pjproject pjproject
Для конвертации mp3-файлов необходим пакет Lame. Установим его из репозитория:
rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
— проверка установленных репозиториев
Далее устанавливаем сам пакет: yum install lame
Скачиваем и устанавливаем библиотеку Libpri:
tar xvfz libpri-1.4-*.tar.gz
Если команды wget – не существует, то устанавливаем ее командой yum –y install wget
Далее скачиваем и устанавливаем сам asterisk 13:
tar xvfz asterisk-13-current.tar.gz
Если при проверки и подготовки сборки необходимых настроек, моделей никаких ошибок нету, то появиться в консоли иконка Asterisk

— выбираются все необходимые параметры, но в принципе можно оставить по умолчанию, главное чтобы были включены необходимые драйверы каналов
Выберите модули и звуки (можно оставить по умолчанию). В модулях выбираем только sip. (pjsip не ставим):



Установите озвучку для core и extra (для второй она доступна на русском языке). Рекомендуем кодеки g729, alaw, ulaw, ,gsm. Далее уже на Ваш вкус какие кодеки необходимы.:
Другие настройки можно оставить по умолчанию. Если вы установили модуль, но поняли, что он вам не нужен, просто отключите его в конфигурации и сделайте заново сборку через make. Сохраняем выбранные изменения.
При успешной установки Asterisk видно в строчках лога эмблему Asterisk (появляется после этапа configure).
Добавьте Asterisk в автозапуск и приступайте к работе:
chkconfig asterisk on
service asterisk start
Проверьте корректность запуска через консоль:
Перегрузите компьютер чтобы проверить автоматический запуск Asterisk. При вводе мы должны попасть в консоль, как на скрине выше.
Подключение абонентов
Протестируйте работу ATC Asterisk с помощью программного сервиса звонков. Сделайте базовые настройки в файле конфигурации sip.conf (где лежит – /etc/asterisk/sip.conf). По умолчанию в нем много полезных комментариев, но они загромождают код. Рекомендуем сделать копию файла конфигурации и сохранить ее отдельно, а оригинальную очистить от лишнего текста. Пример типовой конфигурации Asterisk:
context = default
realm = Test Aster
trustrpid = yes
sendrpid = yes
Настройка peer — https://www.voip-info.org/wiki/view/Asterisk+config+sip.conf
Для применения изменений Sip перегружаем SIP в консоли астера (asterisk -r) командой sip reload
Добавление плана звонков
План звонков при настройке Asterisk потребуется для совершения вызовов. Найдите файл конфигурации extensions.conf, сделайте его резервную копию, а оригинальную версию очистите от комментариев и запишите в нее следующее:
extension — http://asterisk.ru/knowledgebase/Asterisk+config+extensions.conf
;для исход. внутренних номеров между собой
Так вы добавите план звонков на трехзначные номера. В нашем случае это номера 101 и 102 (в sip.conf)
Перезагрузите план набора (диалплан):
Не страшно, если на экране появятся сообщения об ошибках – вы еще не завершили настройку и исправите их на следующих шагах.
Проверьте список пользователей командой:
sip show peers

Пользователи, пароли и контекст
Установите любую программную «звонилку» или воспользуйтесь реальным телефоном. В первом варианте вам понадобится настроить софт для работы с АТС. В нашем примере используем Zoiper 5. Пример настроек указан в нашей вики http://wiki.new-tel.net/doku.php?id=Zoiper-PC:

Настройки софтовой «звонилки» для проверки Asterisk
Все дальнейшие настройки звонилки и принцип работы указан в ссылке выше.
Теперь проверьте подключенные пиры с помощью команды:
Sip show peers
Если все верно, вы увидите такую строку:, в котором видно нашу SIP-линию и статус подключения SIP-линии:
Sip-линия IP-address A 5060 OK Cached RT
После настройки Asterisk протестируйте звонки на двух абонентах. Для этого подключите еще один физический или программный телефон. Позвоните от одного абонента другому (набрав с 101 на 102 и наоборот). Проверьте содержимое файла /var/log/asterisk/full. – там появится запись о последнем вызове. Также там фиксируется все сообщения и ошибки, возникаемые при работе Asterisk.
Записи обо всех последующих вызовах тоже попадут в этот файл. Позже их можно будет перебросить в базу данных.
Настройка транка
В конец файла sip.conf добавьте нового пира, как это рекомендует ваш провайдер:
secret=password ;пароль для подключения транка
Пусть Asterisk заново перечитает файл:
Если настройка программы в IP АТС Asterisk прошла успешно, в консоли появится такая строка:
Sip-линия IP-address A 5060 Unmonitored Cached RT
Редактирование dialplan
Чтобы настроить входящие и исходящие звонки в IP-телефонии Asterisk, отредактируйте файл extensions.conf, добавив в конце следующий код (с контекста local):
;для исход по транку (пример указан с префиксом 123#).
exten => _123#8XXXXXXXXXX,1,Set(CALLERID(all)=78125000963)
exten => _123#8XXXXXXXXXX,n,Noop( (CALLERID(all) + Boris)
избавление от префикса 123# и заменой цифры 8 на 7. Далее отправляется звонок на хост IP провайдера (указан в sip.conf)
для вход. по транку на 101.
exten => _XXXXXXXXXX,1,Dial(SIP/101,30,r)
Перезагрузите Asterisk командой core restart now и снова сделайте тестовый звонок. Информация о нем добавится в файле full
Пример лога консоли Asterisk:

На этом базовая настройка IP-телефонии «Астериск» завершена. Чтобы расширить функционал после того, как Asterisk установлен, настройте приветствие и голосовое меню (ivr), активируйте голосовую почту, настройте очередь (queue) входящих звонков, сбор и просмотр статистики (cdr viewer), запись (record) разговоров, поставьте музыку на ожидание (on hold), настройте конференции, перевод, перехват и переадресацию звонков.
Ошибки в настройке Asterisk
Рассмотрим распространенные ошибки при настройке виртуальной АТС «Астерикс» и дадим инструкции, которые помогут их .
- Asterisk не регистрируется на сервере и возвращает ответ Forbidden в режиме отладки.
Причина: некорректно введен пароль, указан SIP ID или домен. Проверьте содержимое файла sip.conf.
- Сбрасываются входящие звонки.
Причины: внутренний пользователь не зарегистрирован. Проверьте регистрацию командой sip show registry.
- Не проходят исходящие вызовы.
Причина: некорректно задан шаблон номера (пропущен символ «_» перед шаблоном).
- Звук проходит только в одну сторону.
Причина: вы используете NAT. Включите debug и используйте tcpdump – так вы увидите, куда уходят запросы и аудиотрафик.
Расширенные настройки Asterisk
Дальше нас интересует расширенная настройка Asterisk. Рассказываем, как несколько несложных действий помогут вам добавить новые возможности IP-телефонии для бизнеса.
Настройка голосового меню (IVR)
Другое его название – голосовое дерево. Настройка Asterisk IVR служит для того, чтобы звонящий мог подключиться к конкретному сотруднику организации или переключиться на определенную линию техподдержки. Также IVR позволяет получать полезную информацию без соединения с оператором: звонящий сможет выбрать пункт голосового меню и прослушать его содержимое.
Для настройки IVR перейдите в файл конфигурации extensions.conf. Все изменения необходимо внести в план набора dialplan. Общая схема выглядит так: вначале воспроизводится запись с приветствием, затем звонящий слышит предложение ввести номер в тональном режиме. Нам нужно обработать эту информацию и затем в зависимости от выбранного сценария перевести звонящего на конкретного сотрудника, очередь или другой план набора.
Голосовое приветствие должно быть сохранено в формате .waw или .gsm, это можно сделать во многих приложениях для звукозаписи. Если вы используете готовый файл в другом формате, воспользуйтесь пакетом для конвертации sox.
В Asterisk инструкция для изменения или создания IVR выглядит следующим образом:
а) в файл конфигурации добавьте код:
б) перезапустите настройки:
asterisk -x «dialplan reload»
в) настройте возможность выбора отдела:
exten => 333,1,Answer()
exten => 333,2,Background(basic-pbx-ivr-main)
exten => 333,3,WaitExten(5)
exten => 1,1,Goto(managers,s,1)
exten => 2,1,Goto(support,s,1)
Снова перезапустите настройки:
asterisk -x «dialplan reload»
Укажите, как действовать, если звонящий введет некорректную цифру или время ожидания будет превышено. В примере показано, как в таком случае завершить звонок:
При наборе внутреннего номера могут возникнуть проблемы. Если это случилось, проверьте режим DTMF – это аналоговый сигнал для набора телефонного номера. Чтобы настроить sip-пир на определенный способ передачи DTMF, добавьте в файл конфигурации такую строку:
Голосовая почта
Если звонящий долго находится на линии в ожидании ответа оператора, ему можно предложить оставить голосовое сообщение. Для реализации этого функционала откройте файл voicemail.conf и добавьте в него такой код:
Предварительно настройте локальный почтовый сервер или используйте внешний.
Перезапустите модуль голосовой почты и протестируйте его работу:
CLI> voicemail reload
default 130 Number 121 0
default 100 Number 100 0
Добавьте голосовую почту в dialplan:
Номер для записи звуков, окончание записи #
exten => _35X, 1, NoOp()
exten => _35X, n, Wait(2)
exten => _35X, n, Playback(beep)
exten => _35X, n, Wait(1)
exten => _35X, n, Wait(2)
exten => _35X, n, Hangup()
Управление голосовой почтой
exten => 500,1,VoiceMailMain()
Звонок на внутренний номер
Звонок на внешний номер
По умолчанию время ожидания ответа до включения голосовой почты составляет 15 секунд.
Очередь входящих звонков (queue)
Настройка Asterisk с нуля редко предполагает организацию очереди, но мы рассмотрим, как ее реализовать, если ваша компания в этом функционале нуждается. Очередь позволяет управлять потоком звонков и перераспределять их по заданным правилам – например, направлять первому освободившемуся оператору. Для настройки очереди откройте файл queues.conf. Предположим, что у нас два оператора с внутренними номерами 101 и 102. Тогда в конец файла добавьте такой код:
strategy = ringall
member => SIP/100
member => SIP/130
Узнать, какие значения может принимать параметр strategy, который отвечает за принцип распределения вызовов, можно здесь: https://www.voip-info.org/asterisk-call-queues/.
exten => t,1,Dial(SIP/100,15)
на строку с таким содержимым:
exten => t,1,Queue(secretary,t)
Перезагрузите конфигурацию Asterisk:
Статистика звонков (cdr viewer)
Вы можете попробовать разобрать содержимое файла /var/log/asterisk/cdr-csv/Master.csv, где Asterisk по умолчанию сохраняет собранную статистику звонков, но проще воспользоваться другим инструментом. Предлагаем перенести сбор статистики в базу данных MySQL. Для этого запустите сервер mariadb и введите следующие команды:
# systemctl start mariadb
# systemctl enable mariadb.service
Создайте БД и пользователя:
# mysql -uroot -p
# yum install -y mysql-connector-odbc.x86_64 unixODBC-devel.x86_64
Откройте /etc/asterisk/res_odbc.conf и в конец файла добавьте код:
enabled => yes
dsn => MySQL-asterisk
password => 12345678
Аналогично с файлом /etc/asterisk/cdr_adaptive_odbc.conf:
alias start => calldate
Создайте новый файл /etc/odbc.ini и внесите туда такой фрагмент:
Description = MySQL Asterisk database
Driver = MySQL
Server = localhost
Password = 12345678
Socket = /var/lib/mysql/mysql.sock
Database = asterisk
В инструкции «Астериска» предлагают после этого перезапустить его:
# service asterisk restart
Затем проведите тест, совершив пару звонков. После запустите и добавьте в автозагрузку такие строки:
# systemctl start httpd
# systemctl enable httpd
Запись разговоров (record)
Есть несколько способов организовать запись разговоров, мы же рассмотрим простейший вариант. Для этого создайте папку, в которую будут складываться записи:
mkdir /records
chmod 777 /records
Откройте файл extensions.conf и внесите туда такие изменения:
Музыка на ожидании (hold on)
Эта настройка Asterisk позволит выбрать мелодию, которая будут звучать на линии во время ожидания звонка в очереди. По умолчанию мелодии воспроизводятся из директории /var/lib/asterisk/moh. Чтобы добавить свою мелодию в формате mp3, скопируйте ее на сервер любым удобным способом, а затем создайте директорию /var/lib/asterisk/mohmp3 и перекодируйте в ней музыку в «понятный» для системы формат wav:
# mkdir /var/lib/asterisk/mohmp3
# lame —decode /root/music.mp3 /var/lib/asterisk/mohmp3/music.wav
Откройте файл /etc/asterisk/musiconhold.conf и в конец добавьте новый класс музыки musiconhold.conf:
К описанию очереди добавьте еще один параметр:
music = mp3
strategy = ringall
member => SIP/100
member => SIP/130
Выполните перезапуск, как сказано в инструкции по настройке Asterisk:
# service asterisk restart
Конференции
Конференции позволяют организовать одновременный разговор между несколькими звонящими. Для их настройки откройте confbridge.conf и добавьте в конец файла:
В начало файла:
exten => 333,1,Answer()
exten => 333,n,ConfBridge(1,confer)
Теперь при наборе номера 333 звонящий попадет в комнату для конференций.
Поздравляем, установка и настройка Asterisk завершена!
Перевод, перехват и переадресация звонков
По умолчанию для перевода звонков используется команда # + номер, на который нужно перевести звонок. Для успешного перевода нужно, чтобы он был предварительно разрешен в диалплане в команде Dial:
В «Астериске» для перевода звонков используется режим Attended Transfer, который по умолчанию выключен. Чтобы использовать его для перенаправления звонков, в файле features.conf необходимо раскомментировать строку:
atxfer => *2
Горячую клавишу для перевода можно назначать произвольным образом.
Перехват звонков в Asterisk работает по умолчанию, дополнительные настройки этой функции не требуются. Комбинация кнопок для перехвата задается в уже знакомом файле features.conf.
Например, чтобы реализовать переадресацию на мобильный номер 222, в dialplan следует добавить строку:
Чтобы переадресация действовала только на внутренние номера офиса:
А теперь вариант с переадресацией для звонков извне:
Настройка Asterisk с помощью fail2ban
Для начала необходимо инсталлировать fail2ban:
# dnf install fail2ban
Запись событий будем вести в лог. Откроем файл /etc/asterisk/logger.conf и раскомментируем такую его строку:
security => security
Считываем параметры хранения логов:
# asterisk -x «logger reload»
После этого в директории /var/log/asterisk должен появиться файл с названием security, записи из которого будет анализировать инструмент fail2ban.
logpath = /var/log/asterisk/security
enabled = true
Нужно, чтобы fail2ban запускался автоматически:
# systemctl start fail2ban
# systemctl enable fail2ban
Не забываем, что для корректной работы fail2ban требуется заранее сконфигурированный и запущенный iptables. Учитывайте, что при отключенном firewalld вначале нужно удалить /etc/fail2ban/jail.d/00-firewalld.conf, после чего перезапустить fail2ban, чтобы он заработал.
Настройка обратного звонка
Настройка Asterisk Callback очень удобна в использовании: клиент вводит свой номер телефона в специальную форму на сайте, а спустя какое-то время ему перезванивает специалист компании. Чтобы воспользоваться Asterisk Web Callback, потребуется веб-сервер с поддержкой PHP. Настройки выполняются в файле manager.conf.
enabled = yes
port = 5038
bindaddr = 0.0.0.0 ;или реальный IP вашего сервера Asterisk
permit=0.0.0.0/0.0.0.0 ;или ip вашего веб-сервера
$strHost = «Asterisk IP Address»;
Назначаем пользовательское имя – то, которое ранее задали в файле /etc/asterisk/manager.conf):
$strSecret = «your_secret»;
Канал, куда будут направлены звонки:
$strChannel = «SIP/107»;
exten = s,1,Goto(from-internal,600,1)
Чтобы защититься от нежелательных звонков:
$strChannel = «SIP/107»;
Теперь следует задать длину номера телефона, которую могут указать клиенты в веб-форме (в нашем случае это 11 символов):
if ($length == 11 && is_numeric($strExten))
<table width=»300″ border=»1″ bordercolor=»#630000″ cellpadding=»3″ cellspacing=»0″>
<font size=»2″ face=»arial,georgia» color=»#630000″>Введите Ваш номер 812XXXXXXX.</font>
<input type=»text» size=»20″ maxlength=»11″ name=»txtphonenumber»><br>
<input type=»submit» value=»Позвонить!»>
$strHost = «127.0.0.1»;
$strSecret = «test2»;
$strContext = «from-script»;
$strWaitTime = «60000»;
$strPriority = «1»;
$strCallerId = «n <$strExten>»;
$length = strlen($strExten);
if ($length == 11 && is_numeric($strExten))
$oSocket = fsockopen($strHost, 5038, $errnum, $errdesc) or die(«Connection to host failed»);
fputs($oSocket, «Action: login\r\n»);
fputs($oSocket, «Events: off\r\n»);
fputs($oSocket, «Secret: $strSecret\r\n\r\n»);
fputs($oSocket, «Action: originate\r\n»);
fputs($oSocket, «Channel: $strChannel\r\n»);
fputs($oSocket, «Timeout: $strWaitTime\r\n»);
fputs($oSocket, «CallerId: $strCallerId\r\n»);
fputs($oSocket, «Exten: $strExten\r\n»);
fputs($oSocket, «Context: $strContext\r\n»);
fputs($oSocket, «Priority: $strPriority\r\n\r\n»);
fputs($oSocket, «Action: Logoff\r\n\r\n»);
<table width=»500″ border=»2″ bordercolor=»#850000″ cellpadding=»3″ cellspacing=»0″>
<table width=»500″ border=»1″ bordercolor=»#850000″ cellpadding=»3″ cellspacing=»0″>
<font size=»2″ face=»verdana» color=»#850000″>Введите номер телефона.</font>
<input type=»text» size=»20″ maxlength=»12″ name=»txtphonenumber»><br>
<input type=»submit» value=»Позвонить!»>
Настройка черного списка
Эта настройка Asterisk позволяет запретить нежелательные входящие звонки и оставить линию свободной для приоритетных звонков. Работает следующим образом: сверяет, не содержится ли входящий номер в черном списке внутренней базы данных Asterisk. Для проверки используется astdb, на выходе функция возвращает значение «0» (нет в базе данных) или «1» (есть в базе данных).
Для вызова функции используется команда:
Допустим, 2000 – наш абонент, 8882888 – CallerID в черном списке. Тогда:
same => n,Dial(PJSIP/2000,,tr)
exten => black,1,Playback(privacy-you-are-blacklisted)
same => n,Hangup()
Чтобы добавить новый номер в черный список, используем Asterisk CLI (Command Line Interface):
asterisk -rx «database put blacklist 8882888 1»
Допустим, нам нужно текущее содержимое черного списка. Как его получить:
Чтобы сделать то же самое, но с помощью sqlite cli, выполняем команду:
sqlite> select * from astdb where key like ‘%blacklist%’;
Настройка умной предустановленной переадресации вызовов
music => default
context => default
number => 1965751234,5
number => 17182025678,20
number => 1234
number => 5678
number => 09253&410,30,2 ; вызываются одновременно 09253 и 410 в течение 30 секунд.
number => 525,40,1 ; но сначала вызывается 525 в течение 40 секунд.
Задайте глобальные параметры функции: укажите количество миллисекунд, в течение которых система будет ожидать приема вызова:
Подготовьте голосовое объявление для абонента: предложите или принять, или отказаться от переадресации:
По умолчанию код значения кода DTMF равен двум:
Абонент будет слышать стандартное музыкальное сопровождение:
Автообзвон
Для автоматического обзвона в настройке Asterisk используются call-файлы (Call Files). Список для автообзвона генерируется на основе номеров из заранее подготовленного текстового файла. После выполнения bash-скрипта готовый перечень звонков попадает в каталог /var/spool/asterisk/outgoing.
Пример автообзвона, при котором номера вызываются по порядку из списка и каждому абоненту проигрываются сообщения в зависимости от выбранного контекста:
exten => s,1,Wait(2)
exten => s,n,Playback(/var/lib/asterisk/sounds/custom/you_call_your_friends_are_collectors)
exten => s,n,Hangup
Так выглядит bash-скрипт:
while read number; do
cat <<EOF > /var/spool/asterisk/$number
chown asterisk:asterisk /var/spool/asterisk/$number
mv /var/spool/asterisk/$number /var/spool/asterisk/outgoing
number=`expr $number + 1`
done < /var/spool/asterisk/list.txt
Список для автоматического обзвона хранится в файле с названием /var/spool/asterisk/list.txt. Каждый следующий номер написан с новой строки, например:
Отправка факсов на e-mail
В «Астериск» реализована функция отправки факсов на электронную почту (например, общую или отдельно назначенную). Чтобы реализовать прием факсов в FreePBX 12, в Asterisk должна быть реализована поддержка SpanDSP. Для начала убедимся, что у нас предварительно загружены два важных модуля – res_fax.so и res_fax_spandsp.so.
localhost*CLI> module show like fax
Module Description Use Count Status
res_fax.so Generic FAX Applications 1 Running
res_fax_spandsp.so Spandsp G.711 and T.38 FAX Technologies 1 Running
2 modules loaded
Переходим в настройки системного факса:
Settings > Fax Configuration
Создаем виртуальный факс командой Add Extension, а затем в настройках включаем поддержку факсов (для этого достаточно поставить галочку напротив Fax Email).
Переходим в модуль FolowMe. В блоке Destination if no answer: указываем Fax Recipient и уже там – номер нашего факса FAX (например, 2566).
Аналогичным образом можно пользоваться созданным факсом для приема входящих факсов в следующем модуле:
Connectivity > Inbound Routes
Активировать автоматическое распознавание факс-сигнала можно в разделе Fax Detected.
Все входящие факсы по умолчанию сохраняются в каталоге /var/spool/asterisk/fax.
Преимущества Asterisk
У системы Asterisk есть ряд важных преимуществ:
- Не нужно платить за лицензии, минуты и количество пользователей.
- Легко масштабируется под любое количество сотрудников.
- После настройки Asterisk вы получаете неограниченный набор функций IP-телефонии: запись и хранение звонков, голосовое меню, интеграцию с CRM и мессенджерами, автообзвон, обратный звонок и прочее.

