Давайте рассмотрим как происходит установка Asterisk на Ubuntu. Последние события об отказе IBM от дальнейшей поддержки Centos подталкивают к выбору другой ОС. Из самых популярных и поддерживаемых это конечно Ubuntu, вот её и возьмем для наших экспериментов. Тестировать буду на самой свежей версии на данный момент Ubuntu 20.04 LTS и Asterisk 18.
Для удобства сразу перейдем в режим root
- Установка Asterisk на Ubuntu из исходников
- Настройка Asterisk в Ubuntu
- Выводы
- Шаг 1. Подготовка
- Шаг 2. Загрузка исходников
- Шаг 3. Сборка дополнительных библиотек
- Шаг 4. Установка PJSIP
- Шаг 5. Подготовка к компиляции Asterisk
- Шаг 6. Сборка Asterisk из исходного кода
- Шаг 7. Запуск Asterisk
- Шаг 8. Настройка Asterisk
- Выводы
- Ручная установка Asterisk
- Работа с DAHDi
Установка необходимого ПО
Установим необходимые пакеты для компиляции приложений
apt-get install build-essential git
Далее необходимо установить библиотеку PJSIP
cd /opt/ git clone https://github.com/pjsip/pjproject.git cd pjproject ./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
Открываем порты в брандмауэре
Если у вас активирован брандмауэр необходимо открыть стандартные порты используемые asterisk
ufw allow 5060/udp ufw allow 5060/tcp ufw allow 10000:20000/udp
Установка Asterisk
cd /opt wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz tar -xvf asterisk-*.tar.gz cd asterisk-*/
./contrib/scripts/install_prereq install
По окончанию установки будет сообщение

Очистим систему от временных файлов установочного пакета
Добавим возможность использования mp3
./contrib/scripts/get_mp3_source.sh
Конфигурация исходника Asterisk
./configure --libdir=/usr/lib64
После завершения работы команды конфигурации исходника будет изображение как на картинке ниже

Приступим к выбору дополнительных параметров Asterisk
В первом пункте меню Add-ons отмечаем * все записи под —Extended—

Переходим в пункт Codec Translators и выбираем все кодеки

Заходим в Core Sound Packages и выделяем звуковые пакеты с нужным вам языком, в моем случае это русский RU

И последним пунктом заходим в меню Music On Hold File Packages и отмечаем все пункты

Нажимаем кнопку Save & Exit
Перейдем к компиляции Asterisk из исходников
По окончанию отработки команды будет сообщение об успешном завершении

Понять что все закончилось хорошо можно по сообщению

С установкой Asterisk мы закончили. Добавим примеры настроек в конфигурационные файлы. Данный пункт не обязателен, если примеры вам не нужны, можете пропустить данный пункт.
Выполним make config
Создаем файл конфигурации
nano /etc/ld.so.conf.d/asterisk.conf
Добавляем в него путь к библиотекам Asterisk
Необходимо сохранить файл и выполнить команду
Включим ротацию логов Asterisk
Создаём пользователя asterisk
Для работы Asterisk необходимо создать пользователя и дать ему права
groupadd asterisk useradd -r -d /var/lib/asterisk -g asterisk asterisk usermod -aG audio,dialout asterisk
Поменяем владельца папок asterisk на вновь созданного пользователя
chown -R asterisk.asterisk /etc/asterisk chown -R asterisk.asterisk /var/lib/asterisk chown -R asterisk.asterisk /var/log/asterisk chown -R asterisk.asterisk /var/spool/asterisk chown -R asterisk.asterisk /usr/lib64/asterisk
Запуск сервиса от пользователя asterisk
Укажем сервису asterisk от какого пользователя запускаться. Откроем на редактирование файл asterisk.conf
nano /etc/asterisk/asterisk.conf
Найдем следующие строки и раскомментируем их
runuser = asterisk rungroup = asterisk

Сохраним файл и запустим asterisk
Проверить что сервис запустился можно узнав его статус
systemctl status asterisk

Выделенный зеленым цветом статус active говорит о том что сервис запущен.
Добавим сервис asterisk в автозагрузку
systemctl enable asterisk
Проверка работы
Запустим консоль asterisk и удостоверимся что все работает

Как видно на картинке выше мы успешно вошли в консоль и выполнили команду pjsip show version сообщающую нам о версии библиотеки PJSIP.
Видео процесса установки asterisk на ubuntu смотрите ниже
https://youtube.com/watch?v=4PoM8cFEikM%3Ffeature%3Doembed
Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.
Предположим что у нас есть небольшая организация, где работает около 50 сотрудников. Все они используют Asterisk для связи внутри компании и звонков наружу. Все настройки буду проводить на свежей Asterisk 18. В своей предыдущей статье я рассмотрел процесс установки Asterisk 18 на Centos 8. Давайте рассмотрим как происходит настройка Asterisk с нуля.
Учитывая тот факт что библиотека chan_sip не актуальна, будем рассматривать настройку через PJSIP. Старую библиотеку необходимо отключить (если включена) для исключения конфликтов.
Отключение chan_sip
В файле /etc/asterisk/modules.conf необходимо найти и убрать ; перед строкой noload => chan_sip.so
nano /etc/asterisk/modules.conf

