Алло, кто звонит или определение номера в Asterisk

Учитывая специфику телефонных сетей на территории России, проблемы с определением номера при настройке аналоговых линий ГТС на Asterisk возникают довольно часто. Разнообразие ГАТС и качество телефонных линий смонтированных еще во времена СССР всегда преподносят проблемы для интеграторов IP АТС.
image
Была установлена IP АТС Asterisk, и успешно использовалась. Через некоторое время появилась возможность подключить определитель номера, т. к. городские линии перевели на цифровую ГАТС с поддержкой CallerID, до этого линии были подключены к аналоговой ГАТС (да, аналоговые АТС еще живы), но определение номера не заработало.

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

Теория определения номера
АОН (также называют Русский АОН) — работа советских аналоговых ГАТС, был распространен в начале 90-х, но все еще встречается. Информация о номере вызывающего абонента передаётся в виде кода, носящего название «Безынтервальный Пакет». Не является услугой, как таковой, т. к. не предназначался для абонентов. Телефонный номер передается в виде 7 цифр. Телефонный аппарат, поддерживающий АОН при входящем звонке «снимает трубку» и считывает служебные сигналы телефонной станции, при этом для вызывающего абонента имитируется вызывной сигнал. На Asterisk данный вид определителя номера заставить заработать не удастся.

CallerID (он же Евро АОН) — услуга предоставляемая на цифровых ГАТС. Метод для отправки запроса и получения Caller ID информации в интервале между звонками. То есть, в отличии от АОН здесь не происходит «снятия трубки». В CallerID распространено несколько стандартов:
Bellcore стандарт используется в США, Канаде, Австралии, Китае, Гонконге, Сингапуре, Италии и некоторыми телефонными компаниями Великобритании.
DTMF стандарт: цифры номера передаются таким же способом, как и тональный набор номера — короткими двухчастотными посылками.
FSK стандарт: Поток данных передаётся частотной модуляцией перед первым или перед вторым звонком на линии. Как показал опыт, большинство цифровых ГАТС Ростелекома работают по этому стандарту.

Практика, или почему ничего не работает
Для определения номера в каналах DAHDI в большинстве случаев достаточно добавления следующих строчек в chan_dahdi.conf:

chan_dahdi.conf
usecallerid=yes ; включаем CallerID

callerid=asreceived; передаем callerid в неизменном виде

Если определение номера не заработало, рекомендую для начала подключить обычный телефонный аппарат с поддержкой CallerID и посмотреть работает ли на нем определение. В нашем случае, номер на ТА определялся без проблем, а на Asterisk никак не хотел. Более того, при подключении ТА параллельно астериску опеределение переставало работать и на телефоне.
Переходим к дальнейшему анализу. Запишем аудио канал линии и проанализируем в аудио редакторе запись. В нем попробуем найти данные CallerID.
Запись первого dahdi канала осуществляется следующей командой:

dahdi_monitor 1 -v -r streamrx.wav

Запускаем команду записи и звоним на нашу линию. После этого останавливаем выполнение dahdi_monitor, в итоге у нас появится файл streamrx.wav. Копируем его себе и открываем его в аудиоредакторе (например Audacity).

image

Как видно никаких данных callerid нам не приходит. Поскольку обычный телефон номер определяет, то можно предположить что проблемы с оборудованием (платой или модулем FXO).
Ставим заведомо рабочий модуль FXO в плату и проверяем еще раз.

image

Теперь определение номера работает без проблем, на записи видим данные CallerID в стандарте FSK. Как видно, в этом случае была проблема с модулем.

Ремонт FXO модуля
FXO модули разных производителей для аналоговых карт построены практически по одной и той же схеме на базе двух микросхем: SI3019 и SI3050.
Пример схемы с даташита на Si3050 Si3018/19:
image

На данной схеме линия подключается к контактам RING и TIP.
На какие элементы следует обратить внимание при проблемах с работой модуля?

— Диодный мост D1 (также может быть выполнен в виде двух сборок по 2 диода). Иногда из строя на линиях аналоговых АТС и при превышении допустимого напряжения. При этом сам модуль может оставаться работоспособным, но часть диодов не работают. Проверяются после выпаивания со схемы.
 — Динистор RV1 (275 V, 100 A). В нашем случае он оказался работоспособным.
 — Резисторы R30, R32 (15 M?, 1/8 W, 5%), R31, R33 (5.1 M?, 1/8 W, 5%), R8, R7 (20 M?, 1/8 W). С ними тоже оказалось все в порядке.
Проблема оказалась в микросхеме Si3019. Сопротивление в точке поключения пина Ring1 было в два раза меньше, чем на рабочем модуле. После замены микросхемы Si3019 все заработало без проблем.

Также в грозовой период, при отсутствии внешней защиты, часто выходит из строя стабилитрон Z1 (43 V, ½ W). Симптомы при этом следующие: модуль не видит входящий вызов, при попытке позвонить через данный канал кроме тишины никаких действий. Решается заменой стабилитрона.

Комментарии (2)

  • 16 апреля 2017 в 14:41

    0

    CallerID (он же Евро АОН) — услуга предоставляемая на цифровых ГАТС

    Т.е., у Ростелекома (беру его как самого массового оператора) это платно?
    • 16 апреля 2017 в 15:22

      0

      Да.
      За обычный АОН они тоже, вроде, пытались деньги драть — в те же времена, что и за факсы и модемную связь.

© Habrahabr.ru