Страница 1 из 2

Корректный анализ номера

Добавлено: 25 июн 2014, 10:10
boxter
Добрый день!

Уже не первый день копаю форумы, но подобной проблемы не встречал.

Имеется Asterisk 1.8, Dahdi 2.6, Libss7-1.2., Плата Digium TE122. Подлючен через Е1 к коммутатору фиксированной связи (PSTN) (протокол С7).Линк поднят, звонки проходят.

Необходимо организовать c Asterisk ряд сервисных номеров, используя цифры и символ #. Через С7 символ "#" передается как буква "b".

Набираю номер 115#1#.

В extensions.conf есть номер:

exten => _115.,1,Answer()

exten => _115.,n,AGI(service115.pl,${EXTEN}} ${CALLERID(num)})

exten => _115.,n,Hangup()

Получаю а/о "Неправильно набран номер"

SS7 debug:

--VARIABLE LENGTH PARMS[1]--

[1] Called Party Number:

[1] Nature of address: 3

[1] NI: 0

[1] Numbering plan: 1

[1] Address signals: 115

[1] [ 06 83 10 11 b5 b1 0f ]

Видно, что проанализировались только цифры 115.

Вопрос: Где и что надо изменить, чтобы передать для анализа весь номер? Ведь в нижней строчке дебага [ 06 83 10 11 b5 b1 0f ] он присутствует. Значит на входе он есть.

PS В связке Asterisk 1.2, Zaptel 1.4, chan_ss7 все работало.

Re: Корректный анализ номера

Добавлено: 25 июн 2014, 10:23
ded
Подлючен через Е1 к коммутатору фиксированной связи (PSTN) (протокол С7)
Такого нет. Есть SS7, он же - ОКС7.
Набираю номер 115#1#.
С какой стороны? со стороны SIP-Asterisk? На каком телефонном аппарате? Аналоговом? На многих ИП-телефонах символ # является терминатором (символом отправки в линию). Корректируется локальным диалпланом ИП-телефона.

Вставьте проверку

exten => _115.,1,NoOp(Dialed extension ${EXTEN} from ${CALLERID(all)})
exten => _115.,n,Background(helo_world)
exten => _115.,n,Hangup()
а это пока замаркируйте:
;exten => _115.,1,Answer()
;exten => _115.,n,AGI(service115.pl,${EXTEN}} ${CALLERID(num)})
;exten => _115.,n,Hangup()
и включите дебаг DTMF, можно заодно проверить как набирается, пока звучит helo_world

Re: Корректный анализ номера

Добавлено: 25 июн 2014, 14:37
boxter
Спасибо за совет, попробую.
Звонок в Asterisk идет со стороны PSTN-абонента (обычный цифровой телефон).
В моем случае, когда номер анализируется корректно - получаю сигнал "BUSY" (далее идет обработка скрипта).
В противном случае - а/о "Неправильно набран номер"

PS C7 - европейское название американского SS7 (Со связью работаю около 20 лет).

Re: Корректный анализ номера

Добавлено: 25 июн 2014, 15:20
ded
Думаю, что на стороне PSTN-абонента (обычный цифровой телефон) как раз телефон и отправляет в линию 115, воспринимая # как символ терминации.
Если есть возможность, попробуйте с другого телефона, с аналогового телефона, и т.д.
И что такое обычный цифровой телефон? какой-то системник Панасоника? мобильный? или ISDN телефон? Я другого не знаю цифрового на стороне PSTN-абонента.

Re: Корректный анализ номера

Добавлено: 25 июн 2014, 15:38
boxter
На стороне PSTN коммутатора я тоже смотрел С7-трейсы.
В сторону Asterisk посылается номер 115b1bf, который виден на стороне Asterisk [ 06 83 10 11 b5 b1 0f ](hex-формат).
Телефон - обычный тел. аппарат, подключенный к цифровой АТС. Я думаю это не принципиально, поскольку (см. первый пост) с другой сборкой Asterisk - все корректно работало (была проблема с DTMF).

Re: Корректный анализ номера

Добавлено: 25 июн 2014, 16:07
amateur
Насколько я понял код libss7 версии 1.0.2 (1.2 у Вас быть не может), символ # там кодируется как 0xf. Т.е. так же как ST. Это означает, что он интерпретируется как конец набора. Вам же передают 0xb, что в libss7 1.0.2 использовать невозможно.

Re: Корректный анализ номера

Добавлено: 27 июн 2014, 09:17
amateur
Где и что надо изменить
Изменения в плане обработки 0xb сделаны в SVN r312 (http://svnview.digium.com/svn/libss7/tr ... 311&r2=312 см.вставку после строки 226). Соответственно, чтобы libss7 начал воспринимать 0xb, нужно установить, как минимум, эту ревизию кода.

Re: Корректный анализ номера

Добавлено: 30 июн 2014, 07:01
boxter
Спасибо, amateur!
Сейчас как раз и занимаюсь сборкой новой платформы Ubuntu 12.04+Dahdi-2.9+Libss7-2.x+ Asterisk-1.8.28.2. Уже который день бьюсь-не могу правильно поставить Asterisk. 1. В директории /etc/init.d/ нет файла asterisk. 2. Не поднимается ss7- chan_dahdi.c жалуется на signallingtype=ss7 (конфиги взял с рабочей машины). Может какую-то особую версию астериска надо ставить?

Re: Корректный анализ номера

Добавлено: 30 июн 2014, 07:03
awsswa
чтоб в init.d появился стартовый файл надо делать make config
а если сделать make install-logrotate то еще и логи будут правильно зачищаться

Re: Корректный анализ номера

Добавлено: 30 июн 2014, 09:39
boxter
Спасибо за совет,awsswa, помогло!
Что-то чертовщина какая-то. Астериск инсталлировался без ошибок. Однако ss7 опять не запускается в логах астериска chan_dahdi.c: Unknown signalling method 'ss7' Попытался загрузить libss7.so вручную - облом, в /usr/lib/asterisk/modules/ такого файла нет.Скопировал, переименовав, туда файл libss7.so.2.0. Все равно облом -
[Jun 30 11:37:05] WARNING[1403]: loader.c:447 load_dynamic_module: Module 'libss7.so' did not register itself during load
[Jun 30 11:37:05] WARNING[1403]: loader.c:910 load_resource: Module 'libss7.so' could not be loaded.

Куда копать дальше?