22 мар. 2013 г.

Звонки в Asterisk через PSTN (ТфОП) с помощью Grandstream Handy Tone HT503

В общем, необходимо подключить обычную телефонную линию (ТфОП, PSTN) к Asterisk для возможности принимать и совершать вызовы через неё.

В этой статье изложу свой опыт - для памятки и вдруг кому-нибудь еще поможет.

Как подключить аналоговую линию в цифровой астериск? Вариантов нашлось три:
  • VoIP-гейтвей
  • PCI-карточка с хотя бы одним портом FXO
  • небольшая волшебная коробочка под названием Grandstream Handy Tone HT503
1й вариант отвергли, т. к. гейт дорог и в его функционал не будет реализован на его стоимость. 2й вариант был отвергнут, т. к. на материнской плате сервера нет обычного PCI-порта... и еще потому, что настраивать карточки расширения имеет смысл, если у нас несколько линий аналоговой/цифровой телефонии FXO/E1. Самым простым и экономичным вариантом оказался номер 3 (стоимость его 50-70 долл).

Итак, разберемся с терминологией. Если по-простому, то:
  • FXO - это интерфейс, к которому подключается PSTN, т. е. сама телефонная линия.
  • FXS - интерфейс для подключения обычного аналогового телефона для использования его в VoIP-телефонии.
  • E1 - интерфейся цифровой телефонии, используются в крупных организациях с множеством цифровых каналов.
Для наших задач возможно подошло бы и другое устройство подобного типа, НО из представленных на нашем рынке устройств, только HT503 имело FXO-порт. Большинство таких устройств имеют только 1 или несколько FXS-портов. Они нам НЕ подходят! Называются они ATA - Analog Telephone Adapter. (в HT503, к слову, также есть один FXS порт, так что он тоже ATA, но не только).

Моменты, которые необходимо учитывать при настройке HT503:
  • подключение чекез WAN или LAN
  • настройка аналоговых параметров ТфОП на странице Advanced Settings (зависят от страны)
  • параметры отсылки DTMF-сигналов для голосовых меню входящих и исходящих вызовов
  • региональные параметры детектирования busy-сигнала ТфОП. Если задать неверные - HT503 не будет детектировать момент завершения входящего вызова вызывающим абонентом
  • Настройки сопротивления ТфОП
  • приоритеты кодеков
  • настройка экстеншна Unconditional Call Forward to VOIP для диалплана Астериска

В общем, распаковываем коробку, подключаем к HT503 БП, затем


в разъем Line подключаем кабель телефонной линии (PSTN). В Phone можно подключить аналоговый телефонный аппарат, если вы планируете его использовать. В нашем сценарии кабель LAN, т. е. для подключения к сети Ethernet нужно подключать в разъем WAN, т. к. коробочка эта будет как просто обычный сетевой девайс, хотя её можно использовать и в качестве шлюза в интернет (я этот вариант не пробовал, потому не могу сказать, как и насколько оно юзабельно).

Разные сценарии использования HT503 описаны тут  и здесь.

Далее, согласно HT503 Manual подключаем аналоговый телефон и набираем ***
 и пользуясь табличкой в мануале и голосовыми подсказками, настраиваем сеть.

Потом в браузере заходим на http://<адрес_коробочки> где адрес - или статик, который мы ввели с помощью телефона, или полученный по DHCP.

Пароль по умолчанию - admin. После первого логина желательно его поменять и не забыть потом.

Идем в Basic Settings. Тут всё должно быть понятно - вбиваем статик адрес, настраиваем временную зону и гейтвейные функции (если коробочка включена между ADSL/Ethernet каналом к провайдеру и внутренней сетью). И в самом низу нужно в пункте Unconditional Call Forward to VOIP: вбить экстеншн, а также адрес сервера с астериском и порт сервера - на этот экстеншн будут приходить входящие из ТфОП вызовы.

Далее идем на вкладку Advanced Settings и листаем вниз до System Ring Cadence:
Далее я привожу настройки валидные для Украинского оператора ТфОП Укртелеком. Скорее всего, они же будут валидны и в России и в СНГ. Для других стран нужно уточнять.Детали на скриншоте:


Теперь самое интересное (или наоборот :) ) - FXO Port



Настройки здесь вполне понятны. ID указываем как в sip.conf астериска (описано ниже в статье).

Далее идут настройки тонального набора. В Priority 1 нужно поставить RFC2833 иначе набирать или принимать тональные экстеншны вы не сможете.

Далее выставляем кодеки - я предпочитаю ulaw / alaw, но каждый выставляет то, что использует. CallerID услугу необходимо заказывать у оператора ТфОП, а после настраивать.
Gain следует поставить в 0 обязательно, иначе почему-то коробочка не детектит busy-тон от линии. Я пробовал различные варианты настроек в т. ч. изменял усиление сигнала для детекта busy тона ниже в настройках - надо ставить усиление в 0.


Здесь тоже региональные настройки в секциях PSTN Disconnect Tone и AC Termination Mode, валидные в Украине, а именно PSTN Disconnect Tone: а также сопротивление у нас стандарт 600 Ом. Если сопротивление больше, то вы получите тихий звук или вообще его отсутствие.
Настройку PSTN Ring Thru FXS: следует отключить, иначе входящие звонки будут вначале идти на аналоговый телефон FXS, а после установленного таймаута в астериск.


Теперь, когда коробочка подключена и настроена, необходимо настроить Asterisk.

Вначале создадим пользователя для коробочки в sip.conf.

[503]
secret = password
type = peer
context = incoming_pstn
fromuser = 7777777      ;здесь и ниже наш городской номер
defaultuser = 7777777
host = dynamic
qualify = yes
nat=no

Во многих мануалах, статьях, на форумах рекомендуют именовать экстеншен для HT503 цифрами во избежании проблем, потому я решил особо не вникая всё-таки не использовать буквы, тем более что это не имеет особого значения.

Входящие вызовы по ТфОП будут приходить в контекст incoming_pstn на экстеншен, заданный в Unconditional Call Forward to VOIP: в Basic Settings веб-морды HT503.

Исходящие звонки через ТфОП осуществляются, например так (7-значные городские):

exten => _[3,7]XXXXXX,n,Dial(SIP/${EXTEN}@503,100)

Полезные ссылки:

1. Grandstream HT503 Manual (pdf)
2. Значения тонов для разных стран (для Украины подходит РФ)
3. Разные сценарии использования HT-503