Настройка asterisk 16 на centos 7

Настройка asterisk 16 на centos 7 Хостинг

Installing Asterisk 16 on Centos 7

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 

Теперь приступим к установке астериска.

Install Asterisk 18 on Centos 7

В сегодняшней статье мы собираемся установить новый 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.

Настройка asterisk 16 на centos 7

Всем привет! Вернёмся к теме звездочки. И на этот раз попробуем развернуть 16ю версию. Прошлые статьи
функциональны и версии 15.6.2, которую там рассматривают вполне достаточно для захвата работы телефона.
Но мы же хотим привлечь к большему. Просто добавим больше деталей и лоска процесса развёртывания телефонов!
Приступим:

Ставлю образ CentOS-7-x86_64-Minimal-1810.iso. Этот процесс вам знаком и подойдет его не будем. развитие
действие будет происходить уже в подключенном сеансе PuTTY. Делаем всё то что надо сделать на свеже установленном
минимальном CentOS:

Настройка asterisk 16 на centos 7

Ну а если нас интересует версия ядра, то набираем:

Жмём 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, просто нажмите на значок в левом верхнем
углу и перезапустите сеанс:

Настройка asterisk 16 на centos 7

Далее, традиционно, в качестве хорошего тона настройки серверов, приведём в порядок время:

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» — набираем команду:

Настройка asterisk 16 на centos 7

И как вы могли заметить – это символьно-графический интерфейс, в котором можно изменить сетевые настройки, поменять
hostname или же активировать добавленную сетевую карту.

Также благодаря пакету «net-tools.x86_64» нам теперь доступна команда:

Кстати если написать её с большой буквы, то работать не будет!

А благодаря пакету «mc» у нас есть двух панельный менеджер:

Настройка asterisk 16 на centos 7

А если вам вдруг не нравиться редактировать файлы в «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»:

Настройка asterisk 16 на centos 7

Скачаем исходник «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 на centos 7

Содержание
  1. Установка Asterisk 16
  2. Русская озвучка системных сообщений:
  3. Приступаем к настройке абонентов.
  4. Установка зависимостей
  5. Установка
  6. Запуск
  7. Ошибки
  8. Нет прав у Apache выполнить команды CLI Asterisk
  9. Most popular
  10. Голосовое меню с приветствием;
  11. Contact us!
  12. Статистика звонков
  13. Статьи по теме:
  14. Линки для данного проекта:
  15. Download and Install Jansson
  16. Download and Install PJSIP
  17. Set Asterisk menu options
  18. Оглавление
  19. 1) Предпосылки
  20. 2) SELinux
  21. 3) Перезагрузка
  22. 4) Настройка зависимостей
  23. 6) Стартовая Звездочка
  24. Скачайте и установите 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»

Настройка asterisk 16 на centos 7

Но мы продолжаем:

sudo ./configure —libdir=/usr/lib64 —with-jansson-bundled

Дожидаемся победного появления значка «астериск»:

Настройка asterisk 16 на centos 7

sudo make menuselect

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

Настройка asterisk 16 на centos 7

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

Настройка asterisk 16 на centos 7

Жмём «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

Настройка asterisk 16 на centos 7

Выходим из 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 

Настройка asterisk 16 на centos 7

При установке на Centos 7 не было найдено 3 пакета: speexdsp-devel, iksemel-devel, hoard

Настройка asterisk 16 на centos 7

Вместо speexdsp-devel
, установить пакет speex-devel
.

Для установки пакета iksemel-devel
не нашел решения.

 # contrib/scripts/get_mp3_source.sh 

Настройка asterisk 16 на centos 7

Установка

подготовка исходников к компиляции

 # ./configure 

Настройка asterisk 16 на centos 7

На 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

Настройка asterisk 16 на centos 7

нажать Save & Exit

запуск компиляции (-j< количество задействованных ядер процесора> )

 # make -j2 

Настройка asterisk 16 на centos 7

ошибка при компиляции:

 [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 

Настройка asterisk 16 на centos 7

формирование образцов файлов конфигурации

 # make samples 

Настройка asterisk 16 на centos 7

создание 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 команды

Читайте также:  Что такое доменное имя услуги

Настройка asterisk 16 на centos 7

Настройка asterisk 16 на centos 7

Настройка asterisk 16 на centos 7

Настройка asterisk 16 на centos 7

Настройка asterisk 16 на centos 7

Настройка asterisk 16 на centos 7

Голосовое меню с приветствием;

План создания голосового меню – Приветствие – Предложение ввести номер абонента – Если не ввёл уводим звонок на
секретаря.

А теперь откровение – КАК ЗАПИСАТЬ ГОЛОСОВОЕ МЕНЮ СРАЗУ В ТРУБКУ ТЕЛЕФОНА?

В файле 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»

Настройка asterisk 16 на centos 7

Копируем содержимое этого каталога в корень 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’,

Настройка asterisk 16 на centos 7

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

Настройка asterisk 16 на centos 7

Сохраняем и выходим.

Кстати «/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

Настройка asterisk 16 на centos 7

Ну не круто ли? Теперь остаётся только сделать чтобы в каталог «/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.

Читайте также:  Лучшие дешевые VPS-хостинги 2022 года |

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 wget

2) SELinux

Перед тем, как начать, вы также должны отключить SELinux (Security-Enhanced Linux — модуль безопасности ядра Linux). Без этого вы столкнетесь с проблемами позже, например. с воспроизведением записей.

Сначала воспользуемся  sestatus
команда. Он покажет вам текущий статус SELinux:

Настройка asterisk 16 на centos 7

Чтобы отключить редактирование файла SELinux  /etc/selinux/config
и изменить политику с  на принудительную
до  инвалид
.

Альтернатива редактированию 

 вы можете просто ввести команду
:

 sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config

3) Перезагрузка

К сожалению, перезагрузка — единственный способ навсегда отключить SELinux, так что давайте так и сделаем.

Если вы не хотите перезагружать компьютер сейчас, а хотите перейти в «разрешающий» режим, введите 

. Это позволит вам продолжить работу без перезагрузки.

После перезагрузки sestatus
должно показать, что он отключен.

Настройка asterisk 16 на centos 7

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.

Настройка asterisk 16 на centos 7

Если вы хотите развернуть ту же конфигурацию на большем количестве серверов, вы можете использовать однострочную команду 
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 на ваш сервер.

Настройка asterisk 16 на centos 7

 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 16 на centos 7

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

Настройка asterisk 16 на centos 7

Скачайте и установите 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

Оцените статью
Хостинги