Browse Source

funzioni lua riorganizzate

boyska 2 years ago
parent
commit
1b8ecb7ff0

+ 9 - 64
transfer_back/conf/extensions.lua

@@ -1,3 +1,6 @@
+dofile('/etc/asterisk/rorFunctions.lua')
+dofile('/etc/asterisk/rorDebug.lua')
+dofile('/etc/asterisk/rorConf.lua')
 
 SIP = "PJSIP/"
 
@@ -245,9 +248,6 @@ extensions = {
 	};
 }
 
--- XXX: rimettici il 402, l'ho tolto per fare delle prove; e poi rimettilo come from-regia, non come from-ext
-INTERNI = {401,403,404,405,406};
-EXT = {020202, 402};
 
 -- gli interni si possono chiamare fra loro
 for _, num in ipairs(INTERNI) do
@@ -264,45 +264,11 @@ end
 end ]]--
 
 -- con il prefisso 0, gli interni possono chiamare qualsiasi cosa
-extensions["from-regia"]["_0."] = function(c, ext)
-	app.noop(ext)
-	trunks = { "fastweb/", "vodafone/" };
-	if ext:sub(1,1) == "0" then
-		num = ext:sub(2) -- butta via lo 0 iniziale
-		-- XXX: in realta' questo dovra' passare per i trunk, rimuovere prima o poi
-		trunks = { "" };
-	else
-		num = ext:sub(3) -- butta via l'*1 o *2
-		trunks = { trunks[tonumber(ext:sub(2,2))] };
-	end
-
-	to_dial = ""
-	for i, trunk in ipairs(trunks) do
-		if i > 1 then
-			to_dial = to_dial .. "&"
-		end
-		to_dial = to_dial .. SIP .. trunk .. num
-	end
-
-	-- qui NON ci va il doppio underscore: solo chi chiama puo' usare questa feature
-	app.set("DYNAMIC_FEATURES=mandainondaChiamante")
-	app.dial(to_dial)
-end
-extensions["from-regia"]["_1[12]."] = extensions["from-regia"]["_0."]
+extensions["from-interni"]["_0."] = chiamaEsterno(TRUNKS)
+extensions["from-regia"]["_1[12]."] = chiamaEsterno(TRUNKS)
 
 -- gli esterni possono chiamare, e squilla in tutti i telefoni
-extensions["from-ext"]["_."] = function()
-	to_dial = ""
-	for _, num in ipairs(INTERNI) do
-		if #to_dial > 0 then
-			to_dial = to_dial .. "&"
-		end
-		to_dial = to_dial .. SIP .. num
-	end
-	app.set("__DYNAMIC_FEATURES=mandainondaRicevente")
-	app.dial(to_dial)
-end
-
+extensions["from-ext"]["0612345678"] = chiamaDaEsterno(INTERNI)
 
 extensions["debug"][9000] = function ()
 	app.answer()
@@ -314,30 +280,9 @@ extensions["debug"][9000] = function ()
 	end
 	app.hangup()
 end
-extensions["debug"][9440] = function()
-	app.answer()
-	for i = 1,20 do
-		app.playtones("440/4000")
-		app.wait(4)
-	end
-	app.hangup()
-end
-extensions["debug"][9880] = function()
-	app.answer()
-	for i = 1,20 do
-		app.playtones("880/4000")
-		app.wait(4)
-	end
-	app.hangup()
-end
-extensions["private"][9438] = function()
-	app.answer()
-	for i = 1,20 do
-		app.playtones("438/4000")
-		app.wait(4)
-	end
-	app.hangup()
-end
+extensions["debug"][9440] = tono(440)
+extensions["debug"][9880] = tono(880)
+extensions["private"][9438] = tono(438)
 -- questa e' la stanza in cui 401 incontra i suoi interlocutori
 extensions["private"][9401] = function()
 	app.answer()

+ 5 - 0
transfer_back/conf/rorConf.lua

@@ -0,0 +1,5 @@
+TRUNKS = { "nonEsisto", "messagenetTrunk", "asdTrunk" };
+-- XXX: rimettici il 402, l'ho tolto per fare delle prove; e poi rimettilo come from-regia, non come from-ext
+INTERNI = {401,403,404,405,406};
+EXT = {020202, 402};
+

+ 10 - 0
transfer_back/conf/rorDebug.lua

@@ -0,0 +1,10 @@
+function tono(freq)
+	return function()
+	app.answer()
+	for i = 1,20 do
+		app.playtones(string.format("%d/4000", freq))
+		app.wait(4)
+	end
+	app.hangup()
+end
+end

+ 49 - 0
transfer_back/conf/rorFunctions.lua

@@ -0,0 +1,49 @@
+function chiamaEsterno(_trunks)
+	return function (context, ext)
+		app.noop(ext)
+		app.noop(context)
+		if ext:sub(1,1) == "0" then
+			num = ext:sub(2) -- butta via lo 0 iniziale
+			trunks = _trunks;
+		else
+			num = ext:sub(3) -- butta via l'*1 o *2
+			trunks = { _trunks[tonumber(ext:sub(2,2))] };
+		end
+
+		if context == "from-regia" then
+			-- qui NON ci va il doppio underscore: solo chi chiama puo' usare questa feature
+			app.set("DYNAMIC_FEATURES=mandainondaChiamante")
+			-- XXX: vogliamo che #9 non faccia proprio niente se sei un interno non di regia?
+			--      o vorremmo tipo che facendo #9 da from-interni inoltrasse la chiamata alla regia?
+		end
+
+		to_dial = ""
+		for i, trunk in ipairs(trunks) do
+			if i > 1 then
+				to_dial = to_dial .. "&"
+			end
+			dial_s = string.format("%s%s@%s", SIP, num, trunk)
+			app.dial(dial_s, nil, "g")
+			app.noop("DIALSTATUS=" .. channel.DIALSTATUS.value)
+			if channel.DIALSTATUS.value ~= "CHANUNAVAIL" then
+				app.noop("esco ciao")
+				break
+			end
+		end
+	end
+end
+
+function chiamaDaEsterno(_interni)
+	return function()
+		to_dial = ""
+		for _, num in ipairs(INTERNI) do
+			if #to_dial > 0 then
+				to_dial = to_dial .. "&"
+			end
+			to_dial = to_dial .. SIP .. num
+		end
+		app.set("__DYNAMIC_FEATURES=mandainondaRicevente")
+		app.dial(to_dial)
+	end
+
+end