Added toll allow and ability to enable it in outbound routes

This commit is contained in:
Riccardo Granchi
2014-11-13 12:12:41 +00:00
parent c47de42b2a
commit 7bc38b2d80
4 changed files with 99 additions and 21 deletions

View File

@@ -1,7 +0,0 @@
<context name="{v_context}">
<extension name="toll_type_assignment" continue="true" app_uuid="742714e5-8cdf-32fd-462c-cbe7e3d655db" enabled="false">
<condition field="destination_number" expression="^.*$">
<action application="set" data="toll_type=${luarun toll_type_assignment.lua ${uuid}}" inline="true"/>
</condition>
</extension>
</context>

View File

@@ -302,6 +302,16 @@
$text['description-accountcode']['pt-pt'] = "Introduza a conta.";
$text['description-accountcode']['fr-fr'] = "";
$text['label-toll_allow']['en-us'] = "Toll allow";
$text['label-toll_allow']['es-cl'] = "Permitir Tarifas Especiales";
$text['label-toll_allow']['pt-pt'] = "Permissões";
$text['label-toll_allow']['fr-fr'] = "Droits";
$text['description-enable-toll_allow']['en-us'] = "Set to true to enable toll allow";
$text['description-enable-toll_allow']['es-cl'] = "Seleccione verdadero para activar permitir Tarifas Especiales";
$text['description-enable-toll_allow']['pt-pt'] = "scolha 'sim' para activar permissões";
$text['description-enable-toll_allow']['fr-fr'] = "Choisir Oui pour activer droits";
$text['label-order']['en-us'] = "Order";
$text['label-order']['es-cl'] = "Orden";
$text['label-order']['pt-pt'] = "Ordem";

View File

