h2. Пошаговая инструкция
1. Выключите компьютер
2. Выключите шнур питания из сети 220 вольт.
3. Вставьте TDM400P в PCI слот с напряжением 3.3 вольта или 5 вольт. Требуется PCI версии 2.2 или выше.
4. Вставьте 4-х пиновый 12-ти вольтный коннектор (такой как кабель питания жесткого диска) белую пластиковую розетку, расположенную в задней части карты.
5. Включите сервер.
После установки карты нужно убедиться, что ядро видит PCI устройство. Варианты вывода команды lspci:
* Communication controller: Tiger Jet Network Inc. [Asterisk:Tiger3XX] Modem/ISDN interface / Network controller: Tiger Jet Network Inc. [Asterisk:Tiger3XX] Modem/ISDN interface \-для карт TE110p или TDM400p.
* Network controller: Jens Scoenfeld для TE110p или TDM400p.
Далее нужно загрузить модуль ядра для карты TDM400P:
{noformat}
explorer ~ # modprobe zaptel
explorer ~ # modprobe wctdm
{noformat}
После загрузки модулей файл /var/log/messages должен содержать строки (для карты TDM22B):
{noformat}
May 26 21:54:29 explorer kernel: Zapata Telephony Interface Registered on major 196
May 26 21:54:32 explorer kernel: Freshmaker version: 63
May 26 21:54:32 explorer kernel: Freshmaker passed register test
May 26 21:54:32 explorer kernel: Module 0: Installed — AUTO FXO
May 26 21:54:32 explorer kernel: Module 1: Installed — AUTO FXO
May 26 21:54:32 explorer kernel: Module 2: Installed — AUTO FXS
May 26 21:54:32 explorer kernel: Module 3: Installed — AUTO FXS
May 26 21:54:32 explorer kernel: Found a Wildcard TDM: Wildcard TDM400P REV E/F (4 modules)
{noformat}
h2. Конфигурирование
За конфигурацию карты отвечает файл /etc/zaptel.conf.
h3. Сигнализация
Минимальные настройки - это тип сигналинга (FXO/FXS). Здесь может быть небольшая путаница. FXO модули используют тип сигналинга FXS, и наоборот. Для FXO модулей могут использоваться следующие типы сигналинга:
* fxsls : Channel(s) are signalled using FXS Loopstart protocol
* fxsgs : Channel(s) are signalled using FXS Groundstart protocol
* fxsks : Channel(s) are signalled using FXS Koolstart protocol
Для FXS модулей используются типы:
* fxols : Channel(s) are signalled using FXO Loopstart protocol
* fxogs : Channel(s) are signalled using FXO Groundstart protocol
* fxoks : Channel(s) are signalled using FXO Koolstart protocol
h3. zaptel.conf
Ниже представлен пример минимальной конфигурации zaptel.conf (для TDM11B):
{noformat}
cat /etc/zaptel.conf
fxoks=1
fxsks=2
loadzone=gr
defaultzone=gr
{noformat}
h3. zapata.conf
Далее необходимо сконфигурировать zaptel каналы в asterisk. Это делается в файле /etc/asterisk/zapata.conf. Пример конфигурации zapata.conf (для карты TDM11B):
{noformat}
cat /etc/asterisk/zapata.conf
[channels]
usecallerid=yes
hidecallerid=no
immediate=no
context=from-phone
group=1
signalling=fxo_ks
echocancel=yes
channel=1
context=from-pstn
group=2
signalling=fxs_ks
callerid="" <2323956>
echocancel=yes
channel=2
{noformat}
h3. Пояснения
Строка "fxsks=1" означает что будет использоваться fxsks сигнализация на первом порту карточки. Если у вас FXO порт, то вы должны использовать FXS сигнализацию для него.
Номер порта можно узнать из лога /var/log/messages после подгрузки модуля wctdm:
{noformat}
root# modprobe wctdm
root# tail /var/log/messages
Jun 29 15:51:48 localhost Freshmaker version: 73
Jun 29 15:51:48 localhost Freshmaker passed register test
Jun 29 15:51:50 localhost Module 0: Installed -- AUTO FXS/DPO
Jun 29 15:51:50 localhost Module 1: Not installed
Jun 29 15:51:50 localhost Module 2: Not installed
Jun 29 15:51:50 localhost Module 3: Installed -- AUTO FXO (FCC mode)
{noformat}
Тут мы видим что на первом порту стоит FXS, а на четвертом FXO. По этим данным записываем в файле zaptel.conf:
{noformat}
fxoks=1
fxsks=4
{noformat}
* *loadzone=gr* и *defaultzone=gr* используются для подгрузки настроек сигнализации для зоны gr (Greece) и использование ее по-умолчанию. В описание зоны входят настройке dialtone, busytone, ringtone ... Все зоны вы можете посмотреть в файле: src/zaptel-/zonedata.c.
* *Usecallerid=yes* и *hidecallerid=no* означает что астериск не будет скрывать callerid (номер звонящего).
* *context=from-phone*\- это контекст куда будут попадать все звонки с FXS порта. Контекст это список инструкций который выполняет астериск step-by-step когда вы набираете определенный номер. Все контексты определяются в файле /etc/asterisk/extensions.conf.
* *signaling=fxo_ks*\- устанавливает тип сигнализации. Так как это FXS порт, то сигнализация будет fxo_ks.
* *echocancel=yes*\- астериск будет пытаться подавлять эхо
* *channel=1*\- здесь мы указываем номер порта для которого мы определили все настройке описаны выше.
Далее мы описываем настройки FXO порта:
{noformat}
context=from-pstn
signalling=fxs_ks
callerid=""<2323956>
echocancel=yes
channel=2
{noformat}
Тут уже используется сигнализация fxs_ks. Callerid это номер который будет передаваться па телефонной линии как номер звоняшего. Для начала можно не использовать эту опцию.
После всех настроек нужно вызвать команду реконфигурации драйвера zaptel - ztcfg. Если коммада молча прекратила выполнение, все в порядке, можно запускать Asterisk (asterisk \-vvvvvgnc или сразу safe_asterisk или asterisk).
h2. Тест
h3. Вызов команд Dial для звонков в город/из города и на аналоговые телефоны
План набора номера конфигурируется в /etc/asterisk/extensions.conf. Ниже представлен план набора (диалплан), позволяющий звонить в город с аналогового телефона, сип клиента, принимать звонки из города, а также звонить с аналогового телефона на сип клиента и наоборот. Также демонстрируются приемы манипуляции с номером (отрезание префикса) и шаблоном номера. Пример диалплана с пояснениями:
{noformat}
cat /etc/asterisk/extensions.conf
[from-pstn]
; Звонки из города по внешним линиям, подключенным к FXO модулям. Все звонки отправляются одновременно на аналоговый телефон
; и SIP устройство
include => cause-codes
exten => s,1,Dial(Zap/1&SIP/sipura_1)
exten => s,n,Hangup()
[from-phone]
; Звонки с аналоговых телефонов направлются в город через 9-ку, с ее отрезанием.
; Звонок на номер 200 отправляется на SIP телефон.
include => cause-codes
exten => _9X.,1,Dial(ZAP/2/${EXTEN:1})
exten => _9X.,n,Hangup()
exten => 200,1,Dial(SIP/sipura_1)
exten => 200,n,Hangup
[from-sip]
; Звонки с SIP клиента.
; 100 - звонит аналоговый телефон
; На 9-ку - выход в город.
include => cause-codes
exten => 100,1,Dial(ZAP/1)
exten => 100,n,Hangup
exten => _9X.,1,Dial(ZAP/2/${EXTEN:1})
exten => _9X.,n,Hangup()
[cause-codes]
; Обработка таймаутов и неправильного номера (для которого нет правил)
exten => i,1,Playback(invalid)
exten => i,n,Hangup()
exten => t,1,Hangup
{noformat}
h3. Настройка SIP подключения
SIP телефоны могут быть "железные" или в виде программы на компьютере. Сначала нужно создать запись для каждого телефона в файле /etc/asterisk/sip.conf:
{noformat}
[sipura_1]
host=dynamic
secret=12pass34
type=friend
context=incoming-sip
disallow=all
allow=all
{noformat}
Потом нужно настроить сип телефон на астериск, для этого прописать в его настройках IP астериска, логин и пароль. В нашем случае login=sipura_1, а пароль=12pass34. Все звонки с этого телефона попадают в контекст incoming-sip.
{noformat}
exten => _9x.,1,Dial(ZAP/2/${EXTEN:1})
exten => _9x.,n,Hangup()
{noformat}
Эти инструкции срабатывают когда набирается номер, который начинается с девятки. Если наберается 91234567, то астериск позвонит через второй порт на номер 1234567. $\{EXTEN:1} указывает на номер без 9. $\{EXTEN} указывает на весь номер.