Found a better solution for the hot desking problem removed the previous solution and implemented the better approach.

This commit is contained in:
Mark Crane
2012-07-12 20:24:35 +00:00
parent e4906e815e
commit 1e1a5c336f

View File

@@ -49,10 +49,10 @@
if ( session:ready() ) then
session:answer();
domain_name = session:getVariable("domain_name");
pin_number = session:getVariable("pin_number");
sounds_dir = session:getVariable("sounds_dir");
sip_from_user = session:getVariable("sip_from_user");
sip_from_host = session:getVariable("sip_from_host");
direction = session:getVariable("direction"); --in, out, both
extension = tostring(session:getVariable("extension")); --true, false
dial_string = tostring(session:getVariable("dial_string"));
@@ -109,7 +109,7 @@ if ( session:ready() ) then
freeswitch.consoleLog("NOTICE", "sql: ".. sql .. "\n");
end
dbh:query(sql, function(row)
--domain_uuid = row.domain_uuid;
db_domain_uuid = row.domain_uuid;
db_extension_uuid = row.extension_uuid;
db_dial_string = row.dial_string;
db_dial_user = row.dial_user;
@@ -128,31 +128,18 @@ if ( session:ready() ) then
--add the dial string
if (direction == "in") then
if (string.len(dial_string) == 0) then
dial_string = [[{sip_invite_domain=]] .. domain_name .. [[,presence_id=]] .. sip_from_user .. [[@]] .. domain_name .. [[}${sofia_contact(]] .. sip_from_user .. [[@]] .. domain_name .. [[)}]];
dial_string = [[{sip_invite_domain=]] .. sip_from_host .. [[,presence_id=]] .. sip_from_user .. [[@]] .. sip_from_host .. [[}${sofia_contact(]] .. sip_from_user .. [[@]] .. sip_from_host .. [[)}]];
end
if (string.len(db_dial_user) > 0) then
sql = "UPDATE v_extensions SET ";
sql = sql .. "dial_string = null, ";
sql = sql .. "dial_user = null, ";
sql = sql .. "dial_domain = null ";
sql = sql .. "WHERE extension_uuid = '" .. db_extension_uuid .."' ";
if (debug["sql"]) then
freeswitch.consoleLog("NOTICE", "[dial_string] sql: ".. sql .. "\n");
end
dbh:query(sql);
session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/voicemail/vm-deleted.wav");
else
sql = "UPDATE v_extensions SET ";
sql = sql .. "dial_string = '" .. dial_string .."', ";
sql = sql .. "dial_user = '" .. sip_from_user .."', ";
sql = sql .. "dial_domain = '" .. domain_name .."' ";
sql = sql .. "WHERE extension_uuid = '" .. db_extension_uuid .."' ";
if (debug["sql"]) then
freeswitch.consoleLog("NOTICE", "[dial_string] sql: ".. sql .. "\n");
end
dbh:query(sql);
session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/voicemail/vm-saved.wav");
sql = "UPDATE v_extensions SET ";
sql = sql .. "dial_string = '" .. dial_string .."', ";
sql = sql .. "dial_user = '" .. sip_from_user .."', ";
sql = sql .. "dial_domain = '" .. sip_from_host .."' ";
sql = sql .. "WHERE extension_uuid = '" .. db_extension_uuid .."' ";
if (debug["sql"]) then
freeswitch.consoleLog("NOTICE", "[dial_string] sql: ".. sql .. "\n");
end
dbh:query(sql);
session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/voicemail/vm-saved.wav");
end
--remove the dialstring
if (direction == "out") then
@@ -185,12 +172,12 @@ if ( session:ready() ) then
else
--if the dial string is empty then set the dial string
if (string.len(dial_string) == 0) then
dial_string = [[{sip_invite_domain=]] .. domain_name .. [[,presence_id=]] .. sip_from_user .. [[@]] .. domain_name .. [[}${sofia_contact(]] .. sip_from_user .. [[@]] .. domain_name .. [[)}]];
dial_string = [[{sip_invite_domain=]] .. sip_from_host .. [[,presence_id=]] .. sip_from_user .. [[@]] .. sip_from_host .. [[}${sofia_contact(]] .. sip_from_user .. [[@]] .. sip_from_host .. [[)}]];
end
sql = "UPDATE v_extensions SET ";
sql = sql .. "dial_string = '" .. dial_string .."', ";
sql = sql .. "dial_user = '" .. sip_from_user .."', ";
sql = sql .. "dial_domain = '" .. domain_name .."' ";
sql = sql .. "dial_domain = '" .. sip_from_host .."' ";
sql = sql .. "WHERE extension_uuid = '" .. db_extension_uuid .."' ";
if (debug["sql"]) then
freeswitch.consoleLog("NOTICE", "[dial_string] sql: ".. sql .. "\n");
@@ -207,7 +194,7 @@ if ( session:ready() ) then
--log to the console
if (debug["var"]) then
freeswitch.consoleLog("NOTICE", "domain_name: ".. domain_name .. "\n");
freeswitch.consoleLog("NOTICE", "sip_from_host: ".. sip_from_host .. "\n");
freeswitch.consoleLog("NOTICE", "extension_uuid: ".. extension_uuid .. "\n");
freeswitch.consoleLog("NOTICE", "dial_string: ".. dial_string .. "\n");
end