Не определяется переменная ${MACRO_CONTEXT}
Сообщений: 18
|
Не определяется переменная ${MACRO_CONTEXT}
Здраствуйте , мож кто програмировал макросы и знает как работать с переменной ${MACRO_CONTEXT}.Ситуёвина такая : вызывается из определённого контекста макрос , а в нём есть переход назад к этому контексту по переменной ${MACRO_CONTEXT} , однако она всегда почемуто определяется как default.Например : ---------------------- [default] include => admin include => macro-t ----------------------- [admin] exten => 0611,1,Macro(t,SIP) exten => 0611,2,VoiceMail(u0611@admin) ----------------------- [macro-t] exten => s,1,Dial(${ARG1}/${MACRO_EXTEN},25,g) exten => s,2,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Goto(${MACRO_CONTEXT},${MACRO_EXTEN},2) ------------------------------------- так вот переход всегда осуществляется с таким сообщением : executing Goto default|0611|2 jumping out of macro t т.е. ${MACRO_CONTEXT} всегда определяется как default , хотя ${MACRO_EXTEN} определяется верно - 0611 ,в данном случае это не критично , т.к. макрос всёравно перейдёт на нужную строку ,но в других случаях это критично , мож кто сталкивался ?
|
Сообщений: 18
|
Re: Не определяется переменная ${MACRO_CONTEXT}
Здраствуйте , мож кто програмировал макросы и знает как работать с переменной ${MACRO_CONTEXT}.Ситуёвина такая : вызывается из определённого контекста макрос , а в нём есть переход назад к этому контексту по переменной ${MACRO_CONTEXT} , однако она всегда почемуто определяется как default.Например : default include => admin include => macro-t admin exten => 0611,1,Macro(t,SIP) exten => 0611,2,VoiceMail(u0611@admin) macro-t exten => s,1,Dial(${ARG1}/${MACRO_EXTEN},25,g) exten => s,2,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Goto(${MACRO_CONTEXT},${MACRO_EXTEN},2) так вот переход всегда осуществляется с таким сообщением : executing Goto default|0611|2 jumping out of macro t т.е. ${MACRO_CONTEXT} всегда определяется как default , хотя ${MACRO_EXTEN} определяется верно - 0611 ,в данном случае это не критично , т.к. макрос всёравно перейдёт на нужную строку ,но в других случаях это критично , мож кто сталкивался ?
|
Сообщений: 26
|
Re: Не определяется переменная ${MACRO_CONTEXT}
${MACRO_CONTEXT} содержит имя того контекста, из которого был вызван макрос. Если клиент принадлежит контексту default, при вызове экстеншена 0611 в ${MACRO_CONTEXT} будет значение default соответственно.
Попробуйте так. Номер почтового ящика лучше передать как аргумент в макрос.
И проверку на предмет NOASNWER тоже лучше делать там. В противном случае для каждого экстеншена в контексте [admin] Вам бы пришлось прописывать Voicemail'ы.
[default]
include => admin
[admin]
exten => 0611,1,Macro(t,0611,SIP/0611)
[macro-t]
exten => s,1,Dial(${ARG2},25,g)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG1}@admin)
|
Сообщений: 18
|
Re: Не определяется переменная ${MACRO_CONTEXT}
Странно это всё :)) , ведь 0611 в данном примере вызывается как раз из контекста admin , который правда указан в контексте default , в котором должны быть указаны все дополнительные контексты , как я понял .Тогда получается что переменная ${MACRO_CONTEXT} всегда принимает значение default.Но и без указания контекста , по умолчанию , любой екстеншен будет искаться в контексте default , т.е. ${MACRO_CONTEXT} - не имеет смысла , или всётаки она не работает? Що це :), баг или всётаки нужно гдето нажать кнопку ?
|
Сообщений: 196
|
Re: Не определяется переменная ${MACRO_CONTEXT}
Тебе ещё повизло, а в AEL с ${MACRO_ ещо хуже.
Я даже патчик для доки написал http://bugs.digium.com/view.php?id=9813 (в нем ещё одна ссылка), чтоб на эту гадость больше никто не нарывался.
|
Сообщений: 18
|
Re: Не определяется переменная ${MACRO_CONTEXT}
Угу ,понятно , значит всётаки очередной баг.
|
Сообщений: 26
|
Re: Не определяется переменная ${MACRO_CONTEXT}
0611 вызывается именно из default.
Поскольку, как я понимаю, юзер, который вызывает 0611, принадлежит контексту default.
И default включает в себя все екстеншены контекста admin.
Вот примерчик:
;sip.conf
[user1]
бу
бу
бу
context=default1
[user1]
бу
бу
бу
context=default2
------------------
;extensions.conf
[default1]
include => admin
[default2]
include => admin
[admin]
exten => 0611,1,Macro(t,0611,SIP/0611)
[macro-t]
exten => s,1,NoOP,${MACRO_EXTEN}
exten => s,2,Dial(${ARG2},25,g)
exten => s,3,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG1}@admin)
Теперь если user1 наберет 0661, то Ваш ${MACRO_EXTEN}=default1, а если user2, то ${MACRO_EXTEN}=default2.
Именно отсюда ноги и растут.
|
Сообщений: 18
|
Re: Не определяется переменная ${MACRO_CONTEXT}
Хммм ..., так то оно конечно работает , но смысла тогда в этой переменной почти ни какой , почему ${MACRO_EXTEN}- это номер того , кого вызывают , а ${MACRO_EXTEN}- контекст того , кто вызывает ? А если у меня например десять отделов , и на каждый отдел есть свой контекст , мне для каждого вызывающего пользователя чего добавлять в sip конфиг надо , чтобы ему были доступны все десять контекстов ? А если это обыкновенный входящий звонок из города , тогда мне будет доступен только один контекст из которого поступает вызов ? Нужен ведь контекст того , кого вызывают , как и его номер , получается всёравно эту информацию нужно передавать через аргумент.
|
|