видимость переменных определяется их типом. например переменные макроса невидны после выхода из макро, а глобальные видны во всех каналах одновременно.
meral ( 2015-04-16 21:07:09 +0400 )редактировать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
Аноним
будет. видимость переменных оредляется не контекстом а каналом.
видимость переменных определяется их типом. например переменные макроса невидны после выхода из макро, а глобальные видны во всех каналах одновременно.
meral ( 2015-04-16 21:07:09 +0400 )редактироватьв диалплане астериска нет локальных переменных.
есть переменные канала, обычно они используются.
есть переменные с анследованием - будут установлены также на все подканалы генерируемые этим каналом. обозначаются подчеркиванием двойным __VAR. читай.тся как обычные(без подчеркивания)
есть shared. доступны только через func_SHARED
есть глобальные. доступны через функцию GLOBAL(VAR)
есть переменные макроса(ARG1,ARG2,ARG3) - выставляются при вызове макроса.
gosub никак не влияет ни на какие из этих классов.
Задан: 2015-04-16 15:54:35 +0400
Просмотрен: 634 раз
Обновлен: Apr 16 '15
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Может это будет больше похоже на придирчивость , но почему бы это просто не проверить?
zzuz ( 2015-04-16 18:26:34 +0400 )редактировать+1 к zzuz
вы наверняка дольше сообщение тут писали, чем просто взяли бы и проверили сами
virus_net ( 2015-04-17 09:21:40 +0400 )редактировать