AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Не работает сервисный код безусловной переадресации

Newbies/FAQ Forum 14 сообщений -
#1

Коллеги!
Что-то у меня совсем уже лыжи не едут...
ВООБЩЕ никак не эрегирует астериск на *72
хорошо, написал диалплан:
exten => *72,1,Answer
exten => *72,2,Wait(1)
exten => *72,n,BackGround(ent-target-attendant)
exten => *72,n,Read(toext,then-press-pound)
exten => *72,n,Wait(1)
exten => *72,n,Set(DB(CFIM/${CALLERID(num)})=${toext})
exten => *72,n,Playback(call-fwd-unconditional&for&extension)
;exten => *72,n,SayDigits(${fromext})
exten => *72,n,SayDigits(${CALLERID(num)})
exten => *72,n,Playback(is-set-to)
exten => *72,n,SayDigits(${toext})
exten => *72,n,Wait(1)
exten => *72,n,hangup

Позвонил, ввел номер переадресации.

rasterisk -x 'database show'|grep -r "^/CF"
/CFIM/121 : 989035565741

Звоню на 121 и нифига, аппарат звонит, как ни в чем не бывало и не думает даже переадрессовывать... Mad
Может, в консерватории что поменять? Shocked
Версия 1.8.17 из исходников. Единственное, что еще осталось проверить - не стояла галка при компилляции на mgcp. Перекомпилил, но перегружать астер пока не могу, а ручками модуль не подгружается, ругается:
odule chan_mgcp.so
Command 'module load chan_mgcp.so' failed.
[Oct 22 15:59:05] WARNING[4902]: loader.c:792 inspect_module: Module 'chan_mgcp.so' was not compiled with the same compile-time options as this version of Asterisk.
[Oct 22 15:59:05] WARNING[4902]: loader.c:793 inspect_module: Module 'chan_mgcp.so' will not be initialized as it may cause instability.
[Oct 22 15:59:05] WARNING[4902]: loader.c:876 load_resource: Module 'chan_mgcp.so' could not be loaded.
Правда, я совсем не уверен, что он нужен. Никогда не настраивал безусловную переадресацию.
#2

2_Alting

А можете привести пример екстеншена со звонком?
Какие проверки делаете? У меня не совсем через *72, но все равно работает корректно.

_________________
Мы всегда можем уметь...
#3

nikto @ Чт Окт 25, 2012 08:09 писал(а):
2_Alting

А можете привести пример екстеншена со звонком?
Какие проверки делаете? У меня не совсем через *72, но все равно работает корректно.


Наверное, я неправильно делаю проверку.
exten => _1Х.,1,Set(REDIRECTNUM=${DB(REDIRECT/${EXTEN})})
и всегда выдает пустое значение, исходя из этого вызов идет на "локальный" контекст, а не на "городской" вызов.

А как у Вас реализовано? Поделитесь?

P.S. Разобрался, АшиПка была в орфографии.
Осталось определять не только переменную, а сколько в ней символов - если три, значит переадресация на внутренний номер выставлена, если больше - на городской, мобильный и т.п.
Поможет кто справится?
#4

2_Alting

Я видимо, запутался где то, но если Вы делаете Set(DB(CFIM/${CALLERID(num)})=${toext}) то как это Вы извлекаете ${DB(REDIRECT/${EXTEN})} ? Это как минимум странно о_0 (еще больше странно что Вы ожидаете что то получить)
А делаю я как в примерах, посылая звонок в канал Local тыц по Example 5

_________________
Мы всегда можем уметь...
#5

nikto @ Чт Окт 25, 2012 14:36 писал(а):
2_Alting

Я видимо, запутался где то, но если Вы делаете Set(DB(CFIM/${CALLERID(num)})=${toext}) то как это Вы извлекаете ${DB(REDIRECT/${EXTEN})} ? Это как минимум странно о_0 (еще больше странно что Вы ожидаете что то получить)
А делаю я как в примерах, посылая звонок в канал Local тыц по Example 5


Да-да-да. Надергал из разных примеров и получился такой винегрет Embarassed
За пример отдельное спасибо!
Вот теперь думаю... Все же, как отследить, куда редиректить... Если просто тупо сравнить номер редиректа с XXX, получится, или нет... Shocked
#6

2_Alting

Не совсем понял что Вы имели в виду? Что значить куда?
Можете более подробно объяснить?

_________________
Мы всегда можем уметь...
#7

Ну, в качестве редиректа, может быть установлен как внутренний номер из диалплана, так и внешний.
К примеру, надо понять, сколько символов в переменной и начинаются ли они на 1.
Если их три и начинаются на 1 - значит, в качестве номера переадресации указан внутренний номер и тогда дозвон должен идти через контекст [local]
если нет - через [outgoing] .
А у меня пока-что просто проверяется, что переменная переадресации непустая и все вызовы уходят на [outgoing]
Но теоретически же есть вероятность, что сотрудник ушел в отпуск и перевел все звонки на коллегу.
#8

Сделайте специальный контекст
Код:
[cwfd]
include => local
include => outgoing


