Как передать переменную
Как передать переменную из контекста очереди.
Откуда: Уфа
Сообщений: 5856
|
Re: Как передать переменную
где связь между контекстами Q_incoming_calls_day и Recording?
|
Сообщений: 9
|
Re: Как передать переменную
в Q_incoming_calls_day:
incoming => Recording
|
Сообщений: 9
|
Re: Как передать переменную
и при этом, при blindxfer номер передается в Set(CALLFILENAME ...
|
Сообщений: 48
|
Re: Как передать переменную
switch:
сделайте так
exten => s,n,set(__first_uniqueid=${CDR(uniqueid)})
Я так попробовал сделать, но переменная first_uniqueid в контексте вызова оператора второй линии (вызов через макрос, операторы второй линии в другом контексте) не видна. Это же правильное поведение, т.к. по существу этот это новый звонок который потом бриджется с первым входящим?
Тут для себя обнаружил что когда агент логинется через AgentCallbackLogin то появляется глобальная переменная AGENTBYCALLERID_номер содержащая номер агента. Сделал вариант когда используется она для формирования имени файла записи при вызове второй линии поддержки.
|
Сообщений: 1573
|
Re: Как передать переменную
[Recording]
exten => 313,1,Macro(rec_call,${EXTEN},501,techsupport_calls@mail.local, ${TELNO})
exten => 311,1,Macro(rec_call,${EXTEN},502,techsupport_calls@mail.local, ${TELNO})
exten => 435,1,Macro(rec_call,${EXTEN},503,techsupport_calls@mail.local, ${TELNO})
...
[macro-rec_call]
exten => s,1,Set(CALLFILENAME= ${ARG4}_${ARG1}_${STRFTIME(${EPOCH},,%Y-%m-%d_%H-%M-%S)})
exten => s,n,Set(monopt=nice -n 19 /usr/local/rec/inc_calls.pl ${CALLFILENAME} ${ARG3})
exten => s,n,Set(CHANNEL(language)=ru)
exten => s,n,MixMonitor(${CALLFILENAME}.wav,b,${monopt})
exten => s,n,Dial(${NEC}/${ARG2},15,ftTU(anounce))
exten => s,n,StopMixMonitor
exten => s,n,Voicemail(9${ARG1})
exten => s,n,Hangup
в Q_incoming_calls_day:
incoming => Recording
Наверное имелось ввиду - include (вместо incoming)
Это все исходя из логики, что вызов поступает в контекст "Q_incoming_calls_day" и оттуда переводится на один из 313, 311, 435 ...
|
Сообщений: 9
|
Re: Как передать переменную
Да, конечно же include. Опечатка.
Полная цепочка звонка выглядит так:
[Q_incoming_calls_day]
[skip]
include => Recording
include => phones
[phones]
include => local_calls
[local_calls]
exten => 313,1,Macro(rec_call,${EXTEN},501,techsupport_calls@mail.local)
exten => 311,1,Macro(rec_call,${EXTEN},502,techsupport_calls@mail.local)
exten => 435,1,Macro(rec_call,${EXTEN},503,techsupport_calls@mail.local)
[Recording]
exten => 313,1,Macro(rec_call,${EXTEN},501,techsupport_calls@mail.local)
exten => 311,1,Macro(rec_call,${EXTEN},502,techsupport_calls@mail.local)
exten => 435,1,Macro(rec_call,${EXTEN},503,techsupport_calls@mail.local)
Такая реализация используется из-за сложностей стыка астериска и имеющейся инфраструктуры (УПАТС NEC NEAX 2000)
Абоненты скроссированы в "железной" АТСке, и имеют номера 501, 502, 503 соответственно
им сопоставлены виртуальные номера 313, 311, 435
Суть в том, что звонки должны быть записаны как внешние, так и внутренние на номера 313, 311, 435.
Звонок может быть осуществлен как через секретаря, так и через прямой донабор внутреннего абонента, оттого и разные контексты. Понимаю, что криво и неправильно.
При использовании в макросе ARG4 в результирующем ответе прилетает вот что:
exten => s,n,System(/usr/local/rec/mail.pl "Callname: ${CALLFILENAME}. Callerid-num: ${CALLERID(num)}, Arg4: ${ARG4}. TelNo: ${TELNO}. To: ${ARG2}" ${ARG3})
"Callname: 105_154_2010-04-07_18-01-22. Callerid-num: 105, Arg4: . TelNo: . To: 154"
в макрос повесил:
exten => 154,1,Macro(rec_call,${EXTEN},154,techsupport_calls@mail.local,${TELNO})
Т.е., получается, что ${ARG4} - пустой
|
Сообщений: 1573
|
Re: Как передать переменную
Полная каша! ))
При каком вызове получается пустая переменная? Покажите этот контекст.
Если имеется ввиду, что при локальных, тогда сделайте установку этой переменной! (в том контексте в котором выполняется вызов или перевод)
|
Сообщений: 9
|
Re: Как передать переменную
cron333:
При каком вызове получается пустая переменная? Покажите этот контекст.
Если имеется ввиду, что при локальных, тогда сделайте установку этой переменной! (в том контексте в котором выполняется вызов или перевод)
Нет, переменная пустая при любом вызове, будь то локальный, либо переведенный секретарем внешний звонок.
Понимаю, что каша.
[Q_incoming_calls_day]
exten => s,1,Answer
exten => s,n,Set(CHANNEL(language)=ru)
exten => s,n,Set(__TELNO=${CALLERID(num)})
exten => s,n,BackGround(0010)
exten => s,n,BackGround(beep)
exten => s,n,WaitExten(3)
exten => s,n,Dial(SIP/59004&SIP/59005,20,ftT)
exten => i,1,Goto(Q_reception,s,1,mtT)
include => Recording
include => phones
[local_calls]
exten => _[1-6]XX,1,Set(CDR(accountcode)=${EXTEN})
exten => _[1-6]XX,n,Dial(${SER2}/${EXTEN},,ftT)
exten => _[1-6]XX,n,Hangup()
exten => 313,1,Macro(rec_call,${EXTEN},501,techsupport_calls@mail.local,${TELNO}) // Тут уже ${TELNO} пустая
exten => 311,1,Macro(rec_call,${EXTEN},502,techsupport_calls@mail.local,${TELNO})
exten => 435,1,Macro(rec_call,${EXTEN},503,techsupport_calls@mail.local,${TELNO})
include => Recording
[phones]
include => local_calls
[Recording]
exten => 313,1,Macro(rec_call,${EXTEN},501,techsupport_calls@mail.local,${TELNO})
exten => 311,1,Macro(rec_call,${EXTEN},502,techsupport_calls@mail.local,${TELNO})
exten => 435,1,Macro(rec_call,${EXTEN},503,techsupport_calls@mail.local,${TELNO})
[macro-rec_call]
exten => s,1,Set(CALLFILENAME=${ARG4}_${ARG1}_${STRFTIME(${EPOCH},,%Y-%m-%d_%H-%M-%S)})
exten => s,n,Set(monopt=nice -n 19 /usr/local/rec/inc_calls.pl ${CALLFILENAME} ${ARG3})
exten => s,n,Set(CHANNEL(language)=ru)
exten => s,n,Playback(0070)
exten => s,n,MixMonitor(${CALLFILENAME}.wav,b,${monopt})
exten => s,n,Dial(${NEC}/${ARG2},15,ftTU(anounce))
exten => s,n,StopMixMonitor
exten => s,n,Voicemail(9${ARG1})
exten => s,n,Hangup
|
Сообщений: 1573
|
Re: Как передать переменную
)))
У вас установка переменной сделана только в контексте Q_incoming_calls_day (и только для маски - "s").
В других ее нет!
Если вы хотите, что бы она появлялась - ее нужно устанавливать там (в контекстах), где обрабатывается вызов ...
Покажите вывод CLI> при котором переменная - пустая.
|
Сообщений: 9
|
Re: Как передать переменную
А объявление глобальной переменной как бы подразумевает ее передачу далее по контекстам, как я понял описание на voip-info.org
Или я ступил не по детски?
ЗЫ. Как-то реально тогда переменную передать за пределы своего контекста не используя БД?
|
|