Asterisk™: будущее телефонии Второе издание - Меггелен Джим Ван
Шрифт:
Интервал:
Закладка:
Если на плате TDM400P есть модули FXS, убедитесь, что вы не забыли подключить питание к разъему Molex, который используется для обеспечения напряжения, необходимого для возбуждения генератора звонка в FXS-портах. Разъем Molex не нужен, если имеются только FXO-модули.
Конфигурация оборудования Zaptel
Для конфигурации оборудования используется файл zaptel.conf, который находится в папке /etc/. Приведенная минимальная конфигурация определяет FXO-порт, использующий протокол обмена сигналами FXS:
fxsks=2
loadzone=us
defaultzone=us
В первой строке, кроме указания используемого протокола обмена сигналами (FXO или FXS), для канала 2 задается один из следующих протоколов:
• Loop start (ls)
• Ground start (gs)
• Kewlstart (ks)
Разница между loop start (кольцевая сигнализация) и ground start (сигнализация с заземлением) в том, как оборудование запрашивает тональный сигнал: линия, использующая сигнализацию с заземлением, подает сигнал дальнему концу о том, что хочет получить тональный сигнал, путем мгновенного заземления одного из проводов; линия с сигнализацией по шлейфу для запроса тонального сигнала использует замыкание. Хотя в новых системах их уже практически нет, аналоговые линии с сигнализацией с заземлением по-прежнему применяются во многих областях[56]. Сигнализация с заземлением на самом деле довольно странная штука, потому что в Asterisk нет ее аналоговой формы. Фактически передается не напряжение заземления, а сигнальный бит, предусмотренный для аналоговых сетей, присутствующих на стороне T1. Если вы чего-то здесь не понимаете, не отчаивайтесь; скорее всего, вам никогда не придется использовать сигнализацию с заземлением. Сейчас почти все линии связи (и аналоговые телефоны/модемы/ факсы) используют сигнализацию по шлейфу. Kewlstart, в сущности, - это то же самое, что и кольцевая сигнализация, за исключением того что он обладает более развернутой логикой и, таким образом, может определять отсоединение удаленного конца[57]. Kewlstart является предпочтительным протоколом обмена сигналами для аналоговых линий в Asterisk.
Чтобы определить другой метод обмена сигналами, не kewlstart, замените ks в выражении для fxsks на ls или gs (для кольцевой сигнализации или сигнализации с заземлением соответственно).
Параметр загрузки зоны loadzone задает набор сигналов (которые указаны в файле zonedata.c), используемых для канала. Файл zonedata.c содержит информацию о всевозможных звуках, воспроизводимых телефонной системой в определенной стране: тональный сигнал, сигналы дозвона, сигнал «занято» и т. д. Если применить загруженную тоновую зону к Zap-каналу, этот канал будет воспроизводить сигналы заданной страны. Для разных каналов можно задать различные наборы сигналов. Если для канала зона не задана, используется параметр зоны по умолчанию defaultzone.
После конфигурации zaptel.conf можно загрузить драйверы для платы. Команда modprobe применяется для загрузки модулей, используемых ядром Linux. Например, чтобы загрузить драйвер wctdm, нужно выполнить команду
# modprobe wctdm
Если при загрузке драйверов не выводится никаких сообщений, значит, драйверы загружены успешно[58]. Убедиться в том, что оборудование и порты были загружены и сконфигурированы правильно, можно с помощью программы ztcfg:
# /sbin/ztcfg -vv
На экран будут выведены сконфигурированные каналы и используемый метод обмена сигналами. Например, для TDM400P с одним модулем FXO будет получен такой вывод:
Zaptel Configuration Channel map:
Channel 02: FXS Kewlstart (Default) (Slaves: 02) 1 channels configured.
Если получено сообщение о следующей ошибке, для канала неправильно сконфигурирован используемый метод обмена сигналами (или отсутствует оборудование по этому адресу):
ZT_CHANCONFIG failed on channel 2: Invalid argument (22)
Did you forget that FXS interfaces are configured with FXO signaling and that FXO interfaces use FXS signaling?
(ZT CHANCONFIG дала сбой для канала 2: Недействительный аргумент (22).
Вы забыли, что FXS-интерфейсы конфигурируются на использование протокола обмена сигналами FXO и FXO-интерфейсы используют протокол FXS?) Чтобы выгрузить драйверы из памяти, используйте команду удаления модуля rmmod: # rmmod wctdm
Программа zttool является инструментом диагностики, используемым для определения статуса оборудования. Выполнив ее, мы получаем список всех установленных аппаратных средств. В этом списке можно выбирать то или иное устройство и просматривать информацию о его текущем статусе. Статус OK означает, что устройство загружено успешно:
Alarms Span
OK Wildcard TDM400P REV E/F Board 1
Конфигурация оборудования Zapata
Asterisk использует файл zapata.conf для определения настроек и конфигурации оборудования для телефонии, установленного в системе. Файл zapata.conf также управляет различными возможностями и функциями аппаратных каналов, такими как Caller ID, отложенный вызов, эхоподавление и многие другие.
Во время конфигурации zaptel.conf и загрузки модулей Asterisk не имеет ни малейшего представления о том, что будет конфигурироваться. Необязательно, чтобы оборудование использовалось Asterisk; его с таким же успехом могло бы применять другое ПО, взаимодействующее с модулями Zaptel. С помощью zapata.conf мы сообщаем Asterisk об аппаратных средствах и управляем соответствующими функциями:
[trunkgroups]
; описание всех магистральных групп
[channels]
; аппаратные каналы
; значения по умолчанию
usecallerid=yes
hidecallerid=no
callwaiting=no
threewaycalling=yes
transfer=yes
echocancel=yes
echotraining=yes
; описание каналов
context=incoming ; Используется контекст [incoming], описанный в extensions.conf
signaling=fxs_ks ; Для канала FXO используется протокол обмена сигналами
FXS channel => 2 ; PSTN подключается к порту 2
Раздел [trunkgroups] описывает соединения, в которых множество физических линий используются как одно логическое соединение с телефонной сетью (они не обсуждаются в данной книге). Если вам необходим этот тип функциональности, в вашем распоряжении есть файл zapata.conf.sample и любимый поисковик для получения дополнительной информации.
Раздел [channels] определяет метод обмена сигналами для аппаратных каналов и их параметры. Если параметр задан, он наследуется далее по всему файлу. Для определения канала используется синтаксис channel =>. Каждое описание канала наследует все параметры, определенные в файле выше. Если для разных каналов требуется задать различные параметры, они должны задаваться перед описанием channel =>. Строка usecallerid=yes служит для активации возможности Caller ID, а строка hidecallerid=no определяет, что идентификатор вызывающего абонента не будет скрыт для исходящих вызовов. Отложенный вызов де- активирован для FXO-линии посредством строки callwaiting=no. Активация вызова с подключением третьего абонента (строка threewaycalling=yes) позволяет переводить активный вызов в состояние ожидания путем быстрого нажатия рычажного переключателя (обсуждается в главе 7). При этом текущий вызов будет отложен. После этого можно позвонить третьей стороне и подключить ее к разговору, еще раз нажав переключатель. По умолчанию возможность вызова с подключением третьего абонента деактивирована.
Разрешение переадресации вызова с помощью рычажного переключателя настраивается строкой transfer=yes; для этого требуется, чтобы была активирована возможность вызова с подключением третьего абонента. Для устранения эха, которое может возникнуть в аналоговых линиях, используется эхокомпенсатор Asterisk, он активируется строкой echocancel=yes. Эхокомпенсатору в Asterisk требуется некоторое время на изучение эха, но этот процесс можно ускорить, включив обучение эхоподавления (echotraining=yes). В этом режиме Asterisk посылает тональный сигнал в линию в начале вызова, чтобы измерить эхо, и таким образом, на его изучение уходит меньше времени. При поступлении вызова на интерфейс FXO вы захотите выполнять некоторые действия. Действия, которые будут осуществляться, задаются в блоке инструкций под названием context. Входящие вызовы FXO- интерфейса направляются в контекст incoming (входящие) посредством строки context=incoming. Команды, выполняемые в этом контексте, определены в файле extensions.conf.