Здравствуйте.
Реализуется связка asterisk libss7 c SIP. Телефоны Grandstream GXV3005. При попытках звонка на занятый разговором номер возвращается код (34). По требованию АТС необходимо возвращать код (17).
[1] Len = 16 [ 95 96 0d c5 8b 03 25 20 02 00 0c 02 00 02 83 a2 ]
[1] FSN: 22 FIB 1
[1] BSN: 21 BIB 1
[1] <[0] MSU
[1] [ 95 96 0d ]
[1] Network Indicator: 3 Priority: 0 User Part: ISUP (5)
[1] [ c5 ]
[1] OPC 148 DPC 907 SLS 2
[1] [ 8b 03 25 20 ]
[1] CIC: 2
[1] [ 02 00 ]
[1] Message Type: REL
[1] [ 0c ]
[1] --VARIABLE LENGTH PARMS[1]--
[1] Cause Indicator:
[1] Coding Standard: 0
[1] Location: 3
[1] Cause Class: 2
[1] Cause Subclass: 2
[1] Cause: No circuit/channel available (34)
[1] [ 02 83 a2 ]
Чем можно установить статус звонка, или еще каким способом заставить asterisk отдать правильную сигнализацю?
Спасибо.
as20# dahdi_cfg -vv
DAHDI Tools Version - 2.4.0-rc1
DAHDI Version: 2.4.0-rc5
Echo Canceller(s): MG2
as20*CLI> core show version
Asterisk 1.8.3
as20*CLI> ss7 show version
libss7 version: SVN-branch-1.0-r289M
as20# less ./system.conf
span = 1,0,0,ccs,hdb3
bchan = 1-15,17-31
mtp2 = 16
echocanceller = mg2,1-15,17-31
loadzone = ru
defaultzone = ru
as20# less ./chan_dahdi.conf
[trunkgroups]
[channels]
language = ru
usecallerid = yes
echocancel = yes
echocancelwhenbridged = yes
relaxdtmf = yes
rxgain = 0.0
txgain = 0.0
callwaiting = no
allow = all
group = 1
signalling = ss7
ss7type = itu
ss7_explictacm = yes
ss7_autoacm = yes
ss7_internationalprefix = 810
ss7_nationalprefix = 8
ss7_subscriberprefix = 473
ss7_called_nai = subscriber
ss7_calling_nai = national
linkset = 1
busydetect = yes
context = phones
pointcode = 907
adjpointcode = 148
defaultdpc = 148
cicbeginswith = 1
networkindicator = national_spare
sigchan = 16
channel = 1-15
cicbeginwith = 17
channel=17-31
[phones](!)
echocancel = yes
callgroup = 1
pickupgroup = 1
threewaycalling = no
transfer = yes
context = phones
faxdetect = incoming
[2000000](phones)
dahdichan = 1-15
group = 1
callerid = 4732000000
[2000001](phones)
dahdichan = 1-15
group = 1
callerid = 4732000001
as20# less ./sip.conf
[general]
bindport = 5060 ; UDP Port to bind to (SIP standard port for unencrypted UDP
bindaddr = 0.0.0.0
allowguest = no
videosupport = yes
tos_sip=cs3
tos_audio=ef
cos_sip=3
cos_audio=5
[4732000000]
secret =
type = friend
host = dynamic
context = sip
disallow = all
allow = alaw
canreinvite = no
relaxdtmf=yes
dtmfmode = rfc2833
dtmf = rfc2833
nat = yes
qualify = yes
call-limit = 1
callcounter=yes
[4732000001]
secret =
type = friend
host = dynamic
context = sip
disallow = all
allow = alaw
canreinvite = no
relaxdtmf=yes
dtmfmode = rfc2833
dtmf = rfc2833
nat = yes
qualify = yes
call-limit = 1
callcounter=yes
as20# less ./extensions.conf
[general]
[phones]
exten => _X.,1,Dial(DAHDI/g1/${EXTEN})
exten => _X.,n,Hangup
exten => _XXXXXXXXXXX,1,Dial(DAHDI/g1/${EXTEN:1})
exten => _XXXXXXXXXXX,n,Hangup
exten => 4732000000,1,Dial(SIP/4732000000)
exten => 4732000000,n,Hangup
[sip]
exten => _X.,1,Dial(DAHDI/g1/${EXTEN})
exten => _X.,n,Hangup
exten => _XXXXXXXXXXX,1,Dial(DAHDI/g1/${EXTEN:1})
exten => _XXXXXXXXXXX,n,Hangup
Решилось установкой busylevel=1. call-limit несмотря на объявление последнего как устаревшего, всеравно работет. При попытке вызова из диалплана SIP/4732000000, при снятой трубке отдается BUSY. К сожалению проверить что в это время идет по ОКСу сейчас возможности нет, но скорее всего решение правильно.
Тему можно закрыть
[4732000000]
secret =
type = friend
host = dynamic
context = sip
disallow = all
allow = alaw
canreinvite = no
relaxdtmf=yes
dtmfmode = rfc2833
dtmf = rfc2833
nat = yes
qualify = yes
busylevel=1 ; Signal busy at 1 or more calls
call-limit = 1
Действительно. Не отдается.
;call-limit=1 ; permit only 1 outgoing call and 1 incoming call at a time
; from the phone to asterisk (deprecated)
; 1 for the explicit peer, 1 for the explicit user,
; remember that a friend equals 1 peer and 1 user in
; memory
; There is no combined call counter for a "friend"
; so there's currently no way in sip.conf to limit
; to one inbound or outbound call per phone. Use
; the group counters in the dial plan for that.
Можно просто наверное в случае занятости телефона ветвлением в диалплане на BUSY прямо указать в HangUp(17).
а при занятом телефоне по sip BUSY отдается?
sip set debug on
Задан: 2011-03-15 10:44:42 +0400
Просмотрен: 1,671 раз
Обновлен: Mar 16 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.