Настройка VoIP-шлюза D-Link DVG-7044s для работы с Астериском

Настройка абонента в FreePBX

Настройка порта FXS со стороны сервера не отличается от настройки обычного телефона: нужно лишь создать SIP аккаунт, которому прописать номер, имя (английскими буквами) и пароль как показано на рисунке (для простоты пароль пользователя равен выданному номеру):

Как видно из рисунка, параметр dtmfmode установлен в режим rfc2833, это значение нужно изменить на info.

Настройка транка и маршрутов в FreePBX

Настройка порта FXO несколько сложнее: нужно создать транковый аккунт, прописать исходящий и входящий маршруты. Для создания транка нужно перейти в Trunks, затем выбрать Add SIP Trunk. В открывшейся форме нужно в поле Trunk Name дать имя транку. Для удобства нужно дать имя, не пересекающееся с общей нумерацией системы для того, чтобы легко различать транки и абонентов в команде sip show peers, например 78XY, где X – номер VoIP шлюза в инсталляции, а Y – номер порта на VoIP шлюзе. Для того, чтобы VoIP шлюз мог зарегистрироваться в системе, необходимо задать параметры SIP пира, например так:

username=7811      ;имя пользователя для порта 
type=friend        ;позволяет и принимать и отправлять вызовы
secret=7811        ;для простоты пароль равен логину
qualify=yes        ;разрешает серверу определять доступность VoIP шлюза
port=5060          ;SIP порт VoIP шлюза
nat=no             ;запрещает NAT
host=dynamic       ;для работы VoIP шлюз должен зарегистрироваться
dtmfmode=info      ;режим DTMF должен быть общим для всего VoIP шлюза
context=from-pstn  ;контекст указывает обработчик входящих вызовов
canreinvite=no     ;запрещает передачу медиатрафика минуя астериск

По большому счету после этих настроек VoIP шлюз может зарегистрироваться и работать как обычно. Однако даже если прописать все порты по отдельности как положено, VoIP шлюз будет выбирать линию для выхода по принципам, известным только его разработчикам. Это происходит из-за того, что умная электроника сама определяет статус городской линии: если она не подключена к физически то VoIP шлюз не даст совершить вызов по этому порту и вызов перейдет на другой. Однако в некоторых случаях эта особенность только мешает и необходимо жестко прописывать порядок занятия портов. Для этого в первую очередь нужно прописать правило набора для этого транка (Dial Rules):

7811+X.

Это правило будет преобразовывать отправляемый номер, добавляя номер порта к набираемому номеру, что VoIP шлюз интерпретирует как занятие конкретного порта. Чтобы это работало, в VoIP шлюзе должна быть установлены опции в разделе Telephony Settings (обычно включены по умолчанию):

Однако при прямом выборе транка VoIP шлюз не контролирует статус выбранной линии, если она будет отключена, то VoIP шлюз, как ни в чем не бывало, “поднимет трубку” и наберет вызываемый номер в линию, а вызывающий будет слышать лишь тишину. Так же не будет работать автоматический выбор другой линии, если по выбранная уже занята разговором. Для решения проблемы необходимо изменить исходный код FreePBX. Для этого нужно модифицировать файл /var/www/html/admin/modules/core/functions.inc.php, в котором примерно со строки 1240 после строчки

$exten = 's-BUSY';

будет примерно следующее содержимое:

$ext->add($context, $exten, '', new ext_noop('Dial failed due to trunk reporting BUSY - giving up'));
$ext->add($context, $exten, '', new ext_playtones('busy'));
$ext->add($context, $exten, '', new ext_busy(20)); 

этот код нужно изменить на следующий:

$ext->add($context, $exten, '', new ext_gotoif('$["x${OUTFAIL_${ARG1}}" = "x"]','noreport')); 
$ext->add($context, $exten, '', new ext_agi('${OUTFAIL_${ARG1}}'));
$ext->add($context, $exten, 'noreport', new ext_noop('TRUNK Dial failed due to ${DIALSTATUS} '));

Побочным эффектом может быть некорректная работа цифровых транков к провайдерам: при обнаружении занятости вызываемого номера система автоматически перейдет на следующий транк и повторит дозвон до тех пор, пока не дойдет до последнего транка в маршруте.

Для распределения звонков, поступающих с FXO портов VoIP шлюза следует настроить входящую маршрутизацию: прописать DID и CID номера в разделе Inbound Routes. В данном случае DID номер отвечает за то, на звонок с какого порта VoIP шлюза нужно реагировать, а CID номер определяет совпадение с номером звонящего:

Отбор по CID номеру будет работать только в том случае, если городские линии, подключенные к FXO порту VoIP шлюза, выдают CallerID. Многие пользователи жалуются на задержку в “два гудка” с момента поступления вызова на порт VoIP шлюза до поступления его в сервер. Эта задержка связана с технологией определения CallerID: дело в том, что тональный посыл вызываемого номера осуществляется между первой и второй посылкой вызывного сигнала. В текущей версии прошивки VoIP шлюза отключить эту паузу невозможно.

