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

Не определяется переменная ${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 ,в данном случае это не критично , т.к. макрос всёравно перейдёт на нужную строку ,но в других случаях это критично , мож кто сталкивался ?
2007-05-29 19:05

Сообщений: 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 ,в данном случае это не критично , т.к. макрос всёравно перейдёт на нужную строку ,но в других случаях это критично , мож кто сталкивался ?
2007-05-29 19:24

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

2007-05-30 01:23

Сообщений: 18

Re: Не определяется переменная ${MACRO_CONTEXT}

Странно это всё :)) , ведь 0611 в данном примере вызывается как раз из контекста admin , который правда указан в контексте default , в котором должны быть указаны все дополнительные контексты , как я понял .Тогда получается что переменная ${MACRO_CONTEXT} всегда принимает значение default.Но и без указания контекста , по умолчанию , любой екстеншен будет искаться в контексте default , т.е. ${MACRO_CONTEXT} - не имеет смысла , или всётаки она не работает? Що це :), баг или всётаки нужно гдето нажать кнопку ?
2007-05-30 11:20

Сообщений: 196

Re: Не определяется переменная ${MACRO_CONTEXT}

Тебе ещё повизло, а в AEL с ${MACRO_ ещо хуже.
Я даже патчик для доки написал http://bugs.digium.com/view.php?id=9813 (в нем ещё одна ссылка), чтоб на эту гадость больше никто не нарывался.
2007-05-31 09:19

Сообщений: 18

Re: Не определяется переменная ${MACRO_CONTEXT}

Угу ,понятно , значит всётаки очередной баг.
2007-05-31 17:21

Сообщений: 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.
Именно отсюда ноги и растут.
2007-06-02 00:26

Сообщений: 18

Re: Не определяется переменная ${MACRO_CONTEXT}

Хммм ..., так то оно конечно работает , но смысла тогда в этой переменной почти ни какой , почему ${MACRO_EXTEN}- это номер того , кого вызывают , а ${MACRO_EXTEN}- контекст того , кто вызывает ? А если у меня например десять отделов , и на каждый отдел есть свой контекст , мне для каждого вызывающего пользователя чего добавлять в sip конфиг надо , чтобы ему были доступны все десять контекстов ? А если это обыкновенный входящий звонок из города , тогда мне будет доступен только один контекст из которого поступает вызов ? Нужен ведь контекст того , кого вызывают , как и его номер , получается всёравно эту информацию нужно передавать через аргумент.
2007-06-07 16:26

Добавить страницу в закладки:  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