В статье содержится информация о процессе установки 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

Добавить комментарий