
Asterisk — мощная АТС с открытым исходным кодом. Это очень удобно для компаний, которые хотят создать одну частную сеть корпоративных телефонов. Несколько ключевых особенностей Asterisk: конференц-связь, запись вызовов, мониторинг вызовов, обнаружение распределенных универсальных номеров, идентификатор вызывающего абонента при ожидании вызова, прямой доступ к внутренней системе, парковка вызовов, обмен SMS-сообщениями, транкинг, транскодирование, голосовая почта и очереди вызовов. В сегодняшнем уроке мы узнаем, как установить новую звездочку 16 для Centos 7. Мы сделаем это на сервере AWS ec2.
Как установить Asterisk 16 на centos 7
Прежде чем мы начнем установку нашего приложения Asterisk на наш сервер centos 7, давайте удостоверимся, что все наши пакеты обновлены на нашем сервере.
sudo yum -y update
Также установим тип имени хоста:
sudo hostnamectl set-hostname pbx.example.com
И добавить репозиторий EPEL
sudo yum -y install epel-release
Последний шаг — установить selinux в Permissive Mode, выполнив следующие команды:
sudo setenforce 0
sudo sed -i 's/\(^SELINUX=\).*/\SELINUX=permissive/' /etc/selinux/config Теперь приступим к установке астериска.

В сегодняшней статье мы собираемся установить новый Asterisk 18 на нашу систему Centos 7.
Для начала мы сначала обновим нашу систему Centos.
$ yum update all После этого установим пакеты, которые нужны для Asterisk 18.
$ yum install vim epel-release gcc gcc-c++ wget make bzip2 patch subversion json-c json-c-devel unixODBC unixODBC-devel mysql-connector-odbc libtool-ltdl libtool-ltdl-devel jansson-devel libsrtp-devel openssl openssl-devel dmidecode ncurses-devel libxml2-devel newt-devel kernel-devel sqlite-devel libuuid-devel gtk2-devel binutils-devel libedit libedit-devel svn Когда все необходимые пакеты будут установлены, мы отключим SELinux, чтобы убедиться, что Asterisk работает без проблем. Чтобы просмотреть текущий статус SELinux и политику, используемую в вашей системе Centos 7, используйте команду sestatus:
$ sestatus output
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31 Из приведенного выше вывода видно, что SELinux включен и установлен в принудительный режим.
SELinux имеет три режима:
- Принуждение: SELinux разрешает доступ на основе правил политики SELinux.
- Permissive: SELinux записывает в журнал только те действия, которые были бы отклонены, если бы они работали в принудительном режиме.
- Отключено: Политика SELinux не загружена.
По умолчанию в CentOS 7 SELinux включен и находится в принудительном режиме.
Как отключить selinux
Откройте файл конфигурации SELinux.
$ vim /etc/selinux/config Отключить мод SELinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted Теперь сохраните файл и перезагрузите систему.
$ sudo shutdown -r now $ sestatus output
SELinux status: disabled Следующим шагом будет установка Pjsip, этот пакет используется в Asterisk.
Давайте скачаем пакет Pjsip и настроим его
$ cd /usr/src/
$ wget https://github.com/pjsip/pjproject/archive/2.10.tar.gz
$ tar zxvf 2.10.tar.gz
$ rm -f 2.10.tar.gz Теперь пришло время установить Pjsip на нашу систему Centos 7.
$ cd pjproject-2.10
$ ./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
$ make dep
$ make
$ make install
$ ldconfig Установить Астериск 18
После установки Pjsip можно приступать к установке приложения Asterisk 18.
Начнем с загрузки Asterisk 18 в нашу систему Centos 7.
$ cd /usr/src/
$ wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
$ tar xvfz asterisk-18-current.tar.gz
$ rm -f asterisk-18-current.tar.gz Теперь мы можем установить Asterisk 18
$ cd /usr/src/asterisk-18*/
$ contrib/scripts/install_prereq install
$ ./configure --libdir=/usr/lib64 --with-jansson-bundled
$ make menuselect.makeopts
$ menuselect/menuselect --enable chan_ooh323 --enable format_mp3 --enable CORE-SOUNDS-JA-WAV --enable CORE-SOUNDS-JA-ULAW --enable CORE-SOUNDS-JA-ALAW --enable CORE-SOUNDS-JA-GSM --enable CORE-SOUNDS-JA-G729 --enable CORE-SOUNDS-JA-G722 --enable CORE-SOUNDS-JA-SLN16 --enable CORE-SOUNDS-JA-SIREN7 --enable CORE-SOUNDS-JA-SIREN14 --enable app_macro --disable BUILD_NATIVE
$ contrib/scripts/get_mp3_source.sh
$ make
$ make install
$ make samples
$ make config
$ ldconfig После установки Asterisk 18 необходимо убедиться, что Asterisk запущен и включен.
$ sudo systemctl enable asterisk
$ sudo systemctl start asterisk Теперь давайте проверим, что Asterisk 18 запущен.
$ sudo systemctl status asterisk output
● asterisk.service - LSB: Asterisk PBX Loaded: loaded (/etc/rc.d/init.d/asterisk; bad; vendor preset: disabled) Active: active (running) since Wed 2020-11-18 00:36:12 UTC; 1min 5s ago Docs: man:systemd-sysv-generator Process: 20001 ExecStop=/etc/rc.d/init.d/asterisk stop (code=exited, status=0/SUCCESS) Process: 20027 ExecStart=/etc/rc.d/init.d/asterisk start (code=exited, status=0/SUCCESS) Теперь Asterisk 18 установлен в вашей системе Centos 7.