@@ -62,7 +62,11 @@ else {
$gateway = check_str($_POST["gateway"]);
$limit = check_str($_POST["limit"]);
$accountcode = check_str($_POST["accountcode"]);
$toll_allow_enable = check_str($_POST["toll_allow_enabled"]);
//set default to enabled
if (strlen($toll_allow_enable) == 0) { $toll_allow_enable = "false"; }
//set the default type
$gateway_type = 'gateway';
$gateway_2_type = 'gateway';
@@ -267,7 +271,7 @@ else {
$tmp_prefix == $dialplan_expression
? $outbound_prefix = ""
: $outbound_prefix = $tmp_prefix;
if ($gateway_type == "gateway") {
$dialplan_name = $gateway_name.".".$abbrv;
$action_data = "sofia/gateway/".$gateway_uuid."/".$prefix_number."\$1";
@@ -482,10 +486,21 @@ else {
dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data, $dialplan_detail_break, $dialplan_detail_inline);
}
if ($toll_allow_enable == "true") {
$dialplan_detail_tag = 'action'; //condition, action, antiaction
$dialplan_detail_type = 'lua';
$dialplan_detail_data = 'app.lua toll_allow ${uuid}';
$dialplan_detail_order = '065';
$dialplan_detail_group = '';
$dialplan_detail_break = '';
$dialplan_detail_inline = 'true';
dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data, $dialplan_detail_break, $dialplan_detail_inline);
}
$dialplan_detail_tag = 'action'; //condition, action, antiaction
$dialplan_detail_type = 'bridge';
$dialplan_detail_data = $action_data;
$dialplan_detail_order = '065';
$dialplan_detail_order = '070';
$dialplan_detail_group = '';
dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data);
@@ -493,7 +508,7 @@ else {
$dialplan_detail_tag = 'action'; //condition, action, antiaction
$dialplan_detail_type = 'bridge';
$dialplan_detail_data = $bridge_2_data;
$dialplan_detail_order = '070';
$dialplan_detail_order = '075';
$dialplan_detail_group = '';
dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data);
}
@@ -502,7 +517,7 @@ else {
$dialplan_detail_tag = 'action'; //condition, action, antiaction
$dialplan_detail_type = 'bridge';
$dialplan_detail_data = $bridge_3_data;
$dialplan_detail_order = '075';
$dialplan_detail_order = '080';
$dialplan_detail_group = '';
dialplan_detail_add($_SESSION['domain_uuid'], $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data);
}
@@ -913,6 +928,20 @@ function type_onchange(dialplan_detail_type) {
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-toll_allow'].":\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='toll_allow_enabled' style='width: 60%;'>\n";
echo " <option value='true' >".$text['label-true']."</option>\n";
echo " <option value='false' selected='true'>".$text['label-false']."</option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-enable-toll_allow']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-order'].":\n";

View File

@@ -23,19 +23,20 @@
-- Riccardo Granchi <riccardo.granchi@nems.it>
--debug
debug["toll_type"] = false
debug["toll_type"] = true
scripts_dir = string.sub(debug.getinfo(1).source,2,string.len(debug.getinfo(1).source)-(string.len(argv[0])+1))
dofile(scripts_dir .. "/resources/functions/explode.lua")
dofile(scripts_dir.."/resources/functions/explode.lua");
--create the api object and get variables
api = freeswitch.API()
uuid = argv[1]
uuid = argv[2]
if not uuid or uuid == "" then
return
end
template_indexes = { "mobile", "landline", "international", "tollfree", "sharedcharge", "premium", "unknown"}
--Define templates for every toll type for your country
function get_toll_types_it()
if (debug["toll_type"]) then
@@ -63,8 +64,17 @@
called = api:executeString("uuid_getvar " .. uuid .. " destination_number")
prefix = api:executeString("uuid_getvar " .. uuid .. " outbound_prefix")
country = api:executeString("uuid_getvar " .. uuid .. " default_country")
toll_allow = api:executeString("uuid_getvar " .. uuid .. " toll_allow")
domain_name = api:executeString("uuid_getvar " .. uuid .. " domain_name")
caller = api:executeString("uuid_getvar " .. uuid .. " caller_id_number")
template_indexes = { "mobile", "landline", "international", "tollfree", "sharedcharge", "premium", "unknown"}
if (debug["toll_type"]) then
freeswitch.consoleLog("NOTICE", "[toll_type_assignment] called: " .. called .. "\n")
freeswitch.consoleLog("NOTICE", "[toll_type_assignment] prefix: " .. prefix .. "\n")
freeswitch.consoleLog("NOTICE", "[toll_type_assignment] country: " .. country .. "\n")
freeswitch.consoleLog("NOTICE", "[toll_type_assignment] tollAllow: " .. toll_allow .. "\n")
end
templates = {}
local toll_type = "unknown"
@@ -78,11 +88,13 @@
if country == "IT" then get_toll_types_it()
elseif country == "US" then get_toll_types_us()
else
freeswitch.consoleLog("NOTICE", "[toll_type_assignment] toll type: " .. toll_type .. "\n")
if (debug["toll_type"]) then
freeswitch.consoleLog("NOTICE", "[toll_type_assignment] toll type: " .. toll_type .. "\n")
end
return toll_type
end
--test templates matching to set correct toll_type
--set toll_type
local found = false
for i,label in pairs(template_indexes) do
template = templates[label]
@@ -113,7 +125,41 @@
break
end
end
freeswitch.consoleLog("NOTICE", "[toll_type_assignment] toll type: " .. toll_type .. "\n")
-- api:executeString("uuid_setvar " .. uuid .. " toll_type " .. toll_type);
-- session:setVariable('toll_type', toll_type);
--check toll allow
allow = false
if ((toll_allow ~= nil) and (string.len(toll_allow) > 0) and (toll_allow ~= "_undef_")) then
parts = explode(",", toll_allow)
for i,part in pairs(parts) do
if (debug["toll_type"]) then
freeswitch.consoleLog("NOTICE", "[toll_type_assignment] checking toll allow part " .. part .. "\n")
end
if ( part == toll_type ) then
allow = true
break
end
end
else
freeswitch.consoleLog("WARNING", domain_name .. " - toll_allow not defined for extension " .. caller .. "\n")
-- Uncomment following line to allow all calls for extensions without toll_allow
-- allow = true
end
--hangup not allowed calls
if ( not allow ) then
freeswitch.consoleLog("WARNING", domain_name .. " - " .. toll_type .. " call not authorized from " .. caller .. " to " .. called .. " : REJECTING!\n")
session:hangup("OUTGOING_CALL_BARRED")
else
freeswitch.consoleLog("NOTICE", domain_name .. " - " .. toll_type .. " call authorized from " .. caller .. " to " .. called .. "\n")
end
end
freeswitch.consoleLog("NOTICE", "[toll_type_assignment] toll type: " .. toll_type .. "\n")
return toll_type