Hi,
ich habe 3 Betamax accounts, da ich in verschiedenen Ländern Telefoniere. Jedoch ändert Betamax die Preise ständig ohne Vorwahrnung. Deswehen dachte ich diese MINI LCR zu machen. Es ist sicherlich ausbaufähig und auch verbesserungsfähig. Aber schon jetzt tut was es tun soll.
gw ist natürlich der peer-name im sip.conf.
Gruß
Noway0815
ich habe 3 Betamax accounts, da ich in verschiedenen Ländern Telefoniere. Jedoch ändert Betamax die Preise ständig ohne Vorwahrnung. Deswehen dachte ich diese MINI LCR zu machen. Es ist sicherlich ausbaufähig und auch verbesserungsfähig. Aber schon jetzt tut was es tun soll.
Code:
extensions.ael
macro getGateway(Number, *gw){
gw="";
Data="";
CCode="";
Network="";
Country="";
System(rm /etc/asterisk/rates.txt /etc/asterisk/CCode.txt /etc/asterisk/Network.txt /etc/asterisk/Country.txt);
len=0;
Set(i=${LEN(${number})});
i=${i}-6; // die eigentliche telefonnummer wird wohl mehr als 6 ziffern sein, oder?
while(${len}=0){
System(cat /etc/asterisk/countrycodes.txt | grep ${Number:0:${i}} > /etc/asterisk/Data.txt);
Set(Data=${FILE(/etc/asterisk/Data.txt)});
Set(len=${LEN(${Data})});
i=${i}-1;
};
Set(CCode=${CUT(Data,":",1)});
Set(Country=${CUT(Data,":",2)});
Set(Network=${CUT(Data,":",3)});
System(lynx -dump -nonumbers -width=1024 [url]http://www.powervoip.com/en/calling-rates.html|grep[/url] -i "${Country}"|grep -i ${Network}|awk '{if($NF=="FREE*") print "0.0000"; else print $NF}' > /etc/asterisk/rates.txt);
Set(powervoip=${FILE(/etc/asterisk/rates.txt,0,6)});
System(lynx -dump -nonumbers -width=1024 [url]http://www.12voip.com/en/calling-rates.html|grep[/url] -i "${Country}"|grep -i ${Network}|awk '{if($NF=="FREE*") print "0.0000"; else print $NF}' > /etc/asterisk/rates.txt);
Set(12voip=${FILE(/etc/asterisk/rates.txt,0,6)});
System(lynx -dump -nonumbers -width=1024 [url]http://www.intervoip.com/en/calling-rates.html|grep[/url] -i "${Country}"|grep -i ${Network}|awk '{if($NF=="FREE*") print "0.0000"; else print $NF}' > /etc/asterisk/rates.txt);
Set(intervoip=${FILE(/etc/asterisk/rates.txt,0,6)});
if( (${12voip} <= ${powervoip} ) && (${12voip} <= ${intervoip}) ) gw=12voip;
else
if( (${powervoip} <= ${12voip} ) && (${powervoip} <= ${intervoip}) ) gw=powervoip;
else
gw=intervoip;
return;
};
Aufgerufen wird es so
&getGateway(Number, gw);
.... Dial(Device/nummer@${gw},......);
/etc/asterisk/countrycodes.txt hat folgendes Format:
00973:Bahrain:Landline:
009733:Bahrain:Mobile:
0032:Belgium:Landline:
003245:Belgium:Mobile:
003247:Belgium:Mobile:
003248:Belgium:Mobile:
003249:Belgium:Mobile:
001519:Canada:Landline:
001514:Canada:Landline:
001506:Canada:Landline:
001450:Canada:Landline:
001600:Canada:Landline:
001807:Canada:Landline:
001604:Canada:Landline:
001613:Canada:Landline:
001647:Canada:Landline:
001705:Canada:Landline:
001709:Canada:Landline:
001778:Canada:Landline:
001418:Canada:Landline:
001438:Canada:Landline:
001416:Canada:Landline:
001819:Canada:Landline:
001867:Canada:Landline:
001902:Canada:Landline:
001905:Canada:Landline:
001204:Canada:Landline:
001250:Canada:Landline:
001403:Canada:Landline:
001306:Canada:Landline:
001289:Canada:Landline:
001226:Canada:Landline:
001780:Canada:Mobil:
usw.
Gruß
Noway0815
Zuletzt bearbeitet: