Author: sayer
Date: 2009-03-13 19:10:53 +0100 (Fri, 13 Mar 2009)
New Revision: 1319
Modified:
trunk/apps/dsm/DSM.cpp
trunk/apps/dsm/DSM.h
Log:
adding variables to outgoing calls as struct
Modified: trunk/apps/dsm/DSM.cpp
===================================================================
--- trunk/apps/dsm/DSM.cpp 2009-03-13 18:09:48 UTC (rev 1318)
+++ trunk/apps/dsm/DSM.cpp 2009-03-13 18:10:53 UTC (rev 1319)
@@ -226,9 +226,13 @@
void DSMFactory::prepareSession(DSMDialog* s) {
s->setPromptSets(prompt_sets);
+}
+
+void DSMFactory::addVariables(DSMDialog* s, const string& prefix,
+ map<string, string>& vars) {
for (map<string, string>::iterator it =
- config.begin(); it != config.end(); it++)
- s->var["config."+it->first] = it->second;
+ vars.begin(); it != vars.end(); it++)
+ s->var[prefix+it->first] = it->second;
}
AmSession* DSMFactory::onInvite(const AmSipRequest& req)
@@ -264,15 +268,43 @@
}
UACAuthCred* cred = NULL;
+ map<string, string> vars;
+ // Creds
if (session_params.getType() == AmArg::AObject) {
ArgObject* cred_obj = session_params.asObject();
if (cred_obj)
cred = dynamic_cast<UACAuthCred*>(cred_obj);
+ } else if (session_params.getType() == AmArg::Array) {
+ DBG("session params is array - size %d\n", session_params.size());
+ // Creds
+ if (session_params.get(0).getType() == AmArg::AObject) {
+ ArgObject* cred_obj = session_params.get(0).asObject();
+ if (cred_obj)
+ cred = dynamic_cast<UACAuthCred*>(cred_obj);
+ }
+ // Creds + vars
+ if (session_params.size()>1 &&
+ session_params.get(1).getType() == AmArg::Struct) {
+ for (AmArg::ValueStruct::const_iterator
it=session_params.get(1).begin();
+ it != session_params.get(1).end(); it++) {
+ vars[it->first] = it->second.asCStr();
+ }
+ }
+ } else if (session_params.getType() == AmArg::Struct) {
+ // vars
+ for (AmArg::ValueStruct::const_iterator it=session_params.begin();
+ it != session_params.end(); it++) {
+ vars[it->first] = it->second.asCStr();
+ }
}
DSMDialog* s = new DSMDialog(&prompts, diags, start_diag, cred);
- prepareSession(s);
+ prepareSession(s);
+ addVariables(s, "config.", config);
+ if (!vars.empty())
+ addVariables(s, "", vars);
+
if (NULL == cred) {
WARN("discarding unknown session parameters.\n");
} else {
Modified: trunk/apps/dsm/DSM.h
===================================================================
--- trunk/apps/dsm/DSM.h 2009-03-13 18:09:48 UTC (rev 1318)
+++ trunk/apps/dsm/DSM.h 2009-03-13 18:10:53 UTC (rev 1319)
@@ -63,7 +63,10 @@
map<string, AmPromptCollection*> prompt_sets;
void prepareSession(DSMDialog* s);
+ void addVariables(DSMDialog* s, const string& prefix,
+ map<string, string>& vars);
+
vector<DSMModule*> preloaded_mods;
public:
static DSMFactory* instance();
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev