простая система корпоративной VoIP-телефонии
В данной статье описан основной порядок действий по инсталляции системы корпоративной телефонии. При чтении данной статьи заведомо не будут даваться ссылки на документацию, которая поступает с устройствами или указываться в общем плане порядок действия с устройствами. Задача администратора - иметь эту документацию и в случае необходимости часть действий, описанных ниже проводить в соответствии с документацией производителя. Пример: нет особого смысла описывать порядок замены программного обеспечения в устройстве IP-телефонии в данной статье - эта часть очень подробно описана в документации на устройство. Предполагается что у администратора имеется определенный опыт работы как в среде Windows, так и в среде UNIX, но направление VoIP для него новое и его надо практически внедрять.
Учитывая, что в общем случае мы работаем с устройствами удаленно и добраться до удаленного устройства иногда не представляется возможным, рекомендуется все работы производить чрезвычайно аккуратно и осознанно. Есть смысл дополнительно известить в офисе, где установлено удаленное устройство, необходимый персонал (секретарей, например) о том, где это устройство находится и какой порядок включения/выключения/сброса питания на этом устройстве. Очень полезным будет на верх устройства наклеить большой лист бумаги и нарисовать стрелку в направлении выключателя питания. Это не Cisco-класс оборудования, может и зависнуть. Должны быть готовы.
В данной статье будет описано построение заведомо более сложной системы, чем можно было бы сделать, но в данной заведомо более сложной схеме реализации существует определенная гибкость и возможность достаточно простого расширения без перестройки всех устройств системы путем только наращивания оборудования. Все, о чем идет дальше речь, работает только в среде DTMF-нумерации.
выбор технологии и оборудования
Самый простой вариант - полное отсутствие какой бы то ни было телефонной инфраструктуры в подразделениях. Случается. Часто. Но звонить надо, поэтому ставятся городские телефоны или люди просто используют корпоративные мобильные пакеты. Сейчас этого добра уже достаточно и в перспективе будет еще больше. Чем хорош такой подход - делать ничего не надо. Оно работает. Чем плох - дорого. Как можно расправиться с корпоративным пакетом? Можно запихнуть его в GSM-гейт. Поясню о чем речь - существует оборудование, которое можно использовать для GSM-телефонии и к нему подключать или обычные телефоны, или офисные АТС. Удобно в случае, если нужна телефонная линия, а физически доступна только сеть мобильной связи. Есть альтернативный вариант - если офис подключен к Интернету и существует нормальный интернет-канал - настроить телефонное взаимодействие офисов через Интернет. Мы говорим о канале более 128 кб/с.
Что для этого требуется - оборудование перевода телефонного сигнала в Интернет-формат и программное обеспечение управления всем этим оборудованием. Задачу ставим следующим образом: есть 3 офиса, территориально разнесенные на большое расстояние и подключенные к Интернет, и между офисами настроены виртуальные сети либо используются дргуие схемы подключения. Главное условие - мы не выходим с адресами этих сетей непосредственно в Интернет.
Какое выбираем оборудование - здесь будет дан пример выполнения телефонии на оборудовании H.323. Существует более новый стандарт - SIP. Пускай существует. Мы работаем с H.323. Пока в подробности не вдаемся. Основная наша задача сейчас - помнить что стандартов несколько, но сосредоточиться на чем-то одном.
Считаем, что внутри офисов существуют локальные телефонные станции. Для станций ряда Panasonic - проблем не возникает. Для Siemens - немного по другому. Серии Hicom-120/125 по программному обеспечению не позволяют (по крайней мере мы не нашли варианта) формировать тоновые посылки с системного телефона на внутренний телефонный номер. То есть, при звонках через внешний порт АТС (в город) путем последовательного нажатия кнопок “*” и “#” после этой комбинации в порт выдаются DTMF-посылки - можно управлять устройствами на внешнем канале. Этого не получается при звонках с системного телефона на внутренний порт.
После длительных переговоров с различными телефонными гуру - решения вопроса найдено не было. То ли не того уровня гуру нам попадались, то ли это действительно из-за древности идеологии Hicom-120/125, вобщем нам было разъяснено, что она этого точно не может. Мы говорим только о системном телефоне. С обычным телефоном вообще этих вопросов не возникает. Ставишь его под DTMF и работаешь.
В связи с этим принято решение - перейти на HiPath. Там это делается сразу, но при заказе станции необходимо указать это условие как обязательное в техническом задании - все «супер» гуру очень хорошо умеют считать деньги и постоянно чего-то недоговаривать, оставляя себе сладенький кусочек на перспективу. Смотришь клиент проснется - и чего-то еще отломится. Это и есть причина, почему такого класса требования надо писать на бумаге. В противном случае - придется платить деньги еще и за «сложное конфигурирование», а то и воевать по поводу полного возврата оборудования из-за его функциональной непригодности.
Что мы делаем - ставим достаточно простое оборудование. Какое? Какое существует. Какое продается.
В принципе для наших условий существует два интерфейса VoIP-оборудования - FXO и FXS.
FXS-порт изображает из себя порт АТС - то есть он в состоянии только выдавать напряжение звонка в линию, соответственно - это эмуляция той телефонной пары, которая приходит с городской АТС - к нему подключается обычный телефон, способный по умолчанию работать в DTMF. Другой тип порта - FXO - эмулирует пользовательский телефонный аппарат в части того, что он может «снимать трубку», отвечать и набирать номер. Так как это телефонный интерфейс - он также может воспринимать набор, передаваемый ему в DTMF. Этот порт подключается к порту телефонной станции как обычный телефон или факс. Телефонная станция конфигурируется для работы по этому порту в DTMF. Это нам и надо.
Рассмотрим производителей оборудованя (а их достаточно много). Список можно найти например здесь-http://www.gnugk.org/interoperability.html- и здесь -http://www.gnugk.org/interoperability-2.html.Список внушает уважение, но не более. Наш выбор невелик - Dynamix или NSG. Кто-то может добыть Micronet. Не будем вдаваться в подробности относительно этих устройств, скажем только, что общее у них - версия прошивки. В их основе лежит базовое устройство одного производителя, и во все эти устройства заливается одинаковое программное обеспечение. Перезаливкой программного обеспечения эти устройства можно перевести с протокола работы H.323 на протокол SIP. Кто знает, как со временем сложатся требования - может придется переходить на SIP - тогда при подобном выборе модная нынче «защита инвестиций» налицо.
Почему мы не говорим о DLink? Да, устройства от DLink существуют, но производитель более не поддерживает H.323 - не будем с ними спорить. Выберем для примера Dynamix 0004/H/. Это 4-портовая VoIP FXO-система. Так как подобные устройства обычно как пирожки на лотке не продаются , то в фирме, в которой мы их будем покупать, попросим перешить их сразу под прошивку 2m4fxo118b. Это последняя стабильно работающая прошивка для этого класса устройств.
Еще нам потребуется FreeBSD. Считаем, что она настроена и работает. VPN подняты. Там есть место для инсталляции и настройки GateKeeper - программного обеспечения управления телефонными каналами.
Схема предполагается следующая: есть 3 офиса, в каждом устанавливается VoIP-устройство. Для каждого офиса определяем его «код дозвона» - то есть при наборе номера «код дозвона» будет определять то устройство на котором мы хотим прийти для последующего донабора на внутренней АТС.
Как будет производиться звонок:
- допустим, мы находимся в офисе А и звоним в о. Б на номер 206;
- набираем внутренний номер порта на телефонной станции 118 офиса А;
- слышим голосовое приветствие;
- набираем код офиса Б – 5;
- набираем нужный номер – 206;
- завершаем набор символом «#».
или:
- мы находимся в офисе С и звоним в о. А на номер 106;
- набираем внутренний номер порта на телефонной станции 318;
- слышим голосовое приветствие;
- набираем код офиса А – 2;
- набираем нужный номер – 106;
- завершаем набор символом «#».
Приниматься звонок обычно будет на последний подключенный порт VoIP-устройства. Что можно оговорить при конфигурировании офисной АТС, так это создание группу для звонков на VoIP-устройство. Примерно вот как: мы звоним на номер 118, если он занят - звонок сразу же маршрутизируется на 119. То есть все пользователи знают только один номер обращения к устройству, а дальше сама АТС определяет, на какой свободный порт перебросить этот звонок.
То есть логически достаточно ясная схема работы. Может быть, предложенная схема и не «прозрачна» - если вам это необходимо, то вам придется идти по направлению стекирования используемых АТС. Но это другие масштабы, другие деньги и другие затраты на обслуживание.
Могут быть и другие вариации использования оборудования и схем организации телефонии, которые, возможно, окажутся более технологичными, но мы реализуем описанный выше подход. Особенности этого подхода:
- ясная схема использования для сотрудников;
- простота реализации;
- возможность контроля звонков;
- возможность блокирования определенных направлений или номеров для дозвона;
- возможность перенаправления звонков.
приступим к делу
С чего начинаем: берем в аренду нужное количество устройств с прошивкой 2m4fxo118b.
Если не удалось получить именно с этой прошивкой - не страшно. Начинаем с тем, что у нас есть. Или идем наhttp://www.micronet.infoили на сайт производителя и скачиваем 2-мегабайтный образ прошивки. Дополнительно потребуется TFTP-сервер под Windows, компьютер с COM-портом. Найдите в документации на устройство порядок подключения через HyperTerminal (стандартная компонента Windows/Communications) - в части точного описания параметров, выставляемых для COM-порта в HyperTerminal. Устройство поставляется с кабелем подключения к COM-порту.
Если что-то не получилось или мы не дождались полной перепрошивки устройства и оно больше не грузится – не отчаивайтесь. В общем случае это не страшно. По крайней мере еще не все потеряно :). Данные устройства сконструированы так, что первоначально загружается загрузчик, а только потом загружается сама прошивка. Нам нужно будет перезалить прошивку, находясь не на уровне самой прошивки (не в ее программном окружении), а на более низком уровне - на уровне загрузчика. Техподдержка отлично знает порядок действий в этом случае и стандартные пароли загрузчика устройства. В FAQ’е на сайте Micronet также есть необходимые разъяснения.
Теперь нарисуем схему сети (см. рис. 1).
Рис. 1.
Действуем в соответствии со схемой:
Через HyperTerminal/COM-порт на всех трех устройствах меняем необходимые IP-адреса, шлюзы, проверяем маски и обязательно проверяем наличие чего- то логически удобоваримого в MAC-адресе. Устройство работоспособно при невыставленном MAC.
Устанавливаем устройства в их сетях. Проверяем доступность устройств как по Telnet, так и по HTTP. Нам понадобится и первое, и второе. Теперь - под номерами - примеры программирования устройств. Для различных офисов будут проставляться соответствующие указатели -А, -Б, -С. Если различия между конфигами для разных офисов незначительны, буде приводить только один экземпляр, объясняя различия.
программируем интерфейсы
DNS указан в файле конфигурации, пропишем его, однако ничего сказать об его практическом использовании мы не можем. Блок от PPPoE user name и до конца - не трогаем вообще. Что стоит - то и стоит.
Офис А:
usr/config$ ifaddr -print
IP mode : Static
Internet address information
IP address: 192.168.40.251
Subnet mask: 255.255.255.0
Default gateway: 192.168.40.254
DNS primary: 192.168.40.240
DNS secondary: 192.168.40.241
HTTP port: 80
SNTP: mode=0, sntp off
IPSharing: no IPSharing device.
IP change: Disable
PPPoE user name: pppoe
PPPoE password: *****
PPPoE reboot: Yes
PPPoE echo: Disable
EMS IP: 10.1.1.2
EMS user name: Max_Su
EMS password: ******
EMS time: 0
В других офисах меняется только номер IP-сети.
системные параметры
Inter-Digits time - время в секундах от момента набора последней цифры в телефонный порт устройства до момента завершения приема набранной посылки, формирования задания и отправки задания по соединению на обработку. Для «тугодумов», которые не помнят «на взлет» набираемый номер - этот фактор может стать определенной проблемой. Это одна из причин, почему в системе принято стандартом завершать набор указателем «законченности» набора номера «#».
User defined prefix disable - код нашего офиса: А - 2, Б - 5, С - 9, убираем префикс при принятии звонка.
Local generate ring back tone - в момент выполнения соединения - хотим чтобы трубка не молчала а выдавала подобие гудков дозвона.
Ring before answer - количество гудков с PBX, после которых устройство снимает трубку.
End of dial - требование восприятия символа # как завершения команды и немедленного набора номера.
Офис А:
usr/config$ sysconf -print
System information
Inter-Digits time: 8
Keypad DTMF type: H.245 SignalType
User defined prefix switch: OFF
User defined prefix disable: 2
User defined prefix: -
Codec select method: Master
Local generate ring back tone: Enable
Round Trip: Disable
Gateway prefix: Drop
End of dial: Enable
Detect silence voice: Enable
Ring time: 1
Ring before answer: 1
Delay to add DTMF: 1
Auto connect time: 1
FXO type: Normal
Для остальных меняем только значение параметра User defined prefix disable.
конфигурирование H.323
Gatekeeper IP address - адрес гейткипера.
Registered prefix number - префикс офиса - А-2, Б-5, С-9.
Line1 - не трогаем, что стоит, то и стоит.
Registered alias : ofa - идентификация офиса в отчетах.
Display Information: ofa - идентификация офиса в отчетах.
Gatekeeper ID - имя гейткипера.
Офис А:
usr/config$ h323 -print
H.323 stack relate information
RAS mode: GK mode
Gatekeeper IP address: 192.168.60.252
Second Gatekeeper IP:
Gateway Type: Gateway1
Registered prefix number: 2
Line1: 000
Line2: 001
Line3: 002
Line4: 003
H.235 security token: *
Registered alias: ofa
Display Information: ofa
Gatekeeper discovery: Off
Gatekeeper ID: GK-OFC
RAS TTL time: 60
RTP port: 16384
Gatekeeper finding port: 1718
GK RAS port: 1719
H225 RAS port: 1024
H225 Call signal port: 1720
Allocated port range:
start port: 2000
end port: 19999
Response timeOut: 15
Connect timeOut: 60
Конфиги других офисов отличаются номером префикса (Registered prefix number) и идентификаторами офиса (Registered alias и Display Information).
параметры голосового (телефонного) сигнала и кодеки
Все указанные параметры намного удобнее делать из HTTP интерфейса. Что мы здесь корректируем - порядок следования кодеков и громкость приема/передачи. DTMF громкость оставляем без изменений. С громкостью особо увлекаться не стоит - может искажаться звук. Все для всех устройств одинаково.
usr/config$ voice -print
Voice codec setting relate information
Sending packet size:
G.729: 60 ms
G.729: 60 ms
G.729A: 60 ms
G.729B: 60 ms
G.729AB: 60 ms
G.711U: 40 ms
G.711A: 40 ms
Priority order codec: g729 g729 g729a g729b g729ab g711u g711a
Volume levels:
voice volume: 35 35 35 35
input gain: 35 35 35 35
dtmf volume: 23 23 23 23
No sound compress & CNG:
G.729: There is no setting
G.729: There is no setting
G.729A: There is no setting
G.729B: There is no setting
G.729AB: There is no setting
G.711(U-Law): There is no setting
G.711(A-Law): There is no setting
Echo canceller: On On On On
Jitter buffer:
Min Delay: 90
Max Delay: 150
Другие протоколы не рассматривались, так как не являются для нас приоритетными.
usr/config$ support -print
Special Voice function support manipulation
T.38(FAX) support: Disabled
T.38(FAX) Request Mode: Enabled
T.38(FAX) ECM: Disabled
T.38(FAX) ASN.1: Disabled
FAX redundancy depth: 0
FastStart support: Disabled
Tunneling support: Disabled
H.245 message after FastStart support: Enabled
EarlyH245 support: Disabled
Раздел Phone не трогаем. Как работает, так и работает.
Tone
Одной из задач функционирования устройства IP-телефонии является точное идентифицирование тонов занятости (Busy) со стороны телефонной станции. Для начала сконфигурируем полностью телефонную систему, и потом - в случае если эта часть не будет работать - будем настраивать и ее. Если работает - забываем этот раздел и говорим себе - хорошо, пронесло.
Что значит «работает - не работает»? Если после окончания разговора устройство не «кладет трубку» в сторону PBX более 5 секунд - значит не работает. Надо настраивать.
Порядок настройки. Настройка (программирование) устройства ведется из HTTP-интерфейса. Что нам понадобится из оборудования - микрофон, компьютерные колонки, провод, соединяющий VoIP-устройство и PBX, к которому в центре можно подключить напрямую компьютерную колонку (с блоком питания у усилителем) и через нее услышать искомый сигнал «занято». То есть, фигурально выражаясь - делаем провод для «прослушки» и «прослушиваем» на компьютерную колонку. Микрофон подносим к колонке и пишем сигнал «занято» в звуковой файл на компьютер в виде WAV-файла. Это можем сделать даже средствами Windows - Sound Recorder (%SystemRoot%\System32\sndrec32.exe. Дальше - ставим SoundForge. Подойдет даже какая- нибудь древняя версия. Делаем следующее: считываем записанный файл, прямо на экране определяем временные параметры включения/выключение сигнала «занято» - перемешаем курсор к началу/концу сигнала и записываем время (справа внизу в формате 00:00:05.455). Записываем показания примерно 5-6 импульсов и в табличке определяем их длительность (А на рисунке 2).
Рис. 2.
Делаем подобные вычисления точнее и принимаем средние значения - пауза/сигнал.
Теперь, в том же SoundForge - отмечаем курсором сигнал занятости, потом - Tools - Spectrum Analyses. В окне спектрального анализа выставляем в Options-Settings пределы анализируемых частот - скажем от 350 до 450 гц. Программа выдаст пик частот. Можем дать Update. В результате мы получили временные и частотные параметры сигнала «занято».
Дальше ставим в соответствующем окне HTTP-интерфейса настройки устройства.
TOS
Это выставление приоритетов прохождения VoIP-сигнала по Ethernet-сетям.
Делается одинаково для всех устройств.
usr/config$ tos -print
IP Packet ToS information:
Signalling Packet:
DSCP Code : 6
Media Packet :
DSCP Code : 6
Не будем вдаваться в подробности относительно максимального значения параметра TOS. Выставим 6.
Итак, считаем, что хардварная инфраструктура готова. Проверяем доступность до всех устройств из офиса С (там будет размещаться GateKeeper). Пробуем, перегружаем, слушаем голос вежливой барышни со всех сторон и думаем, что будем делать дальше. А дальше - ставим GNU GateKeeper. Так как ранее мы ориентировались в построении всей инфраструктуры на FreeBSD - продолжим в том же духе. У нас есть FreeBSD 5.4.
Ставим:
# cd /usr/ports/net/gatekeeper
# make
# make install
Или то же самое делаем через pkg_add - но будьте готовы к тому, что достаточно много вспомогательных пакетов будет устанавливаться. Теоретически можно ставить самый распоследний GateKeeper - но начать надо с анализа одной странички и размышлений о привязанности этого пакета к большому числу вспомогательных пакетов:http://www.gnugk.org/compiling-gnugk.html.Занимательный документ. Ясно написано для FreeBSD, что надо крепко ковыряться для получения работающей системы. Тихо об этом забываем и ставим то, что скомпилировано в дистрибутиве и по уверению разработчиков FreeBSD работает. Теоретически существует версия для Windows. Да. Существует. Только есть одна особенность, никем со стороны разработчиков GNUGK не признаваемая - Dynamix с GNUGK под Win2000 сервер или Win2003 сервер не работает. Суть вот в чем: оно работает, но падает. С периодичностью от 20 мин до 2-х недель, то есть совершенно бессистемно. После длительных разборок (и с техподдержкой Dynamix в том числе) общее мнение, удовлетворяющее обе стороны, следующее: видимо есть какие-то проблемы у Динамиксов с разбором TCP/IP-пакетов производства Microsoft, сформированных Win2003. Разбираться с этим не представляется возможным, поскольку падения не регулярны. Нельзя идентифицировать стабильный момент зависания устройства. Решение - ставить только в Unix-окружении. Так и ставим.
Развернули. Поставили. Нарисуем файл /usr/local/etc/gnugk.ini – см. во врезке его содержимое (оставлено только то, что для нас существенно). Комментарии прилагаются.
Запускаем Гейткипер:
# /usr/local/bin/gnugk -c /usr/local/etc/gnugk.ini
Проверяем работоспособность:
# ps ax| grep gnugk
97349 p0 S+ 0:00.01 /bin/sh -c ps ax| grep gnugk
97351 p0 S+ 0:00.01 grep gnugk
39198 v3 S+ 34:18.77 /usr/local/bin/gnugk -c /usr/local/etc/ gnugk.ini
Press any key to continue...
Затем заходим на это же машину по порту 7000 и получаем консоль гейткипера.
По команде « ? » получаем список всех подключенных устройств.
Дальше – смотрим, какие порты (сканируем, в крайнем случае) и адреса (сами ставили) используются и обслуживаются гейткипером и, соответственно, думаем, что делать с Firewall, оставляя доступ только с VoIP-устройств и тех машин, на которых надо настроить MS NetMeeting.
Мы заведомо не занимались вопросами защиты - после установки системы администратор самостоятельно для себя должен решить, что разрешается, а что нет.
заключение
Это не описание Call-центра. Это простая корпоративная система телефонии.
Результат наших трудов – просто система, которая работает. Осматриваемся, читаем документацию, звоним... Далее, уже при наличии работающей системы можем подумать, что можно добавить или как улучшить уже сделанное.
B. Yasynetskyy, M.Yasynetska.
Учитывая, что в общем случае мы работаем с устройствами удаленно и добраться до удаленного устройства иногда не представляется возможным, рекомендуется все работы производить чрезвычайно аккуратно и осознанно. Есть смысл дополнительно известить в офисе, где установлено удаленное устройство, необходимый персонал (секретарей, например) о том, где это устройство находится и какой порядок включения/выключения/сброса питания на этом устройстве. Очень полезным будет на верх устройства наклеить большой лист бумаги и нарисовать стрелку в направлении выключателя питания. Это не Cisco-класс оборудования, может и зависнуть. Должны быть готовы.
В данной статье будет описано построение заведомо более сложной системы, чем можно было бы сделать, но в данной заведомо более сложной схеме реализации существует определенная гибкость и возможность достаточно простого расширения без перестройки всех устройств системы путем только наращивания оборудования. Все, о чем идет дальше речь, работает только в среде DTMF-нумерации.
выбор технологии и оборудования
Самый простой вариант - полное отсутствие какой бы то ни было телефонной инфраструктуры в подразделениях. Случается. Часто. Но звонить надо, поэтому ставятся городские телефоны или люди просто используют корпоративные мобильные пакеты. Сейчас этого добра уже достаточно и в перспективе будет еще больше. Чем хорош такой подход - делать ничего не надо. Оно работает. Чем плох - дорого. Как можно расправиться с корпоративным пакетом? Можно запихнуть его в GSM-гейт. Поясню о чем речь - существует оборудование, которое можно использовать для GSM-телефонии и к нему подключать или обычные телефоны, или офисные АТС. Удобно в случае, если нужна телефонная линия, а физически доступна только сеть мобильной связи. Есть альтернативный вариант - если офис подключен к Интернету и существует нормальный интернет-канал - настроить телефонное взаимодействие офисов через Интернет. Мы говорим о канале более 128 кб/с.
Что для этого требуется - оборудование перевода телефонного сигнала в Интернет-формат и программное обеспечение управления всем этим оборудованием. Задачу ставим следующим образом: есть 3 офиса, территориально разнесенные на большое расстояние и подключенные к Интернет, и между офисами настроены виртуальные сети либо используются дргуие схемы подключения. Главное условие - мы не выходим с адресами этих сетей непосредственно в Интернет.
Какое выбираем оборудование - здесь будет дан пример выполнения телефонии на оборудовании H.323. Существует более новый стандарт - SIP. Пускай существует. Мы работаем с H.323. Пока в подробности не вдаемся. Основная наша задача сейчас - помнить что стандартов несколько, но сосредоточиться на чем-то одном.
Считаем, что внутри офисов существуют локальные телефонные станции. Для станций ряда Panasonic - проблем не возникает. Для Siemens - немного по другому. Серии Hicom-120/125 по программному обеспечению не позволяют (по крайней мере мы не нашли варианта) формировать тоновые посылки с системного телефона на внутренний телефонный номер. То есть, при звонках через внешний порт АТС (в город) путем последовательного нажатия кнопок “*” и “#” после этой комбинации в порт выдаются DTMF-посылки - можно управлять устройствами на внешнем канале. Этого не получается при звонках с системного телефона на внутренний порт.
После длительных переговоров с различными телефонными гуру - решения вопроса найдено не было. То ли не того уровня гуру нам попадались, то ли это действительно из-за древности идеологии Hicom-120/125, вобщем нам было разъяснено, что она этого точно не может. Мы говорим только о системном телефоне. С обычным телефоном вообще этих вопросов не возникает. Ставишь его под DTMF и работаешь.
В связи с этим принято решение - перейти на HiPath. Там это делается сразу, но при заказе станции необходимо указать это условие как обязательное в техническом задании - все «супер» гуру очень хорошо умеют считать деньги и постоянно чего-то недоговаривать, оставляя себе сладенький кусочек на перспективу. Смотришь клиент проснется - и чего-то еще отломится. Это и есть причина, почему такого класса требования надо писать на бумаге. В противном случае - придется платить деньги еще и за «сложное конфигурирование», а то и воевать по поводу полного возврата оборудования из-за его функциональной непригодности.
Что мы делаем - ставим достаточно простое оборудование. Какое? Какое существует. Какое продается.
В принципе для наших условий существует два интерфейса VoIP-оборудования - FXO и FXS.
FXS-порт изображает из себя порт АТС - то есть он в состоянии только выдавать напряжение звонка в линию, соответственно - это эмуляция той телефонной пары, которая приходит с городской АТС - к нему подключается обычный телефон, способный по умолчанию работать в DTMF. Другой тип порта - FXO - эмулирует пользовательский телефонный аппарат в части того, что он может «снимать трубку», отвечать и набирать номер. Так как это телефонный интерфейс - он также может воспринимать набор, передаваемый ему в DTMF. Этот порт подключается к порту телефонной станции как обычный телефон или факс. Телефонная станция конфигурируется для работы по этому порту в DTMF. Это нам и надо.
Рассмотрим производителей оборудованя (а их достаточно много). Список можно найти например здесь-http://www.gnugk.org/interoperability.html- и здесь -http://www.gnugk.org/interoperability-2.html.Список внушает уважение, но не более. Наш выбор невелик - Dynamix или NSG. Кто-то может добыть Micronet. Не будем вдаваться в подробности относительно этих устройств, скажем только, что общее у них - версия прошивки. В их основе лежит базовое устройство одного производителя, и во все эти устройства заливается одинаковое программное обеспечение. Перезаливкой программного обеспечения эти устройства можно перевести с протокола работы H.323 на протокол SIP. Кто знает, как со временем сложатся требования - может придется переходить на SIP - тогда при подобном выборе модная нынче «защита инвестиций» налицо.
Почему мы не говорим о DLink? Да, устройства от DLink существуют, но производитель более не поддерживает H.323 - не будем с ними спорить. Выберем для примера Dynamix 0004/H/. Это 4-портовая VoIP FXO-система. Так как подобные устройства обычно как пирожки на лотке не продаются , то в фирме, в которой мы их будем покупать, попросим перешить их сразу под прошивку 2m4fxo118b. Это последняя стабильно работающая прошивка для этого класса устройств.
Еще нам потребуется FreeBSD. Считаем, что она настроена и работает. VPN подняты. Там есть место для инсталляции и настройки GateKeeper - программного обеспечения управления телефонными каналами.
Схема предполагается следующая: есть 3 офиса, в каждом устанавливается VoIP-устройство. Для каждого офиса определяем его «код дозвона» - то есть при наборе номера «код дозвона» будет определять то устройство на котором мы хотим прийти для последующего донабора на внутренней АТС.
офис | код офиса | внутренняя нумерация в офисе | устройство IP-телефонии |
Офис - А (о. А) | 2 | 100-120 | 118, 119 |
Офис - Б (о. Б) | 5 | 200-220 | 218, 219 |
Офис - С (о.С) | 9 | 300-320 | 318, 319 |
Как будет производиться звонок:
- допустим, мы находимся в офисе А и звоним в о. Б на номер 206;
- набираем внутренний номер порта на телефонной станции 118 офиса А;
- слышим голосовое приветствие;
- набираем код офиса Б – 5;
- набираем нужный номер – 206;
- завершаем набор символом «#».
или:
- мы находимся в офисе С и звоним в о. А на номер 106;
- набираем внутренний номер порта на телефонной станции 318;
- слышим голосовое приветствие;
- набираем код офиса А – 2;
- набираем нужный номер – 106;
- завершаем набор символом «#».
Приниматься звонок обычно будет на последний подключенный порт VoIP-устройства. Что можно оговорить при конфигурировании офисной АТС, так это создание группу для звонков на VoIP-устройство. Примерно вот как: мы звоним на номер 118, если он занят - звонок сразу же маршрутизируется на 119. То есть все пользователи знают только один номер обращения к устройству, а дальше сама АТС определяет, на какой свободный порт перебросить этот звонок.
То есть логически достаточно ясная схема работы. Может быть, предложенная схема и не «прозрачна» - если вам это необходимо, то вам придется идти по направлению стекирования используемых АТС. Но это другие масштабы, другие деньги и другие затраты на обслуживание.
Могут быть и другие вариации использования оборудования и схем организации телефонии, которые, возможно, окажутся более технологичными, но мы реализуем описанный выше подход. Особенности этого подхода:
- ясная схема использования для сотрудников;
- простота реализации;
- возможность контроля звонков;
- возможность блокирования определенных направлений или номеров для дозвона;
- возможность перенаправления звонков.
приступим к делу
С чего начинаем: берем в аренду нужное количество устройств с прошивкой 2m4fxo118b.
Если не удалось получить именно с этой прошивкой - не страшно. Начинаем с тем, что у нас есть. Или идем наhttp://www.micronet.infoили на сайт производителя и скачиваем 2-мегабайтный образ прошивки. Дополнительно потребуется TFTP-сервер под Windows, компьютер с COM-портом. Найдите в документации на устройство порядок подключения через HyperTerminal (стандартная компонента Windows/Communications) - в части точного описания параметров, выставляемых для COM-порта в HyperTerminal. Устройство поставляется с кабелем подключения к COM-порту.
Если что-то не получилось или мы не дождались полной перепрошивки устройства и оно больше не грузится – не отчаивайтесь. В общем случае это не страшно. По крайней мере еще не все потеряно :). Данные устройства сконструированы так, что первоначально загружается загрузчик, а только потом загружается сама прошивка. Нам нужно будет перезалить прошивку, находясь не на уровне самой прошивки (не в ее программном окружении), а на более низком уровне - на уровне загрузчика. Техподдержка отлично знает порядок действий в этом случае и стандартные пароли загрузчика устройства. В FAQ’е на сайте Micronet также есть необходимые разъяснения.
Теперь нарисуем схему сети (см. рис. 1).
Рис. 1.
Действуем в соответствии со схемой:
Через HyperTerminal/COM-порт на всех трех устройствах меняем необходимые IP-адреса, шлюзы, проверяем маски и обязательно проверяем наличие чего- то логически удобоваримого в MAC-адресе. Устройство работоспособно при невыставленном MAC.
Устанавливаем устройства в их сетях. Проверяем доступность устройств как по Telnet, так и по HTTP. Нам понадобится и первое, и второе. Теперь - под номерами - примеры программирования устройств. Для различных офисов будут проставляться соответствующие указатели -А, -Б, -С. Если различия между конфигами для разных офисов незначительны, буде приводить только один экземпляр, объясняя различия.
программируем интерфейсы
DNS указан в файле конфигурации, пропишем его, однако ничего сказать об его практическом использовании мы не можем. Блок от PPPoE user name и до конца - не трогаем вообще. Что стоит - то и стоит.
Офис А:
usr/config$ ifaddr -print
IP mode : Static
Internet address information
IP address: 192.168.40.251
Subnet mask: 255.255.255.0
Default gateway: 192.168.40.254
DNS primary: 192.168.40.240
DNS secondary: 192.168.40.241
HTTP port: 80
SNTP: mode=0, sntp off
IPSharing: no IPSharing device.
IP change: Disable
PPPoE user name: pppoe
PPPoE password: *****
PPPoE reboot: Yes
PPPoE echo: Disable
EMS IP: 10.1.1.2
EMS user name: Max_Su
EMS password: ******
EMS time: 0
В других офисах меняется только номер IP-сети.
системные параметры
Inter-Digits time - время в секундах от момента набора последней цифры в телефонный порт устройства до момента завершения приема набранной посылки, формирования задания и отправки задания по соединению на обработку. Для «тугодумов», которые не помнят «на взлет» набираемый номер - этот фактор может стать определенной проблемой. Это одна из причин, почему в системе принято стандартом завершать набор указателем «законченности» набора номера «#».
User defined prefix disable - код нашего офиса: А - 2, Б - 5, С - 9, убираем префикс при принятии звонка.
Local generate ring back tone - в момент выполнения соединения - хотим чтобы трубка не молчала а выдавала подобие гудков дозвона.
Ring before answer - количество гудков с PBX, после которых устройство снимает трубку.
End of dial - требование восприятия символа # как завершения команды и немедленного набора номера.
Офис А:
usr/config$ sysconf -print
System information
Inter-Digits time: 8
Keypad DTMF type: H.245 SignalType
User defined prefix switch: OFF
User defined prefix disable: 2
User defined prefix: -
Codec select method: Master
Local generate ring back tone: Enable
Round Trip: Disable
Gateway prefix: Drop
End of dial: Enable
Detect silence voice: Enable
Ring time: 1
Ring before answer: 1
Delay to add DTMF: 1
Auto connect time: 1
FXO type: Normal
Для остальных меняем только значение параметра User defined prefix disable.
конфигурирование H.323
Gatekeeper IP address - адрес гейткипера.
Registered prefix number - префикс офиса - А-2, Б-5, С-9.
Line1 - не трогаем, что стоит, то и стоит.
Registered alias : ofa - идентификация офиса в отчетах.
Display Information: ofa - идентификация офиса в отчетах.
Gatekeeper ID - имя гейткипера.
Офис А:
usr/config$ h323 -print
H.323 stack relate information
RAS mode: GK mode
Gatekeeper IP address: 192.168.60.252
Second Gatekeeper IP:
Gateway Type: Gateway1
Registered prefix number: 2
Line1: 000
Line2: 001
Line3: 002
Line4: 003
H.235 security token: *
Registered alias: ofa
Display Information: ofa
Gatekeeper discovery: Off
Gatekeeper ID: GK-OFC
RAS TTL time: 60
RTP port: 16384
Gatekeeper finding port: 1718
GK RAS port: 1719
H225 RAS port: 1024
H225 Call signal port: 1720
Allocated port range:
start port: 2000
end port: 19999
Response timeOut: 15
Connect timeOut: 60
Конфиги других офисов отличаются номером префикса (Registered prefix number) и идентификаторами офиса (Registered alias и Display Information).
параметры голосового (телефонного) сигнала и кодеки
Все указанные параметры намного удобнее делать из HTTP интерфейса. Что мы здесь корректируем - порядок следования кодеков и громкость приема/передачи. DTMF громкость оставляем без изменений. С громкостью особо увлекаться не стоит - может искажаться звук. Все для всех устройств одинаково.
usr/config$ voice -print
Voice codec setting relate information
Sending packet size:
G.729: 60 ms
G.729: 60 ms
G.729A: 60 ms
G.729B: 60 ms
G.729AB: 60 ms
G.711U: 40 ms
G.711A: 40 ms
Priority order codec: g729 g729 g729a g729b g729ab g711u g711a
Volume levels:
voice volume: 35 35 35 35
input gain: 35 35 35 35
dtmf volume: 23 23 23 23
No sound compress & CNG:
G.729: There is no setting
G.729: There is no setting
G.729A: There is no setting
G.729B: There is no setting
G.729AB: There is no setting
G.711(U-Law): There is no setting
G.711(A-Law): There is no setting
Echo canceller: On On On On
Jitter buffer:
Min Delay: 90
Max Delay: 150
Другие протоколы не рассматривались, так как не являются для нас приоритетными.
usr/config$ support -print
Special Voice function support manipulation
T.38(FAX) support: Disabled
T.38(FAX) Request Mode: Enabled
T.38(FAX) ECM: Disabled
T.38(FAX) ASN.1: Disabled
FAX redundancy depth: 0
FastStart support: Disabled
Tunneling support: Disabled
H.245 message after FastStart support: Enabled
EarlyH245 support: Disabled
Раздел Phone не трогаем. Как работает, так и работает.
Tone
Одной из задач функционирования устройства IP-телефонии является точное идентифицирование тонов занятости (Busy) со стороны телефонной станции. Для начала сконфигурируем полностью телефонную систему, и потом - в случае если эта часть не будет работать - будем настраивать и ее. Если работает - забываем этот раздел и говорим себе - хорошо, пронесло.
Что значит «работает - не работает»? Если после окончания разговора устройство не «кладет трубку» в сторону PBX более 5 секунд - значит не работает. Надо настраивать.
Порядок настройки. Настройка (программирование) устройства ведется из HTTP-интерфейса. Что нам понадобится из оборудования - микрофон, компьютерные колонки, провод, соединяющий VoIP-устройство и PBX, к которому в центре можно подключить напрямую компьютерную колонку (с блоком питания у усилителем) и через нее услышать искомый сигнал «занято». То есть, фигурально выражаясь - делаем провод для «прослушки» и «прослушиваем» на компьютерную колонку. Микрофон подносим к колонке и пишем сигнал «занято» в звуковой файл на компьютер в виде WAV-файла. Это можем сделать даже средствами Windows - Sound Recorder (%SystemRoot%\System32\sndrec32.exe. Дальше - ставим SoundForge. Подойдет даже какая- нибудь древняя версия. Делаем следующее: считываем записанный файл, прямо на экране определяем временные параметры включения/выключение сигнала «занято» - перемешаем курсор к началу/концу сигнала и записываем время (справа внизу в формате 00:00:05.455). Записываем показания примерно 5-6 импульсов и в табличке определяем их длительность (А на рисунке 2).
Рис. 2.
начало | конец | результат, сек |
0.684 | 1.23 | 1.230-0.684=0.546 |
пауза | . | 1.706-1.230=0.476 |
1.706 | 2.252 | 2.252-1.706=0.492 |
пауза | . | 2.739-2.252=0.484 |
2.739 | 3.297 | 3.297-2.739=0.558 |
Делаем подобные вычисления точнее и принимаем средние значения - пауза/сигнал.
Теперь, в том же SoundForge - отмечаем курсором сигнал занятости, потом - Tools - Spectrum Analyses. В окне спектрального анализа выставляем в Options-Settings пределы анализируемых частот - скажем от 350 до 450 гц. Программа выдаст пик частот. Можем дать Update. В результате мы получили временные и частотные параметры сигнала «занято».
Дальше ставим в соответствующем окне HTTP-интерфейса настройки устройства.
TOS
Это выставление приоритетов прохождения VoIP-сигнала по Ethernet-сетям.
Делается одинаково для всех устройств.
usr/config$ tos -print
IP Packet ToS information:
Signalling Packet:
DSCP Code : 6
Media Packet :
DSCP Code : 6
Не будем вдаваться в подробности относительно максимального значения параметра TOS. Выставим 6.
Итак, считаем, что хардварная инфраструктура готова. Проверяем доступность до всех устройств из офиса С (там будет размещаться GateKeeper). Пробуем, перегружаем, слушаем голос вежливой барышни со всех сторон и думаем, что будем делать дальше. А дальше - ставим GNU GateKeeper. Так как ранее мы ориентировались в построении всей инфраструктуры на FreeBSD - продолжим в том же духе. У нас есть FreeBSD 5.4.
Ставим:
# cd /usr/ports/net/gatekeeper
# make
# make install
Или то же самое делаем через pkg_add - но будьте готовы к тому, что достаточно много вспомогательных пакетов будет устанавливаться. Теоретически можно ставить самый распоследний GateKeeper - но начать надо с анализа одной странички и размышлений о привязанности этого пакета к большому числу вспомогательных пакетов:http://www.gnugk.org/compiling-gnugk.html.Занимательный документ. Ясно написано для FreeBSD, что надо крепко ковыряться для получения работающей системы. Тихо об этом забываем и ставим то, что скомпилировано в дистрибутиве и по уверению разработчиков FreeBSD работает. Теоретически существует версия для Windows. Да. Существует. Только есть одна особенность, никем со стороны разработчиков GNUGK не признаваемая - Dynamix с GNUGK под Win2000 сервер или Win2003 сервер не работает. Суть вот в чем: оно работает, но падает. С периодичностью от 20 мин до 2-х недель, то есть совершенно бессистемно. После длительных разборок (и с техподдержкой Dynamix в том числе) общее мнение, удовлетворяющее обе стороны, следующее: видимо есть какие-то проблемы у Динамиксов с разбором TCP/IP-пакетов производства Microsoft, сформированных Win2003. Разбираться с этим не представляется возможным, поскольку падения не регулярны. Нельзя идентифицировать стабильный момент зависания устройства. Решение - ставить только в Unix-окружении. Так и ставим.
Развернули. Поставили. Нарисуем файл /usr/local/etc/gnugk.ini – см. во врезке его содержимое (оставлено только то, что для нас существенно). Комментарии прилагаются.
Запускаем Гейткипер:
# /usr/local/bin/gnugk -c /usr/local/etc/gnugk.ini
Проверяем работоспособность:
# ps ax| grep gnugk
97349 p0 S+ 0:00.01 /bin/sh -c ps ax| grep gnugk
97351 p0 S+ 0:00.01 grep gnugk
39198 v3 S+ 34:18.77 /usr/local/bin/gnugk -c /usr/local/etc/ gnugk.ini
Press any key to continue...
Затем заходим на это же машину по порту 7000 и получаем консоль гейткипера.
По команде « ? » получаем список всех подключенных устройств.
Дальше – смотрим, какие порты (сканируем, в крайнем случае) и адреса (сами ставили) используются и обслуживаются гейткипером и, соответственно, думаем, что делать с Firewall, оставляя доступ только с VoIP-устройств и тех машин, на которых надо настроить MS NetMeeting.
Мы заведомо не занимались вопросами защиты - после установки системы администратор самостоятельно для себя должен решить, что разрешается, а что нет.
заключение
Это не описание Call-центра. Это простая корпоративная система телефонии.
Результат наших трудов – просто система, которая работает. Осматриваемся, читаем документацию, звоним... Далее, уже при наличии работающей системы можем подумать, что можно добавить или как улучшить уже сделанное.
B. Yasynetskyy, M.Yasynetska.
Сетевые решения. Статья была опубликована в номере 12 за 2005 год в рубрике sysadmin