Call Center XML Handler now generates XML correctly.

This commit is contained in:
Mark Crane 2015-03-11 19:28:18 +00:00
parent 127a392bf0
commit 1f20397a57
1 changed files with 252 additions and 231 deletions

View File

@ -42,21 +42,6 @@
--exits the script if we didn't connect properly
assert(dbh:connected());
--get the domain_uuid
if (domain_uuid == nil) then
--get the domain_uuid
if (domain_name ~= nil) then
sql = "SELECT domain_uuid FROM v_domains ";
sql = sql .. "WHERE domain_name = '" .. domain_name .."' ";
if (debug["sql"]) then
freeswitch.consoleLog("notice", "[xml_handler] SQL: " .. sql .. "\n");
end
status = dbh:query(sql, function(rows)
domain_uuid = rows["domain_uuid"];
end);
end
end
--get the variables
dsn = trim(api:execute("global_getvar", "dsn"));
@ -75,13 +60,16 @@
--write the queues
table.insert(xml, [[ <queues>]]);
sql = "select * from v_call_center_queues ";
sql = "select * from v_call_center_queues as q, v_domains as d ";
sql = sql .. "where d.domain_uuid = q.domain_uuid; ";
if (debug["sql"]) then
freeswitch.consoleLog("notice", "[xml_handler] SQL: " .. sql .. "\n");
end
x = 0;
dbh:query(sql, function(row)
--set as variables
domain_uuid = row.domain_uuid;
domain_name = row.domain_name;
queue_name = row.queue_name;
queue_extension = row.queue_extension;
queue_strategy = row.queue_strategy;
@ -101,33 +89,57 @@
queue_description = row.queue_description;
table.insert(xml, [[ <queue name="]]..queue_name..[[@]]..domain_name..[[">]]);
table.insert(xml, [[ <param name="strategy" value="]]..queue_strategy..[[">]]);
table.insert(xml, [[ <param name="strategy" value="]]..queue_strategy..[["/>]]);
if (string.len(queue_moh_sound) == 0) then
table.insert(xml, [[ <param name="moh-sound" value=local_stream://default">]]);
table.insert(xml, [[ <param name="moh-sound" value=local_stream://default"/>]]);
else
if (string.sub(queue_moh_sound, 0, 15) == 'local_stream://') then
table.insert(xml, [[ <param name=""moh-sound" value="]]..queue_moh_sound..[[">]]);
table.insert(xml, [[ <param name="moh-sound" value="]]..queue_moh_sound..[["/>]]);
elseif (string.sub(queue_moh_sound, 0, 2) == '${' and string.sub(queue_moh_sound, -5) == 'ring}') then
table.insert(xml, [[ <param name=""moh-sound" value=tone_stream://"]]..queue_moh_sound..[[";loops=-1>]]);
table.insert(xml, [[ <param name="moh-sound" value="tone_stream://]]..queue_moh_sound..[[;loops=-1"/>]]);
else
table.insert(xml, [[ <param name=""moh-sound" value="]]..queue_moh_sound..[[">]]);
table.insert(xml, [[ <param name="moh-sound" value="]]..queue_moh_sound..[["/>]]);
end
end
if (string.len(queue_record_template) > 0) then
table.insert(xml, [[ <param name="record-templat" value="]]..queue_record_template..[[">]]);
if (queue_record_template ~= nil) then
table.insert(xml, [[ <param name="record-template" value="]]..queue_record_template..[["/>]]);
end
if (queue_time_base_score ~= nil) then
table.insert(xml, [[ <param name="time-base-score" value="]]..queue_time_base_score..[["/>]]);
end
if (queue_max_wait_time_with_no_agent ~= nil) then
table.insert(xml, [[ <param name="max-wait-time" value="]]..queue_max_wait_time..[["/>]]);
end
if (queue_max_wait_time_with_no_agent ~= nil) then
table.insert(xml, [[ <param name="max-wait-time-with-no-agent" value="]]..queue_max_wait_time_with_no_agent..[["/>]]);
end
if (queue_max_wait_time_with_no_agent_time_reached ~= nil) then
table.insert(xml, [[ <param name="max-wait-time-with-no-agent-time-reached" value="]]..queue_max_wait_time_with_no_agent_time_reached..[["/>]]);
end
if (queue_tier_rules_apply ~= nil) then
table.insert(xml, [[ <param name="tier-rules-apply" value="]]..queue_tier_rules_apply..[["/>]]);
end
if (queue_tier_rule_wait_second ~= nil) then
table.insert(xml, [[ <param name="tier-rule-wait-second" value="]]..queue_tier_rule_wait_second..[["/>]]);
end
if (queue_tier_rule_wait_multiply_level ~= nil) then
table.insert(xml, [[ <param name="tier-rule-wait-multiply-level" value="]]..queue_tier_rule_wait_multiply_level..[["/>]]);
end
if (queue_tier_rule_no_agent_no_wait ~= nil) then
table.insert(xml, [[ <param name="tier-rule-no-agent-no-wait" value="]]..queue_tier_rule_no_agent_no_wait..[["/>]]);
end
if (queue_discard_abandoned_after ~= nil) then
table.insert(xml, [[ <param name="discard-abandoned-after" value="]]..queue_discard_abandoned_after..[["/>]]);
end
if (queue_abandoned_resume_allowed ~= nil) then
table.insert(xml, [[ <param name="abandoned-resume-allowed" value="]]..queue_abandoned_resume_allowed..[["/>]]);
end
if (queue_announce_sound ~= nil) then
table.insert(xml, [[ <param name="announce-sound" value="]]..queue_announce_sound..[["/>]]);
end
if (queue_announce_frequency ~= nil) then
table.insert(xml, [[ <param name="announce-frequency" value="]]..queue_announce_frequency..[["/>]]);
end
table.insert(xml, [[ <param name="time-base-score" value="]]..queue_time_base_score..[[">]]);
table.insert(xml, [[ <param name="max-wait-time" value="]]..queue_max_wait_time..[[">]]);
table.insert(xml, [[ <param name="max-wait-time-with-no-agent" value="]]..queue_max_wait_time_with_no_agent..[[">]]);
table.insert(xml, [[ <param name="max-wait-time-with-no-agent-time-reached" value="]]..queue_max_wait_time_with_no_agent_time_reached..[[">]]);
table.insert(xml, [[ <param name="tier-rules-apply" value="]]..queue_tier_rules_apply..[[">]]);
table.insert(xml, [[ <param name="tier-rule-wait-second" value="]]..queue_tier_rule_wait_second..[[">]]);
table.insert(xml, [[ <param name="tier-rule-wait-multiply-level" value="]]..queue_tier_rule_wait_multiply_level..[[">]]);
table.insert(xml, [[ <param name="tier-rule-no-agent-no-wait" value="]]..queue_tier_rule_no_agent_no_wait..[[">]]);
table.insert(xml, [[ <param name="discard-abandoned-after" value="]]..queue_discard_abandoned_after..[[">]]);
table.insert(xml, [[ <param name="abandoned-resume-allowed" value="]]..queue_abandoned_resume_allowed..[[">]]);
table.insert(xml, [[ <param name="announce-sound" value="]]..queue_announce_sound..[[">]]);
table.insert(xml, [[ <param name="announce-frequency" value="]]..queue_announce_frequency..[[">]]);
table.insert(xml, [[ </queue>]]);
--increment the value of x
@ -207,11 +219,21 @@
table.insert(xml, [[ type="]]..agent_type..[[" ]]);
table.insert(xml, [[ contact="]]..agent_contact..[[" ]]);
table.insert(xml, [[ status="]]..agent_status..[[" ]]);
if (agent_no_answer_delay_time ~= nil) then
table.insert(xml, [[ no-answer-delay-time="]]..agent_no_answer_delay_time..[[" ]]);
end
if (agent_max_no_answer ~= nil) then
table.insert(xml, [[ max-no-answer="]]..agent_max_no_answer..[[" ]]);
end
if (agent_wrap_up_time ~= nil) then
table.insert(xml, [[ wrap-up-time="]]..agent_wrap_up_time..[[" ]]);
end
if (agent_reject_delay_time ~= nil) then
table.insert(xml, [[ reject-delay-time="]]..agent_reject_delay_time..[[" ]]);
end
if (agent_busy_delay_time ~= nil) then
table.insert(xml, [[ busy-delay-time="]]..agent_busy_delay_time..[[" ]]);
end
table.insert(xml, [[ />]]);
end)
table.insert(xml, [[ </agents>]]);
@ -272,4 +294,3 @@
freeswitch.consoleLog("notice", "[xml_handler] configuration:callcenter.conf source: memcache\n");
end
end --if XML_STRING