Базовые настройки VoIP шлюза

Сетевые параметры

Все VoIP шлюзы с завода имеют статический IP адрес 192.168.8.254, что по понятным причинам подойдет не всем. Самый простой способ включить получение параметров сети по DHCP – с помощью встроенного голосового меню. Для доступа в меню нужно подключить любой аналоговый телефон в порт FXS и нажать #, после чего будет слышно однократное прерывание КПВ. VoIP шлюзы без FXS портов можно подключить к городской линии с известным номером, позвонить с другого телефона на эту линию и набрать # (после настройки не забудьте отключить сервисное голосовое меню). После входа в режим IVR нужно набрать 114, VoIP шлюз спросит: “Enter value”, введите 2 для переключения в DHCP режим. Для сохранения настроек нужно нажать 509, через некоторое время VoIP шлюз сообщит: “One”, это означает, что настройки сохранены. Для перезагрузки можно набрать 118. После того, как VoIP шлюз перезагрузится можно снова войти в сервисное меню и, набрав 101, услышать присвоенный IP адрес.

Теперь нужно настроить основные параметры VoIP шлюза, для чего заходим на его веб интерфейс по полученному адресу. В разделе Network Settings нужно установить порты SIP и RTP в значения, актуальные для Вашей системы. Для TrixBox Embedded это, как правило, так:

Настройка телефонных сервисов

Если к VoIP шлюзу подключены телефоны, которые понимают посылки CallerID, то нужно включить передачу номера в разделе Caller ID (прием по умолчанию включен):

Для того, чтобы пользователи могли воспользоваться функцией “Flash” своего телефона необходимо включить эту возможность в разделе Calling Features:

Также можно включить и Call Waiting, однако нужно быть готовым, что пользователей будет выводить из себя обратный отзвон при неправильно положенной трубке. В новых версиях прошивки VoIP шлюзов в этом разделе присутствуют элементы управления дополнительными сервисами и их клавиатурными кодами. Эти коды пересекаются со встроенными в Trixbox и их необходимо отключить полностью.

Настройка DTMF и кодеков

Для правильной работы системы требуется четко определить способ передачи тоновых посылок между VoIP шлюзом и сервером. Ранее, при определении транка, мы прописали dtmfmode=info, аналогичные настройки нужно сделать и на VoIP шлюзе в разделе Advanced Options:

Опцию Enable Non-SIP Inbox Call следует отключить, она отвечает за режим работы VoIP шлюза с исходящими звонками: при ее включении все вызовы маршрутизируются VoIP шлюзом самостоятельно без участия сервера телефонии.

Так как в большинстве случаев VoIP шлюзы устанавливаются в локальной сети, в непосредственной близости от сервера телефонии. В этом случае нет необходимости нагружать оборудование сжатием голоса, тем более что это ухудшает качество связи и мешает передаче факсов. В разделе Codec Settings нужно выбрать кодек G.711:

Настройки SIP подсистемы Для того, чтобы VoIP шлюз взаимодействовал с сервером телефонии, его необходимо настроить: прописать SIP сервер, параметры регистрации, учетные данные для каждого порта VoIP шлюза. В разделе SIP нужно отметить опцию Enable Support of SIP Proxy Server / Soft Switch, а адрес сервера прописать в три поля:

В VoIP шлюзах D-Link есть возможность представлять все порты одного типа под одним логином, при этом VoIP шлюз сам выбирает доступные для звонка линии. Однако удобнее, когда управление выбора линий осуществляется с сервера, поэтому нужно прописать логины и пароли для каждого порта VoIP шлюза:

Для того, чтобы включить регистрацию порта VoIP шлюза, нужно отметить опцию Register.

После выполнения этих настроек уже должна работать исходящая связь в городские линии, а так же абонентские порты. Однако входящая связь работать не будет. Причина этому проста: VoIP шлюз не знает куда направить вызов по порту FXO. Для этого нужно всего лишь прописать Hotline в разделе Telephony Settings:

Номер, который указываем в Hotline был прописан ранее при настройке входящей маршрутизации FreePBX. Если прописать эту опцию для FXS порта, то при поднятии трубки на подключенном телефоне VoIP шлюз моментально произведет набор указанного номера. В поле “Fax/Modem” нужно установить значение Disable, это предотвратит распознавание VoIP шлюзом факсовых сигналов и все данные будут отправляться в голосовом канале как есть.

Для сохранения настроек и применения их необходимо в разделе System Operation отметить соответствующие опции и перезагрузить VoIP шлюз:

После перезагрузки VoIP шлюз зарегистрируется на сервере и будет готов к работе. Проверить это можно перейдя в модуль Asterisk CLI системы управления FreePBX и выполнив команду sip show peers. Эта команда должна вывести информацию о всех заведенных устройствах и их регистрации в системе:

Настройка определения сигнала “Занято”

VoIP шлюзы D-Link обладают развитыми средствами определения сигналов на линии (CPT – Call Progress Tones), самым важным из которых является определение сигнала отбоя (или занятости линии). Надежное определение отбоя гарантирует отсутствия зависших линий. Для правильной настройки необходимо прописать точные параметры длительности и частоты сигналов. В России стандартная частота сигнала отбоя 425 Гц при длительности 350 мс через 350 мс тишины. Однако на местах величины этих параметров могут быть непредсказуемыми и требуют определения. Самый простой способ это сделать – записать сигнал и проанализировать в аудиоредакторе. Для этого нужно включить запись на каком-либо внутреннем номере и позвонить через внешнюю линию на другой телефон (например на сотовый). После ответа на удаленном телефоне необходимо положить трубку, на вызывающем немного подождать для записи достаточного повторов для точного анализа. После этого полученный файл нужно открыть в аудиоредакторе, например, Audacity:

В конце файла можно увидеть характерные прямоугольные импульсы – это и есть графическое отображение сигнала отбоя. Нужно точно выделить полное количество периодов сигнала, как показано на рисунке, в строке состояния будет отображено время выделенного промежутка в секундах. Поделив количество секунд на количество периодов получим длительность сигнала. Поделив еще на два, получим длительность сигнала и тишины отдельно. В данном случае длительность равна 2560 мс, следовательно длительность периодов равна 2560/4/2=320 мс.

Для измерения частоты сигнала необходимо выделить участок с сигналом и построить график спектра:

На этом графике будет отчетливо видны пики на тех частотах, которые используются в формировании сигнала. В данном случае сигнал одночастотный (а бывают и двухчастотные, для них будет два пика) с максимальной амлитудой на частоте 425 Гц. Полученные значения нужно прописать в VoIP шлюз. В разделе CPT / Cadence Settings в таблице Busy Tone Cadence Measurement нужно прописать в одной из строк длительности периодов сигнала:

Эта таблица отвечает за обнаружение периодичности сигнала без учета частот. Опцию Auto Learning нужно отключить во всех строчках, в других незадействованных строках все значения нужно выставить в 0. Точную частоту сигнала нужно прописать в одной из секций CPT:

После этих настроек VoIP шлюз должен “железно” определять занятость линии и прекращать соединение.

Методы устранения эха и других проблем

Устранение эха

Эхо это основная врожденная болезнь стыка VoIP и аналоговых систем, оно образуется из-за задержки при кодировании и декодировании сигнала. В традиционных системах эхо так же есть, но задержка во времени минимальна и ухом человека почти не воспринимается, а также легко давится примитивными противоместными схемами. Устранение эха в VoIP шлюзах D-Link сводится к простому перебору преднастроенных параметров импеданса FXO линий в разделе Advanced Options:

Хорошие результаты обычно показывают варианты для Новой Зеландии и Греции. Если эхо все равно есть, то можно попробовать другие варианты. Удобно, что перезагрузки VoIP шлюза для вступления в силу этой настройки не требуется, нужно просто нажать в нижней части страницы кнопку Accept. Все изменения слышны на слух. Для проверки нужно позвонить в FXO линию и разговаривать, подбором параметра добиться пропадания эха с обоих сторон.

Регулировка громкости и длительности Flash

Часто бывает, что порт подключен к тихой линии и одного из абонентов плохо слышно. Это можно исправить в разделе Advanced Options → Line Settings, там же можно настроить длительность определения сигнала flash:

При изменении громкости эхо может возникнуть снова, это можно попробовать исправить повторным подбором импеданса линии, однако при сильном увеличении громкости зачастую эхо невозможно убрать. В таком случае можно попробовать увеличивать громкость на абонентских устройствах.

Самопроизвольный обрыв разговора

После обновления прошивки около года назад многие пользователи VoIP шлюзов заметили спонтанные обрывы связи, при этом со стороны сервера все выглядело так, как будто на стороне FXO линии произошел отбой. Долгие часы и дни решения проблемы выявили новую опцию в подсистеме распознавания сигнала занято: Auto Learning. В общем-то полезная опция появилась неожиданно, однако ее нужно отключать сразу после того, как VoIP шлюз определит параметры сигнала, т.е. в процессе начальной настройки. Если этого не сделать, то умная железка может обнаружить повторяющиеся последовательности в процессе обычного разговора и прервать вызов.

Отладка VoIP шлюза

VoIP шлюзы D-Link могут выдавать подробный лог своих действий, что незаменимо при отладке проблемных моментов. Для этого нужна специальная программа slmon(ссылка 1 или ссылка 2), которая присоединяется к VoIP шлюзу по TCP или UDP соединению, снимает лог событий в реал-тайм режиме и сохраняет их на диск.

nastrojka_voip-shljuza_d-link_dvg-7044s_dlja_raboty_s_asterisk.txt · Последние изменения: 2013/11/20 11:23 (внешнее изменение)
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика