Module: sems Branch: master Commit: f4f5b8c5fdf34e7740d9b1bc953d782e49bb794b URL: https://github.com/sems-server/sems/commit/f4f5b8c5fdf34e7740d9b1bc953d782e49bb794b
Author: Juha Heinanen <[email protected]> Committer: Juha Heinanen <[email protected]> Date: 2015-12-19T11:54:01+02:00 dsm mod_utils: added startsWith condition - minor doc edits --- Modified: apps/dsm/mods/mod_utils/ModUtils.cpp Modified: apps/dsm/mods/mod_utils/ModUtils.h Modified: doc/dsm/mods/Readme.mod_utils.txt --- Diff: https://github.com/sems-server/sems/commit/f4f5b8c5fdf34e7740d9b1bc953d782e49bb794b.diff Patch: https://github.com/sems-server/sems/commit/f4f5b8c5fdf34e7740d9b1bc953d782e49bb794b.patch --- diff --git a/apps/dsm/mods/mod_utils/ModUtils.cpp b/apps/dsm/mods/mod_utils/ModUtils.cpp index 444f23d..f7f0971 100644 --- a/apps/dsm/mods/mod_utils/ModUtils.cpp +++ b/apps/dsm/mods/mod_utils/ModUtils.cpp @@ -63,9 +63,13 @@ MOD_ACTIONEXPORT_BEGIN(MOD_CLS_NAME) { } MOD_ACTIONEXPORT_END; MOD_CONDITIONEXPORT_BEGIN(MOD_CLS_NAME) { + if (cmd == "utils.isInList") { return new IsInListCondition(params, false); } + if (cmd == "utils.startsWith") { + return new StartsWithCondition(params, false); + } } MOD_CONDITIONEXPORT_END; @@ -433,7 +437,7 @@ EXEC_ACTION_START(SCUReplaceAction) { if (varname.length() && varname[0] == '$') varname = varname.substr(1); - INFO("setting var[%s] = %s\n", varname.c_str(), subject.c_str()); + DBG("setting var[%s] = %s\n", varname.c_str(), subject.c_str()); sc_sess->var[varname] = subject; } EXEC_ACTION_END; @@ -550,3 +554,19 @@ MATCH_CONDITION_START(IsInListCondition) { return res; } } MATCH_CONDITION_END; + +CONST_CONDITION_2P(StartsWithCondition, ',', false); +MATCH_CONDITION_START(StartsWithCondition) { + + string key = resolveVars(par1, sess, sc_sess, event_params); + string prefix = resolveVars(par2, sess, sc_sess, event_params); + + DBG("checking whether '%s' starts with '%s'\n", key.c_str(), prefix.c_str()); + bool res = false; + res = (key.length() >= prefix.length()) && + std::equal(prefix.begin(), prefix.end(), key.begin()); + DBG("prefix %sfound\n", res?"":"not "); + + return res; + +} MATCH_CONDITION_END; diff --git a/apps/dsm/mods/mod_utils/ModUtils.h b/apps/dsm/mods/mod_utils/ModUtils.h index b4bf1ea..f0171ab 100644 --- a/apps/dsm/mods/mod_utils/ModUtils.h +++ b/apps/dsm/mods/mod_utils/ModUtils.h @@ -36,6 +36,7 @@ DECLARE_MODULE(MOD_CLS_NAME); DEF_CONDITION_2P(IsInListCondition); +DEF_CONDITION_2P(StartsWithCondition); DEF_ACTION_2P(SCUPlayCountRightAction); DEF_ACTION_2P(SCUPlayCountLeftAction); diff --git a/doc/dsm/mods/Readme.mod_utils.txt b/doc/dsm/mods/Readme.mod_utils.txt index be91a61..b39fc3e 100644 --- a/doc/dsm/mods/Readme.mod_utils.txt +++ b/doc/dsm/mods/Readme.mod_utils.txt @@ -1,4 +1,6 @@ -Actions: +Actions +------- + utils.getNewId(string varname) utils.playCountRight(int cnt [, string basedir]) @@ -69,7 +71,7 @@ Actions: replace escaped CRLF (\\r\\n) in string with CRLF (\r\n) -utils.playRingTone(length [, on [, off [, f [, f2]]]]) + utils.playRingTone(length [, on [, off [, f [, f2]]]]) play a RingTone (ringback tone) defaults to length=0 (indefinite), on 1000ms, off 2000ms, f 440Hz, f2 480Hz @@ -79,5 +81,8 @@ utils.playRingTone(length [, on [, off [, f [, f2]]]]) Conditions ---------- -utils.isInList(key, cs_list) - match if key is in comma-separated list + utils.isInList(key, cs_list) - match if key is in comma-separated list e.g. if utils.isInList(#sip_code, "404, 405") { ... } + + utils.startsWith(subject|$subject, prefix|$prefix) - match if subject + starts with prefix _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