и в случе если переадресаци установлена делайте Goto в этот контекст. А там уж сам астер разберется Smile
#9

2_Alting

Все верно xelas сказал, у меня это не совсем так (я возвращаю в свой же оффисный контекст, хотя мысль хорошая, надо подумать над спец контекстом), я использую возврат на основной контекст [office-calls] в который включены два контекста [office-num] и [outgoing-call]
Таким образом..

[office-calls]
include => office-num
include => outgoing-call

Я так понимаю что Вы не совсем понимаете, что происходит, еще раз внимательно прочтите. Основная мысль, что Ваш вызов будет перенаправлен в нужный Вам же контекст(указанный Вами), где он будет обработан самим * по стандартным шаблонам но с уже измененным номером из базы.

_________________
Мы всегда можем уметь...
#10

Да, вы оба правы. И я совсем потерялся в пространстве и во времени...
Никак не соображу, что писать в GoTo, если нужно Goto(context,extension,priority)
А мне ведь нужно только Goto(context) Shocked

И потом, у меня тоже есть офисный контекст, куда включены и local и otgoing... И он дефолтный для юзеров..
И получается тогда, что в любом случае при редиректе надо делать переход в этот контекст? Shocked
И куда звонок пойдет? на $EXTEN же... По кругу...
Или надо Set(EXTEN=${REDIRECTNUM}) Question
#11

Предположим, что вы получили номер, на который надо переадресовать в переменную REDIRNUM, тогда

Код:
Goto(cfwd,${REDIRNUM},1)


Я думаю, что не стоит отдельно пояснять, почему содержимое ${REDIRNUM}, должно быть в таком формате, что оно подошло под ваши шаблоны в контекстах local и outgoing
#12

Нет, не стоит Smile
Я в общем-то уже почти допилил...
И локал и ауигоинг нормально отрабатывается.
Осталось понять, почему не отрабатывается IAX2 (чтобы уж совсем невероятное - сотрудник уехал в филиал на недельку и перевел вызовы на филиальный внутренний) и будет все в шоколаде Smile
Все разобрался.

СПАСИБО ВСЕМ ОГРОМНОЕ ЗА ПОМОЩЬ!


Последний раз редактировалось: Alting (Пт Окт 26, 2012 09:45)
#13

2_Alting

Да, Вы немного подустали к пятнице =)
Я делаю не так как xelas

>>И куда звонок пойдет? на $EXTEN же... По кругу...

Да по кругу, но уже не на номер который набрали на телефоне, а на номер который был в базе переадресаций.
Пример, есть номера 100,105,110, 89012223344
К примеру я звоню с 100 на 105, на 105 переадресация на 110, на 110 переадресация 89012223344.
И так, мы звоним, на 105, астер попадает на GotoIf и проверяет, есть переадресация? Есть и переходим на s-CFIM, там делаем dial и там говорим, мол звонить надо на CFIM_num.
Астер видит что мы перенаправляем его на office-calls но номер то уже новый не 105 а 110! И звоним мы уже на ного через контекст local на внутренние номера.
Опять попадаем на GotoIf, астер видит переадресацию но уже на 89012223344 и опять идет office-calls и там, переходит не на local контекст, а на otgoing и звонит на 89012223344



Код:

exten => s,1,NoOp( -> dial_office_num_!)
same => n,Set(CFIM_num=${DB(CFIM/${ARG1})})
same => n,GotoIf($["${CFIM_num}" != ""]?s-CFIM,1:s-NOCFIM,1)

exten => s-CFIM,1,NoOp()
same => n,Dial(Local/${CFIM_num}@office-calls/n,120,Ttrog) ; Тут мы возвращаемся обратно в office-calls звоним на номер из базы.
same => n,GoTo(s-${DIALSTATUS},1)

exten => s-NOCFIM,1,NoOp()
same => n,Dial(SIP/${ARG1},120,Ttrog)
same => n,GoTo(s-${DIALSTATUS},1)


exten => s-CONGESTION,1,NoOp(CONGESTION)
same => n(exit-s-),MacroExit()

exten => s-NOANSWER,1,NoOp(NOANSWER)
same => n(exit-s-),MacroExit()

exten => s-ANSWER,1,NoOp(ANSWER)
same => n(exit-s-),MacroExit()

exten => s-CANCEL,1,Set(dial_time=${DIALEDTIME})
same => n(exit-s-),MacroExit()

exten => s-HANGUP,1,NoOp(HANGUP)
same => n(exit-s-),MacroExit()

exten => s-CHANUNAVAIL,1,NoOp(CHANUNAVAIL)
same => n(exit-s-),MacroExit()

_________________
Мы всегда можем уметь...
#14

nikto @ Пт Окт 26, 2012 09:39 писал(а):
2_Alting

Да, Вы немного подустали к пятнице =)


Да, Вы правы, пора в отпуск. Я немного подустал по-жизни Smile Иногда как заклинит, и бьюсь как муха об стекло, когда в метре открытое окно.
А потом удивляюсь - "да вот же! Умные люди подсказали изящное решение, как я мог, такой тупой, сам не дотумкать!" Laughing