Заказать услугу
Техподдержка
+7(499)579-8-000
Заказать звонок
+7(495)111-2-333

Вопросу подключения Asterisk по ОКС-7 посвящена отдельная статья, которая в настойщем материале расширена процедурой проверки модулей.

Процедура проверки модулей Asterisk

Для проверки готовности модулей к сборке запускаем make menuselect

asterisk make menuselect

Убеждаемся, что драйвер chan_dahdi готов к сборке (система автоматического конфигурирования нашла библиотеки и файлы заголовков для dahdi, библиотек libpri и libss7).

Выполняем компиляцию и установку asterisk для телефонии:
make
sudo -u root make install
sudo -u root make samples

Последняя команда установит пример конфигурации в каталог /etc/asterisk.

Теперь нам необходимо отредактировать /etc/asterisk/chan_dahdi.conf для определения в нем параметров сетевого уровня для создаваемых подключений.

[trunkgroups]
; Оставляем эту секцию пустой, если только каналы EuroISDN
; не используют схему сборки потоков в транки с указанием идентификатора потока
; в сообщении. Для ОКС-7 эта секция вообще не используется.

[channels]
; Общие параметры для наших EuroISDN-подключений
echocancel=no
faxdetect=incoming

; Контекст приземления входящих вызовов из ISDN-портов
; В нашем случае он один для всех физических портов,
; но можно использовать и раздельные контексты.
context=landing

Конфигурируем порты EuroISDN:

switchtype=euroisdn

;
; Некоторые специфичные для ISDN параметры опущены, ибо их описание есть
; тема отдельной статьи
;

; Зависит от удаленной системы. Если она не распознает ситуацию, когда
; вы «положили трубку», попробуйте заменить значение на inband (извращенцы!)
priindication = outofband

; CLIP обрабатывать будем
usecallerid=yes

; Да и calling presentation будем посылать на исходящих вызовах. Вдруг кто захочет
; скрыть свой АОН от определения? ;)))
usecallingpres=yes

; Наш downlink, использующий все 30 таймслотов для передачи трафика.
; Физически подключается на первый порт второй потоковой платы.
; Для него мы выступаем как сеть (NET), он для нас является CPE.
; Передача вызова ему производится командой
; Dial(DAHDI/g5/вызываемый_номер)
group=5
callgroup=5

signalling=pri_net

channel => 125-139
channel => 141-155

; Наш downlink, использующий только 10 таймслотов для передачи трафика.
; Физически подключается на второй порт второй потоковой платы.
; Передача вызова ему производится командой
; Dial(DAHDI/g6/вызываемый_номер)
group=6
callgroup=6

signalling=pri_net

; У клиента используется 10 таймслотов
channel => 156-165

Итак, мы имеем 4 физических потока E1, собранных в один пучок, управляемый по сигнализации ОКС-7. В каждом из физических потоков имеется один сигнальный линк (стандартное расположение 16-й таймслот), остальные линки используются для передачи данных. Потоки в пучек собраны начиная с младшего, CIC нумеруются последовательно, начиная с 1. Соответствующий кусок из chan_dahdi.conf:

; Тип сигнализации
signalling=ss7
; Дальше идут общие для различных типов сигнализации параметры
; Врядли вам потребуется их изменять
usecallerid=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=no
transfer=no
canpark=no
cancallforward=no
echocancel=no
echocancelwhenbridged=no

; Контекст, на который будут приземляться вызовы, пришедшие от удаленной системы
context=landing

; Логическая группа, используемая для отправки вызова на этот пучек. Т.е.
; команда вызова будет иметь вид
; Dial(DAHDI/g1/номер_назначения)
group=1
callgroup=1
;pickupgroup=1

; В Европе (и в России) используется вариант ITU
ss7type = itu

; SS7 Called Nature of Address Indicator
; Для подключений местного/зонового уровня
; можно задать явно ss7_called_nai=National
; Но мы оставляем значение по умолчанию (оно также закомментировано):
;ss7_called_nai=dynamic

; Префиксы также указывать не будем. Мне с ними проще разобраться в диалплане
;ss7_internationalprefix = 00
;ss7_nationalprefix = 0
;ss7_subscriberprefix =
;ss7_unknownprefix =

; На входящих вызовах будем посылать ACM сразу, как только начнется обработка
; диалплана приземления. Т.е. удаленная сторона поймет, что вызов был хоть куда-то
; доставлен. Разрешать этот параметр или нет — дело вкуса.
;ss7_explicitacm=yes

; Автоматическая передача ACM на входящих вызовах, когда он был перенаправлен
; asterisk-ом на другой канал и на этом другом канале возникло состояние вызова
; или ответа. Влияет на передачу early media от стороннего канала на вызывной.
; Либо всегда надо будет вызывать Proceeding() перед Dial().
;ss7_autoacm=yes

; При инициализации драйвера канала считаем все CIC заблокированными (т. е.
; недоступными для использования). Их разблокировка произойдет автоматически
; после завершения логического тестирования канала связи.
;ss7_initialhwblo=yes

; Управление эходавом. Я оставляю по умолчанию.
;ss7_use_echocontrol=yes
;ss7_default_echocontrol=yes

; Определение пучка (linkset)
linkset = 1

; Для первого потока в пучке SLC=0 (для каждого последующего увеличивается на 1)
; Этот параметр зависит от конфигурации удаленной стороны
slc=0

; Наш pointcode
pointcode = 651

; pointcode удаленной стороны
; Этот параметр зависит от конфигурации удаленной стороны
adjpointcode = 599

; Врядли вы будете использовать STP-маршрутизацию, поэтому конечный pointcode
; совпадает с pointcode удаленной стороны. Но может иметь другое значение, если
; удаленная сторона не является конечной точкой.
; Этот параметр зависит от конфигурации удаленной стороны
defaultdpc = 599

; Значение NI для MTP3. Скорее всего это будет либо national, либо national_spare
; Этот параметр зависит от конфигурации удаленной стороны
networkindicator=national_spare

; Указываем сигнальный канал для 1-го потока
sigchan = 16
; Обязательно определяем таймеры! Их необходимо определять
; после каждого нового сигнального канала
#include ss7.timers

; Определяем соответствие CIC и физическим каналам
cicbeginswith = 1
channel = 1-15
cicbeginswith = 17
channel = 17-31

; По аналогии определяем оставшиеся 3 физических порта, входящих в пучек

slc=1
pointcode = 650
adjpointcode = 599
defaultdpc = 599
networkindicator=national_spare
sigchan = 47
#include ss7.timers

cicbeginswith = 33
channel = 32-46
cicbeginswith = 49
channel = 48-62

slc=2
pointcode = 650
adjpointcode = 599
defaultdpc = 599
networkindicator=national_spare
sigchan = 78
#include ss7.timers

cicbeginswith = 65
channel = 63-77
cicbeginswith = 81
channel = 79-93

slc=3
pointcode = 650
adjpointcode = 599
defaultdpc = 599
networkindicator=national_spare
sigchan = 109
#include ss7.timers

cicbeginswith = 97
channel = 94-108
cicbeginswith = 113
channel = 110-124

Осталось только составить диалплан в extensions.conf и запустить asterisk в консольном режиме:
asterisk -vvvc

Яндекс.Метрика
Подключение
+7(495)111-2-333
Техподдержка
+7(499)579-8-000
Круглосуточно
Написать или оставить сообщение директору +7(495)201-00-00 доп.410

© Телекоммуникационная компания OOO "ВЕРСИЯ". С 2002 года успешной работы в IT-сфере. Адрес офиса 107031, г.Москва, Малый Кисельный пер., д.1/9.