Устанавливаем Asterisk 13 из исходных кодов на Ubuntu 16
Минимальная конфигурация
устанавливаем необходимые для компиляции пакеты
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