В статье содержится информация о процессе установки Asterisk 13 в Ubuntu 16, предполагающем построение IP-АТС минимальной конфигурации с последующей настройкой дополнительного функционала
Минимальная конфигурация
- устанавливаем необходимые для компиляции пакеты
- apt-get install build-essential libncurses5-dev uuid-dev libjansson-dev libxml2-dev libsqlite3-dev libssl-dev
- скачиваем и распаковываем дистрибутив
- curl -L http://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-13.21-current.tar.gz | tar xz -C ~/
- выполняем конфигурирование
-
cd ~/asterisk-certified-13.21-cert3
./configure --prefix=/opt/asterisk --with-pjproject-bundled - Замечание: параметр "--with-pjproject-bundled" необходим для использования библиотеки PJSIP, входящей в дистрибутив
- запускаем menuselect
- make menuselect
- выбираем компоненты для установки
- Applications
- app_dial (функция Dial плана набора)
- app_playback (функция Playback плана набора)
- Bridging Modules
- bridge_simple (без данного модуля соединение между конечными точками устанавливается, но голосовой трафик не передается, и соединение через несколько секунд обрывается)
- Channel Drivers
- chan_pjsip (драйвер канала SIP)
- Codec Translators
- codec_alaw (кодек G.711 A-law)
- codec_ulaw (кодек G.711 μ-law)
- Format Interpreters
- format_pcm (поддержка функцией Playback плана набора звуковых файлов в форматах G.711 A-law и G.711 μ-law)
- PBX Modules
- pbx_config (интерпретация конфигурационных файлов)
- Resource Modules
- res_pjproject (необходим для модуля chan_pjsip)
- res_pjsip (необходим для модуля chan_pjsip)
- res_pjsip_authenticator_digest (без данного модуля регистрация конечных точек выполняется даже при неправильно указанных учетных данных и даже вообще без них)
- res_pjsip_endpoint_identifier_user (регистрации конечных точек)
- res_pjsip_registrar (регистрация конечных точек)
- res_pjsip_sdp_rtp (выполнение вызовов)
- res_pjsip_session (необходим для модуля chan_pjsip)
- res_rtp_asterisk (выполнение вызовов)
- res_sorcery_astdb (необходим для модуля chan_pjsip)
- res_sorcery_config (необходим для модуля chan_pjsip)
- res_sorcery_memory (необходим для модуля chan_pjsip)
- Compiler Flags
- BUILD_NATIVE (отмечаются по умолчанию; оставляем без изменения)
- OPTIONAL_API (отмечаются по умолчанию; оставляем без изменения)
- Core Sound Packages
- core-sounds-ru-alaw (набор звуковых файлов на русском языке в формате G.711 A-law)
- core-sounds-ru-ulaw (набор звуковых файлов на русском языке в формате G.711 μ-law)
- выполняем компиляцию и установку
-
make
make install
make config - создаем файл /opt/asterisk/etc/asterisk/modules.conf
-
[modules] load => app_dial.so load => app_playback.so load => bridge_simple.so load => chan_pjsip.so load => codec_alaw.so load => codec_ulaw.so load => format_pcm.so load => pbx_config.so load => res_pjproject.so load => res_pjsip.so load => res_pjsip_authenticator_digest.so load => res_pjsip_endpoint_identifier_user.so load => res_pjsip_registrar.so load => res_pjsip_sdp_rtp.so load => res_pjsip_session.so load => res_rtp_asterisk.so load => res_sorcery_astdb.so load => res_sorcery_config.so load => res_sorcery_memory.so
- создаем файл /opt/asterisk/etc/asterisk/pjsip.conf
-
[default_transport] type = transport protocol = udp bind = 0.0.0.0 [endpoint_template](!) type = endpoint transport = default_transport context = local_context disallow = all allow = alaw allow = ulaw [auth_template](!) type = auth auth_type = userpass [aor_template](!) type = aor max_contacts = 1 [1](endpoint_template) auth=1 aors=1 [1](auth_template) username=1 password=pass1 [1](aor_template) [2](endpoint_template) auth=2 aors=2 [2](auth_template) username=2 password=pass2 [2](aor_template)
- создаем файл /opt/asterisk/etc/asterisk/extensions.conf
-
[local_context] exten => _[12],1,NoOp() same => n,Dial(PJSIP/${EXTEN}) same => n,Hangup() exten => _.,1,NoOp() same => n,Playback(ru/pbx-invalid) same => n,Hangup()
- создаем файл /opt/asterisk/etc/asterisk/asterisk.conf
-
[options] runuser = asterisk rungroup = asterisk
- создаем пользователя и группу asterisk
- adduser --no-create-home asterisk
- настраиваем владельцев папки /opt/asterisk и права доступа к ней
-
chown -R asterisk:asterisk /opt/asterisk/
find /opt/asterisk/ -type d -exec chmod 700 {} \;
find /opt/asterisk/ -type f -exec chmod 600 {} \;
chmod 700 /opt/asterisk/sbin/* - запускаем Asterisk
- service asterisk start
- Замечание: для запуска CLI выполняем "/opt/asterisk/sbin/asterisk -r"
Настройка музыки на удержании
- запускаем menuselect
-
cd ~/asterisk-certified-13.21-cert3
make menuselect - выбираем компоненты для установки
- Resource Modules
- res_musiconhold
- Music On Hold File Packages
- MOH-OPSOUND-ULAW
- MOH-OPSOUND-ALAW
- выполняем компиляцию и установку новых компонентов
-
make
make install - в файле /opt/asterisk/etc/asterisk/modules.conf в раздел [modules] добавляем
-
load => res_musiconhold.so
- создаем файл /opt/asterisk/etc/asterisk/musiconhold.conf
-
[general] cachertclasses=yes [default] mode=files sort=random directory=moh
- в файле /opt/asterisk/etc/asterisk/extensions.conf добавляем в список аргументов функции Dial() параметр "m"
-
same => n,Dial(PJSIP/${EXTEN},,m)
- настраиваем владельцев папки /opt/asterisk/ и права доступа к ней
- перезапускаем Asterisk