Всем привет! Вернёмся к теме звездочки. И на этот раз попробуем развернуть 16ю версию. Прошлые статьи
функциональны и версии 15.6.2, которую там рассматривают вполне достаточно для захвата работы телефона.
Но мы же хотим привлечь к большему. Просто добавим больше деталей и лоска процесса развёртывания телефонов!
Приступим:
Ставлю образ CentOS-7-x86_64-Minimal-1810.iso. Этот процесс вам знаком и подойдет его не будем. развитие
действие будет происходить уже в подключенном сеансе PuTTY. Делаем всё то что надо сделать на свеже установленном
минимальном CentOS:

Ну а если нас интересует версия ядра, то набираем:
Жмём Ctrl+L чтобы очистить терминал и далее отключим SELinux:
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
Далее отключим «firewalld»:
systemctl stop firewalld
systemctl disable firewalld
Обновим систему и перезагрузим:
yum update -y && reboot
Когда сервер уйдёт в перезагрузку — не нужно закрывать сеанс терминала PuTTY, просто нажмите на значок в левом верхнем
углу и перезапустите сеанс:

Далее, традиционно, в качестве хорошего тона настройки серверов, приведём в порядок время:
yum install -y ntp && ntpdate pool.ntp.org && \ chkconfig ntpd on && service ntpd start
Установим несколько первоначально нужных пакетов:
yum -y install NetworkManager-tui net-tools.x86_64 mc nano vim
Взглянем на пакет «NetworkManager-tui» — набираем команду:

И как вы могли заметить – это символьно-графический интерфейс, в котором можно изменить сетевые настройки, поменять
hostname или же активировать добавленную сетевую карту.
Также благодаря пакету «net-tools.x86_64» нам теперь доступна команда:
Кстати если написать её с большой буквы, то работать не будет!
А благодаря пакету «mc» у нас есть двух панельный менеджер:

А если вам вдруг не нравиться редактировать файлы в «VI» или в «VIM» или же в «NANO», то можете воспользоваться
редактором «mc», который интуитивно понятен тем, кто любил «Norton Commander»:
После такого редактирования не забываем перезапустить сетевые службы:
Но вернёмся к теме установки астериска, поставим нужные пакеты:
Далее создадим пользователя, от которого будет работать астериск. Сделать это нужно потому что нам может прийти в
голову отключить «root» пользователя в целях безопасности.
Даём права «sudo» пользователю asterisk:
gpasswd -a asterisk wheel
Переключаемся на пользователя «asterisk»:
Далее установим библиотеку «PJSIP» — она нужна для функционирования протокола «SIP»:
Создадим каталог «build» и перейдём в него. Кстати значок ~ означает делать всё в домашнем каталоге пользователя от
которого исходит команда:
mkdir ~/build && cd ~/build
Теперь на машине где есть браузер идём на ресурс https://www.pjsip.org/download.htm и смотрим правильную ссылку
которую надо вписать в команду «wget»:

Скачаем исходник «PJSIP»:
tar xvjf pjproject-2.8.tar.bz2
И переходим в распакованный каталог:
sudo make dep
Запускаем дополнительную компиляцию и установку:
sudo make && sudo make install && sudo ldconfig
Система попросит пароль от пользователя «asterisk».
Далее перегружаем систему:
После загрузки авторизуемся под «asterisk» и вернёмся в наш каталог «pjproject-2.8»:
И затем даём команду:
Удостоверимся что будет такой вывод:

- Установка Asterisk 16
- Русская озвучка системных сообщений:
- Приступаем к настройке абонентов.
- Установка зависимостей
- Установка
- Запуск
- Ошибки
- Нет прав у Apache выполнить команды CLI Asterisk
- Most popular
- Голосовое меню с приветствием;
- Contact us!
- Статистика звонков
- Статьи по теме:
- Линки для данного проекта:
- Download and Install Jansson
- Download and Install PJSIP
- Set Asterisk menu options
- Оглавление
- 1) Предпосылки
- 2) SELinux
- 3) Перезагрузка
- 4) Настройка зависимостей
- 6) Стартовая Звездочка
- Скачайте и установите Asterisk
Установка Asterisk 16
Вернёмся в каталог «build»:
На этот раз качаем исходник самого астериска:
Напомню по аналогии с предыдущим скачиванием – если команда не сработала значит меняем ссылку, которую можно взять
с сайта www.asterisk.org.
tar -zxvf asterisk-16-current.tar.gz
Переходим в распакованный каталог:
Для того чтобы можно было использовать «mp3» формат в нашем астериске – на текущем этапе установки скачаем
требуемые дополнения:
sudo yum -y install svn
Далее традиционное конфигурирование, компиляция и установка:
sudo contrib/scripts/install_prereq install
В моём случае не нашлось пакетов «speexdsp-devel», «iksemel-devel», «libresample-devel» и «hoard»

