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

не продавливается Q.931 в SIP и h.323

Добавлено: 16 янв 2012, 19:31
Ida
Идут звонки в мобильные сети операторов через датакард

originate->SIP or h.323 -> Aster ->IAX2-> Aster+chan_datacard

Проблема заключается в том, что мы уже и продавливаем те коды на Hangup, что хотим видеть, но идёт все равно только 34-ый согласно спецификации Q.931
Сломал весь моцк уже...
Оплачу платный саппорт за нахождение решения и указания на собств. ошибки (в соотвеств. теме тоже объявление разместил)
отвалю деньжыщчь немерянно... выручайте други!!!
Можно и в паблик, вдруг и еще кому решение такое понадобится....

extensions.conf (чисто для примера)
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
exten => _x.,1,Hangup(18) ;тут мы ставим любой код, но отбивается только лишь с 34-м
и еще один экстеншн.конф по которому в основном работаем
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
[terminate]
;;;;;;;----------- CHECKING ----------------- ;
exten => _992XXXXXXXXX,1,Verbose(Dial--${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}-(( ${SYSINFO(numcalls)} ))- ${EXTEN})
;exten => _992XXXXXXXXX,1,Dial(( ${SYSINFO(numcalls)} ))- ${EXTEN})
exten => _992XXXXXXXXX,n,GotoIf($[${SYSINFO(numcalls)} > ${allcall}]?outs)
exten => _992XXXXXXXXX,n,Set(tocall=${EXTEN})

;;;;;;;----------- 1 - SERVER -----------------
exten => _992XXXXXXXXX,n,GotoIf($[ ${GROUP_COUNT(${serv1})} > ${col1} ]?next)
exten => _992XXXXXXXXX,n,Set(GROUP()=${serv1})
exten => _992XXXXXXXXX,n,Dial(IAX2/${serv1}/${EXTEN},30,t)
exten => _992XXXXXXXXX,n,NoOp(-----------${serv1}---DS-(-${DIALSTATUS})----HungCa-(${HANGUPCAUSE})---${CDR(Disposition)}-${EXTEN:8})
exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?next)
exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?next)
exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?next)
exten => _992XXXXXXXXX,n,Set(CDR(callerid)=${HANGUPCAUSE}-${DIALSTATUS})
exten => _992XXXXXXXXX,n,Hangup

;;;;;;;----------- 2 - SERVER -----------------
exten => _992XXXXXXXXX,n(next),GotoIf($[ ${GROUP_COUNT(${serv2})} > ${col2} ]?nextc)
exten => _992XXXXXXXXX,n,Set(GROUP()=${serv2})
exten => _992XXXXXXXXX,n,Set(CALLERID(num)=222-${EXTEN})
exten => _992XXXXXXXXX,n,Dial(IAX2/${serv2}/${tocall},30,t)
exten => _992XXXXXXXXX,n,NoOp(-----------${serv2}---DS-(-${DIALSTATUS})----HungCa-(${HANGUPCAUSE})---${CDR(Disposition)}-${tocall:8})
exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?nextc)
exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?nextc)
exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nextc)
exten => _992XXXXXXXXX,n,Set(CDR(callerid)=${HANGUPCAUSE}-${DIALSTATUS})
exten => _992XXXXXXXXX,n,Hangup

;;;;;;;----------- 3 - SERVER -----------------
exten => _992XXXXXXXXX,n(nextc),GotoIf($[ ${GROUP_COUNT(${serv3})} > ${col3} ]?nextd)
exten => _992XXXXXXXXX,n,Set(GROUP()=${serv3})
exten => _992XXXXXXXXX,n,Set(CALLERID(num)=333-${EXTEN})
exten => _992XXXXXXXXX,n,Dial(IAX2/${serv3}/${tocall},30,t)
exten => _992XXXXXXXXX,n,NoOp(-----------${serv3}---DS-(-${DIALSTATUS})----HungCa-(${HANGUPCAUSE})---${CDR(Disposition)}-${tocall:8})
;exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?nextd)
;exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?nextd)
;exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?nextd)
exten => _992XXXXXXXXX,n,Set(CDR(callerid)=${HANGUPCAUSE}-${DIALSTATUS})
exten => _992XXXXXXXXX,n,Hangup

