adding variables to outgoing calls as struct

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1319 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Stefan Sayer 18 years ago
parent 6b09fd2d50
commit 860943adec

@ -226,9 +226,13 @@ int DSMFactory::onLoad()
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,14 +268,42 @@ AmSession* DSMFactory::onInvite(const AmSipRequest& req,
}
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");

@ -63,6 +63,9 @@ class DSMFactory
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:

Loading…
Cancel
Save