Но мы продолжаем:
sudo ./configure —libdir=/usr/lib64 —with-jansson-bundled
Дожидаемся победного появления значка «астериск»:

sudo make menuselect
В появившемся диалоге – в разделе «Add-ons» отметим клавишей «Enter» чеки на пунктах — «chan_mobile»,
«format_mp3», «app_mysql», «cdr_mysql» и «res_config_mysql»:

Далее в разделе «Applications» выделяем пункт «app_macro»:

Жмём «Save & exit» конечно. И далее долгая компиляция с установкой:
sudo make && sudo make install
В какой-то момент, перед тем как закончить, попросит пароль – будьте внимательны!
Далее генерация файлов образцов конфигураций:
sudo make samples
Затем ставим старт астериска при загрузке системы:
sudo make config
Далее от root пользователя нужно назначить нового владельца каталогам астериска:
Ключ на старт — проверяем запуск:
sudo service asterisk start
sudo /sbin/chkconfig asterisk on
sudo asterisk -rvv

Выходим из CLI командой «exit». И ура – астериск установлен и готов к настройке!
Русская озвучка системных сообщений:
sudo mkdir /var/lib/asterisk/sounds/ru
Качаем пакет звуков:
sudo wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-ru-wav-current.tar.gz
sudo tar xfz asterisk-core-sounds-ru-wav-current.tar.gz
Проверим:
ls
Приступаем к настройке абонентов.
cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.init
Удаляем всё! – Ставим курсор вверху и жмём «ALT+T» и пишем следующее:
Далее нам надо настроить план звонков наших объявленных абонентов в «extensions.conf»:
cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.init
nano /etc/asterisk/extensions.conf
Всё стираем и пишем:
Вроде можно звонить. Но надо ещё сделать перезагрузку ядра:
Настраиваем 2 аппарата – пробуем звонить. Теперь лог этого звонка можно увидеть в файле
«/var/log/asterisk/cdr-csv/Master.csv»:
А теперь добавим внешку на примере нашей любимой из прошлых статей «задармы». Снова редактируем «sip.conf» и в
конце дописываем:
Далее, естественно нужно объявить контекст «ext» в диал плане:
В контекст «int» добавим возможность звонить на внешние номера:
А также добавим контекст «ext», который позволит дозваниваться до нас из вне – но только звонок идёт сразу на
номер 100 – предположим там будет голосовое меню.
Теперь наш extensions.conf выглядит вот так:
include => handup-sip
sudo asterisk -r
Смотрим регистрацию всех аппаратов в том числе и провайдера:
sip show peers
Проверяем звонки на внешку и из внешки. Ура! Всё работает!
установка subversion, speex-devel, wget, bzip2, pjproject, nano
yum install epel-release gcc gcc-c++ subversion speex-devel wget bzip2 pjproject nano openssl nano /etc/selinux/config SELINUX=disabled reboot now # cd /usr/src
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz # tar xzvf asterisk-16-current.tar.gz перейти в распакованную директорию
# cd asterisk-16.* Установка зависимостей
Установка пакетов для шифрования TLS:
# yum install http://repo.okay.com.mx/centos/7/x86_64/release/okay-release-1-1.noarch.rpm
# yum install libsrtp-devel для Centos 7:
для Centos 8:
# yum install https://disweb.ru/files/rpm/jansson-2.11-2.2.x86_64.rpm https://disweb.ru/files/rpm/jansson-devel-2.11-2.2.x86_64.rpm установить все зависимости
# contrib/scripts/install_prereq install 
При установке на Centos 7 не было найдено 3 пакета: speexdsp-devel, iksemel-devel, hoard

Вместо speexdsp-devel
, установить пакет speex-devel
.
Для установки пакета iksemel-devel
не нашел решения.
# contrib/scripts/get_mp3_source.sh 
Установка
подготовка исходников к компиляции
# ./configure 
На Centos 7 подготовка исходников закончилась с ошибкой:
configure: *** Asterisk requires libjansson >= 2.11 and no system copy was found.
configure: *** Please install the 'libjansson' development package or
configure: *** use './configure --with-jansson-bundled' При проверке на существование пакета:
# rpm -qa | grep jansson
jansson-2.10-1.el7.x86_64
jansson-devel-2.10-1.el7.x86_64 Версия пакетов не подходит.
Установка подходищих версий:
# yum install https://disweb.ru/files/rpm/jansson-2.11-2.2.x86_64.rpm https://disweb.ru/files/rpm/jansson-devel-2.11-2.2.x86_64.rpm выбрать компоненты asterisk для установки
# make menuselect - на первой вкладке выбрать format_mp3
. - вкладка Core Sound Packages
выбрать RU-WAV - вкладка Extras Sound Packages
выбрать EN-WAV
Для работы TLS нужно проверить, что установлено Resource Modules
-> res_srtp

