На тесте подключил китайскую плату TDM410P с четырьмя FXO-портами (красными) в PCI слот выключенного Ubuntu сервера.
Для удобства сразу переключимся на root пользователя:
sudo -i
Включил сервер, выполнил команду которая отображает PCI устройства и шины:
lspci -v
В списке увидел установленную плату:
05:00.0 Ethernet controller: Digium, Inc. Wildcard TDM410 4-port analog card (rev 11)
Subsystem: Digium, Inc. Wildcard TDM410 4-port analog card
Physical Slot: 1
Flags: bus master, fast Back2Back, medium devsel, latency 64, IRQ 16
I/O ports at 1000 [size=256]
Memory at b1900000 (32-bit, non-prefetchable) [size=1K]
Expansion ROM at b1920000 [disabled] [size=128K]
Capabilities:
Kernel driver in use: wctdm24xxp
Kernel modules: wctdm24xxp
Зарегистрируем плату (параметры автоматически пропишутся в конфигурации /etc/dahdi/ и /etc/asterisk/dahdi-channels.conf):
dahdi_span_assignments -v auto
dahdi_genconf -v
Теперь плату можно увидеть командой:
dahdi_scan
dahdi_cfg -vvvv
lsdahdi
Если возникают ошибки при команде dahdi_cfg, то возможно не установлен dahdi, скомпилируем его например как я писал в статье указанной по ссылке ниже, тем более если китайская плата не имеет аппаратного шумоподавления то dahdi по любому придется собирать с Oslec.
Установка эхоподавителя Oslec и DAHDI
В файле /etc/dahdi/modules у меня указаны модули (последний wctdm24xxp как раз предназначен для TDM410P):
dahdi
dahdi_dummy
dahdi_transcode
wctdm24xxp
Подгрузить его можно командой:
modprobe wctdm24xxp
В файле /etc/dahdi/system.conf изменим зону на свою (она может сбросится после выполнения команды dahdi_genconf):
loadzone=ru
defaultzone=ru
В файле /etc/asterisk/modules.conf, в блоке [modules] должна быть строка для автозагрузки модуля chan_dahdi:
load => chan_dahdi.so
Из консоли asterisk его также можно загрузить, но он будет активен до перезапуска asterisk (первая команда открывает консоль asterisk, последняя выходит из него):
asterisk -rvv
module load chan_dahdi
quit
Перезапустить dahdi можно из консоли asterisk командой:
dahdi restart
Проверить статус можно командой (в списке должна быть Wildcard TDM410P):
dahdi show status
Я подключил к 1 порту платы провод с телефонным номером городской аналоговой линии (нумерация портов идет сверху вниз, порт что ближе к PCI слоту четвертый).
Теперь пропишем его в конце файла users.conf для первого порта (канала):
[trunk_1]
group = 1
context = DID_trunk_1
busydetect = yes
busycount = 3
busypattern = 500,500
ringtimeout = 8000
progzone = ru
usecallerid = yes
cidstart = ring
cidsignalling = bell
flash = 750
rxflash = 1250
callerid = asreceived
dahdichan = 1
trunkstyle = analog
allow = all
group = 1
pulsedial=yes
dialtone_detect=yes
signalling = fxs_ks
channel = 1
Замечу что без параметров pulsedial=yes, dialtone_detect=yes у меня не работали исходящие вызовы, а был слышен беспрерывный гудок линии (телефонные линии Укртелеком).
Добавим в конце файла /etc/asterisk/chan_dahdi.conf
context=DID_trunk_1
signalling=fxs_ks
group=1
channel => 1
Перезапустим asterisk чтобы применить изменения:
service asterisk restart
Подключимся к его консоли и посмотрим активен ли добавленный канал:
asterisk -vvr
dahdi show channels
dahdi show channel 1
Посмотреть уровень громкости и трафик на канале можно командой:
dahdi_monitor 1 -v
В файле extensions.conf укажем куда отправлять входящие звонки (в моём случае на IP телефон с номером 6001):
[DID_trunk_1]
exten => s,1,DIAL(SIP/6001,20)
exten => s,2,Hangup()
Также добавим к диалплану в котором настроены IP телефоны, строки с шаблонами номеров телефонов куда можно звонить (в первой строке например конкретно указан номер 21545, а во второй шаблон под который попадают все номера из пяти цифр начинающиеся на семерку, буква W означает паузу перед набором):
exten => _21545,1,Dial(DAHDI/1/W${EXTEN})
exten => _7XXXX,1,Dial(DAHDI/1/W${EXTEN})
Если необходимо дождаться паузы после набора 0 перед набором остальной части номера:
exten => _022XXXXXX,1,Dial(DAHDI/1/W0W${EXTEN:1},60)
Перезапустить asterisk можно командой:
service asterisk restart
Из консоли asterisk можно по отдельности подгружать файлы конфигурации, например sip и extensions:
asterisk -rvv
sip reload
dialplan reload
quit
очень помогла статья, настроил сразу же только плата у меня 8ми портовая. вопросов несколько: зачем в users.conf прописывается 2 раза параметр group = 1? за что он отвечает? и если у меня 4 транка то нужно ли присваивать другим транкам свои группы?
и последний вопрос: когда я звоню на астериск с сотового то по консоли вижу что звонок на АТС приходит очень быстро, но на телефон он поступает с задержкой 8-9 секунд. где убрать задержку?