Соединение нескольких * по IAX
Откуда: Уфа
Сообщений: 5856
|
Соединение нескольких * по IAX
как всегда, см. след пост
|
Откуда: Уфа
Сообщений: 5856
|
Re: Соединение нескольких * по IAX
Уважаемые мудрецы, подсобите плиз.
перечитал много чего, но не понял.
Есть три сервера с астериском, у каждого свой диалплан и пользователи.
номера пользователей первого начинаются на _50ХХ, второго на _60ХХ третьего на _70ХХ
IAX.conf каждого описываю Friend`ов с контекстом srvХХ и регистрации на других серверах.
друг на друге сервера авторизуются.
в extensions.conf:
[interconnect] ;включен в from-internal
exten => _60XX,1,Dial(IAX2/interconnect60/${EXTEN},30,r)
exten => _50XX,1,Dial(IAX2/interconnect51/${EXTEN},30,r)
include=>srv50
include=>srv60
[srv60]
exten => s,1,Dial(SIP/${EXTEN},30,r)
[srv50]
exten => s,1,Dial(SIP/${EXTEN},30,r)
но похоже что-то намудил... наверно в контекстах.
вызов не проходит, хотя в CLI пр наборе на севере 50ХХ номера из 60ХХ
== Spawn extension (macro-hangupcall, s, 3) exited non-zero on 'SIP/5022-7a7b'
-- Executing Dial("SIP/5021-b335", "IAX2/interconnect60/6002|30|r") in new stack
== Everyone is busy/congested at this time (1:0/0/1)
куда копнуть? может кто-нить сможет помочь?
|
Сообщений: 177
|
Re: Соединение нескольких * по IAX
Можно выполнить iax2 debug на двух (для начала) станциях и посмотреть что происходит. Может на приемной стороне контекст не тот (если friend). А может что и ещё
|
Откуда: Уфа
Сообщений: 5856
|
Re: Соединение нескольких * по IAX
Товарищи, объясните тогда как работет контекст на входящие звонки.
Мое видение таково:
в IAX.conf на сервере 60ХХ есть учетная запись вида:
[interconnect60]
type=friend
auth=plaintext
user=interconnect60
secret=secret
context=srv60
host=dynamic
callerid="slave"
trunk=yes
notransfer=no
по этой записи регистрируются другие сервера записью вида:
register => interconnect60:secret@192.168.1.238
так как type=friend, то по этому каналу звонки могут ходить в обе стороны.
Чтобы зарегестрированный сервер 50ХХ позвонил на 60ХХ нужно в экстенах прописать что-то типа:
[default]
exten => _60XX,1,Dial(IAX2/interconnect60/${EXTEN},30,r)
и вызовы на 60ХХ пойдут на сервер 60ХХ
В свою очередь пришедший на 60ХХ вызов куда попадет? Для него нужно определить контекст [Srv60]
А что в нем писать???? много чего перечитал, но так и не понял, помогите, чем смогете!
|
Сообщений: 25
|
Re: Соединение нескольких * по IAX
В srv60 будет искаться тот самый ${EXTEN}, то есть номер вида 60ХХ, значит в контексте srv60 должно быть что-то типа
[srv60]
exten => _60ХХ,1,Dial(SIP/${EXTEN},30,r)
|
Откуда: Уфа
Сообщений: 5856
|
Re: Соединение нескольких * по IAX
попробовал. затык где-то на звонящем сервере:
-- Registered IAX2 'interconnect50' (AUTHENTICATED) at 192.168.1.238:4569
asterisk1*CLI> -- Executing Dial("SIP/5021-5dfa", "
IAX2 Everyone is busy/congested at this time
в IAX.conf
[general]
...
register => connect50:secret@192.168.1.162
[connect60]
type=peer
auth=plaintext
user=connect60
secret=secret
context=from-internal
host=dynamic
callerid="SRV60"
trunk=yes
второй сервак настроен аналогично, т.е. они друг на друге регистрируются.
но не звонят. что за хрень?
Попутно: если кто знает как пользоваться switch => объясните плиз, или ссылу дайте, если не трудно...
спасибо заранее!
|
Сообщений: 72
|
Re: Соединение нескольких * по IAX
если я правильно понял задачу, должно быть что-то вроде:
на сервере "50":
в extensions.conf
[2local] ; контекст для звонков на локальные b-номера
exten => _50XX,1,Dial(SIP/${EXTEN} ; для локального b-номера
[2remote]
exten => _60XX,1,Dial(IAX2/connect60/${EXTEN}... ; для удаленных b-номеров
exten => _70XX,1,Dial(IAX2/connect70/${EXTEN}... ; для удаленных b-номеров
[4local] ; контекст для своих SIP-ных абон-тов
include => 2local
include => 2remote
в iax.conf
[connect60]
...
context=2local
...
[connect70]
...
context=2local
...
на прочих серверах аналогично.
|
Откуда: Уфа
Сообщений: 5856
|
Re: Соединение нескольких * по IAX
Сделал.
На сервере с номерами 50ХХ:
-- Registered IAX2 'connect50' (AUTHENTICATED) at 192.168.1.238:4569
-- Executing Dial("SIP/5022-5ce9", "IAX2/connect50/6002@ext-local|30|r") in new stack
-- Called connect50/6002@ext-local
-- Hungup 'IAX2/connect51-16384'
== Everyone is busy/congested at this time (1:0/0/1)
-- Executing Macro("SIP/5022-5ce9", "hangupcall") in new stack
-- Executing ResetCDR("SIP/5022-5ce9", "w") in new stack
-- Executing NoCDR("SIP/5022-5ce9", "") in new stack
-- Executing Wait("SIP/5022-5ce9", "5") in new stack
== Spawn extension (macro-hangupcall, s, 3) exited non-zero on 'SIP/5022-5ce9' in macro 'hangupcall'
== Spawn extension (macro-hangupcall, s, 3) exited non-zero on 'SIP/5022-5ce9'
При звонке длинные гудки, причем уже показывает -- Hungup 'IAX2/connect51-16384'
после 30 сек - короткие
что за фигня такая...
|
Сообщений: 25
|
Re: Соединение нескольких * по IAX
Уже ничего не понятно :). Регистрация обязательна? Если нет, то можно пока попробовать соединить два сервера без регистрации. Если да, то регистрироваться друг на друге зачем? Для регистрации нужен ип, и его можно прописать в настройках френда, тогда уже не надо другому серверу регаться, потому что этому уже известны и порт и ип. И так открываем http://www.voip-info.org/wiki/view/Asterisk+-+dual+servers и там всё написано.
На сервере 50.
iax.conf
register => connect50:secret@192.168.1.162
[connect60]
type=friend
auth=plaintext
user=connect50
secret=secret
context=from-internal
host=192.168.1.162
callerid="SRV50"
trunk=yes
disallow=all
allow=alaw
extensions.conf
[from-internal]
exten => _50XX,1,Dial(SIP/${EXTEN}) - локальные
exten => _60XX,1,Dial(IAX2/connect60/${EXTEN}); удаленные
На сервере 60 (то есть для которого 60ые номера локальные)
iax.conf
[connect50]
type=friend
auth=plaintext
user=connect60
secret=secret
context=from-internal
host=dynamic
callerid="SRV60"
trunk=yes
disallow=all
allow=alaw
extensions.conf
[from-internal]
exten => _60XX,1,Dial(SIP/${EXTEN}) - локальные
exten => _50XX,1,Dial(IAX2/connect50/${EXTEN}); удаленные
|
Сообщений: 72
|
Re: Соединение нескольких * по IAX
цитата:
На сервере с номерами 50ХХ:
-- Registered IAX2 'connect50' (AUTHENTICATED) at 192.168.1.238:4569
-- Executing Dial("SIP/5022-5ce9", "IAX2/connect50/6002@ext-local|30|r") in new stack
-- Called connect50/6002@ext-local
должно быть:
-- Executing Dial("SIP/5022-5ce9", "IAX2/connect50/6002|30|r") in new stack
-- Called connect50/6002
по крайней мере у меня так.
|
|