diff --git a/apps/dsm/DSMCoreModule.cpp b/apps/dsm/DSMCoreModule.cpp index 84d1cd64..1d71e8f2 100644 --- a/apps/dsm/DSMCoreModule.cpp +++ b/apps/dsm/DSMCoreModule.cpp @@ -64,6 +64,7 @@ DSMAction* DSMCoreModule::getAction(const string& from_str) { DEF_CMD("disableDTMFDetection", SCDisableDTMFDetection); DEF_CMD("set", SCSetAction); + DEF_CMD("var", SCGetVarAction); DEF_CMD("append", SCAppendAction); DEF_CMD("substr", SCSubStrAction); DEF_CMD("inc", SCIncAction); @@ -327,10 +328,22 @@ EXEC_ACTION_START(SCSetAction) { par1.substr(1) : par1; sc_sess->var[var_name] = resolveVars(par2, sess, sc_sess, event_params); - DBG("set variable '%s'='%s'\n", + DBG("set $%s='%s'\n", var_name.c_str(), sc_sess->var[var_name].c_str()); } EXEC_ACTION_END; +CONST_ACTION_2P(SCGetVarAction,'=', false); +EXEC_ACTION_START(SCGetVarAction){ + string dst_var_name = (par1.length() && par1[0] == '$')? + par1.substr(1) : par1; + string var_name = resolveVars(par2, sess, sc_sess, event_params); + + DBG("var_name = %s, dst = %s\n", var_name.c_str(), dst_var_name.c_str()); + sc_sess->var[dst_var_name] = sc_sess->var[var_name]; + DBG("set $%s='%s'\n", + dst_var_name.c_str(), sc_sess->var[dst_var_name].c_str()); +} EXEC_ACTION_END; + EXEC_ACTION_START(SCClearAction) { string var_name = (arg.length() && arg[0] == '$')? arg.substr(1) : arg; diff --git a/apps/dsm/DSMCoreModule.h b/apps/dsm/DSMCoreModule.h index 5c76e972..167de682 100644 --- a/apps/dsm/DSMCoreModule.h +++ b/apps/dsm/DSMCoreModule.h @@ -79,6 +79,7 @@ DEF_ACTION_1P(SCClearAction); DEF_ACTION_2P(SCSetTimerAction); DEF_ACTION_2P(SCLogAction); DEF_ACTION_1P(SCLogVarsAction); +DEF_ACTION_2P(SCGetVarAction); DEF_ACTION_2P(SCPlayFileAction); DEF_ACTION_2P(SCPlayFileFrontAction); DEF_ACTION_2P(SCPostEventAction); diff --git a/apps/dsm/doc/dsm_syntax.txt b/apps/dsm/doc/dsm_syntax.txt index 85016b13..3a1f6052 100644 --- a/apps/dsm/doc/dsm_syntax.txt +++ b/apps/dsm/doc/dsm_syntax.txt @@ -80,6 +80,8 @@ actions: set($var=value) e.g. set($var="text"); set($var=$var2); set($var=#key) + var($dstvar=srcvarname) + e.g. var($dstvar=$var_counter) append($var, value) e.g. append($var, "text"); append($var, #key); append($var, @select); append($var, $var2);