нажать Save & Exit
запуск компиляции (-j< количество задействованных ядер процесора> )
# make -j2 
ошибка при компиляции:
[CC] res_hep.c -> res_hep.o [CC] res_ari_device_states.c -> res_ari_device_states.o [CC] ari/resource_device_states.c -> ari/resource_device_states.o [CC] res_sorcery_memory_cache.c -> res_sorcery_memory_cache.o [CC] res_srtp.c -> res_srtp.o [CC] res_pjsip_outbound_publish.c -> res_pjsip_outbound_publish.o [CC] res_timing_timerfd.c -> res_timing_timerfd.o [CC] res_fax_spandsp.c -> res_fax_spandsp.o
res_fax_spandsp.c: In function ‘set_logging’:
res_fax_spandsp.c:452:2: warning: passing argument 2 of ‘span_log_set_message_handler’ from incompatible pointer type [enabled by default] span_log_set_message_handler(state, spandsp_log); ^
In file included from /usr/include/spandsp.h:53:0, from res_fax_spandsp.c:67:
/usr/include/spandsp/logging.h:123:20: note: expected ‘message_handler_func_t’ but argument is of type ‘void (*)(int, const char *)’ SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func, void *user_data); ^
res_fax_spandsp.c:452:2: error: too few arguments to function ‘span_log_set_message_handler’ span_log_set_message_handler(state, spandsp_log); ^
In file included from /usr/include/spandsp.h:53:0, from res_fax_spandsp.c:67:
/usr/include/spandsp/logging.h:123:20: note: declared here SPAN_DECLARE(void) span_log_set_message_handler(logging_state_t *s, message_handler_func_t func, void *user_data); ^
res_fax_spandsp.c: In function ‘set_ecm’:
res_fax_spandsp.c:482:44: error: ‘T30_SUPPORT_T4_1D_COMPRESSION’ undeclared (first use in this function) t30_set_supported_compressions(t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); ^
res_fax_spandsp.c:482:44: note: each undeclared identifier is reported only once for each function it appears in
res_fax_spandsp.c:482:76: error: ‘T30_SUPPORT_T4_2D_COMPRESSION’ undeclared (first use in this function) t30_set_supported_compressions(t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); ^
res_fax_spandsp.c:482:108: error: ‘T30_SUPPORT_T6_COMPRESSION’ undeclared (first use in this function) t30_set_supported_compressions(t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION); ^
res_fax_spandsp.c: In function ‘spandsp_fax_start’:
res_fax_spandsp.c:969:2: warning: passing argument 2 of ‘t30_set_phase_e_handler’ from incompatible pointer type [enabled by default] t30_set_phase_e_handler(p->t30_state, t30_phase_e_handler, s); ^
In file included from /usr/include/spandsp.h:122:0, from res_fax_spandsp.c:67:
/usr/include/spandsp/t30_api.h:557:20: note: expected ‘t30_phase_e_handler_t’ but argument is of type ‘void (*)(struct t30_state_t *, void *, int)’ SPAN_DECLARE(void) t30_set_phase_e_handler(t30_state_t *s, t30_phase_e_handler_t handler, void *user_data); ^
res_fax_spandsp.c: In function ‘load_module’:
res_fax_spandsp.c:1259:2: error: too few arguments to function ‘span_set_message_handler’ span_set_message_handler(NULL); ^
In file included from /usr/include/spandsp.h:53:0, from res_fax_spandsp.c:67:
/usr/include/spandsp/logging.h:125:20: note: declared here SPAN_DECLARE(void) span_set_message_handler(message_handler_func_t func, void *user_data); ^
make[1]: *** [res_fax_spandsp.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [res] Error 2 устранил данную ошибку отключив библиотеку: Resource Modules
-> res_fax_spandsp
установка asterisk и всех его модулей
# make install 
формирование образцов файлов конфигурации
# make samples 
создание init скрипта
# make config обновить кэш используемых динамических библиотек
# /sbin/ldconfig Запуск
# /sbin/adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk" asterisk
# /sbin/usermod -a -G dialout,audio asterisk # useradd --system --home-dir /var/lib/asterisk --no-create-home --comment "Asterisk" asterisk
# usermod -a -G dialout,audio asterisk раскомментировать в конфиге: Centos: /etc/sysconfig/asterisk
; Ubuntu: /etc/default/asterisk
AST_USER="asterisk"
AST_GROUP="asterisk" назначить пользователю права на директории asterisk
# chown -R asterisk: /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk # systemctl start asterisk проверка статуса работы
# systemctl status asterisk добавить в автозапуск
# systemctl enable asterisk Открыть CLI консоль астериска:
# /usr/sbin/asterisk -rvvvvv Открыть в Firewall (в большинстве случаев используются эти порты):
firewall-cmd --zone=public --add-port=5060/tcp --permanent firewall-cmd --zone=public --add-port=5060/udp --permanent firewall-cmd --zone=public --add-port=5061/tcp --permanent firewall-cmd --zone=public --add-port=5061/udp --permanent firewall-cmd --zone=public --add-port=4569/udp --permanent firewall-cmd --zone=public --add-port=5038/tcp --permanent firewall-cmd --zone=public --add-port=10000-20000/udp --permanent firewall-cmd --reload ИЛИ можно разрешить порты через скрипт BASH (firewalld-asterisk.sh):
#!/bin/bash
PORTS=('5060/tcp' '5060/udp' '5061/tcp' '5061/udp' '4569/udp' '5038/tcp' '10000-20000/udp')
SERVICE_FILE="/etc/firewalld/services/asterisk.xml"
if [ ! -e "${SERVICE_FILE}" ]; then firewall-cmd --permanent --new-service=asterisk
fi
for PORT in ${PORTS[@]}; do firewall-cmd --permanent --service=asterisk --add-port=${PORT}
done
firewall-cmd --permanent --zone=public --add-service=asterisk
firewall-cmd --reload
firewall-cmd --list-all-zones Настройка NAT в Asterisk, нет звука или звук есть в одну сторону
Ошибки
если в статусе есть ошибка:
radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory в /etc/asterisk/cdr.conf
раскомментировать и отредактировал строки:
[radius]
radiuscfg => /etc/radcli/radiusclient.conf то же самое в /etc/asterisk/cel.conf
:
[radius]
radiuscfg => /etc/radcli/radiusclient.conf перезагрузить астериск и проверить статус
# systemctl restart asterisk
# systemctl status asterisk При попытки открыть консоль CLI:
# asterisk -rvvvvv
Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?) Для решения данного вопроса нужно открыть на редактирование:
# nano /etc/selinux/config SELINUX=disabled # reboot Ошибка при звонке:
Matched device setup to use SRTP, but request was not! Если подключаеться другая Asterisk то параметрах пользователя установить:
encryption=yes Ошибка при подключении SIP клиента:
[Jun 26 15:35:03] WARNING[2194]: chan_sip.c:17118 parse_register_contact: Domain '192.168.0.100:5060' disallowed by contact ACL (violating IP 192.168.0.100) contactpermit=192.168.1.0/255.255.255.0 Нужно добавить в исключение IP адрес или подсеть (в данном случае посеть):
contactpermit=192.168.0.0/255.255.255.0 Нет прав у Apache выполнить команды CLI Asterisk
к примеру данный запрос с Apache возвращает пустой результат:
asterisk -rx "sip show peers" для решения данной ситуации нужно открыть файл конфигурации /etc/asterisk/asterisk.conf
и раскоментировать данные строки:
;...
[files]
astctlpermissions = 0660
astctlowner = root
astctlgroup = apache
astctl = asterisk.ctl при необходимости можно указать иных пользователей для кого будут доступны CLI команды
Most popular
![]()
![]()
![]()
![]()
![]()
![]()
Голосовое меню с приветствием;
План создания голосового меню – Приветствие – Предложение ввести номер абонента – Если не ввёл уводим звонок на
секретаря.
А теперь откровение – КАК ЗАПИСАТЬ ГОЛОСОВОЕ МЕНЮ СРАЗУ В ТРУБКУ ТЕЛЕФОНА?
В файле extensions.conf – в контексте «int» нужно внедрить этот блок:
sudo asterisk -r
dialplan reload
Теперь звоним на номер 00001 – после звукового сигнала наговариваем в трубку наше приветствие и в конце жмём #, и
оно упадёт в каталог «/tmp». Файл будет называться «vmenu001.wav». После создаём специальный для голосового меню
каталог и копируем созданный файл туда.
cp /tmp/vmenu001.wav /var/lib/asterisk/moh/vmenu
Далее вносим соответствующие изменения в план набора:
Далее в контексте «ext» делаем перенаправление звонков извне от номера 100 на приветствие:
Сохраняем файл и перезагружаем диал-план.
Проверяем – звоним извне на «задарму» и попадаем на наше приветствие. Ура!
Теперь наш диал-план выглядит вот так:
include => handup-sip
Contact us!
Статистика звонков
Для начала нужно чтобы истории звонков складывались не в лог-файл по умолчанию «/var/log/asterisk/cdr-csv/Master.csv»
а в базу данных «mariadb». Напоминаю, что мы теперь всё время работаем под пользователем «asterisk» и поэтому на важных
командах пишем «sudo».
Для начала установим на CentOS СУБД MariaDB:
sudo yum -y install mariadb mariadb-server mariadb-devel
Запустим:
sudo systemctl start mariadb
Ставим в автозагрузку:
sudo systemctl enable mariadb
Проверим статус:
sudo systemctl status mariadb
Теперь надо пройти опросник СУБД:
Для начала на вопрос о пароле root от СУБД – просто нажимаем Enter
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Закончили с настройками безопасности СУБД mariadb.
Далее подключаемся к mysql — создаем пользователя и базу данных:
Запускаем командную строку mysql:
mysql -uroot -p
Создаём базу данных «asterisk»:
create database asterisk;
Включаем работу с только что созданной базой:
И теперь даём команду на создание таблицы «cdr» внутри нашей новой базы «asterisk» (копируйте весь блок):
Далее мы придумали пользователя, который будет иметь право вносить данные в нашу базу данных. Пусть будет «astermd».
И скажем СУБД о том, что этот пользователь с паролем «123» будет заполнять таблицы в нашей базе данных «asterisk»:
Командой «exit» мы вышли из внутренних команд СУБД. Далее устанавливаем odbc коннекторы:
sudo yum install -y mysql-connector-odbc.x86_64 unixODBC-devel.x86_64
Редактируем файлы конфигурации «/etc/asterisk/res_odbc.conf». Добавляем в самый конец:
Далее редактируем ещё один конфиг от odbc:
Также в самый конец вставляем этот блок:
Создаем файл /etc/odbc.ini
sudo nano /etc/odbc.ini
Едем дальше:
sudo nano /etc/odbcinst.ini
CPTimeout =
CPReuse =
Далее перезапустим весь астериск
sudo service asterisk restart
Далее заупстим и поставим в автозагрузку сервис «httpd», который обеспечит нам WEB страницу:
sudo systemctl start httpd
sudo systemctl enable httpd
Набираем в браузере IP адрес сервера – и там тестовая страница апача – здорово, но не то что нам надо.
cd /usr/src
sudo wget https://github.com/prog-it/Asterisk-CDR-Viewer-Mod/tarball/master
sudo tar xzvf master
ls -la
У нас в итоге появился каталог «prog-it-Asterisk-CDR-Viewer-Mod-b337420»

