четверг, 23 октября 2014 г.

Настройка Grandstream HT503 для FreePBX (Asterisk, Trixbox, Elastix)

Нужен был шлюз с 1 FXO портом, ещё один FXS в этом случае приятно дополнение, ну и lifeline конечно пригодится при отключении электричества. D-link покупать не хотелось, а linksys в продаже отсутствует, поэтому выбор пал на Grandstream, заранее скажу не понравилось, даже нелюбимый мной дэлинк ведёт себя и то более предсказуемо.

Я убил целый день из-за него на настройку, на прошивках 11.3 и 12.1 невозможно совершить исходящий звонок через FXO порт - астериск показывает что всё в порядке, а звонок не проходит - тишина в трубке. Вот невозможно и всё тут, поэтому если вам нужен FXO для звонков то вам нужна прошивка 10.9. Если у кого-то возникнут сложности с прошивкой пишите в комментариях, дополню статью.

Скачать прошивку 1.0.10.9 для HT503 можно здесь или с официального сайта.



Это было отступление, неприятное, но необходимое. Пока посмотрю как будет себя вести эта штука в бою, позже дополню статью.

Статья состоит из нескольких частей, это сетевые настройки, настройки FXS порта (внутренний) и настройки FXO порта (городской).

Сетевые настройки.

Внимание! Данный класс устройств не предназначен для того что бы их выставляли в интернет! Заранее позаботтесь о том что бы доступ к этому устройству имел только ограниченный круг лиц, в идеальном случае никто кроме администраторов и самого астериска доступа к устройству иметь не должен, в противном случае вы рискуете тем что злоумышленник сможет звонить через ваш HandyTone за ваши деньги.
Итак, если вы подключаетесь к порту LAN устройства то там по умолчанию включен DHCP сервер, а IP адрес устройства - 192.168.2.1. Собственно так и надо доступ получать к вебке, потому что WAN порт по дефолту закрыт от всего, и настроен на получение IP по DHCP.

Значит заходим по адресу http://192.168.2.1 пароль админа по умолчанию - admin. Первым делом когда входим, в целях безопасности меняем пароль User и настроить статический IP адрес. Всё это делается в разделе Basic Settings. Разделение на user и admin в ht503 происходит исключительно по паролю, поэтому ставьте для user и admin разные пароли!

ht503 network settings
Не забываем нажимать кнопку Apply для сохранения настроек. Далее идём в Advanced Settings и меняем пароль админа.
ht503 admin pass
Далее, если мы уверены что у нас в сети никто не станет ломать эту железку, можно открыть доступ к настройкам и icmp пакетам (читай пингу) с Wan порта, делается это в Basic Settings
ht503 wan side access

Настройки FXS порта.

Эта самая пожалуй простая часть, для начала создаём пользователя в интерфейсе FreePBX, делаем аналогично SPA 8000 только DTMF режим ставим rfc2833. Переходим в раздел FXS порт, заполняем адрес сервера (Primary SIP Server), имя пользователя (SIP User ID) и пароль (Authenticate Password аналогично экстеншену в астере).
sip fxs settings ht503 freepbx
Спускаем ниже, настраиваем Dial Plan что бы набор номера происходил без задержек, хотя будет работать и без этого.
ht503 dialplan fxs


Пояснения о том как работает диалплан есть в инструкции:

Разрешённые символы: 1,2,3,4,5,6,7,8,9,0 , *, #, A,a,B,b,C,c,D,d

x - любая цифра от 0 до 9;
хх+ - как минимум любые две цифры;
^ - запрет набора номера;
[3-5] - цифры от 3 до 5;
[147] - цифры 1, 4 или 7;
<2=011> - заменить 2 на 011;
< =1> - добавить цифру 1 перед номером;
| - разделитель между правилами.

Примеры из инструкции:

{[369]11 | 1617xxxxxxx} - позволяет набрать 311, 611, 911 и любые 10 цифр начинающиеся с 1617;
{^1900x+ | <=1617>xxxxxxx} - блокирует набор любого номера начинающего с 1900 и добавляет префикс 1617 перед любыми 7 набранными цифрами;

и диал план который использую я - {*xx|1xx|7xx|2xxxxxx|9xxxxxx|8xxxxxxxxxx|0[1-4]}
можно набрать номера от *01 до *99 - для функций астериска
от 100 до 199, от 700 до 799 - внутренняя нумерация
от 2000000 до 2999999 и от 900000 до 999999 - городская нумерация
любые 11 цифр начинающиеся с 8ки - межгород и мобильники
01,02,03,04 - номера экстренных служб.

Все махинации с правилами набора номера, такие как добавление префикса или наоборот замену каких-то цифр я рекомендую делать в астериске.

Переходим к настройкам линии, в параметре Slic Setting по умолчанию стоит USA, но в этом режиме трубка какие-то странные звуки издаёт, поэтом я выбрал Belgium.

На этом же скрине видно параметр Gain - регулировка громкости, меня устроили первоначальные параметры.
fxs settings ht503

На этом настройка FXS порта закончена. Жмём Apply, ждём пока перезагрузится шлюз и проверяем, всё должно работать.

Настройки FXO порта

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

Сначала будем настраивать входящий звонок. DID на HT503 прописывается в разделе Basic Settings - параметрUnconditional Call Forward to VOIP (здравствуй логика).
did ht503 freepbx


