Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

GoSub и локальные переменные

0

exten = _X.,1,Set(MYVAR=1)

exten = _X.,n,GoSub(MainDial,${EXTEN},1)

Будет ли в MainDial видна переменная ${MYVAR}? Или передавать переменные можно в GoSub только в качестве аргументов? И работать с ${ARGn}? С вызовом макросов такая же ситуация?

Я думаю, что так нельзя.

И самый главный вопрос про локальные переменные.

В рамках одного контекста, при использовании GoSub для перехода по экстеншенами, остаются ли доступными переменные установленные через Set?

удалить закрыть спам изменить тег редактировать

спросил 2015-04-16 15:54:35 +0400

анонимный пользователь

Аноним

обновил 2015-04-16 16:20:43 +0400

Comments

Может это будет больше похоже на придирчивость , но почему бы это просто не проверить?

zzuz ( 2015-04-16 18:26:34 +0400 )редактировать

+1 к zzuz

вы наверняка дольше сообщение тут писали, чем просто взяли бы и проверили сами

virus_net ( 2015-04-17 09:21:40 +0400 )редактировать

2 Ответа

1

будет. видимость переменных оредляется не контекстом а каналом.

ссылка удалить спам редактировать

ответил 2015-04-16 17:17:39 +0400

komrad123 Gravatar komrad123
3780 5 3 42

Comments

видимость переменных определяется их типом. например переменные макроса невидны после выхода из макро, а глобальные видны во всех каналах одновременно.

meral ( 2015-04-16 21:07:09 +0400 )редактировать
1

в диалплане астериска нет локальных переменных.

есть переменные канала, обычно они используются.

есть переменные с анследованием - будут установлены также на все подканалы генерируемые этим каналом. обозначаются подчеркиванием двойным __VAR. читай.тся как обычные(без подчеркивания)

есть shared. доступны только через func_SHARED

есть глобальные. доступны через функцию GLOBAL(VAR)

есть переменные макроса(ARG1,ARG2,ARG3) - выставляются при вызове макроса.

gosub никак не влияет ни на какие из этих классов.

ссылка удалить спам редактировать

ответил 2015-04-16 21:05:38 +0400

meral Gravatar meral flag of Ukraine
21228 24 19 169
http://pro-sip.net/

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2015-04-16 15:54:35 +0400

Просмотрен: 76 раз

Обновлен: Apr 16 '15

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.