Копируем содержимое этого каталога в корень web сервера:
sudo cp -r /usr/src/prog-it-Asterisk-CDR-Viewer-Mod-b337420/. /var/www/html
Далее берём предложенный образец файла с конфигурацией и делаем из него собственно рабочий файл, в котором следом
указываем настройки подключения к базе данных cdr viewer.
sudo cp /var/www/html/inc/config/config.php.sample /var/www/html/inc/config/config.php
Редактируем файл «/var/www/html/inc/config/config.php»:
sudo nano /var/www/html/inc/config/config.php
В самом начале файла видим данные подключения – меняем на свои:
Далее чуть ниже находим:
## Путь к папке, где находятся записи Asterisk. Б ЕЗ слеша на конце
‘monitor_dir’ => ‘/home/calls’,
И меняем на:
‘monitor_dir’ => ‘/mnt/calls’,

Далее ниже по конфигу находим «storage_format» и делаем его => 5;

Сохраняем и выходим.
Кстати «/mnt/calls» нужно ещё создать и дать права:
sudo mkdir /mnt/calls
sudo chown -R asterisk:asterisk /mnt/calls
Перезапускаем астериск:
sudo reboot
Далее необходимо добавить дополнительное поле в таблицу «cdr» хранения имени файла:
Далее редактируем файл «/etc/asterisk/cdr_mysql.conf»:
nano /etc/asterisk/cdr_mysql.conf
В конец добавляем:
alias realdst => realdst
alias filename => filename
Редактируем «/etc/asterisk/extensions.conf»:
sudo nano /etc/asterisk/extensions.conf
Как вы наверно заметили мы плавно переходим к записи разговоров, которые будут падать в «/mnt/calls». Но давайте
заморочимся на то чтобы записи были в «mp3». Для того чтобы происходила конвертация в «mp3» формат нужно в систему
установить утилиту «lame»! Сделаем это:
su root
cd /usr/src
wget http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz
tar zxvf lame-3.*
cd lame-3.*
./configure
make && make install
su asterisk
Но торопитесь закрывать файл – нужно ещё внести изменения в контексты «int» и «vmenu»:
Вот теперь сохраняем и выходим и перезагружаем сервер:
sudo reboot

Ну не круто ли? Теперь остаётся только сделать чтобы в каталог «/mnt/calls» монтировалась шара – но это мы проходили
в предыдущих статьях.
Ниже привожу итоговые файлы конфигурации:
include => handup-sip
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Статьи по теме:
Линки для данного проекта:
CentOS 7.6.1810
CentOS-7-x86_64-Minimal-1810.iso
Asterisk 16
https://www.asterisk.org/downloads
downloads.asterisk.org
drive.google
Русская озвучка сервисных сообщений
downloads.asterisk.org
drive.google
Asterisk-CDR-Viewer-Mod
Asterisk-CDR-Viewer-Mod
drive.google
Утилита lame
sourceforge.net
drive.google
Download and Install Jansson
The next step is to install Jansson C library on our ec2 instance. Jansson is a C library for encoding, decoding and manipulating JSON data.
cd /usr/src/
git clone https://github.com/akheron/jansson.git
cd jansson
autoreconf -i
./configure --prefix=/usr/
make && make install Download and Install PJSIP
PJSIP is a free and open source multimedia communication library written in C language implementing standard based protocols such as SIP, SDP, RTP, STUN, TURN, and ICE. Clone the project from Github, then compile and install.
cd /usr/src/
export VER="2.10"
wget https://github.com/pjsip/pjproject/archive/${VER}.tar.gz
tar -xvf ${VER}.tar.gz
cd pjproject-${VER}
./configure CFLAGS="-DNDEBUG -DPJ_HAS_IPV6=1" --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-video --disable-sound --disable-opencore-amr
make dep
make
make install
ldconfig Set Asterisk menu options
Use arrow keys to navigate, and Enter key to select.
- On Add-ons select chan_ooh323 and format_mp3.
On Core Sound Packages, select the formats of Audio packets sounds-en-wav, sounds-en-ulaw, sounds-en-alaw.
For Music On Hold, select the following minimal modules
On Extra Sound Packages select as sounds-en-wav, sounds-en-ulaw, sounds-en-alaw
Enable app_macro under Applications section.
To start building and installation of Asterisk with selected modules, run the commands.
The output will be like this after the installlation for asterisk has been done.
Restart asterisk service after making the changes
Enable service to start on boot:
Now let’s test if asterisk 16 has been succesfully installed on our centos 7 application.
Install Asterisk 16 from source on CentOS 7
Asterisk is an open source platform for building communication applications. It supports IP PBX systems, VoIP gateways, conference servers and other custom solutions. This is not an ordinary curiosity or a toy for computer enthusiasts. Эта система используется малым бизнесом, крупными компаниями, колл-центрами, операторами связи и государственными учреждениями по всему миру. Самое главное, Asterisk — это бесплатное программное обеспечение с открытым исходным кодом.
Asterisk может стать основой полноценной системы VoIP-телефонии в вашей компании. Он содержит компоненты, которые позволяют ему выполнять широкий спектр функций.
- Хостинговая АТС
- IP-АТС (системы бизнес-телефонии)
- Шлюз VoIP
- Сервер голосовой почты
- Конференц-мост
- Колл-центр
- IVR-сервер
Более того, эту бесплатную систему интернет-телефонии можно установить на бесплатный дистрибутив Linux: CentOS 6/7
Оглавление
Ниже вы найдете все необходимые команды и файлы для установки Asterisk 16
из источника на Centos 7
.
В то время как приведенные ниже инструкции предназначены для установки Asterisk на
, мы можем установить его таким же образом на более старую версию:
1) Предпосылки
В противном случае добавьте sudo
перед каждой командой (например, sudo yum -y install update
)
Хорошо бы начать с установки простого текстового редактора. Лично я использую нано. Если вы хотите настроить его для редактирования Asterisk, ознакомьтесь с этим постом
.
Обновите систему и установите необходимые зависимости.
yum -y update
yum -y install nano wget2) SELinux
Перед тем, как начать, вы также должны отключить SELinux (Security-Enhanced Linux — модуль безопасности ядра Linux). Без этого вы столкнетесь с проблемами позже, например. с воспроизведением записей.
Сначала воспользуемся sestatus
команда. Он покажет вам текущий статус SELinux:

