Что-то у меня совсем уже лыжи не едут...
ВООБЩЕ никак не эрегирует астериск на *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 и нифига, аппарат звонит, как ни в чем не бывало и не думает даже переадрессовывать...
Может, в консерватории что поменять?
Версия 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.
Правда, я совсем не уверен, что он нужен. Никогда не настраивал безусловную переадресацию.
А можете привести пример екстеншена со звонком?
Какие проверки делаете? У меня не совсем через *72, но все равно работает корректно.
_________________
Мы всегда можем уметь...
| nikto @ Чт Окт 25, 2012 08:09 писал(а): |
| 2_Alting А можете привести пример екстеншена со звонком? Какие проверки делаете? У меня не совсем через *72, но все равно работает корректно. |
Наверное, я неправильно делаю проверку.
exten => _1Х.,1,Set(REDIRECTNUM=${DB(REDIRECT/${EXTEN})})
и всегда выдает пустое значение, исходя из этого вызов идет на "локальный" контекст, а не на "городской" вызов.
А как у Вас реализовано? Поделитесь?
P.S. Разобрался, АшиПка была в орфографии.
Осталось определять не только переменную, а сколько в ней символов - если три, значит переадресация на внутренний номер выставлена, если больше - на городской, мобильный и т.п.
Поможет кто справится?
Я видимо, запутался где то, но если Вы делаете Set(DB(CFIM/${CALLERID(num)})=${toext}) то как это Вы извлекаете ${DB(REDIRECT/${EXTEN})} ? Это как минимум странно о_0 (еще больше странно что Вы ожидаете что то получить)
А делаю я как в примерах, посылая звонок в канал Local тыц по Example 5
_________________
Мы всегда можем уметь...
| nikto @ Чт Окт 25, 2012 14:36 писал(а): |
| 2_Alting Я видимо, запутался где то, но если Вы делаете Set(DB(CFIM/${CALLERID(num)})=${toext}) то как это Вы извлекаете ${DB(REDIRECT/${EXTEN})} ? Это как минимум странно о_0 (еще больше странно что Вы ожидаете что то получить) А делаю я как в примерах, посылая звонок в канал Local тыц по Example 5 |
Да-да-да. Надергал из разных примеров и получился такой винегрет
За пример отдельное спасибо!
Вот теперь думаю... Все же, как отследить, куда редиректить... Если просто тупо сравнить номер редиректа с XXX, получится, или нет...
Не совсем понял что Вы имели в виду? Что значить куда?
Можете более подробно объяснить?
_________________
Мы всегда можем уметь...
К примеру, надо понять, сколько символов в переменной и начинаются ли они на 1.
Если их три и начинаются на 1 - значит, в качестве номера переадресации указан внутренний номер и тогда дозвон должен идти через контекст [local]
если нет - через [outgoing] .
А у меня пока-что просто проверяется, что переменная переадресации непустая и все вызовы уходят на [outgoing]
Но теоретически же есть вероятность, что сотрудник ушел в отпуск и перевел все звонки на коллегу.
| Код: |
| [cwfd] include => local include => outgoing |
и в случе если переадресаци установлена делайте Goto в этот контекст. А там уж сам астер разберется
Все верно xelas сказал, у меня это не совсем так (я возвращаю в свой же оффисный контекст, хотя мысль хорошая, надо подумать над спец контекстом), я использую возврат на основной контекст [office-calls] в который включены два контекста [office-num] и [outgoing-call]
Таким образом..
[office-calls]
include => office-num
include => outgoing-call
Я так понимаю что Вы не совсем понимаете, что происходит, еще раз внимательно прочтите. Основная мысль, что Ваш вызов будет перенаправлен в нужный Вам же контекст(указанный Вами), где он будет обработан самим * по стандартным шаблонам но с уже измененным номером из базы.
_________________
Мы всегда можем уметь...
Никак не соображу, что писать в GoTo, если нужно Goto(context,extension,priority)
А мне ведь нужно только Goto(context)
И потом, у меня тоже есть офисный контекст, куда включены и local и otgoing... И он дефолтный для юзеров..
И получается тогда, что в любом случае при редиректе надо делать переход в этот контекст?
И куда звонок пойдет? на $EXTEN же... По кругу...
Или надо Set(EXTEN=${REDIRECTNUM})
| Код: |
| Goto(cfwd,${REDIRNUM},1) |
Я думаю, что не стоит отдельно пояснять, почему содержимое ${REDIRNUM}, должно быть в таком формате, что оно подошло под ваши шаблоны в контекстах local и outgoing
Я в общем-то уже почти допилил...
И локал и ауигоинг нормально отрабатывается.
Осталось понять, почему не отрабатывается IAX2 (чтобы уж совсем невероятное - сотрудник уехал в филиал на недельку и перевел вызовы на филиальный внутренний) и будет все в шоколаде
Все разобрался.
СПАСИБО ВСЕМ ОГРОМНОЕ ЗА ПОМОЩЬ!
Последний раз редактировалось: Alting (Пт Окт 26, 2012 09:45)
Да, Вы немного подустали к пятнице =)
Я делаю не так как 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() |
_________________
Мы всегда можем уметь...
| nikto @ Пт Окт 26, 2012 09:39 писал(а): |
| 2_Alting Да, Вы немного подустали к пятнице =) |
Да, Вы правы, пора в отпуск. Я немного подустал по-жизни
А потом удивляюсь - "да вот же! Умные люди подсказали изящное решение, как я мог, такой тупой, сам не дотумкать!"