В каком файле задается драйвер dahdi для модели карты
DAHDI является сокращением от "Digium Asterisk Hardware Device Interface".
Этот модуль канала пришел на смену каналу Zap и наследует все его основные возможности.
Кроме того, были расширены возможности по работе с программными эхоподавителями и добавлены новые параметры в файл конфигурации.
Все релизы Asterisk ветки 1.4 с версией выше 1.4.21, и все релизы ветки 1.6, автоматически используют канал DAHDI вместо Zaptel, даже если Zaptel все еще установлен и присутствует в системе.
О том, как перейти с Zaptel на DAHDI можно почитать тут.
Модуль канала DAHDI обеспечивает интерфейсный уровень между сервером Asterisk с одной стороны, и драйвером интерфейса Daahdi плюс программные эхоподавителели с другой. Драйвера интерфейсов позволяют использовать аппаратные средства (карты) для соединения Asterisk с традиционными аналоговыми или цифровыми телефонными сетями:
Поддерживаемое оборудование
Драйвер DAHDI на данный момент поддерживает следующее аппаратное обеспечение:
Цифровые карты
- wct4xxp:
- Digium TE205P/TE207P/TE210P/TE212P: PCI 2 порта T1/E1/J1
- Digium TE405P/TE407P/TE410P/TE412P: PCI 4 порта T1/E1/J1
- Digium TE220: PCI-Express 2 порта T1/E1/J1
- Digium TE420: PCI-Express 4 порта T1/E1/J1
- wcte12xp:
- Digium TE120P: PCI один порт T1/E1/J1
- Digium TE121: PCI-Express один порт T1/E1/J1
- Digium TE122: PCI один порт T1/E1/J1
- wcte11xp:
- Digium TE110P: PCI один порт T1/E1/J1
- wct1xxp:
- Digium T100P: PCI один порт T1
- Digium E100P: PCI один порт E1
- tor2: Tormenta 4 портовая T1/E1 карта от "Zapata Telephony project"
Аналоговые карты
- wctdm24xxp:
- Digium TDM2400P/AEX2400: до 24 аналоговых портов
- Digium TDM800P/AEX800: до 8 аналоговых портов
- Digium TDM410P/AEX410: до 4 аналоговых портов
- wctdm:
- Digium TDM400P: до 4 аналоговых портов
- xpp: Xorcom Astribank: USB устройство, до 32 портов (включая цифровые BRI и E1/T1 модули)
- wcfxo: X100P, оригинал и его клоны. Простая однопортовая FXO карта.
Другие драйвера
- pciradio: Zapata Telephony PCI Quad Radio Interface
- wctc4xxp: Аппаратный транскодер кодеков от Digium (необходим модуль dahdi_transcode).
- dahdi_dynamic_eth: Драйвер TDM через Ethernet (TDMoE). Ему необходим модуль dahdi_dynamic.
- dahdi_dynamic_loc: Mirror a local span. (необходим модуль dahdi_dynamic).
- dahdi_dummy: Устройство, не предоставляющее каналов, используется только как источник DAHDI сигналов таймера.
Конфигурация модуля Dahdi
Для конфигурации модуля Dahdi (не каналов asterisk) используются следующие файлы:
настройка E1 - /etc/dahdi/system.conf
В синхронной сети должно выполняться одно простое правило - master должен быть соединен с slave. Если это правило нарушается - будут потерянные(skip) или повторенные (slip) кадры.
При разговоре слышно легкое пощелкивание, факсы не идут или проходят с ошибками. У вас неправильно настроена синхронизация. Настройте синхронизацию как описано выше.
ISDN PRI - /etc/asterisk/chan_dahdi.conf
context - привязывает канал к контексту в плане набора (диалплане), тем самым определяя действия при инициации вызова. :
channel - назначает канал или несколько каналов, Каналы могут быть определены индивидуально, через запятую, или диапазоном через дефис.
group - назначает каналы в группу. Для исходящей связи будет выбираться первый свободный канал. Для назначения в несколько групп, перечислите значения через запятую. Чтобы не назначать в группу - оставьте значение пустым.
switchtype - устанавливает тип сигнализации для PRI.
qsig: Протокол с минимальной функциональностью, используемый для построения «сети» между двумя или более АТС от различных производителей. fxo_ks: Используется для сигнализации FXS устройств. fxs_ks: Противоположная сторона fxo_ks. Для сигнализации FXO устройств pri_cpe: Сигнализация PRI. Клиентская сторона оборудования (user) pri_net: Сигнализация PRI, network side.Аналоговые интерфейсы могут стать источником путаницы в Asterisk.
Для FXS интерфейсов используется fxo_ks.
Для FXO - fxs_ks.priindication: Этот параметр устанавливает то, как сервер Asterisk должен сигнализировать состояние Busy() и Congestion() для удаленного коммутатора или пользователя. По умолчанию: inband. Доступные значения следующие:
inband: Сервер Asterisk будет сам проигрывать тональные сигналы без перевода канала в отвеченное состояние; Не доступно для всех соединений PRI/BRI. outofband: Сервер Asterisk будет разрывать связь с информационным кодом busy/congestion, при этом уже сам телефонный коммутатор будет проигрывать тональные сигналы пользователю. Busy(), в этом случае, это то же самое, что установка: PRI_CAUSE=17 и выполнение команды: Hangup().pridialplan - устанавливает тип плана набора для ISDN PRI. Игнорируется в большинстве случаев. Может понадобиться для корректной работы CallerID Доступные значения: unknown, local, private, national, international.
overlapdial: если - «yes», то набранные цифры будут сразу отправляться в поток. По умолчанию: no. (enblock)
Состояние аналоговых вызовов
В этой секции описываются директивы сигнализирующие о состоянии вызовов аналоговых интерфейсов.
Функции CallerID
calleridcallwaiting - получать CallerID во время вызова.
Call feature options
Эти параметры включают или отключают дополнительные опции для FXS (FXO) каналов, такие как конференция и пере-адресация и т.д.. Значения могут быть только (yes/no)
threewaycalling - разрешает или запрещает three-way calling для канала.
cancallforward - разрешает или запрещает функцию «следуй за мной».
ADSI - Включает или выключает поддержку ADSI. ADSI спецификации системы, аналогичной Caller ID для передачи закодированной информация для аналоговых телефонов. Это позволяет создавать интерактивные меню и обеспечивает доступ к таким услугам, как голосовая почта, посредством текстового интерфейса.
Параметры качества аудио
echocancel включить эхо-подавление. По умолчанию всегда включен.
rxgain - регулировка усиления приемника.
txgain - регулировка усиления передатчика.Call Logging Options
Эти параметры влияют на записи Call Detail Records Asterisk.
amaflags: Устанавливает AMA флаги, влияющие на классификацию записей в Call Detail Records. Принимает следующие значения:accountcode: Устанавливает код счета за звонки. Код в счете может иметь любое буквенное или цифровое значение.
В описанной инструкции рассмотрим пример установки с нуля Asterisk версии с длительной поддержкой на Linux CentOS 7.
Подготовка сервера
1. Устанавливаем необходимые программы
yum install gcc wget ntpdate automake libtool
* gcc нужен для сборки исходников, wget — для загрузки файлов из командной строки; ntpdate — синхронизации времени; automake — участвует в создании Makefile при запуске configure; libtool — обеспечивает процесс сборки и использования динамических библиотек.
2. Настраиваем время
Устанавливаем временную зону:
timedatectl set-timezone Europe/Moscow
* в данном примере московское время.
Устанавливаем утилиту для синхронизации времени и запускаем ее:
yum install chrony
systemctl enable chronyd --now
3. Настройка безопасности:
Создаем новый сервис в брандмауэре:
firewall-cmd --permanent --new-service=asterisk
Добавим в сервис нужные порты:
firewall-cmd --permanent --service=asterisk --add-port=5060/tcp
firewall-cmd --permanent --service=asterisk --add-port=5060/udp
firewall-cmd --permanent --service=asterisk --add-port=5061/tcp
firewall-cmd --permanent --service=asterisk --add-port=5061/udp
firewall-cmd --permanent --service=asterisk --add-port=4569/udp
firewall-cmd --permanent --service=asterisk --add-port=5038/tcp
firewall-cmd --permanent --service=asterisk --add-port=10000-20000/udp
* где 5060 — SIP, 5061 — SIP over TLS, 4569 — IAX, 5038 — AMI (Asterisk Manager Interface), 10000-20000 — диапазон для динамических портов.
Теперь добавляем созданный сервис как разрешенный:
firewall-cmd --permanent --add-service=asterisk
и перезапускаем фаервол:
Установка Asterisk
Установка астериска выполняется путем сборки исходников. Сама процедура проходит в 3 этапа:
- Установка DAHDI (драйверов плат интерфейсов);
- Установка LibPRI (библиотека для работы с потоковыми TDM-интерфейсами);
- Собственно, сборка и установка Asterisk.
1. Сборка DAHDI
Загружаем исходник, распаковываем его и переходим в распакованный каталог:
tar -xvf dahdi-linux-complete-current.tar.gz
Выполняем сборку и установку:
Выходим из каталога с исходником:
2. Сборка LibPRI
Процедура, во многом, похожа на сборку DAHDI. Загружаем исходник, распаковываем его и переходим в распакованный каталог:
tar -xvf libpri-current.tar.gz
Выполняем сборку и установку:
Выходим из каталога с исходником:
3. Установка самого астериска
* Certified Asterisk — бизнес версия с поддержкой для коммерческих клиентов.
Используя ссылку, скачиваем на сервер программу:
Распаковываем архив и переходим в него:
tar -xvf asterisk-*.tar.gz
Используем встроенный скрипт, чтобы установить зависимости для астериска:
Чистим образовавшиеся временные файлы:
Добавляем библиотеку для работы с mp3:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib64 --with-dahdi --with-pri --with-iconv --with-libcurl --with-speex --with-mysqlclient
* полный перечень опция и что они означают можно посмотреть командой ./configure -h.
Выбираем необходимые компоненты (в данном примере res_config_mysql, app_mysql, cdr_mysql):
Запускаем сборку и установку:
Устанавливаем скрипты для автозапуска АТС и готовые конфигурационные файлы:
Базовая настройка и запуск
Открываем конфигурационный файл:
Снимаем комментарии и редактируем следующие пункты:
runuser = asterisk
rungroup = asterisk
defaultlanguage = ru
documentation_language = ru_RUСоздаем учетную запись:
useradd asterisk -m
Задаем права на следующие каталоги:
chown -R asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /var//asterisk
chown -R asterisk:asterisk /usr/lib64/asterisk
chown -R asterisk:asterisk /var/log/asterisk
и проверяем настройки:
Если программа запустится, мы увидим Asterisk Ready:
Теперь можно запустить астериск как службу:
systemctl enable asterisk
systemctl start asterisk
Заведение пользователя
Создадим наш первый диалплан (правило обработки звонков):
Допишем в него следующее:
* в данном примере мы создаем контекст с именем outcaling для трехзначных номеров (XXX) с вызовом по SIP по внутреннему номеру.
Теперь создадим два внутренних номера:
[public](!)
type=friend
context=outcaling
host=dynamic
disallow=all
allow=alaw
allow=ulaw
language=ru
qualify=yes
canreinvite=yes
call-limit=4
nat=no[101](public)
regexten=101
secret=1234
callerid="101" <101>
callgroup=1
pickupgroup=1[102](public)
regexten=102
secret=5678
callerid="102" <102>
callgroup=1
pickupgroup=1* сначала мы создали шаблон public, в который занесли общие параметры. Шаблон мы применили к создаваемым коротким номерам.
* где:- [101], [102] — имена для обозначения номеров.
- type — типы проверки номеров. Могут быть peer, user или friend. Peer — вызовы сопоставляются с IP-адресами и номерами портов. User — проверка username. Friend — включает возможности peer и user (проверка username и IP-адреса источника) и лучше всего подходит для телефонов и телефонных программ.
- regexten — добавочный номер. Если не задан, используется имя.
- secret — пароль для аутентификации.
- context — контекст или группа правил.
- host — IP-адрес или имя клиента. Для автоматической регистрации используем dynamic.
- callerid — идентификатор пользователя при звонке.
- disallow — запрещает кодеки (задается перед параметром allow).
- allow — разрешает кодеки. alaw и ulaw — алгоритмы для кодеков g711.
- language — код используемого языка.
- callgroup — задает группу устройства (для возможности перехвата).
- pickupgroup — задает перечень групп, которые можно перехватывать.
- qualify — включает или отключает периодическую проверку подключенного клиента.
- canreinvite — включает или отключает прохождение голосового RTP трафика через Asterisk. Устанавливать, только если клиент поддерживает функцию SIP re-invites.
- call-limit — ограничение количества одновременных вызовов.
- nat — устанавливается в yes, если клиент находиться за NAT.
Перезапускаем наш сервис:
systemctl restart asterisk
Подключение телефона и проверка
Для проверки сервера устанавливаем софт-телефон на компьютер. Например, а качестве SIP-клиента под Windows можно установить бесплатную программу 3CX Phone, для Android — Zoiper.
Пример настройки клиента 3CX Phone:
Настраиваем подключение с логином и паролем 101 / 1234, второй — 102 / 5678. Пробуем позвонить.
Исправление ошибок
Рассмотрим процесс устранения предупреждений и ошибок во время запуска Asterisk.
DUNDi — протокол динамической маршрутизации для IP-телефонии. Позволяет автоматически находить сервер, обслуживающий конкретный номер.
Если вы не используете этот протокол, то для нескольких офисов приходится создавать отдельные планы нумерации, поделенные на диапазоны. И создавать отдельные маршруты до всех офисов (и транки до кучи). Когда сеть АТС несколько подрастет, то это положение вещей может стать неудобным, и даже создавать проблемы (а может и не создать).
Практика
Статей по настройке можно найти много, но они обычно не раскрывают особенности настройки DUNDi в связке с FreePBX (он поддерживает настройку DUNDi в полу ручном режиме).
Итак, нам потребуется:
- Создать пару приватный\публичный ключ для каждого сервера, подключенного к DUNDi маршрутизации
- Выбрать сервера, которые будут корневыми для работы DUNDi (можно сделать и простую звезду или связать всех со всеми)
- Создать контекст в котором будем искать внутренние номера (можно и не создавать, и прицепиться к существующему)
- Создать DUNDi конфигурацию
- Создать транк, через который будет происходить вызов (в этом случае я использую IAX2)
- Создать DUNDi транк, на который навесить исходящую маршрутизацию
Ключи DUNDi
Заходим на сервера по ssh и:
Файл *.pub надо передать на другие сервера, которые будут в прямой связи с этим серверомКонтекст поиска внутренних номеров
Конфигурация DUNDi
Транк для совершения вызова
Название транка в этой вкладе — просто отображаемое имя
А в этой, уже то, что использует Asterisk, секцию Incoming мы вообще не используем
Перезагрузить конфигурацию DUNDi можно так:
Перезагрузить ключи можно так:
DUNDi транк и маршрутизация
Название транка в этой вкладе — просто отображаемое имя
DUNDi Mapping соответствует секции mappings из файла /etc/asterisk/dundi.conf
Так как план нумерации у меня четырехзначный, то и шаблон номера у меня такой
Проверка
После применения изменений, из командной строки asterisk -rv можно:
Посмотреть статус DUNDi пиров:Читайте также: