Module: sems Branch: master Commit: c2bbb3f709d7dba06cb5a9b607307dd06786e227 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=c2bbb3f709d7dba06cb5a9b607307dd06786e227
Author: Stefan Sayer <[email protected]> Committer: Stefan Sayer <[email protected]> Date: Fri Dec 3 01:22:48 2010 +0100 DSM: param() function, access param named by a var like #($paramname) patch by Matthew Williams --- apps/dsm/DSMCoreModule.cpp | 25 +++++++++++++++++++++++++ apps/dsm/DSMCoreModule.h | 1 + doc/dsm/dsm_syntax.txt | 2 ++ 3 files changed, 28 insertions(+), 0 deletions(-) diff --git a/apps/dsm/DSMCoreModule.cpp b/apps/dsm/DSMCoreModule.cpp index 9ab4987..189045b 100644 --- a/apps/dsm/DSMCoreModule.cpp +++ b/apps/dsm/DSMCoreModule.cpp @@ -79,6 +79,7 @@ DSMAction* DSMCoreModule::getAction(const string& from_str) { DEF_CMD("eval", SCEvalAction); DEF_CMD("setVar", SCSetVarAction); DEF_CMD("var", SCGetVarAction); + DEF_CMD("param", SCGetParamAction); DEF_CMD("append", SCAppendAction); DEF_CMD("substr", SCSubStrAction); DEF_CMD("inc", SCIncAction); @@ -627,6 +628,30 @@ EXEC_ACTION_START(SCSetVarAction) { var_name.c_str(), sc_sess->var[var_name].c_str()); } EXEC_ACTION_END; +CONST_ACTION_2P(SCGetParamAction,'=', false); +EXEC_ACTION_START(SCGetParamAction){ + + string dst_var_name = (par1.length() && par1[0] == '$')? + par1.substr(1) : par1; + string param_name = resolveVars(par2, sess, sc_sess, event_params); + + DBG("param_name = %s, dst = %s\n", param_name.c_str(), dst_var_name.c_str()); + + if (NULL==event_params) { + sc_sess->var[dst_var_name] = ""; + EXEC_ACTION_STOP; + } + + map<string, string>::iterator it = event_params->find(param_name); + if (it != event_params->end()) { + sc_sess->var[dst_var_name] = it->second; + } else { + sc_sess->var[dst_var_name] = ""; + } + + DBG("set $%s='%s'\n", + dst_var_name.c_str(), sc_sess->var[dst_var_name].c_str()); +} EXEC_ACTION_END; CONST_ACTION_2P(SCGetVarAction,'=', false); EXEC_ACTION_START(SCGetVarAction){ diff --git a/apps/dsm/DSMCoreModule.h b/apps/dsm/DSMCoreModule.h index c7523bd..67a3d3c 100644 --- a/apps/dsm/DSMCoreModule.h +++ b/apps/dsm/DSMCoreModule.h @@ -93,6 +93,7 @@ DEF_ACTION_1P(SCLogParamsAction); DEF_ACTION_1P(SCLogSelectsAction); DEF_ACTION_1P(SCLogAllAction); DEF_ACTION_2P(SCGetVarAction); +DEF_ACTION_2P(SCGetParamAction); DEF_ACTION_2P(SCSetVarAction); DEF_ACTION_2P(SCPlayFileAction); DEF_ACTION_2P(SCPlayFileFrontAction); diff --git a/doc/dsm/dsm_syntax.txt b/doc/dsm/dsm_syntax.txt index d32cfec..7acfd63 100644 --- a/doc/dsm/dsm_syntax.txt +++ b/doc/dsm/dsm_syntax.txt @@ -135,6 +135,8 @@ sendDTMFSequence(sequence [, duration_ms]) e.g. set($var="text and some $variable and some #param"); var($dstvar=srcvarname) e.g. var($dstvar=$var_counter) + param($dstvar=srcparamname) + e.g. param($dstvar=$myparam) (like: #($myparam) ) eval($var=value) evaluate expression (only simple binary + and - supported) e.g. set($var=1+5); set($var=$var2); set($var=#key) _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