Чтобы отключить редактирование файла SELinux /etc/selinux/config
и изменить политику с на принудительную
до инвалид
.
Альтернатива редактированию
вы можете просто ввести команду
:
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config3) Перезагрузка
К сожалению, перезагрузка — единственный способ навсегда отключить SELinux, так что давайте так и сделаем.
Если вы не хотите перезагружать компьютер сейчас, а хотите перейти в «разрешающий» режим, введите
. Это позволит вам продолжить работу без перезагрузки.
После перезагрузки sestatus
должно показать, что он отключен.

4) Настройка зависимостей
Сначала скачайте исходники Asterisk. /usr/src
это очень удобное место для хранения всех исходных файлов.
cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
tar zxvf asterisk-16-current.tar.gz
rm -rf asterisk-16-current.tar.gz
cd asterisk-*/Теперь (по сравнению, например, с Asterisk 11) вам не нужно называть все необходимые зависимости (например, make gcc gcc-c++ lynx bison ncurses-devel). Вы делаете все это с помощью заранее созданного сценария. Чтобы иметь возможность загружать дополнительные ресурсы (например, кодек opus или spandsp для отправки факсов), сначала добавьте репозиторий EPEL.
# optional epel-release
yum -y install epel-release
contrib/scripts/install_prereq install Теперь вы можете выбрать некоторые параметры, с помощью которых вы будете настраивать свой Asterisk. Если вы используете 64-битную систему, вы должны добавить --libdir=/usr/lib64
к configure
команда. Чтобы проверить, используете ли вы 32- или 64-разрядную систему, используйте uname -m
команда.
Поскольку chan_pjsip требует некоторых дополнительных библиотек, хорошо (но не обязательно *) добавить --with-jansson-bundled --with-pjproject-bundled
к configure
команда.
* Начиная с Asterisk 15.0.0, он включен по умолчанию, но его можно отключить с помощью --without-pjproject-bundled
вариант ./configure
.
./configure --with-pjproject-bundled --with-jansson-bundledПосле завершения вы увидите экран «все готово» с логотипом Asterisk.
5) делать, делать, делать и… делать
Для этого используйте
вариант. Он покажет вам меню, в котором вы можете просто выбрать то, что вам нужно.
Во время процесса вы можете проверять, переключать, выбирать и отменять выбор всех опций, например. используйте ODBC вместо хранилища ФАЙЛОВ для голосовой почты.
Вы заметите, что не можете выбрать все модули. Но он также показывает, какие зависимости требуются.
В этом примере, если вы скачаете и установите ikemel-devel, проблема с rpm будет решена. Конечно, вы должны ./configure
еще раз перед menuselect.

