Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / Как передать переменную

Как передать переменную

Как передать переменную из контекста очереди.
<1 2 3>
Avatara of switch
Откуда: Уфа
Сообщений: 5856

Re: Как передать переменную

где связь между контекстами Q_incoming_calls_day и Recording?
http://www.lynks.ru - Решения телефонии, мини-АТС, VoIP на основе Trixbox и Asterisk
2010-04-07 09:59

Сообщений: 9

Re: Как передать переменную

в Q_incoming_calls_day:
incoming => Recording
2010-04-07 10:21

Сообщений: 9

Re: Как передать переменную

и при этом, при blindxfer номер передается в Set(CALLFILENAME ...

2010-04-07 10:24

Сообщений: 48

Re: Как передать переменную

switch:

сделайте так
exten => s,n,set(__first_uniqueid=${CDR(uniqueid)})
Я так попробовал сделать, но переменная first_uniqueid в контексте вызова оператора второй линии (вызов через макрос, операторы второй линии в другом контексте) не видна. Это же правильное поведение, т.к. по существу этот это новый звонок который потом бриджется с первым входящим?

Тут для себя обнаружил что когда агент логинется через AgentCallbackLogin то появляется глобальная переменная AGENTBYCALLERID_номер содержащая номер агента. Сделал вариант когда используется она для формирования имени файла записи при вызове второй линии поддержки.

2010-04-07 10:32

Сообщений: 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 ...
2010-04-07 15:35

Сообщений: 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} - пустой
2010-04-07 16:14

Сообщений: 1573

Re: Как передать переменную

Полная каша! ))

При каком вызове получается пустая переменная? Покажите этот контекст.
Если имеется ввиду, что при локальных, тогда сделайте установку этой переменной! (в том контексте в котором выполняется вызов или перевод)
2010-04-07 16:48

Сообщений: 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

2010-04-07 17:24

Сообщений: 1573

Re: Как передать переменную

)))
У вас установка переменной сделана только в контексте Q_incoming_calls_day (и только для маски - "s").
В других ее нет!
Если вы хотите, что бы она появлялась - ее нужно устанавливать там (в контекстах), где обрабатывается вызов ...

Покажите вывод CLI> при котором переменная - пустая.
2010-04-07 17:27

Сообщений: 9

Re: Как передать переменную

А объявление глобальной переменной как бы подразумевает ее передачу далее по контекстам, как я понял описание на voip-info.org
Или я ступил не по детски?

ЗЫ. Как-то реально тогда переменную передать за пределы своего контекста не используя БД?
2010-04-07 17:34

<1 2 3>
Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru