Помогите настроить SIP trunk
Настраиваю транк на voip.ms, делал по книжке, но видно чето недопонял. SIP юзеры хранятся в базе, диалплан пока пишу в extensions.conf.
в sip.conf:
[general]
context=default ; Default context for incoming calls
disallow=all
allow=ulaw
allow=alaw
allow=gsm
callevents=yes
srvlookup=yes
nat=yes
externip=XXX.XXX.XXX.XXX
localnet=0.0.0.0/255.255.255.0
localnet=XX.XXX.XXX.XXX/255.255.254.0
recordhistory=yes
allowguest=no
alwaysauthreject=yes
port=5060
bindaddr=0.0.0.0
register => XXXXXX:XXXX@XX.XXX.XXX.XX/XXXXXX
в
extensions.conf:
[general]
static=yes
writeprotect=no
clearglobalvars=no
[incoming_calls]
exten => _X.,1,NoOp()
exten => _X.,n,Dial(SIP/1001)
exten => _X.,1,NoOp()
exten => _X.,n,Dial(SIP/1002)
exten => _X.,1,NoOp()
exten => _X.,n,Dial(SIP/1003)
exten => _X.,1,NoOp()
exten => _X.,n,Dial(SIP/1004)
exten => _X.,1,NoOp()
exten => _X.,n,Dial(SIP/1005)
exten => _X.,1,NoOp()
exten => _X.,n,Dial(SIP/1006)
[outgoing_calls]
exten =>_X.,1,NoOp()
exten =>_X.,n,Dial(SIP/XX.XXX.XXX.XX/${EXTEN})
;exten => _X.,n,Dial(SIP/${EXTEN:1}@voipms,60)
exten => _X.,n,HangUp()
[internal]
exten =>1001,1,Verbose(1|Extension 1001)
exten =>1001,n,Dial(SIP/1001,30)
exten =>1001,n,Hangup()
exten =>1002,1,Verbose(1|Extension 1002)
exten =>1002,n,Dial(SIP/1002,30)
exten =>1002,n,Hangup()
exten =>1003,1,Verbose(1|Extension 1003)
exten =>1003,n,Dial(SIP/1003,30)
exten =>1003,n,Hangup()
exten =>1004,1,Dial(SIP/1004)
exten =>1005,1,Dial(SIP/1005)
exten =>1006,1,Dial(SIP/1006)
[phones]
include => internal
include => outgoing_calls
в базу засунул юзера и настройки транка:
юзер:
name = 1001
host = dynamic
nat = yes
type = friend
canreinvite = no
context = phones
dtmfmode = rfc2833
secret = XXXXXXX
username = 1001
настройки транка:
name = voipms
host = XX.XXX.XXX.XX
nat = yes
type = friend
canreinvite = no
context = outgoing-calls
dtmfmode = rfc2833
fromuser = XXXXXX
fromdomain = XX.XXX.XXX.XX
insecure = very
secret = XXXXXX
disallow = all
allow = ulaw;alaw
username = XXXXXX
В консоли астериск пишет:
[Sep 5 04:37:23] NOTICE[4506]: chan_sip.c:26710 build_peer: The 'username' field for sip peers has been deprecated in favor of the term 'defaultuser'
== Using SIP RTP CoS mark 5
-- Executing [00380XXXXXXXXX@phones:1] NoOp("SIP/1001-00000000", "") in new stack
-- Executing [00380XXXXXXXXX@phones:2] Dial("SIP/1001-00000000", "SIP/XX.XXX.XXX.XX/00380XXXXXXXXX") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/78.129.153.20/00380XXXXXXXXX
[Sep 5 04:37:24] NOTICE[4506]: chan_sip.c:19638 handle_response_invite: Failed to authenticate on INVITE to '"1001" ;tag=as37d1212c'
-- SIP/XX.XXX.XXX.XX-00000001 is circuit-busy
== Everyone is busy/congested at this time (1:0/1/0)
-- Executing [00380XXXXXXXXX@phones:3] Hangup("SIP/1001-00000000", "") in new stack
== Spawn extension (phones, 00380XXXXXXXXX, 3) exited non-zero on 'SIP/1001-00000000'
[Sep 5 04:38:54] NOTICE[4506]: chan_sip.c:24093 handle_request_subscribe: Received SIP subscribe for peer without mailbox: 1001
sip show reistry показывает, что транк зарегистрировался.
Подскажите пожалуйста, не понимаю в чем проблема...
Last edited by tor.zntu on Mon Sep 05, 2011 12:43
А что у вас в качестве клиента 1001, СИП-телефон или софтофон ? Он судя по всему не может у вас зарегистрироваться на Астериске ( мало ли символ не тот в пароле вбили ?). Я бы проверил просто: сделал простой цифровой пароль, типа 3434 и проверил регистрацию номера заново...
_________________
Продам виртуальную АТС. Желающим 5% скидка...
exten => _X.,1,NoOp()
exten => _X.,n,Dial(SIP/voipms/${EXTEN})
exten => _X.,n,HangUp()
Перенес настройки транка в sip.conf и поменял контекст outgoing_calls.
в sip.conf:
[voipms]
username=XXXXXXX
type=friend
secret=XXXXXXX
qualify=yes
nat=yes
insecure=very
host=XX.XXX.XXX.XX
fromuser=XXXXXXX
fromdomain=XX.XXX.XXX.XX
dtmfmode=rfc2833
disallow=all
conext=default
canreinvite=no
allow=ulaw
allow=alaw
в extensions.conf
[outgoing_calls]
exten =>_X.,1,NoOp()
exten =>_X.,n,Dial(SIP/voipms/${EXTEN})
exten => _X.,n,HangUp()
Все заработало
-- Executing [00380XXXXXXXXX@phones:2] Dial("SIP/1001-00000000", "SIP/voipms/00380XXXXXXXXX") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/voipms/00380XXXXXXXXX
[Sep 5 07:07:09] NOTICE[5292]: chan_sip.c:19638 handle_response_invite: Failed to authenticate on INVITE to '"1001" ;tag=as1c16a6d4'
-- SIP/voipms-00000001 is circuit-busy
== Everyone is busy/congested at this time (1:0/1/0)
Теперь звонки через транк проходят, но при разговоре иногда глотаются окончания слов, это можно как-то улучшить?
| Code: |
| [incoming_calls] exten => _X.,1,NoOp() exten => _X.,n,Dial(SIP/1001) exten => _X.,1,NoOp() exten => _X.,n,Dial(SIP/1002) exten => _X.,1,NoOp() exten => _X.,n,Dial(SIP/1003) exten => _X.,1,NoOp() exten => _X.,n,Dial(SIP/1004) exten => _X.,1,NoOp() exten => _X.,n,Dial(SIP/1005) exten => _X.,1,NoOp() exten => _X.,n,Dial(SIP/1006) |
Получается несколько первых приоритетов для одного экстеншена в одном контексте. Если у вас есть желание сделать перебор номеров (один недоступен - звоним на следующий), то правильно было бы сделать так (не заморачиваемся на очередях и доступностях каналов):
| Code: |
| [incoming_calls] exten => _X.,1,NoOp() same => n,Answer() same => n,Dial(SIP/1001,15) same => n,Dial(SIP/1002,15) same => n,Dial(SIP/1003,15) same => n,Dial(SIP/1004,15) same => n,Dial(SIP/1005,15) same => n,Dial(SIP/1006,30) same => n,Hangup() |
Хотя я не очень представляю себе ситуацию, когда могут не ответить сразу пять телефонов. Но это уже ваши заморочки.