VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

IAX и трансфер.

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
HolyBoy
Сообщения: 4
Зарегистрирован: 23 фев 2012, 15:49

IAX и трансфер.

Сообщение HolyBoy »

Имеется 3 сервера, между собой связаны по IAX:

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

[general]
delayreject=yes
language=ru
bandwidth=high
disallow=all                    ; same as bandwidth=high
allow=alaw
jitterbuffer=yes
forcejitterbuffer=yes
autokill=yes
transfer=yes            ; Disable IAX native transfer
[ours](!)
    type=peer
    trunk=yes
    qualify=yes                 ; Make sure this peer is alive
[serv1]
    type=user
    permit=0.0.0.0/0.0.0.0
    secret=345
    context=incoming1
[serv1](ours)
    host=192.168.1.1
    username=serv1
    secret=123
[serv3](ours)
    host=192.168.1.3
    username=serv3
    secret=456
У остальных похожий конфиг, отличаются только идентифицирующие данные.

Телефоны соединяются с серверами через SIP, canreinvite=no везде, nat — тоже.

В диалплане у всех вот так:

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

[officecall]

exten = s,1,Dial(${ARG1},15,tTm)
same= n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)
; реакции-заглушки, реально, тут может быть что-то ещё.
same= n(busy),Background(busy-pls-hold)
same= n,Return()
same= n(unavail),Background(unavailable)
same= n,Return()

[incoming1]

exten = _2XX,1,Gosub(officecall,s,1(SIP/${EXTEN}))
same= n,Hangup()

[tester]

include=incoming1

exten = _1XX,1,Gosub(officecall,s,1(IAX2/serv1/${EXTEN}))
same= n,Hangup()

exten = _3XX,1,Gosub(officecall,s,1(IAX2/serv3/${EXTEN}))
same= n,Hangup()
Соответственно, приведённый диалплан на остальных серверах изменён схожим образом так, что с каждого сервера на каждый можно совершить прямой звонок.

Интересует следующая проблема: почему-то, при совершении трансфера на другой сервер, «лишние» соединения не разрывается так, как написано, например, тут ( http://www.voip-info.org/wiki/view/Aste ... media+path ), несмотря на опцию transfer=yes на всех серверах.

С клиента на одном сервере вызываю клиента на другом, а затем, после установления соединения, с этого, второго клиента, перевожу первого на третьего, показан момент совершения перевода:

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

-- Executing [101@tester:1] Gosub("IAX2/serv2-300", "officecall,s,1(IAX2/serv1/101)") in new stack
    -- Executing [s@officecall:1] Dial("IAX2/serv2-300", "IAX2/serv1/101,15,tTm") in new stack
    -- Called IAX2/serv1/101
    -- Started music on hold, class 'default', on IAX2/workmega-300
    -- Call accepted by 192.168.1.1 (format alaw)
    -- Format for call is alaw
    -- IAX2/serv1-18934 is making progress passing it to IAX2/serv2-300
    -- IAX2/serv2-300 requested special control 20, passing it to IAX2/serv1-18934
    -- IAX2/serv2-300 requested special control 20, passing it to IAX2/serv1-18934
    -- IAX2/serv2-300 requested special control 20, passing it to IAX2/serv1-18934
    -- IAX2/serv2-300 requested special control 20, passing it to IAX2/serv1-18934
    -- IAX2/serv1-18934 answered IAX2/serv2-300
    -- Stopped music on hold on IAX2/serv2-300
    -- Channel 'IAX2/serv2-300' ready to transfer
    -- Channel 'IAX2/serv1-18934' ready to transfer
    -- Channel 'IAX2/serv2-300' unable to transfer
    -- Channel 'IAX2/serv2-300' unable to transfer
    -- Hungup 'IAX2/serv1-18934'
Ну и iax2 show channels показывает на serv2 два канала, вместо нуля. Как добиться от * того, что хочется? В интернетиках довольно мало на эту тему информации.

Разве что, есть такое:
You can set transfer to yes, no, or mediaonly. If set to yes, Asterisk will transfer the call away from itself if it can, in order to make the packet path shorter between the two endpoints. (This obviously won’t work if Asterisk needs to transcode or translate between protocols, or if network conditions don’t allow the two endpoints to talk directly to each other.) If it is set to no, Asterisk will not try to transfer the call away from itself.

If set to mediaonly, Asterisk will attempt to transfer the media stream so that it goes directly between the two endpoints, but the call signaling (call setup and teardown messages) will still go through Asterisk. This is useful because it ensures that call detail records are still accurate, even though the media is no longer flowing through the Asterisk box.
© http://astbook.asteriskdocs.org/en/2nd_ ... ECT-1.html

Тогда вопрос: можно ли как-то определить, срабатывает ли mediaonly в моём случае? Ведь как написано, из сообщений понять не удастся. Мерить скорость?
Последний раз редактировалось HolyBoy 11 апр 2012, 17:12, всего редактировалось 1 раз.
Аватара пользователя
Aven
Сообщения: 798
Зарегистрирован: 28 янв 2011, 16:20

Re: IAX и трансфер.

Сообщение Aven »

IAX не нужен.
Решения телефонии на базе Asterisk || http://it-need.ru
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH