call froward на внешние и внутренние номера
подскажите в ту ли сторону я пробую это реализовать
Сообщений: 17
|
call froward на внешние и внутренние номера
Добрый день!
Пробую сделать безусловную переадресацию. Возник вопрос с тем чтобы переадресовывать звонки не только на внутренние номера но и на внешние.
Пробую делать так:
exten => 1002,1,Verbose(1|Extension 1002)
exten => 1002,n,Macro(stdexten,1002)
exten => 1002,n,Hangup()
exten => _*21*X.,1,Set(DB(CFIM/${CALLERID(num)})={EXTEN:4})
exten => _*21*X.,2,Hangup
exten => #21#,1,Set(temp=${DB_DELETE(CFIM/${CALLERID(num)})})
exten => #21#,2,Hangup
[macro-stdexten]
exten => s,1,Set(temp=${DB(CFIM/${ARG1})}) ; Get CFIM key, if not existing, goto 102
exten => s,n,Set(trunkk=${IF($[${LEN(${temp})} < 5]?SIP:SIPNET)}) ;тут в зависимости от длины присваивает в переменную trunk - SIP или SIPNET
exten => s,n,Dial(${trunkk}/${temp},30,Tt)
exten => s,n,Hangup
но что то мне кажется что так неправильно если мне понадобится еще чтобы через IP телефонию пускать то условий в макросе может быть довольно много
кто нибудь делал подобное, как правильно делать форвард на разные номера в зависимости от длины и содержимого номера?
|
Откуда: Уфа
Сообщений: 5856
|
Re: call froward на внешние и внутренние номера
нужно выбирать маршруты не в macro-stdexten, а сделать отдельный контекст для обработки исходящих вызовов.
или поставить триксбокс и не мучаться...
|
Откуда: г. Хабаровск
Сообщений: 23
|
Re: call froward на внешние и внутренние номера
У меня все примитивно, если номер не более 5 символов - это внутренний номер
если больше 5 цифр - звонок идет через голосовой шлюз
если в начале набирается * - звонок через сипнет.
[soit3057хх];Контекст вида soit3057хх - для каждой линии PSTN, т.е. название отдела+номер
;=================================================================
;======================= Звонки через шлюз =======================
exten => _XXXXX.,1,Dial(SIP/${EXTEN}@3057хх,60,tTW);3057хх-название транка
include => out
[out]
;=================================================================
;================ Звонки через сипнет ============================
exten => _*XXXXX.,1,Dial(SIP/${EXTEN:1}@sipnet,60,tTm)
include => internal
[internal]
;=================================================================
;================= Звонки по внутренней сети =====================
;=================================================================
exten => 000,1,Macro(ring,000,SIP/000)
|
Сообщений: 17
|
Re: call froward на внешние и внутренние номера
Мужики, может я плохо вас понимаю либо плохо объяснил.
Мне нужно чтобы работал "форвардинг" звонков в зависимости от номера который пользователь забил. Как в "форвардинге" прописать чтобы он выбирал маршрут?
Отдельные контексты будут работать если просто звонят на внешний либо внутренний номер.
А как сделать чтобы когда звонили например на 1002 (а там пользователь вбил "форвард" на +79139112222) звонок пошел на внешний транк?
|
Сообщений: 1573
|
Re: call froward на внешние и внутренние номера
Algor: а там пользователь вбил "форвард" на +79139112222
Где - там?
Вообще вариантов - море ... Все ограничивается только вашими знаниями *
А для помощи просто правильно сформулируйте, что вы хотите сделать ...
|
Сообщений: 17
|
Re: call froward на внешние и внутренние номера
cron333: Где - там?
Вот тут пользователь вбивает номер на который должен идти форвард - *21*89139112222 (у меня в коде еще есть ошибки, прошу сильно не пинать, только во всем разбираюсь)
exten => _*21*X.,1,Set(DB(CFIM/${CALLERID(num)})={EXTEN})
Вот тут при звонке на 1002 идет форвард (у меня в коде еще есть ошибки, прошу сильно не пинать, только во всем разбираюсь)
[macro-stdexten]
exten => s,1,Set(temp=${DB(CFIM/${ARG1})}) ; Get CFIM key, if not existing, goto 102
exten => s,n,Set(trunkk=${IF($[${LEN(${temp})} < 5]?SIP:SIPNET)}) ;тут в зависимости от длины присваивает в переменную trunk - SIP или SIPNET
exten => s,n,Dial(${trunkk}/${temp},30,Tt)
|
Сообщений: 1573
|
Re: call froward на внешние и внутренние номера
exten => _*21*X.,1,Set(DB(CFIM/${CALLERID(num)})={EXTEN:4})
пропустили :4 ...
ну так, а что пугает? Все вроде бы - правильно ... )
Единственное, что если эта переменная (в базе) будет пустая, то вызов просто не состоится ... (а то у вас написано: Get CFIM key, if not existing, goto 102) Если нужно, что бы вызов в случае пустой переменной шел на набранный екстен, то нужно добавить еще одну проверку ...
|
Сообщений: 17
|
Re: call froward на внешние и внутренние номера
Да фиг с ошибками, пусть будут, потом в процессе отладки разберусь.
Меня интересует вопрос что т.к. планируется звонить по городским номерам, по межгороду, по ИП-телефонии и может быть еще как то, то чтобы делать различные пути придется вставлять кучу условий подобной этой:
exten => s,n,Set(trunkk=${IF($[${LEN(${temp})} < 5]?SIP:SIPNET)})
И может быть есть другой способ, более красивый/правильный как делать подобную маршрутизацию?
|
Сообщений: 1573
|
Re: call froward на внешние и внутренние номера
ну к примеру, так:
exten => s,1,Set(temp=${DB(CFIM/${ARG1})})
exten => s,n,GotoIF($["${temp}" = ""]?102)
exten => s,n,Goto(call-out,${temp},1)
exten => s,102,Dial(SIP/${ARG1},30,tT); здесь вызов, в случае пустого значения в базе пойдет на набранный екстен (1002)
[call-out]
exten => _X....
и в этом контексте расписал бы как и на какие номера звонить ...
|
Сообщений: 17
|
Re: call froward на внешние и внутренние номера
Спасибо большое всем откликнувшимся! Особенно cron333!
Сейчас прочитал на странице что означает канал Local в приложении Dial
http://voip.rus.net/tiki-index.php?page=Asterisk+Local+channels
Надо в писать Dial(Local/${temp}@context), а уже в самом context расписать что куда.
Либо как написал cron333.
|
|