Рассмотрим структуру Asterisk с кратким описанием конфигурационных файлов требуемых для настройки транка, пользователей, диалплана.
Структура Asterisk
Настройка Asterisk происходит путем редактирования конфигурационных файлов. Располагаются они в директории /etc/asterisk/ . Перечислю основные файлы которые нам потребуются для начальной настройки.
- pjsip.conf — файл настройки мультимедийной библиотеки PJSIP. В нем содержатся настройки регистрации, транков, пользователей
- extensions.conf — в данном файле происходит настройка диалплана. Все параметры обработки вызова, переадресация, мелодии на удержании, настройка автосекретаря и многое другое.
- asterisk.conf — основной конфигурационный файл, тут указаны пути к используемым папкам, параметры запуска Asterisk и т.д. Подробный разбор параметров данного файла есть тут
- sip.conf — файл настройки устарелой библиотеки chan_sip. В работе его использовать не будем
- cdr.conf — основные настройки ведения отчета о звонках Call Detail Record
- rtp.conf — в данном файле определены настройки касательно протокола RTP (порты, поддержка ICE и т.д.)
- features.conf — указываются параметры перехвата и парковки вызова, максимальное время набора и переадресации, DTMF коды абонентских функций
- modules.conf — в данном файле содержится информация о модулях которые необходимо загружать при старте Asterisk, либо отключить их загрузку.
- musiconhold.conf — настройка параметров конфигурации музыки на удержании
- iax.conf — используется для настройки соединений по протоколу IAX. Данный протокол как правило используется для объединения между собой двух и более АТС
- voicemail.conf — детальная настройка параметров голосовой почты
- logger.conf — указаны детальные параметры журналирования работы Asterisk
Я перечислил лишь основные конфигурационные файлы Asterisk. Но их значительно больше. В повседневной жизни используется только два файла exntensions.conf и pjsip.conf
Часть функций а также повторная загрузка данных из конфигурационных файлов происходит с помощью консоли Asterisk. Зайти в консоль можно так:
Для более детального вывода данных в консоль можно использовать ключ -v (я обычно использую -vvvvvv). Чем больше букв v указано, тем детальнее будет вывод информации в консоль. Запуск в режиме повышенной детализации:
Полный список консольных команд с описанием можно прочитать в моей статье
Подключение пользователей
Добавление новых пользователей происходит в файле pjsip.conf. Конфигурационный файл pjsip.conf состоит из секций. Имена секций указываются в квадратных скобках. Название секций может быть произвольным, кроме имен ENDPOINT и AOR которые должны быть одинаковые с заголовком SIP URI.
Перечислю возможные типы секций:
- ENDPOINT — описывает опции SIP протокола и взаимодействует с модулями AOR, AUTH и TRANSPORT. Раздел ENDPOINT обязательно должен быть связан с одной или несколькими секциями AOR. В секции ENDPOINT указываются основные параметры SIP подключения (телефон, софтфон, транк и т.п.)
- AOR — расшифровывается как Address of Record. Данная секция указывает как связаться с ENDPOINT. Без AOR секция ENDPOINT не работает. Тут указывается продолжительность регистрации, соответствие голосовой почте, MWI, настройки переодичности SIP сообщений для мониторинга состояния устройства. Получая запрос на регистрацию от устройства первичная обработка идет в AOR. Происходит поиск соответствия SIP заголовку To
- TRANSPORT — в данной секции описываются настройки транспортного уровня с использованием протоколов UDP, TCP, WebSockets, а также шифрование TLS/SSL. Одну транспортную секцию можно настроить для использования множеством точек ENDPOINT. Либо, если необходимо, создать уникальный транспортный уровень для конкретной точки
- System — определяются общие системные настройки PJSIP
- Global — настраиваются глобальные параметры. Возможность включение дебага, изменение строки User Agent, параметр поля max forwards и т.п.
- AUTH — данная секция используется для аутентификации и содержит настройки для входящих и исходящих регистраций. С этой секцией ассоциируются ENDPOINT и REGISTRATIONS. В случае необходимости разные ENDPOINT и REGISTRATIONS могут использовать общую секцию AUTH
- REGISTRATION — обычно используется для регистрации транка от провайдера
- DOMAIN_ALIAS — используется для указания псевдонимов используемых доменов
- ACL — секция ACL используется для контроля входящих SIP соединений
- IDENTIFY — указываются IP адреса конечных точек ENDPOINT
- CONTACT — можно указать короткий контакт вместо SIP URI
В каждой секции есть опция type содержащая назначение секции в общей конфигурации.
Создание первого пользователя
Создадим учетную запись нашего первого пользователя в Asterisk. Пользователь может подключаться с SIP телефона либо софтфона. Для удобства я заполняю конфигурационные файлы добавляя новые данные в конец файла. Также очень удобно удалить все и создать чистый файл для удобства чтения. Откроем файл pjsip.conf для редактирования
nano /etc/asterisk/pjsip.conf
В конец файла добавим информацию о новом пользователе с добавочным номером 1000. Я всегда использую четырехзначные внутренние номера для дальнейшего возможного роста количества абонентов.
[tr-udp] type=transport protocol=udp bind=0.0.0.0 allow_reload=true [1000] type=endpoint context=from-internal disallow=all allow=alaw transport=tr-udp auth=auth1000 aors=1000 [auth1000] type=auth auth_type=userpass password=parol username=1000 [1000] type=aor max_contacts=2
В данном пример я добавил минимально необходимую информацию о пользователе для его регистрации на сервере Asterisk. Давайте разберем подробнее что мы написали:
- protocol — тип используемого протокола клиента
- bind — IP адрес клиента. Можно указать конкретный IP чтобы с других адресов никто не мог использовать данную запись. Если необходимо можно задать и порт.
- allow_reload — разрешить перенастройки транспортного уровня без перезагрузки Asterisk. По умолчанию без указания данного пункта с параметром true после изменения настроек необходимо рестартовать Asterisk
- type — тип секции. В данном случае ENDPOINT
- context — контекст диалплана. Данный параметр указывает куда будут направлены звонки приходящие на данный ENDPOINT
- disallow — указывает какие кодеки необходимо запретить. В данном случае all — все кодеки
- allow — кодеки разрешенные для использования. Строкой выше мы запретили все кодеки, текущей строкой разрешили только alaw
- transport — указывает какую конфигурация использовать для траспорта. В нашем случае tr-udp что мы создали выше.
- auth — объект аутентификации относящийся к данному ENDPOINT. В нашем случае это auth1000 дальше по файлу будет его описание
- aors — объек AOR для этого ENDPOINT
- type — тип используемой секции
- auth_type — тип используемой аутентификации. У меня используется логин и пароль
- password — пароль от учетной записи
- username — логин учетной записи
- type — тип секции
- max_contacts — максимальное количество контактов которые могут использоваться с данной AOR
После сохранения конфигурации в файл необходимо чтобы Asterisk применила конфигурацию. Для этого зайдем в консоль
И введем команду повторной загрузки настроек из файла pjsip.conf

Теперь запустим SIP телефон и настроем учетную запись 1000 на нём. В работе я использую софтфон MicroSIP. Он мне нравится за свою компактность и возможность работы в portable режиме.


Как видно на изображении выше мы удачно подключились к АТС. Но что делать если нам необходимо добавить не одного, а 50 пользователей? Если писать такой конфиг по каждому пользователю, потом очень сложно будет что-то найти. Для таких случаев есть шаблоны. Разберемся как они работают.
Создание шаблона
;===============Шаблон отдела маркетинга [marketing-endpoint](!) type=endpoint transport=tr-udp context=from-internal disallow=all allow=alaw [pass-auth](!) type=auth auth_type=userpass [two-contact-aor](!) type=aor max_contacts=2
В шаблоне можно указывать все те же параметры что и при обычном создании пользователя. Я привел пример простого шаблона отдела маркетинга с указанием минимального набора настроек. Однако их может быть значительно больше, например: используемые кодеки, необходимость использования NAT, контекст, разрешенную лиюо запрещенную сеть для регистрации абонентов. В общем параметров может быль сколь угодно много, и писать все их для каждого пользователя дело не благодарное. Рассмотрим далее применение шаблона для создания пользователей.
Применение шаблона
Создадим трех пользователей отдела маркетинга с применением шаблона. Для использования шаблона необходимо справа от названия секции в круглых скобках добавить название шаблона.
;===============Добавочный номер 2000 [2000](marketing-endpoint) auth=auth2000 aors=2000 [auth2000](pass-auth) password=2000 username=2000 [2000](two-contact-aor) ;===============Добавочный номер 2001 [2001](marketing-endpoint) auth=auth2001 aors=2001 [auth2001](pass-auth) password=2001 username=2001 [2001](two-contact-aor) ;===============Добавочный номер 2002 [2002](marketing-endpoint) auth=auth2002 aors=2002 [auth2002](pass-auth) password=2002 username=2002 [2002](two-contact-aor)
Используя шаблон мы указываем только те параметры которые хотим поменять. Все параметры не указанные нами в каждой из секций будут браться из шаблона. Можно зайти под каждый из пользователей и проверить что все получилось.
Команда для вывода пользователей зарегистрированных на сервере



Маршрутизация вызовов
Однако, на данном этапе мы пока не можем совершать звонки. При попытке набрать любой номер будет ошибка. Для совершения звонков нам необходимо внести изменения в файл extensions.conf — основной рабочий файл. В нем настраивается маршрутизация вызовов Asterisk. В понимании телефонии и Asterisk не исключение это называется DIALPLAN.
Структура файла extensions.conf
Файл имеет две обязательные секции general и globals. Секции также указываются в квадратных кавычках. После двух обязательных секции идут секции вашего диалплана.
- static — когда установлено значение no или не указано pbx_config перезапишет данный файл когда extensions будет изменен. Все комментарии в этом файле будут потеряны
- writeprotect — если параметр static имеет значение yes, а параметр writeprotect=no то можно сохранить настройки диалплана через командную строку Asterisk «dialplan save»
- autofallthrough — в случае когда параметр имеет значение yes и параметры вашего диалплана исчерпали возможности к дальнейшему действию, звонок будет завершен. Это происходит по умолчанию. Если значение будет no или не указано Asterisk будет ожидать действия от пользователя.
- extenpatternmatchnew — установив параметр в значение true или yes будет использоваться новый алгоритм который будет искать лучшее совпадение паттерна. Увеличение скорости обработки по новому алгоритму повышается с увеличением количества обрабатываемых добавочных номеров. По умолчанию данный параметр отключено. Включайте на свой страх и риск.
- clearglobalvars — если задан параметр clearglobalvars, глобальные переменные будут очищены и повторно обработаны при перезагрузке диалплана или перезапуска Asterisk. Когда параметр не установлен или имеет значение no глобальные переменные будут сохраняться при перезагрузке и даже при удалении из extensions.conf или одного из включенных в него файлов, будет использоваться предыдущее значение.
В Asterisk могут использоваться как глобальные переменные так и переменные канала. Есть еще переменные окружения, они обеспечивают доступ из Asterisk к переменным окружения unix.
[globals] MSK_time=08:00-19:00 MSK_week=mon-sat RECEPTION=PJSIP/3010
В приведенном примере я задал две переменные с указанием времени работы и дней недели для автосекретаря и в третьей переменной указал добавочный номер и канал через который можно позвонить на ресепшен.
Диалплан в Asterisk пишется на основе контекстов. В каждом контексте мы определяем набор приложений с указанными параметрами. Давайте сразу рассмотрим на примере, как нам написать диалплан чтобы пользователи могли звонить на добавочный 1000.
[from-internal] exten = 1000,1,Dial(PJSIP/1000)
Процесс вызова
Совершая вызов абонент будет искать в своем контексте правила набора указанного номера. В каждом контексте может быть большое количество добавочных номеров. К набираемому добавочному номеру правила применяются последовательно.
Формат записи такой: exten = имя,приоритет,приложение(параметры)
Расширим наш диалплан, добавив дополнительные пункты. И не забудьте, что при изменений файла extensions.conf необходимо чтобы Asterisk перечитал его. Для этого заходим в консоль и вводим команду dialplan reload
[from-internal] exten = 1000,1,Answer() ; Поднимаем трубку exten = 1000,2,Playback(demo-congrats) ; Проигрываем приветственное сообщение exten = 1000,3,Dial(PJSIP/1000) ; Звоним на номер 1000
При звонке на 1000 мы поднимаем трубку, проигрываем приветствие и последним действием будет звонок на добавочный 1000. Можно написать и так:
[from-internal] exten = 1000,1,Answer() exten = 1000,n,Playback(demo-congrats) exten = 1000,n,Dial(PJSIP/1000)
Приоритет можно заменить буквой n но первый приоритет указывать необходимо обязательно. Можно еще немного оптимизировать наш диалплан.
[from-internal] exten = 1000,1,Answer() same = n,Playback(demo-congrats) same = n,Dial(PJSIP/1000)
Используя same вместо exten можно не писать в каждой строке добавочный 1000. Но как и в случае с n в первой строке указывать exten обязательно.
Системные добавочные номера
- s — при поступлении вызова в контекст, без указанного добавочного номера используют номер s (от слова start)
- i — в случае когда абонент набирает не существующий добавочный номер вызов переходит на добавочный номер i
- t — когда абонент долго не нажимает кнопку после запуска приложения WaitExten() вызов переходит на добавочный номер t. Время ожидания по умолчанию — 10 секунд
- h — добавочный используемый при завершении вызова, когда уже закрылся медиаканал
Писать диалплан для каждого добавочного номера дело не благодарное, для таких целей будем использовать шаблон.
Шаблоны номеров
Для удобства добавочные номера можно сопоставлять по шаблонам. Все шаблоны в диалплане начинаются со знака нижнего подчеркивания _
- X — цифра от 0 до 9
- Z — любая цифра от 1 до 9
- N — любая цифра от 2 до 9
- . — любой символ
- [184-7] – цифры 1,8,4,5,6,7
Шаблон для звонков внутри организации по всем добавочным из 4 цифр будет выглядеть так:
[from-internal]
exten = _XXXX,1,Dial(PJSIP/${EXTEN})Вложение контекстов
Есть одна особенность, Asterisk сначала сортирует добавочные (exten) и затем ищет первое совпадение. Чтобы при совпадении шаблонов заставить Asterisk звонить по нужному будем использовать вложенные контексты.
[from-internal]
include=long
exten = _XXXX,1,Dial(PJSIP/${EXTEN})
[long]
exten => _X.,1,Dial(PJSIP/${EXTEN}@sipnet)В контексте from-internal сначала будет обрабатываться шаблон _XXXX затем вложенный контекст include=long
Увидеть в какой последовательности Asterisk обрабатывает диалплан можно введя в консоли команду dialplan show

