Доброго времени суток!
при входящих, требуется при переадресации перехватить номер того, кто перевел звонок. как это реализовать? способы, примеры? я пробовал таким способом
exten => _XXX,1,NoOp()
exten => _XXX,n,GotoIf($["${BLINDTRANSFER}" = ""]?33:66)
;exten => _XXX,n,GotoIf($[${LEN(${BLINDTRANSFER})} > 0]?33:66)
exten => _XXX,66,Set(TEMP=${BLINDTRANSFER})
exten => _XXX,n,Set(TEMP=${CUT(TEMP,/,2)})
exten => _XXX,n,Set(TEMP=${CUT(TEMP,-,1)})
exten => _XXX,n,Set(TEMP=${CALLERID(name)}//${TEMP})
exten => _XXX,n,Set(CALLERID(name)=${TEMP})
exten => _XXX,n,SIPAddHeader(transfer: ${TEMP})
exten => _XXX,n,Queue(office,n,15)
exten => _XXX,n,Answer()
exten => _XXX,n,Hangup()
exten => _XXX,33,Queue(office,n,15)
exten => _XXX,n,Answer()
exten => _XXX,n,HangUp()
это работает на тестовой конфигурации(на виртуалке)с двумя десятками строк. но на реальном сервере, где 500 строк - это не работает. когда проверяется условие exten => _XXX,n,GotoIf($["${BLINDTRANSFER}" = ""]?33:66) - то сначала BLINDTRANSFER однозначно = 0 . далее, при трансфере звонка требуется вернутся к этой строке условия, но не получается... как это можно реализовать? спасибо за внимание.
Добавление в заголовок CallerID(name) номера телефона сделавшего blind transfer
exten => _1XX,1,NoOp( == add blind transfer number == )
exten => _1XX,n,GotoIf($["${BLINDTRANSFER}" = ""]?NoBlind:Blind)
exten => _1XX,n(Blind),Set(TEMP=${BLINDTRANSFER})
exten => _1XX,n,Set(TEMP=${CUT(TEMP,/,2)})
exten => _1XX,n,Set(TEMP=${CUT(TEMP,-,1)})
exten => _1XX,n,Set(TEMP=${CALLERID(name)} ${TEMP})
exten => _1XX,n,Set(CALLERID(name)=${TEMP})
exten => _1XX,n,SIPAddHeader(transfer: ${TEMP})
exten => _1XX,n(NoBlind),NoOp( == no blind transfer == )
exten => _1XX,n,Dial(SIP/${EXTEN},25,tT)
;exten => _1XX,n,Goto(s-${DIALSTATUS},1)
exten => _1XX,n,HangUp()
Задан: 2012-12-05 18:20:16 +0400
Просмотрен: 382 раз
Обновлен: Dec 07 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Уточнение: Требуется вернуть звонок тому кто перевел ?
awsswa ( 2012-12-06 08:33:39 +0400 )редактироватьнет. требуется в сипаддхидер запихнуть номер того, кто перевел. а в коллерайди(ном) оставить номер входящий.возвращать ничего не надо. вернутся надо в начало контекста, там где условие
zdh ( 2012-12-06 16:29:08 +0400 )редактироватьНу тогда у вас просто ошибка - нельзя так писать - exten => _XXX,66,Set(TEMP=${BLINDTRANSFER}) - exten => _XXX,n(66),Set(TEMP=${BLINDTRANSFER})
awsswa ( 2012-12-07 07:50:47 +0400 )редактироватьЭто работает, если переводить средствами Звезды. А если средствами телефона - нет. Вот тут http://samael28.blogspot.com/2012/09/clid.html я описал более-менее универсальный способ.
samael28 ( 2012-12-08 12:54:19 +0400 )редактировать