Здесь читаем где прописать DID на FreePBX. Не забываем Apply нажимать.

Следующим шагом надо будет создать транк в интерфейсе FreePBX. Выбираем раздел Trunks (Транки). Добавляем транк Add Trunk.

Trunk Name - имя транка, то как вы его хотите видеть, не на что в общем-то особо не влияет .
Outbound CallerID - номер телефона который вы будете видеть в отчёте при исходящих звонках.
Dialed Number Manipulation Rules - сопоставление набранных номеров с шаблоном, можно не заполнять, но если заполнили номер который астериск пустит в транк не совпадающий с шаблоном набран не будет. prefix это то что откидывается из переданного номера в транк, prepend - то что добавляется перед номером. т.е. если в транк астериск например передаёт 79181234567, а вам надо что бы шлюз набрал 891812345678 правило должно быть (8)+7|918XXXXXXX. Впринципе такое можно делать в разделе исходящая маршрутизация у астериска. Опять таки статейка есть по этому вопросу, где я постарался максимально этот момент описать.
Trunk Name - не проверял, на HT503 но на некоторых шлюзах если указать имя транка отличное от имя пользователя могут не проходить входящие, поэтому рекомендую транк называть так же как имя пользователя.
PEER Details - самая интересная часть, здесь прописываются основные настройки.

username=gs-ht-503 ;Имя пользователя для порта, то что мы указывали в SIP User ID на шлюзе
type=friend ;Позволяет и принимать и отправлять вызовы
secret=Sw0rdfish ;Пароль
qualify=yes ;Разрешает серверу определять доступность VoIP шлюза
port=5062 ;SIP порт VoIP шлюза, параметр который указан шлюзе
nat=never ;Мы же не используем nat?
host=dynamic ;Для работы VoIP шлюз должен зарегистрироваться
dtmfmode=rfc2833 ;Режим который рекомендуется использовать.
context=from-pstn ;Контекст указывает обработчик входящих вызовов
canreinvite=no ;Запрещает передачу медиатрафика минуя астериск

Картинка для проверки.
freepbx trunk ht503
Теперь аналогично созданному транку заполняем Primary SIP Server, SIP User ID, Authenticate Password.
sip fxo settings ht503 freepbx
для того что бы протестировать приём входящих звонков осталось ещё пару настроек:

AC Termination Model выбираем Impedance-based.
Impedance-based оставляем 600ом,
Number of Rings если у нас на номере включён Caller ID то ставим 2 что бы шлюз мог определить номер, если нет ставим 1 что бы трубку шлюз поднимал быстрее.
PSTN Ring Thru FXS: ставим No, в противном случае звонок из города сначала будет приходить на FXS порт, а уже через таймаут уходить на астер, но нам этого не надо.
ht503 AC Termination Model

Жмём Apply - звоним проверяем.

Следующим шагом будем заполнять Disconnect Tone подсказка что к чему есть прямо в вебинтерфейсе. Чтобы правильно заполнить шаблон нам надо будет записать короткие гудки и проанализировать. Для анализа я использую бесплатный аудиоредактор Audacity.
Открываем записанный файл, выделяем нужный нам отрезок короткого гудка и выбираем Анализ - Построить график спектра

Наводим курсор на пик и видим что у нас написано Пик: 426 гц, -26,6дб. В данном случае сигнал одночастотный (а бывают и двухчастотные, для них будет два пика).

Дальше смотрим длительность между гудками и длительность самих гудков.

в моём случае это 256мс, округлим до 250. Итак исходные данные мы собрали, теперь пишем шаблон:

Формула выглядит так:

f1=X@-Y,f2=Z@-Y,c=A/B;

где:
X - частота (у меня 426 Герца)
Z - частота второго пика, если сигнал одночастотный ставим тоже что и в X.
Y - громкость в dB, на графике 26, но можно оставить дефолтные 32
A - период сигнала гудка (0.250 с)
B - период тишины (0.250 с)

получаем - f1=426@-26,f2=426@-26,c=250/250;

Настраиваем раздел FXO Termination.
Enable Current Disconnect - No;
Enable PSTN Disconnect Tone Detection - Yes;
PSTN Disconnect Tone - f1=426@-26,f2=426@-26,c=250/250.

Настраиваем исходящие звонки. Для этого нам нужно будет в частности диалплан настроить, принцип работы такой же как в FXS повторяться не буду. У меня выглядит так:
ht503 fxo dial plan

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

Во-первых: необходимо выставить Wait for Dial-Tone - No иначе звонок никуда не пойдёт.

Во-вторых: этот шлюз умеет звонить в город в два этапа и в один, в случае если мы используем правила набора номера FreePBX то нам нужен один этап, а это значит что Stage Method (1/2) надо указать 1, по умолчанию стоит 2. Если выбрать 2 то при попытке позвонить в город через HT503 Астериску будет приходить Forbidden, а в логе шлюза будет ошибка - ATACtrl::processFxoOutgoingCallInitiated, Invalid User Id
Dispatching event: 17 (CALL_FAILED) on port 1:0
Тоже времени порядочно пришлось потратить что бы эту фичу понять (и снова привет разработчикам).

Проверочная картинка:
Жмём Apply - пробуем звонить. Спасибо за внимание.

За статью спасибо Trustore

Комментариев нет:

Отправить комментарий