Благодаря созданному диалплану все 4-х значные номера будут идти на локальных пользователей. Остальные номера пойдут через внешнего провайдера SIPNET. И чтобы все внешние звонки действительно пошли через SIPNET давайте его настроим в pjsip.conf
Настройка внешнего провайдера
Для проверки входящей и исходящей связи я буду использовать тестовый транк с регистрацией от SIPNET. Я настрою сам транк в файле pjsip.conf и правила маршрутизации звонков в extensions.conf
Открываем файл pjsip.conf
nano /etc/asterisk/pjsip.conf
Добавляем в конец файла регистрацию транка провайдера
[sipnet] type=registration transport=tr-udp outbound_auth=sipnet server_uri=sip:sipnet.ru client_uri=sip:0042095477@sipnet.ru retry_interval=60 [sipnet] type=auth auth_type=userpass password=пароль username=0042095477 [sipnet] type=aor contact=sip:sipnet.ru:5060 [sipnet] type=endpoint transport=tr-udp context=from-sipnet disallow=all allow=alaw,ulaw outbound_auth=sipnet aors=sipnet from_user=0042095477 from_domain=sipnet.ru [sipnet] type=identify endpoint=sipnet match=sipnet.ru
Тонкости настройки транка провайдера у каждого свои но приведенный пример как правило подойдет для большинства других.
После добавления новых данных в файл не забываем зайти в консоль asterisk и перечитать конфиги
Настроим входящую маршрутизацию
Добавляем настройки маршрутизации входящей связи при звонке снаружи на наш номер SIPNET
nano /etc/asterisk/extensions.conf
Вставим следующий текс в конец файла
[from-sipnet] exten = s,1,Answer() same = n,Wait(5) same = n,Playback(demo-congrats) same = n,Dial(PJSIP/1000&PJSIP/2000)
Я создал контекст from-sipnet указанный ранее при создании ENDPOINT sipnet. При поступлении входящего вызова (s -без доб номера) поднимать трубку, ожидать 5 секунд (Wait) затем проиграть приветственное сообщение. После окончания приветствия звонить одновременно на 2 добавочных 1000 и 2000.
Приветственное сообщение записать самим в формате wav с параметрами 8кГц, 16 Бит, Моно запись скинуть в папку и указать к ней путь, например
Playback(/opt/sound/my_sound)
Можно добавить обработку входящего вызова по времени.
[from-sipnet] exten = s,1,Answer() same = n,Wait(5) same = n,GotoIfTime(08:00-18:00|mon-fri|*|*?work:outwork) same = n(work),Playback(/opt/work_music) same = n(work),Dial(PJSIP/1000&PJSIP/2000) same = n(outwork),Playback(/opt/outwork_music) same = n,Hangup()
В зависимости от текущего времени и дня недели если вызов совершен во временной промежуток указанный в GotoifTime будет переход на метку work. Все вызовы не попадающие под временной интервал будут отправляться на метку outwork.
На данном этапе мы создали обработку внутренних вызовов, входящих и исходящих внешних (городских) вызовов. В тестовом аккаунте проверить исходящие вызовы можно позвонив по телефону техподдержки 2009991
Считаю настройку для небольшой организации достаточной. Мы разобрали как происходит настройка Asterisk с нуля.
https://youtube.com/watch?v=OIbM-TxDPig%3Ffeature%3Doembed
Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.
Для начала определимся что такое Asterisk — это бесплатное решение компьютерной телефонии, проще говоря IP АТС. Первая версия ПО была выпущена 23 сентября 2004. Asterisk активно развивается и по сей день. Большое сообщество поклонников не зря выбирают данную АТС. Благодаря не очень сложной настройке, стабильности и большому количеству расширений. Давайте рассмотрим как проходит установка Asterisk 18 на Centos 8.
Настройка системы
Все действия по настройке и установке я произвожу с правами суперпользователя (root). Если у вас возникает ошибка с доступом используйте root или sudo.
Установка времени
Если при установки операционной системы вы выставили правильное время, можете смело пропускать данный пункт. Проверить текущий часовой пояс и время можно командой

В моём случае стоит временная зона America/New_York необходимо заменить ее на Europe/Moscow.
timedatectl set-timezone Europe/Moscow

Перевод SELINUX в режим Permissive
Режим Permissive означает что SELINUX не будет ничего блокировать. Все действия попадающие под блокировку будут просто записываться в журнал.
setenforce 0 sed -i 's/\(^SELINUX=\).*/\SELINUX=permissive/' /etc/selinux/config
Проверить текущий статус SELINUX можно командой
Откроем необходимые порты
Откроем порты в firewalld для подключения клиентов
firewall-cmd --permanent --add-port=5060/{tcp,udp}
firewall-cmd --permanent --add-port=5061/{tcp,udp}- 5060 — порт для подключения SIP
- 5061 — порт для подключения SIP с использованием шифрования TLS
Перечитаем измененный конфиг для применения новых параметров firewalld
Подключение репозитория EPEL
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
EPEL репозиторий содержит большое количество дополнительных пакетов, которых нет в стандартном репозитории. Некоторые из пакетов необходимых для работы Asterisk будут устанавливаться отсюда.
Установка связанного ПО
Установим набор пакетов Development Tools
dnf groupinstall "Development tools"
Установка пакета jansson
dnf install jansson-devel
Установим пакет libedit
dnf install https://rpmfind.net/linux/fedora/linux/releases/33/Everything/x86_64/os/Packages/l/libedit-3.1-33.20191231cvs.fc33.x86_64.rpm dnf install https://rpmfind.net/linux/fedora/linux/releases/33/Everything/x86_64/os/Packages/l/libedit-devel-3.1-33.20191231cvs.fc33.x86_64.rpm
Загрузим и установим PJSIP
PJSIP — это новая мультимедийная библиотека для работы с протоколами SIP, RTP, STUN, SDP и т.д. Впоследствии Asterisk откажется от старой библиотеки SIP в пользу PJSIP.
cd /opt/ git clone https://github.com/pjsip/pjproject.git cd pjproject ./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
Установка Asterisk
Скачаем последнюю версию Asterisk с сайта разработчика и распакуем архив
cd /opt wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz tar -xvf asterisk-*.tar.gz cd asterisk-*/
Запустим установку зависимостей Asterisk
./contrib/scripts/install_prereq install
После успешной установки появится соответствующее сообщение.

Очистка временных файлов созданных в процессе установки
Добавляем возможность работы с форматом mp3
./contrib/scripts/get_mp3_source.sh
Конфигурируем исходник Asterisk
./configure --libdir=/usr/lib64
После успешного выполнения команды появиться примерно такая надпись, как на картинке ниже

Запустим меню выбора дополнительных параметров установки Asterisk
Передвигаемся по меню стрелочками, выбрать или отменить выбор компонента можно клавишей Enter. Разберем какие компоненты помимо стандартных должны быть отмечены.
- Add-ons — chan_ooh323, format_mp3, res_config_mysql
- Codec Translators — отмечаем все кодеки
- Core Sound Packages — выделяем все звуковые пакеты с русским языком CORE-SOUNDS-RU
- Music On Hold File Packages — выделяем все пункты в данном меню




После завершения выбора компонентов нажимаем кнопку Save & Exit
Переходим к установке Asterisk
Результатом успешного выполнения команды make будет текст такого содержания

Далее выполним make install
После успешной установки будет сообщение

На данном этапе установка Asterisk завершена, перейдём к настройке. Соберем конфигурационные файлы с комментариями и примерами. Данная процедура не обязательна, делаете по необходимости.
Добавим скрипты инициализации в автозагрузку
Учитывая тот факт что Asterisk генерирует достаточно большое количество журналов, советую использовать ротацию. Это не обязательно, но в случае высокой нагрузки крайне желательно. Итак, включить ротацию логов можно так
Создание пользователя asterisk
Необходимо создать пользователя под которым Asterisk будет запускаться.
groupadd asterisk useradd -r -d /var/lib/asterisk -g asterisk asterisk usermod -aG audio,dialout asterisk
Изменим владельца соответствующих каталогов
chown -R asterisk.asterisk /etc/asterisk chown -R asterisk.asterisk /var/lib/asterisk chown -R asterisk.asterisk /var/log/asterisk chown -R asterisk.asterisk /var/spool/asterisk chown -R asterisk.asterisk /usr/lib64/asterisk
Укажем пользователя от которого будет запускаться Asterisk
Редактируем файл /etc/sysconfig/asterisk
nano /etc/sysconfig/asterisk
Проверяем указанные строки, если они есть раскомментируем, если нет, добавим в файл.
AST_USER="asterisk" AST_GROUP="asterisk"

Откроем на редактирование файл /etc/asterisk/asterisk.conf
nano /etc/asterisk/asterisk.conf
Раскомментируем две строки
runuser = asterisk ; The user to run as. rungroup = asterisk ; The group to run as.

Перезагрузим Asterisk для применения внесенных нами изменений
systemctl restart asterisk
Добавим Asterisk в автозагрузку при старте системы
systemctl enable asterisk
Проверяем работу Asterisk
Давайте проверим статус процесса asterisk. Запущен он или нет и есть ли какие-то ошибки
systemctl status asterisk

По статусу видно что служба запущена (active). Внизу можно увидеть краткий лог работы программы.
Зайдем в консоль Asterisk и проверим что программа отвечает. Также выполним несколько команд. Зайти в консоль можно командой asterisk -r я обычно использую asterisk -rvvvvvv для полной детализации лога в консоли.

После успешного входа в консоль можно увидеть версию Asterisk. Попробуем ввести парочку команд для проверки работы.

Команда отработала успешно, проверим список всех SIP peers
Эта команда не сработает. В предыдущих версиях Asterisk данная команда сработала бы без вопросов. Дело в том что начиная с 17 версии Asterisk модуль chan_sip отвечающий за работу модуля SIP считается устаревшим и по умолчанию отключен. Попытаемся его загрузить из консоли.

Видим что модуль загрузился но с предупреждениями. как раз повествует о том, что модуль устарел и скоро его не станет, используйте PJSIP. Попробуем выполнить

Команда отработала успешно. Но, чтобы модуль загружался и после выхода из консоли при старте сервера, необходимо отредактировать файл /etc/asterisk/modules.conf
nano /etc/asterisk/modules.conf
Находим в файле запись noload => chan_sip.so и комментируем её поставив перед ней точку с запятой
Сохраняемся и можно перезагружаться для проверки что все работает.
Я сам постепенно перехожу и всем советую использовать новую библиотеку res_pjsip
В данной статье я рассмотрел как проходит установка Asterisk 18 на Centos 8. В следующей статье планирую рассмотреть процесс первоначальной настройки: подключение пользователей, транков и т.п. Список консольных команд Asterisk также есть на нашем сайте.
Весь процесс установки Asterisk 18 на Centos 8 я записал на видео.
https://youtube.com/watch?v=7XfuR30hs4w%3Ffeature%3Doembed
Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.
Asterisk — это решение для компьютерной телефонии с открытым исходным кодом, которое поддерживает протоколы VoIP, SIP и PJSIP для операционной системы Linux. Если подключить к компьютеру соответствующее оборудование, то с помощью Asterisk можно создать полноценную станцию ATC. Среди основных возможностей программы можно отметить голосовую почту, конференции, интерактивное голосовое меню и распределение звонков.
В этой статье мы рассмотрим как выполняется установка Asterisk на Ubuntu 20.04. Программу можно установить из официальных репозиториев дистрибутива или же собрать последнюю версию из исходников.
В репозиториях Ubuntu 20.04 на данный момент находится версия 16. Это версия LTS с длительным сроком поддержки. Для установки программы достаточно выполнить команду:
sudo apt install asterisk

После завершения установки можно проверить версию программы:

Как видите, мы получили версию 16. Это LTS версия, но на данный момент уже доступна версия 17. Чтобы её получить придется собрать программу из исходников.
Установка Asterisk на Ubuntu из исходников
Первым делом вам нужно установить зависимости для работы программы:
sudo apt install gnupg2 software-properties-common git curl wget libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev
Для распаковки исходников наберите:
tar zxvf asterisk-17-current.tar.gz

Дальше нам нужно перейти в папку с исходниками, но мы не знаем точную версию программы. У нас есть мажорная версия 17, но минорную версию мы не знаем. Поэтому используйте такую команду:
Перед тем как выполнить сборку и установку Asterisk на Ubuntu необходимо установить нужные mp3 модули:

Эти команды позволят вам установить некоторые зависимости для проигрывания mp3. Затем установите нужные зависимости для этих модулей:
sudo contrib/scripts/install_prereq install
Выполнение может занять некоторое время, а также вам нужно будет ввести код страны. Дальше подготовим конфигурационные файлы для сборки:

Затем надо немного настроить процесс сборки:
Используйте клавиши со стрелками для перемещения по меню. Для выбора какого-либо пункта используйте Enter. Сначала включите необходимые дополнения на вкладке Add-ons. Например, как на снимке:

Затем перейдите в раздел Core Sound Packages и включите там необходимые пакеты, например:

Аналогично сделайте в разделе Music on Hold:

Когда закончите с настройкой выберите Save & Exit с помощью клавиши Tab:

Осталось выполнить сборку программы:
sudo make install

Когда установка будет завершена, выполните такую команду, чтобы не создавать сотни конфигурационных файлов вручную:
Чтобы установить скрипты инициализации, которые позволят запускать asterisk автоматически, при каждой загрузке выполните:
sudo make config
Затем для обновления кэша библиотек выполните такую команду:
Теперь вы можете запустить сервер asterisk и убедится, что все действительно работает:
sudo systemctl start asterisk

И смотрим информацию про утилиту через терминал:

Если все было сделано правильно и установка Asterisk на Ubuntu с нуля прошла успешно, то все будет работать.
Настройка Asterisk в Ubuntu
Программа запускается от суперпользователя. Но нам нужно, чтобы её можно было запустить от пользователя asterisk, а поэтому нужно выполнить ещё несколько настроек. Так ваша система будет в большей безопасности. Для начала нужно остановить запущенный сервис:
sudo systemctl stop asterisk
Дальше добавьте группу и пользователя asterisk:
Дальше нам нужно изменить скрипт инициализации так, чтобы программа запускалась от имени нужного пользователя. Откройте файл /etc/default/asterisk и расскоментируйте такие строки:
sudo vi /etc/default/asterisk

Для того чтобы все работало правильно, пользователю asterisk нужно дать доступ ко всем каталогам программы:
sudo vi /etc/asterisk/asterisk.conf

Когда все будет готово запустите ранее остановленную службу или перезагрузите, если не останавливали:
sudo systemctl start asterisk
sudo asterisk -rvvv

Если пользователь и группа — asterisk, а значит мы сделали все правильно, настройка Asterisk Ubuntu завершена.
Выводы
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Asterisk – свободный сервер для цифровой телефонии, работающий на базе Linux, FreeBSD, OpenBSD. Использование Asterisk позволяет создать собственную АТС с возможностью гибкой настройки функциональности. Сервер распространяется на условиях двойной лицензии, благодаря которой можно использовать решения как с открытым кодом, так и интегрировать модули с содержанием лицензионного кода.
В этой статье мы рассмотрим как выполняется установка Asterisk Debian 10. В репозиториях Debian как правило, содержится не самая свежая версия Asterisk, так как тысячи людей со всего мира активно развивают проект. Поэтому при установке собственного сервера часто используют компиляцию из исходного кода, что, кроме прочего, позволяет оптимизировать сервер под конкретное окружение Linux или BSD системы, что, в свою очередь, даёт прирост производительности при прочих равных условиях.
Шаг 1. Подготовка
Установите необходимые пакеты и выполните обновление ОС Debian 10
sudo apt -y update && sudo apt -y upgrade
sudo apt install -y build-essential linux-headers-`uname -r` openssh-server mariadb-server mariadb-client bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp2-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr debhelper cmake libmariadb-dev odbc-mariadb libodb-mysql-dev

Шаг 2. Загрузка исходников
Создайте в месте хранения исходных кодов /usr/src директорию asterisk, в которую вы в дальнейшем поместите все исходные файлы и перейдите в неё
sudo mkdir /usr/src/asterisk

Загрузите исходный код Asterisk16 с официального сайта и распакуйте его:
cd /usr/src/asterisk
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
sudo tar xvzf asterisk-16-current.tar.gz
sudo rm asterisk-16-current.tar.gz
Шаг 3. Сборка дополнительных библиотек
Если есть оборудование для прямого подключения к серверу с цифровой АТС платами или каналом Е1, то необходимо установить модуль DAHDI и библиотеку LibPRI. Для установки последовательно введите команды ниже:
sudo tar xvzf libpri-current.tar.gz
sudo rm libpri-current.tar.gz
sudo tar xvzf dahdi-linux-complete-current.tar.gz
sudo rm dahdi-linux-complete-current.tar.gz
cd /usr/src/asterisk/dahdi-linux-com*
sudo make
sudo make install
cd /usr/src/asterisk/libpri*
sudo make
sudo make install
sudo ldconfig
Астериск работает с оригинальной полноценной имплементацией протокола SIP, а также может одновременно для разных каналов использовать PJProject – более современную имплементацию протокола SIP. При этом на этапе подготовки к сборке можно указать ключ —with-pjproject-bundled скрипту для сборки проекта, расположенному по адресу /path/asterisk-source-dir/configure
Шаг 4. Установка PJSIP
Перейдите в каталог сборки проекта:
sudo wget https://github.com/pjsip/pjproject/archive/2.10.tar.gz
sudo tar xvzf 2.10.tar.gz
sudo rm 2.10.tar.gz
cd /usr/src/asterisk/pjproject-*
sudo./configure
sudo make
sudo make dep
sudo make install
sudo ldconfig

Шаг 5. Подготовка к компиляции Asterisk
Добавьте пользователя asterisk в список Linux пользователей:

Перейдите в каталог с исходным кодом asterisk

На момент написания статьи актуальной версией Asterisk 16 является 16.17.9. Сначала необходимо установить оставшиеся зависимости. После выполнения команды:

Должен появиться вывод приблизительно такой, как на скриншоте выше. В этой директории содержатся несколько исполняемых файлов asterisk, которые необходимо выполнить




В процессе установки зависимостей может потребоваться ввести код страны, для которой устанавливается АТС, временную зону сервера Debian 10. Введите цифры кода без знака «+»

По завершении установки зависимостей появится сообщение, что все необходимые пакеты установлены, можно переходить к сборке проекта:

Шаг 6. Сборка Asterisk из исходного кода
В первую очередь необходимо запустить скрипт сборки проекта, который анализирует установленные в системе пакеты, необходимые asterisk и позволяет их включить в собираемый проект.
/usr/src/asterisk/asterisk-16.17.0/configure --with-pjproject-bundled –with-jansson-bundled
Jansson это ещё один проект, который используется при работе Asterisk. Он позволяет использовать данные JSON, на нем основано много функций гибкого управления АТС и передачи данных во внешние приложения и получения данных из них же.
На следующем этапе создаётся меню, которое позволяет управлять модулями для текущей сборки Asterisk

В этом меню XXX отмечены модули, которые не были найдены в системе.

Некоторые модули отключены по-умолчанию, но в системе установлены. Если их отметить звёздочкой, то модули будут включены в собираемый проект.

Особое внимание уделите кодекам, которые будут собраны при сборке проекта. Лучше выделить все доступные, чтобы в дальнейшем не тратить ресурсы сервера на пересборку проекта. После завершения выбора нажмите Save & Exit и последовательно введите команды сборки:
Если после завершения сборки, в директории /lib/systemd/system не появился файл asterisk.service необходимо его туда скопировать командой
sudo cp /usr/src/asterisk/asterisk-16.17.0/contrib/systemd/asterisk.service /lib/systemd/system
Задайте права на исполняемые файлы и создайте необходимые директории
chown asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /usr/lib/asterisk
Шаг 7. Запуск Asterisk
По завершении включаем автозагрузку Asterisk при запуске ОС Debian 10 и перезапускаем службу сервера
systemctl enable asterisk
systemctl restart asterisk
Шаг 8. Настройка Asterisk
Для подключения к консоли сервера телефонии из терминала наберите команду

Убедиться, что произошло подключение к собранной версии АТС можно с помощью команды консоли Asterisk
core show version


Показывает загруженные при работе модули, ими можно управлять как из конфигурационных файлов, так и из консоли Asterisk. Для выхода из консоли управления сервером введите команду
При вводе команды make samples при сборке Asterisk создаются типовые файлы настроек, которые возможно редактировать из Терминала или с помощью различных административных панелей управления сервером Asterisk, например такой, как FreePBX. Убедитесь, что исходные настройки были созданы командой

Выводы
Теперь вы знаете как выполняется установка Asterisk 16 на Debian 10. Сборка Asterisk из исходного кода позволяет оптимизировать под выбранное окружение исполняемые файлы сервера. Этот достаточно простой и проработанный процесс позволяет понять каким образом собираются проекты из исходного кода, какие элементы ОС Debian 10 использует собираемый проект.
В дальнейшем на установленный из исходного кода сервер цифровой телефонии Asterisk можно будет развернуть web-интерфейс для оптимизации управлением сервера и добавлением дополнительных функций.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
В данной статье пошагово опишем как выполнить установку Asterisk. Статья предназначена для IT-специалистов, желающих самостоятельно выполнить настройку и установку Asterisk для компании.

Если Вас интересует профессиональное внедрение системы IP-телефонии Asterisk «под ключ», то обращайтесь к нашим специалистам по телефону 8 (495) 989-85-33 или 8 (800) 333-75-33. Доверьте свою телефонию профессионалам.
Ручная установка Asterisk
Перед началом установки рекомендуется произвести полное обновление операционной системы. Это улучшит стабильность работы и безопасность сервера.
Создаем директорию, в которую поместим исходные коды дистрибутива Asterisk.
mkdir -p /usr/src/asterisk cd /usr/src/asterisk
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.0.0.tar.gz
Аналогичным образом выкачиваем все требуемые пакеты:
1. Asterisk
2. DAHDI
3. LibPRI
Для компиляции исходников потребуется сам компилятор. Устанавливаем его следующей командой (кавычки должны быть те, где на клавиатуре размещена буква «Ё»):
yum -y install make gcc gcc-c++ kernel-headers-`uname -r` kernel-devel-`uname -r` ncurses-devel newt-devel libtiff-devel libxml2-devel sqlite-devel glibc-headers
Распаковываем предварительно скачанные с официального сайта пакеты.
tar -xvf asterisk-current.tar.gz tar -xvf dahdi-linux-complete-current.tar.gz tar -xvf libpri-1.4-current.tar.gz
В первую очередь устанавливаем библиотеку LibPRI.
LibPRI — это OpenSource библиотека, предназначенная для работы с потоковыми TDM-интерфейсами ISDN: PRI (Primary Rate Interface)и BRI (Basic Rate Interface). Первый (PRI) часто используется в России для работы с операторами по каналам Е1.
cd /usr/src/asterisk/libpri-* make clean make make install
Далее устанавливается драйвера каналов DAHDI.
Драйвера предназначены для взаимодействия Asterisk с платами цифровых интерфейсов: E1, FXO, FXS и пр.
cd /usr/src/asterisk/dahdi-linux-complete* make all make install make config
Далее задаем автоматический запуск службы DAHDI при старте системы:
chkconfig dahdi on service dahdi start

Если на данном этапе у Вас выдалось сообщение следующего характера:
You do not appear to have the sources for the 2.6.32-220.el6.i686 kernel installed.
Это может означать, что не стоят исходные коды для ядра. Вернитесь на этап, где требовалось установить исходные коды ядра.
На этом этапе устанавливаем само телефонное ядро Asterisk.
cd /usr/src/asterisk/asterisk* . /configure
Если на этом шаге у Вас отобразится такая заставка, значит все идет по плану:

На этом этапе можно выбрать модули, которые будут входить в состав сборки. Если требуется работа с MySQL или другими компонентами, их рекомендуется установить заранее.
Система выбора модулей выглядит следующим образом (хотя, она может быть и на черно-белом фоне):

- Перемещение — стрелками клавиатуры
- Выбор — пробелом
- XXX — модуль не доступен для установки. Необходимо установить недостающие зависимости и повторить все с шага». /configure»
- F12 — сохраняем и выходим
Далее, оканчиваем установку:
Создаем дефолтные конфиги и образцы.
Добавляем Астериск в автозагрузку
Запускаем Астериск консольно, количеством «v» в опции задавая плотность протоколирования (verbosity). Убеждаемся, что Астериск запускается нормально, после чего останавливаем его.
Запуск будет сопровождаться таким списком загружаемых модулей:

Теперь Asterisk можно запустить как службу, после чего подключиться к нему штатно в режиме консоли.
service asterisk start asterisk -rvvvv
Работа с DAHDi
После инсталляции карты, проверяем ее в системе
Компилируем нужный пакет для нашей карты, Парабел, например, тут.
комментим все модули, вписываем нужный нам, например, quasarm
Указываем зоновую (региональную) принадлежность.
loadzone=ru defaultzone=ru
Настраиваем согласование потока между АТС оператора и Asterisk.
span = 1,0,0,CCS,HDB3,CRC4 //Задается источник синхронизации, тип кодирования и необходимость проверки четности bchan=1-15,17-31 // Задаются тайм-слоты для голоса dchan=16 //Задаются сигнальные тайм-слоты для данных (0-й — по умолчанию) echocanceller=mg2,1-15,17-31 // Указывается тип эхоподавителя и тайм-слоты, на которых он будет задействован.
Теперь чуть более подробно по опциям.
Делаем рестарт dahdi
service dahdi stop service dahdi status
Если не выгрузился, необходимо сначала остановить Asterisk:
dahdi_test dahdi_test Opened pseudo dahdi interface, measuring accuracy… 99.999% 99.995% 99.999% 99.999% 99.999% 99.999% 99.999% --- Results after 7 passes --- Best: 99.999 — Worst: 99.995 — Average: 99.998506, Difference: 99.998507
Значения не ниже 99,9 — хороший результат. Он означает, что DAHDI-устройство не вынуждено конкурировать с другими процессами за прерывания и время процессора. Значения ниже 99.9 будут приводить к ухудшению качества звука, срыву синхронизации канала E1, скрежету и обрывам голоса.
В случае, если значения ниже 99,9 (да и просто для профилактики), необходимо убедиться, что цифровая карта не делит прерывания с другими драйверами.
cat /proc/interrupts [pbx.localdomain ~]# cat /proc/interrupts CPU0 CPU1 0: 1326273128 0 IO-APIC-edge timer 1: 8959 0 IO-APIC-edge i8042 4: 2796129 0 IO-APIC-edge serial 6: 6 0 IO-APIC-edge floppy 7: 2 0 IO-APIC-edge parport0 8: 1 0 IO-APIC-edge rtc 9: 1 0 IO-APIC-level acpi 14: 50338541 0 IO-APIC-edge ide0 50: 0 0 IO-APIC-level uhci_hcd:usb3 58: 7369 23441503 PCI-MSI ahci 114: 1326250778 0 IO-APIC-level wctdm 146: 28024883 0 PCI-MSI eth0 169: 0 0 IO-APIC-level uhci_hcd:usb5 225: 0 0 IO-APIC-level uhci_hcd:usb4 233: 0 0 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2 NMI: 0 0 LOC: 1325416311 1325416314 ERR: 0 MIS: 0
wctdm занимает отдельный irq, это правильно
если с кем-то делит, то это может сказывать на работе карты и качестве голоса.
Чаще всего наблюдается ситуация, когда драйвера USB и DAHDI занимают одно прерывание. Это нежелательная ситуация, и в ней лучше всего либо разнести драйвера по разным прерываниям, либо отключить USB на уровне BIOS.
Тут можно увидеть ошибки в работе карты:
показывать сведения о карте
показывает конфигурационный файл, который используется
затем в /etc/asterisk/chan_dahdi.conf
примерный конфиг:
[trunkgroups] [channels] language=ru context=from-trunk signalling=pri_cpe rxwink=300 ; Atlas seems to use long (250ms) winks ; ; Whether or not to do distinctive ring detection on FXO lines ; ;usedistinctiveringdetection=yes usecallerid=yes hidecallerid=no callwaiting=yes usecallingpres=yes callwaitingcallerid=yes threewaycalling=yes transfer=yes cancallforward=yes callreturn=yes echocancel=yes echocancelwhenbridged=yes echotraining=800 rxgain=0.0 txgain=0.0 group=0 callgroup=1 pickupgroup=1 immediate=no ;busydetect=yes ;busycount=5 faxdetect=no switchtype=euroisdn ; or qsig immediate=no context=from-trunk resetinterval=100000000 signalling=pri_cpe ; or pri_net group=0 channel ≥1-15,17-31
dahdi restart dahdi show channels — проверяем что каналы поднялись dahdi show channel 1