Если вы хотите развернуть ту же конфигурацию на большем количестве серверов, вы можете использовать однострочную команду
menuselect/menuselect --enable-category MENUSELECT_ADDONS --disable MODULENAME --enable MODULENAME menuselect.makeopts
. Чтобы перечислить все возможные варианты, используйте
# пример с голосовой почтой ODBC и звуковым пакетом ALAW
make menuselect.makeopts
menuselect/menuselect --list-options
menuselect/menuselect --enable-category MENUSELECT_ADDONS --disable FILE_STORAGE --enable ODBC_STORAGE --disable CORE-SOUNDS-EN-GSM --enable CORE-SOUNDS-EN-ALAW --disable MOH-OPSOUND-WAV --enable MOH-OPSOUND-ALAW --enable EXTRA-SOUNDS-EN-ALAW menuselect.makeopts Пора make
все и готовьтесь к установке. Этот и следующий процесс могут занять несколько минут.
Система подскажет, что делать дальше. Это, наконец, установит Asterisk на ваш сервер.

contrib/scripts/get_mp3_source.shТеперь у вас есть несколько вариантов:
- ничего не делать
Да… это совершенно ничего не делает. Вы должны создать все файлы с нуля. -
make samples
Устанавливает примеры файлов конфигурации (перезаписывая любые существующие файлы конфигурации). -
make progdocs
Устанавливает только программную документацию, полезную только для разработчиков (требуется doxygen:yum -y install doxygen
) -
make basic-pbx
(только Звездочка 13+)
Лучший вариант, но недоступен в нашей версии Asterisk. То же, что и «создать образцы», но только с 14 необходимыми файлами вместо более 100.
Я призываю вас использовать как 2-й, так и 4-й вариант. Начнем с make samples
. Это создаст все файлы с хорошей документацией.
Затем переместите их в новую папку (например, /etc/asterisk/samples/
) и создайте базовую конфигурацию с помощью make basic-pbx
.
mkdir /etc/asterisk/samples
mv /etc/asterisk/*.* /etc/asterisk/samples/
make basic-pbx Хотя Asterisk теперь готов (и удивительно, что на главном экране нет информации об этом), теперь вы должны сделать make config
для создания файлов запуска и упрощения использования основных команд.
6) Стартовая Звездочка
Теперь можете запустить свой сервер и проверить его состояние.
systemctl start asterisk
systemctl status asterisk Если видишь Started LSB: Asterisk PBX
. Вы только что установили Asterisk!
Вы также можете ввести /etc/asterisk
каталог и увидеть все основные файлы и sample/
папка

После этого можете бежать asterisk -r
и тут начинается веселье!

Скачайте и установите Asterisk
Теперь, когда у нас установлены все пакеты зависимостей, мы должны быть готовы загрузить и установить Asterisk 16 для нашего экземпляра CentOS 7.
cd /usr/src/
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
tar xvfz asterisk-16-current.tar.gz
rm -f asterisk-16-current.tar.gz
cd asterisk-*
./configure --libdir=/usr/lib64 Когда установка будет завершена, вы увидите такой вывод.
configure: конфигурация сборки Menuselect успешно завершена .$$$$$$$$=. .$7$7. .7$7: .$: ,$7,7 .$7. 7$$ .$77 .$. $$$ .$$7 .7$ .? $$$ .? 7$$. $.$. .$$7. $$7,7$$. .$$. .777. .$$$77$$77$$$7. $$, $$~ 0,7$$$$$$$7. .$$.
.$7 .7$$$$7: ?$$.
$$ ?7$$$$$I .$$7
$$ 0,7$$$$$$$$ :$$.
$$ $$$7$$$$$$ .$$.
$$ $$ 7$$7 .$$ .$$.
$$ $$7 .$$.
7$$7 7$$ 7$$ $$$ $$ $$7. $ (ТМ) $$$$. .7$$$$ $$$$$$7$$$$$.$$$ $$$$$$$$. У вас есть вопросы или вам нужно предложение?
Установите зависимости, которые нужны для Asterisk 16
sudo yum -y install wget vim net-tools
Вам также необходимо установить групповые пакеты средств разработки.
sudo yum -y groupinstall "Development Tools"
Другие пакеты, которые вам необходимо установить:
sudo yum -y install libedit-devel sqlite-devel psmisc gmime-devel ncurses-devel libtermcap-devel sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel uuid-devel libtool libuuid-devel subversion kernel-devel kernel-devel-$(uname -r) git subversion kernel-devel crontabs cronie cronie-anacron wget vim

