DSM: param() function, access param named by a var

like #($paramname)

patch by Matthew Williams
sayer/1.4-spce2.6
Stefan Sayer 16 years ago
parent f3e1cc8b7e
commit c2bbb3f709

@ -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){

@ -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);

@ -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)

Loading…
Cancel
Save