;;;;;;;----------- 4 - SERVER -----------------
exten => _992XXXXXXXXX,n(nextd),GotoIf($[ ${GROUP_COUNT(${serv4})} > ${col4} ]?outt)
exten => _992XXXXXXXXX,n,Set(GROUP()=${serv4})
exten => _992XXXXXXXXX,n,Set(CDR(callerid)=444-${EXTEN})
;exten => _992XXXXXXXXX,n,ChanIsAvail(IAX2/${serv4}/1)
;exten => _992XXXXXXXXX,n,GotoIf($[${AVAILSTATUS} != 0 ]?outs)
exten => _992XXXXXXXXX,n,Dial(IAX2/${serv4}/${tocall},30,t)
exten => _992XXXXXXXXX,n,NoOp(-----------${serv4}---DS-(-${DIALSTATUS})----HungCa-(${HANGUPCAUSE})---${CDR(Disposition)}-${tocall:8})
;exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?outs)
;exten => _992XXXXXXXXX,n,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?outs)
exten => _992XXXXXXXXX,n,Set(CALLERID(num)=${HANGUPCAUSE}-${DIALSTATUS})
exten => _992XXXXXXXXX,n,Hangup

exten => _992XXXXXXXXX,n(outt),GotoIf($["${HANGUPCAUSE}" = "34"]?outs)
exten => _992XXXXXXXXX,n,Hangup

exten => _992XXXXXXXXX,n(outs),Congestion(0)

exten => i,1,Hangup(28)
exten => t,1,Hangup(19)

И к нему файл с переменными для диалплана vars.conf

allcall=39
serv1=ter1
serv2=ter2
serv3=ter3
serv4=ter4
col1=10
col2=10
col3=10
col4=10

ooh323.conf
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
[general]
port=1720
bindaddr=X.X.X.X
;gateway=no
faststart=yes
;h245tunneling=no
;mediawaitforconnect=yes
h323id=ObjSysAsterisk
e164=100
callerid=asterisk
context=default
tos=lowdelay
amaflags = default
disallow=all ;Note order of disallow/allow is important.
allow=gsm
allow=ulaw

[user1]
type=user
host=user1
context=from_user
incominglimit=80
h245Tunneling=no
disallow=all
allow=g729
accountcode=orig1
e164=100

iax.conf
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
[general]
bindport=2710
bindaddr=0.0.0.0
iaxcompat=no
nochecksums=no
delayreject=yes
srvlookup=no
language=en
bandwidth=low
disallow=all
allow=g729
;allow=g723
;jitterbuffer=no
;forcejitterbuffer=no
;maxjitterbuffer=1000
;maxjitterinterps=10
;resyncthreshold=1000
;jittertargetextra=40
trunkfreq=30
trunktimestamps=yes
trunkmtu=0
encryption=no
;iaxthreadcount = 10
;iaxmaxthreadcount = 100
;authdebug=no
tos=ef
cos=5
autokill=yes
allowfwdownload=no

[peer8]
host=peer8 ;IP прописан в /etc/hosts
port=2710
type=friend
username=***
secret=********
auth=md5
transfer=no
qualify=yes
trunk=yes
context=outcall
disallow=all
allow=g729
СИП_Дебаг (правда на другом диалплане, но суть не меняется, вот так же показывает одно в сипе, а в кодах отбоя отдаёт другое
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
---
Reliably Transmitting (no NAT) to 89.107.128.2:5060:
OPTIONS sip:89.107.128.2 SIP/2.0
Via: SIP/2.0/UDP 46.4.36.86:5060;branch=z9hG4bK12627b00;rport
Max-Forwards: 70
From: "asterisk" <sip:asterisk@46.4.36.86>;tag=as301591d1
To: <sip:89.107.128.2>
Contact: <sip:asterisk@46.4.36.86>
Call-ID: 08a4645e611a4f4f37965b8a6a52ea20@46.4.36.86
CSeq: 102 OPTIONS
User-Agent: Asterisk PBX 1.6.2.22
Date: Mon, 16 Jan 2012 14:16:16 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Content-Length: 0


---

<--- SIP read from UDP:89.107.128.2:5060 --->
SIP/2.0 501 Not Implemented
Via: SIP/2.0/UDP 46.4.36.86:5060;branch=z9hG4bK12627b00;rport
From: "asterisk" <sip:asterisk@46.4.36.86>;tag=as301591d1
To: <sip:89.107.128.2>
Call-ID: 08a4645e611a4f4f37965b8a6a52ea20@46.4.36.86
CSeq: 102 OPTIONS
Server: MERA MSIP v.1.0.2
Content-Length: 0


<------------->
--- (8 headers 0 lines) ---
Really destroying SIP dialog '08a4645e611a4f4f37965b8a6a52ea20@46.4.36.86' Method: OPTIONS
Retransmitting #2 (no NAT) to 89.107.128.2:5061:
OPTIONS sip:89.107.128.2 SIP/2.0
Via: SIP/2.0/UDP 46.4.36.86:5060;branch=z9hG4bK7b09c06b;rport
Max-Forwards: 70
From: "asterisk" <sip:asterisk@46.4.36.86>;tag=as60824de5
To: <sip:89.107.128.2>
Contact: <sip:asterisk@46.4.36.86>
Call-ID: 1d3d657701b31f8d68466f9b016eaa47@46.4.36.86
CSeq: 102 OPTIONS
User-Agent: Asterisk PBX 1.6.2.22
Date: Mon, 16 Jan 2012 14:16:15 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Content-Length: 0

Re: не продавливается Q.931 в SIP и h.323

Добавлено: 16 янв 2012, 19:39
ded
В SIP дебаге у Вас чего-то совсем не в тему - пакеты OPTIONS, на которые Мера MSIP v.1.0.2 89.107.128.2 отвечает - SIP/2.0 501 Not Implemented (не знаю что за пакеты такие).
И на схеме originate->SIP or h.323 -> Aster ->IAX2-> Aster+chan_datacard
Мера отсутствует вообще.
Кто Вам всё настраивал?

Re: не продавливается Q.931 в SIP и h.323

Добавлено: 16 янв 2012, 20:14
Vlad1983

Re: не продавливается Q.931 в SIP и h.323

Добавлено: 16 янв 2012, 20:39
Ida
ded писал(а):В SIP дебаге у Вас чего-то совсем не в тему - пакеты OPTIONS, на которые Мера MSIP v.1.0.2 89.107.128.2 отвечает - SIP/2.0 501 Not Implemented (не знаю что за пакеты такие).
И на схеме originate->SIP or h.323 -> Aster ->IAX2-> Aster+chan_datacard
Мера отсутствует вообще.
Кто Вам всё настраивал?

Мера на схеме обзывается просто как ORIGINATE так как по идее там не один сервер на нас шлёт траф, а несколько.
(И коды отбоя на все некорректно приходят)
Это один из поставщиков трафа, который (как и остальные) работает на мере.
Мы бы конечно же постарались бы спихнуть проблему на поставщика трафа, но это происходит у нас и с остальными поставщиками...., так что скорее всего проблема в наших кривых руках и не самой умной голове. (Ded! I need your help! :oops: )

SIP/2.0 501 Not Implemented - это сервисное сообщение SIPa - его аналог в Q.931 HEX_COde 0x1D 29 FACILITY_REJECTED (функциональная возможность отклонена (сетью))

Настраивали сами. Много читали... но видимо недостаточно.
Vlad1983 писал(а):https://wiki.asterisk.org/wiki/display/AST/Application_Hangup
Мм... по ссылке, предложили регнуться.
Но далее при попытке открыть эту страницу
Not Permitted

You are not permitted to perform this operation.

Re: не продавливается Q.931 в SIP и h.323

Добавлено: 16 янв 2012, 20:57
zzuz

Код: Выделить всё

Мм... по ссылке, предложили регнуться.
Но далее при попытке открыть эту страницу
Прям таки - мистика...

Re: не продавливается Q.931 в SIP и h.323

Добавлено: 16 янв 2012, 21:03
Ida
Друзья!
Прошу без флейма.
Есть у кого нибудь идеи в чем может быть затыка?

Re: не продавливается Q.931 в SIP и h.323

Добавлено: 16 янв 2012, 21:13
ded
Я так понимаю, автор желает корректно отдавать
exten => i,1,Hangup(28)
exten => t,1,Hangup(19)
то есть при неверно набранном номере - чтобы отвечать Мере Cause No. 28 - invalid number format (address incomplete)
а по таймауту, например не донабрал 1 цифру отвечать Мере Cause No. 19 - no answer from user (user alerted)

Я думаю, что уже делали дебаг, чтобы увидеть -
1. попадают ли туда звоночки?
2. отправляется ли при этом Мере то что хочется?
Даже полирнул бы для наглядности -
exten => i,1,NoOp(Invalid number dialed!)
exten => i,n,Hangup(28)
exten => t,1,(Viet-Nam, Ho-Sh-Min!)
exten => t,1,Hangup(19)
exten => _x.,1,Hangup(18) ;тут мы ставим любой код, но отбивается только лишь с 34-м
Не факт, что попадает на ваш exten => _x. Потому что в диалплане полно вот таких
exten => _992XXXXXXXXX,n,Hangup

Re: не продавливается Q.931 в SIP и h.323

Добавлено: 16 янв 2012, 21:18
Ida
Пока писал Дед уже ответил оказыца...

у нас встречаются 5 стандартных ситуаций когда нужен правильный код отбоя
1. Абонент не успел поднять трубку, и идёт отбой по неответу Q.931 Code 19 NO_ANSWER User alerting, no answer в протоколе SIP/2.0 480 Temporarily Unavailable
2. Абонент занят (и у него при этом не включена услуга "вторая линия) Q.931 Code 17 USER_BUSY в протоколе SIP/2.0 486 Busy Here
3. Вызов отклонён. Q.931 Code 21 CALL_REJECTED в протоколе SIP/2.0 403 Forbidden
4. Сервис недоступен. То есть сразу же без ALERTINGa данный звонок уходил на другой выбор. Q.931 Code 34 NORMAL_CIRCUIT_CONGESTION в протоколе SIP/2.0 503 Service Unavailable
5. Неправильно набраный номер. Он должен тоже сразу же отбрасываться. Q.931 Code 28 INVALID_NUMBER_FORMAT в протоколе SIP/2.0 484 Address Incomplete.

Полировочку запускаю. Счас посмотрим.

Деда!
Может подключишься сам и поглядишь?!
Незабесплатно конечно же...


За добро, плачу добром!
Хошь куницей, хошь бобром!

И когда найдём (а с Дедом то кто не найдёт :) ) опубликую и грабли и решение... пусть народ знает как правильно коды отбоя продавливать

НУ оОочень надо найти решение для проблемы.

Re: не продавливается Q.931 в SIP и h.323

Добавлено: 16 янв 2012, 21:45
ded
Не могу.

Re: не продавливается Q.931 в SIP и h.323

Добавлено: 16 янв 2012, 21:51
Ida
вот результат после включения полировки
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
Reliably Transmitting (no NAT) to 188.138.0.56:5060:
OPTIONS sip:188.138.0.56 SIP/2.0
Via: SIP/2.0/UDP 46.4.36.86:5060;branch=z9hG4bK6dba4579;rport
Max-Forwards: 70
From: "asterisk" <sip:asterisk@46.4.36.86>;tag=as3841fb38
To: <sip:188.138.0.56>
Contact: <sip:asterisk@46.4.36.86>
Call-ID: 4e927fb03080781e021633e74f9f1018@46.4.36.86
CSeq: 102 OPTIONS
User-Agent: Asterisk PBX 1.6.2.22
Date: Mon, 16 Jan 2012 17:50:01 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Content-Length: 0


---

<--- SIP read from UDP:188.138.0.56:5060 --->
SIP/2.0 501 Not Implemented
Via: SIP/2.0/UDP 46.4.36.86:5060;branch=z9hG4bK6dba4579;rport
From: "asterisk" <sip:asterisk@46.4.36.86>;tag=as3841fb38
To: <sip:188.138.0.56>
Call-ID: 4e927fb03080781e021633e74f9f1018@46.4.36.86
CSeq: 102 OPTIONS
Server: MERA MSIP v.1.0.2
Content-Length: 0


<------------->
--- (8 headers 0 lines) ---
Really destroying SIP dialog '4e927fb03080781e021633e74f9f1018@46.4.36.86' Method: OPTIONS

вот ответ на вопрос дяди Свича
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
tr4*CLI> core show application SIPAddHeader

-= Info about application 'SIPAddHeader' =-

[Synopsis]
Add a SIP header to the outbound call.

[Description]
Adds a header to a SIP call placed with DIAL.
Remember to use the X-header if you are adding non-standard SIP headers,
like 'X-Asterisk-Accountcode:'. Use this with care. Adding the wrong headers
may jeopardize the SIP dialog.
Always returns '0'.

[Syntax]
SIPAddHeader(Header:Content)

[Arguments]
Not available

[See Also]
Not available