Нужен был шлюз с 1 FXO портом, ещё один FXS в этом случае приятно дополнение, ну и lifeline конечно пригодится при отключении электричества. D-link покупать не хотелось, а linksys в продаже отсутствует, поэтому выбор пал на Grandstream HT503, заранее скажу не понравилось, даже нелюбимый мной дэлинк ведёт себя и то более предсказуемо.
Итак приступим.
Я убил целый день из-за него на настройку, на прошивках 11.3 и 12.1 невозможно совершить исходящий звонок через FXO порт — астериск показывает что всё в порядке, а звонок не проходит — тишина в трубке. Вот невозможно и всё тут, поэтому если вам нужен FXO для звонков то вам нужна прошивка 10.9. По крайней мере я остановился на этой, в комментариях мне писали что всё хорошо работает и с 12.8.
Скачать прошивку 1.0.10.9 для HT503 можно здесь.Это было отступление, неприятное, но необходимое. За более чем два года использования шлюза никаких проблем не возникло, нормальная рабочая лошадка.
Статья состоит из нескольких частей, это сетевые настройки, настройки FXS порта (внутренний) и настройки FXO порта (городской).
Сетевые настройки HT503
Итак, если вы подключаетесь к порту 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 разные пароли!
Не забываем нажимать кнопку Apply для сохранения настроек. Далее идём в Advanced Settings и меняем пароль админа.
Далее, если мы уверены что у нас в сети никто не станет ломать эту железку, можно открыть доступ к настройкам и icmp пакетам (читай пингу) с Wan порта, делается это в Basic Settings
Настройки FXS порта.
Эта самая пожалуй простая часть, для начала создаём пользователя в интерфейсе FreePBX, здесь описано как это сделать. Переходим в раздел FXS порт, заполняем адрес сервера (Primary SIP Server), имя пользователя (SIP User ID) и пароль (Authenticate Password аналогично экстеншену в астере).
Спускаем ниже, настраиваем Dial Plan что бы набор номера происходил без задержек, хотя будет работать и без этого.
Пояснения о том как работает диалплан есть в инструкции:
Разрешённые символы: 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 — для функций астериска (*xx);
- от 100 до 199, от 700 до 799 — внутренняя нумерация (1xx|7xx);
- от 2000000 до 2999999 и от 9000000 до 9999999 — городская нумерация (2xxxxxx|9xxxxxx);
- любые 11 цифр начинающиеся с 8ки — межгород и мобильники (8xxxxxxxxxx);
- 01,02,03,04 — номера экстренных служб (0[1-4]).
Переходим к настройкам линии, в параметре Slic Setting по умолчанию стоит USA, но в этом режиме трубка какие-то странные звуки издаёт, поэтом я выбрал Belgium.
На этом же скрине видно параметр Gain — регулировка громкости, меня устроили первоначальные параметры.
На этом настройка FXS порта закончена. Жмём Apply, ждём пока перезагрузится шлюз и проверяем, всё должно работать.
Настройки FXO порта
Хотелось бы передать привет разработчикам ПО на это устройство, настройки FXO порта настолько не очевидны, насколько это вообще возможно, нюансов я считаю много.
Сначала будем настраивать входящий звонок. DID на HT503 прописывается в разделе Basic Settings — параметр Unconditional Call Forward to VOIP (здравствуй логика).
Здесь читаем где прописать DID на FreePBX. Не забываем Apply нажимать.
Asterisk
Следующим шагом надо будет создать транк в интерфейсе FreePBX. Выбираем раздел Trunks (Транки). Добавляем транк Add Trunk.
Trunk Name — имя транка, то как вы его хотите видеть, не на что в общем-то особо не влияет .
Outbound CallerID — номер телефона который вы будете видеть в отчёте при исходящих звонках.
Dialed Number Manipulation Rules — сопоставление набранных номеров с шаблоном, можно не заполнять. Подробнее о правилах и шаблонах набора номера можно здесь прочитать.
Trunk Name — не проверял, на HT503 но на некоторых шлюзах если указать имя транка отличное от имя пользователя могут не проходить входящие, поэтому рекомендую транк называть так же как имя пользователя.
PEER Details — самая интересная часть, здесь прописываются основные настройки.
1 2 3 4 5 6 7 8 9 10 |
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 ;Запрещает передачу медиатрафика минуя астериск |
Следующие поля оставляем пустыми:
USER Context:
USER Details:
Register String:
Картинка для проверки.
HandyTone
Теперь аналогично созданному транку заполняем Primary SIP Server, SIP User ID, Authenticate Password.
для того что бы протестировать приём входящих звонков осталось ещё пару настроек:
- AC Termination Model выбираем Impedance-based.
- Impedance-based оставляем 600ом,
- Number of Rings если у нас на номере включён Caller ID то ставим 2 что бы шлюз мог определить номер, если нет ставим 1 что бы трубку шлюз поднимал быстрее.
- PSTN Ring Thru FXS: ставим No, в противном случае звонок из города сначала будет приходить на FXS порт, а уже через таймаут уходить на астер, но нам этого не надо.
Жмём Apply — звоним проверяем.
Disconnect Tone
Следующим шагом будем заполнять 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.
DialPlan
Настраиваем исходящие звонки. Для этого нам нужно будет в частности диалплан настроить, принцип работы такой же как в FXS повторяться не буду. У меня выглядит так:
Дальше идут два немного выбивающихся из общепринятых настроек параметра, по крайней мере на других шлюзах я с этим не сталкивался.
Во-первых: необходимо выставить 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 — пробуем звонить. Спасибо за внимание.
p.s. Если возникли какие-то сложности с настройкой или хотите задать вопрос по статье — оставьте комментарий, рад буду помочь.