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

Возможна ли переадресации в одном sip транке?

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

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

zebox
Сообщения: 8
Зарегистрирован: 15 апр 2015, 19:04

Возможна ли переадресации в одном sip транке?

Сообщение zebox »

Всем привет!
Подскажите пожалуйста, возможна ли переадресация в одном sip транке?
Т.е. есть ...
Имеется Asterisk 12+FreePBX12. На нем настроен sip транк Zadarma. Входящие и исходящие ходят нормально. Но есть задача, нужно осуществить переадресацию звонка (пытаюсь через follow me) поступающего в этот sip транк на мобильный через этот же транк.

[Входящий]--[sip-trunk-1]-{Asterisk переадресация}-[sip-trunk-1]--[мой мобильный номер]

Сама переадресация срабатывает, но голоса нет в обоих направлениях. Rtp debug показывает полное отсутствие трафика, в tcpdump тоже пусто. Все настройки в части nat перепробовал. Судя по всему проблема в "заворачивании" трафика sdp в один и тот же канал. Но куда копать не пойму. Подскажите плиз.((
april22
Сообщения: 2187
Зарегистрирован: 09 июл 2012, 09:47

Re: Возможна ли переадресации в одном sip транке?

Сообщение april22 »

Directmedia =???
Своими вопросами , вы загоняете меня в ГУГЛЬ.
zebox
Сообщения: 8
Зарегистрирован: 15 апр 2015, 19:04

Re: Возможна ли переадресации в одном sip транке?

Сообщение zebox »

На sip транке
directmedia=no

Rtp трафик отсутствует только при такой схеме переадресации. Если я переадресоваю через другой (но там невыгодный тариф) транк или fxo шлю или вообще не переадресоваю, то трафик есть и голос в обе стороны. Но нужно сделать через тот же sip транк в который пришел вызов.
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Возможна ли переадресации в одном sip транке?

Сообщение ded »

canreinvite=no присутствеут на sip-trunk-1?
Схема
[Входящий]--[sip-trunk-zadarma]-{Asterisk переадресация}-[sip-trunk-zadarma]--[мобильный номер]
вполне должна работать (если только zadarma вас не ограничивает по количеству одновременных каналов), Можно рассмотреть внимательно Invite - что предлагается с RTP и что отвечает на него.

Кроме того можно попробовать как пройдёт вызов по альтернативной схеме:
[Входящий]--[sip-trunk-dorogo]-{Asterisk переадресация}-[sip-trunk-dorogo]--[мобильный номер]
yur4ik
Сообщения: 97
Зарегистрирован: 18 фев 2013, 16:56
Откуда: Израиль , Тель-Авив

Re: Возможна ли переадресации в одном sip транке?

Сообщение yur4ik »

Была подобная ситуация , только с другим SIP провайдером , проблему решил не стандартным способом . Скачал звуковой файл обычного телефонного гудка , создал новый MOH с этим файлом и вот когда делал Follow Me на мобильный , то в настройках Play Music On Hold? выбирал этот новый MOH , тем самым при переводе "звучал" фальшивый звонок тем самым "запуская" RTP канал .
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Возможна ли переадресации в одном sip транке?

Сообщение ded »

А надо было просто добавлять шаг Answer.
zebox
Сообщения: 8
Зарегистрирован: 15 апр 2015, 19:04

Re: Возможна ли переадресации в одном sip транке?

Сообщение zebox »

Инвайт смогу отдебажить чуть позже... А вот по поводу Answer немного не понял... Можно пояснить плиз?
zebox
Сообщения: 8
Зарегистрирован: 15 апр 2015, 19:04

Re: Возможна ли переадресации в одном sip транке?

Сообщение zebox »

Т.е. отредактировать вручную запись в extension.conf?
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Возможна ли переадресации в одном sip транке?

Сообщение ded »

У Вас FreePBX12.
Не знаю как Вы настроили входящий контекст для sip транка zadarma и как сделана Asterisk переадресация на мобильный номер. Какие советы Вам можно давать с такими X & Y? Вам бы очень помог просмотр прохождения этого вызова в CLI.
Давайте вместе книгу о будущем телефонии почитаем?
zebox
Сообщения: 8
Зарегистрирован: 15 апр 2015, 19:04

Re: Возможна ли переадресации в одном sip транке?

Сообщение zebox »

Да, в качестве GUI - FreePBX12.
Вот записи extenstion_additional.conf отвечающие за входящий и переадресацию.

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

[ext-did-0002]
include => ext-did-0002-custom
exten => fax,1,Goto(${CUT(FAX_DEST,^,1)},${CUT(FAX_DEST,^,2)},${CUT(FAX_DEST,^,3)})

exten => 123456,1,Set(__DIRECTION=INBOUND)
exten => 123456,n,Gosub(sub-record-check,s,1(in,${EXTEN},dontcare))
exten => 123456,n,Gosub(app-blacklist-check,s,1())
exten => 123456,n,Set(__FROM_DID=${EXTEN})
exten => 123456,n,Set(CDR(did)=${FROM_DID})
exten => 123456,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)}))
exten => 123456,n,Set(CHANNEL(musicclass)=default)
exten => 123456,n,Set(__MOHCLASS=default)
exten => 123456,n,GotoIf($["${__REVERSAL_REJECT}"="TRUE" & "${CHANNEL(reversecharge)}"="1" ]?macro-hangupcall)
exten =>123456,n,Set(__CALLINGPRES_SV=${CALLERPRES()})
exten => 123456,n,Set(CALLERPRES()=allowed_not_screened)
exten => 123456,n(dest-ext),Goto(from-did-direct,101,1)
;--== end of [ext-did-0002] ==--;

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

[ext-trunk]
include => ext-trunk-custom
exten => 1,1,Set(TDIAL_STRING=DAHDI/g0)
exten => 1,n,Set(DIAL_TRUNK=1)
exten => 1,n,Goto(ext-trunk,tdial,1)

exten => 2,1,Set(TDIAL_STRING=SIP/123456-zadarma)
exten => 2,n,Set(DIAL_TRUNK=2)
exten => 2,n,Goto(ext-trunk,tdial,1)

exten => tdial,1,Set(OUTBOUND_GROUP=OUT_${DIAL_TRUNK})
exten => tdial,n,GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}" = ""]?nomax)
exten => tdial,n,GotoIf($[${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}}]?hangit)
exten => tdial,n(nomax),ExecIf($["${CALLINGPRES_SV}" != ""]?Set(CALLERPRES()=${CALLINGPRES_SV}))
exten => tdial,n,Set(DIAL_NUMBER=${FROM_DID})
exten => tdial,n,GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1())
exten => tdial,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER})
exten => tdial,n,Set(DIAL_TRUNK_OPTIONS=${IF($["${DB_EXISTS(TRUNK/${DIAL_TRUNK}/dialopts)}" = "1"]?${DB_RESULT}:${TRUNK_OPTIONS})})
exten => tdial,n,Dial(${TDIAL_STRING}/${OUTNUM}${TDIAL_SUFFIX},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS})
exten => tdial,n,Set(CALLERID(number)=${CALLERID(number):0:40})
exten => tdial,n,Set(CALLERID(name)=${CALLERID(name):0:40})
exten => tdial,n(hangit),Hangup

;--== end of [ext-trunk] ==--;

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

[from-trunk-sip-123456-zadarma]
include => from- trunk-sip-123456-zadarma-custom
exten => _.,1,Set(GROUP()=OUT_2)
exten => _.,n,Goto(from-trunk,${EXTEN},1)

;--== end of [from-trunk-sip-123456-zadarma] ==--;
FollowME

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


exten => FM101,1,Goto(101,FM101)

exten => 101,1,GotoIf($[ "${DB(AMPUSER/101/followme/ddial)}" = "EXTENSION" ]?ext-local,101,1)
exten => 101,n(FM101),Macro(user-callerid,)
exten => 101,n,Set(DIAL_OPTIONS=${DIAL_OPTIONS}I)
exten => 101,n,Set(CONNECTEDLINE(num,i)=101)
exten => 101,n,Gosub(sub-presencestate-display,s,1(101))
exten => 101,n,Set(CONNECTEDLINE(name)=${DB(AMPUSER/101/cidname)}${PRESENCESTATE_DISPLAY})
exten => 101,n,Set(FM_DIALSTATUS=${EXTENSION_STATE(101@ext-local)})
exten => 101,n,Set(__EXTTOCALL=${EXTEN})
exten => 101,n,Set(__PICKUPMARK=${EXTEN})
exten => 101,n,Macro(blkvm-setifempty,)
exten => 101,n,GotoIf($["${GOSUB_RETVAL}" = "TRUE"]?skipov)
exten => 101,n,Macro(blkvm-set,reset)
exten => 101,n,Set(__NODEST=)
exten => 101,n(skipov),Set(RRNODEST=${NODEST})
exten => 101,n(skipvmblk),Set(__NODEST=${EXTEN})
exten => 101,n,GosubIf($[${DB_EXISTS(AMPUSER/101/followme/changecid)} = 1 & "${DB(AMPUSER/101/followme/changecid)}" != "default" & "${DB(AMPUSER/101/followme/changecid)}" != ""]?sub-fmsetci$
exten => 101,n,Set(RecordMethod=Group)
exten => 101,n(checkrecord),Gosub(sub-record-check,s,1(exten,101,))
exten => 101,n,GotoIf($[$[ "${DB(AMPUSER/101/followme/prering)}" = "0" ] | $[ "${DB(AMPUSER/101/followme/prering)}" = "" ]] ?skipsimple)
exten => 101,n,Macro(simple-dial,101,${DB(AMPUSER/101/followme/prering)})
exten => 101,n(skipsimple),Set(RingGroupMethod=firstavailable)
exten => 101,n,Set(_FMGRP=101)
exten => 101,n(DIALGRP),GotoIf($[("${DB(AMPUSER/101/followme/grpconf)}"="ENABLED") | ("${FORCE_CONFIRM}"!="") ]?doconfirm)
exten => 101,n,Macro(dial,${DB(AMPUSER/101/followme/grptime)},${DIAL_OPTIONS},${DB(AMPUSER/101/followme/grplist)})
exten => 101,n,Goto(nextstep)
exten => 101,n(doconfirm),Macro(dial-confirm,${DB(AMPUSER/101/followme/grptime)},${DIAL_OPTIONS},${DB(AMPUSER/101/followme/grplist)},101)
exten => 101,n(nextstep),Set(RingGroupMethod=)
exten => 101,n,GotoIf($["foo${RRNODEST}" != "foo"]?nodest)
exten => 101,n,Set(__NODEST=)
Куда именно нужно вставить шаг с Answer???
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH