Nach einigen Änderungen... am besten gleich auf Seite 2 weiterlesen
Dominic
Nach einigen Änderungen... am besten gleich auf Seite 2 weiterlesen
Dominic
Sieht recht nett aus, bastele aber gerade selbst mit telefonsparbuch zusammen an einer loesung mit fallback, voip, forbidden und preselection. Erste Ergebnisse zwischen den Tagen dann hier im Forum.
Wer abnimmt hat mehr vom Telefon!
DSL-Modem: Fritz!Box
Router/Server: PentiumM 1.7GHz/Aopen i855GMEm-LFS/512MB/40GB HDD/Antec Aria/Sirrix PCI.4S0 & HFC Conceptronic128 ISDN, c\'t-Server v1.01 gepatched/bristuff-0.2.0-rc5
Netz: T-Com 6072/512 kBit/s mit T-Online DSL 3000, T-ISDN CallPlus
Clients: Ascom Eurit33plus, FMN alpha euro 3000, Grandstream BT-101, X-Lite, iaxComm
Provider: Voipbuster, Sipgate, Web.de, Uni Saarland
Kein PN-Support!
Hi
@DerDominic:
Das cron-script liefert leider nur noch eine leere lcr.txt (zumindest bei mir).
Da ich von awk keine Ahnung habe ... hast du eine neue angepasste version?
Gruß
Thorsten
Auch HI,
ja, da gab es ständig Probleme mit Teltarif und habe ein neus Skript geschrieben, welches auf Telefonsparbuch zugreift.
Ist zwar noch nicht ganz so fertig wie ich will, kansnt Du aber auch verwenden, unterteilung zwischen Ort, Fern, Mobil und Ausland gibt es nicht mehr, dafür kansnt Du nun ein Fallback über mehrere Stufen machen.
Demnächst, wenn ich Lust und Laune habe werde ich das dann mal erweitern....
Gruß
Dominic
#!/bin/bash
wget 'http://www.telefon-sparbuch.de/tmpl/calc/telephone/std/profi/index.htm?type=Telephone&jscript=1&FORM=profi&ZNAM E=ZNAME&
zone=a&zone=d&zone=e&zone=fi&day=%2B&time=%2B&subm it=Anfrage+senden&MAX_RESULT=5&CBC0=1&_190=1&CONNE CT=ANALOG&PERCENT_SAVED=1
&COSTS_SORT=DFT&COSTS_EXTRA=0&COSTS=3%3A01&comment =1&CENTS=1&PRICE_ONCE=1&PULSE_EXTRA=1&PULSE_EXTRA_ CHOICE=60%2F60&CBC_AT=1&D
_TIME=6-18+%2F+18-21+%2F+21-6&DWEEK_TIME=&DWEEKEND_TIME=wie+bei+Werktag' -O /tmp/ttt.txt
grep Rangliste /tmp/ttt.txt | awk -F '<td nowrap>' '{print $2}' | awk -F '
' '{print $1}' | cat > /tmp/lcr-all.txt
grep Rangliste /tmp/ttt.txt | awk -F '<td nowrap>' '{print $6}' | awk -F '
' '{print $1}' | cat >> /tmp/lcr-all.txt
grep Rangliste /tmp/ttt.txt | awk -F '<td nowrap>' '{print $10}' | awk -F '
' '{print $1}'| cat >> /tmp/lcr-all.txt
grep Rangliste /tmp/ttt.txt | awk -F '<td nowrap>' '{print $14}' | awk -F '
' '{print $1}'| cat >> /tmp/lcr-all.txt
Asterisk 1.2.1-BRIstuffed-0.3.0-PRE-1g
www.thomes-event-cafe.de Feiern, tanzen, lachen. Starten Sie ihre Feier in Thomés Event Café in Quierschied
Hi
>unterteilung zwischen Ort, Fern, Mobil und Ausland gibt es nicht mehr
Das verstehe ich nicht?!
Dass es keine Unterteilung für kurz&lang gibt kann ich ja noch nachvollziehen...
Die erstelle lcr-all.txt datei hat 4 Zeilen - wobei mir nicht klar ist wonach diese liste erstellt wurde!
Gruß
Thorsten
es gibt doch ein fertiges LCR fuer telefonsparbuch ... sucht doch mal nach 'LCR komplett'
Wer abnimmt hat mehr vom Telefon!
DSL-Modem: Fritz!Box
Router/Server: PentiumM 1.7GHz/Aopen i855GMEm-LFS/512MB/40GB HDD/Antec Aria/Sirrix PCI.4S0 & HFC Conceptronic128 ISDN, c\'t-Server v1.01 gepatched/bristuff-0.2.0-rc5
Netz: T-Com 6072/512 kBit/s mit T-Online DSL 3000, T-ISDN CallPlus
Clients: Ascom Eurit33plus, FMN alpha euro 3000, Grandstream BT-101, X-Lite, iaxComm
Provider: Voipbuster, Sipgate, Web.de, Uni Saarland
Kein PN-Support!
hi
@allesok: ist klar - aber so ein einfaches LCR hat auch seinen reiz. ich wollte nicht die komplexe LCR-geschichte installieren....
aber wenn mir nichts anderes übrig bleibt schaue ich mir das mal an.
Gruß
Thorsten
So, im Falle des Interesses weil einem die AllesOK-Lösung zu gewaltig/groß/sonstwas ist......
Hier ein neues LCR, die Daten werden von Billiger-Telefonieren.de gezogen, dabei reichtes einmal am Tag diese zu holen.
bla bla bla... alter kram entfernt .....
Hi
wie bindet man den das Pacal ein? (bin in diese rrichtung ein anfänger). Unter debian gibt es den gpc (GNU Pascal Compiler) - ist das ok?
wie sieht das bt.agi aus? ist das direkt das ausführbare compilat?
Gruß
Thorsten
1. Mit apt-get install fp-compiler den fpc installieren.
2. fpc bt.pas
3. cp bt /var/lib/asterisk/agi-bin/bt.agi
Gruß
Dominic
Asterisk 1.2.1-BRIstuffed-0.3.0-PRE-1g
www.thomes-event-cafe.de Feiern, tanzen, lachen. Starten Sie ihre Feier in Thomés Event Café in Quierschied
Hi Dominic,
das ganze sieht soweit sehr gut aus!
Frage: wie stelle ich sicher dass der Download nach 0:00 Uhr stattfindet? Sonst habe ich ja am Samstag die Liste vom Freitag?
Ist das sichergestellt wenn ich das Downloadscript einfach ein cron.daily ablege?
2 Kleine Wünsche:
a) dein Script wählt ja automatisch die Vorwahl sofern die Nummer nicht mit 0 beginnt. Wenn ich die Vorwahl mitwähle (bin es halt schon gewohnt) nimmt dein Script aber den Tarif für Fern - kann man das ändern?
b) Da die Preise ja mit runtergeladen werden - währe eine Übergabe an das Script genial. So könnte man seine eigene Preisansage machen...
Ansonsten: DANKE! Gutes Script.
Gruß
Thorsten
Hi Thorsten,
füge einfach in Zeile 89 folgendes ein :
if pos (paramstr(2),callerString)> 0 then Distance := local;
Ja, an die Preisgeschichte habe ich auch schon gedacht, die könnte man dann vorher ansagen...
Mal kucken wie man das macht...
Vorschlag, ich setze eine Varibale Costs und Du kuckst nach wie man das Ansagt
Gruß
Dominic
Asterisk 1.2.1-BRIstuffed-0.3.0-PRE-1g
www.thomes-event-cafe.de Feiern, tanzen, lachen. Starten Sie ihre Feier in Thomés Event Café in Quierschied
Das mit der Ansage könnte man ja von dem Sipgate Ansageskript entleihen...
http://www.ip-phone-forum.de/forum/v...hlight=#118703
Gruß,
Tin
Wenn ich mir recht erinnere gibt es doch das was mit Saynum, geht das damit nicht einfacher ?
Asterisk 1.2.1-BRIstuffed-0.3.0-PRE-1g
www.thomes-event-cafe.de Feiern, tanzen, lachen. Starten Sie ihre Feier in Thomés Event Café in Quierschied
Dann auf ein neues :
Hier unser kleiner Pascal :
program lcr;
uses Dos;
const
fallback : boolean = false;
pre : string = '';
Type
t_Distance = (none,local,DE,Mobile,Foreign);
var
infile : Text;
tString : string;
Distance : t_Distance;
CallerString : String;
procedure trim(var is :string);
begin
while (pos (' ',is) > 0) do delete (is,pos (' ',is),1);
end;
function timeOK:boolean;
var
h,m,s,hund : word;
fromT,toT : byte;
temp : string[5];
begin
timeOK:=false;
if pos('Uhr',tString) > 0 then
begin
GetTime (h,m,s,hund);
temp := copy (tString,1,pos('-',tString)-1);
trim (temp);
val (temp,fromT,hund);
temp := copy (tString,pos('-',tString)+1,2);
trim (temp);
val (temp,toT,hund);
timeOK:= (h>=fromT) and (h<=toT);
{ writeln (tString);}
end;
end;
procedure workOn;
const
start = 7;
var
count : byte;
cost,
lcr : string[12];
startp : byte;
endp : byte;
begin
if Distance = local then count := start;
if Distance = DE then count := start+1;
if Distance = Mobile then count := start+2;
if Distance = Foreign then count := start+3;
if fallback then count:=count+4;
while (not EOF(infile)) do
begin
readln (infile,tString);
if count = 0 then begin
writeln (tString);
lcr := copy (tString,1,pos(' ',tString)-1);
startp := pos('>',tString)+1;
endp := pos (' c',tString);
writeln ('Start : ',startp, ' Ende : ',endp);
cost := copy (tString,startp, endp-startp);
writeln ( 'SET VARIABLE LCR ',lcr,pre);
writeln ( 'SET VARIABLE COSTS ',cost);
end;
dec(count);
end;
end;
function setDistance:boolean;
begin
Distance := none;
if callerString[1] <> '0' then Distance := local;
if callerString[1] = '0' then Distance := DE;
if pos ('01',callerString) = 1 then Distance := Mobile;
if pos ('00',callerString) = 1 then Distance := Foreign;
if pos (paramstr(2),callerString)> 0 then Distance := local;
if Distance = local then pre := paramstr(2);
setDistance := Distance <> none;
end;
begin
{ Parameter
1 : gewaehlte Nummer
2 : lokale Vorwahl
3 : Fallback
}
Assign (infile, '/tmp/bt-call-cost.txt');
Reset(infile);
callerString := paramstr(1);
fallback := paramstr(3) = 'fallback';
if setDistance then
begin
while (not EOF(infile)) do
begin
readln (infile,tString);
if timeOK then workOn;
end;
end;
writeln;
end.
Der mit diesem Script gefüttert wird :
#!/bin/bash
#wget 'http://www.billiger-telefonieren.de/tarife/tagesuebersicht.php3?maxanzeige=2&inlandszone%5B%5 D=Ort&inlandszone%5B%5D=Fern&inlandszone%5B%5D=D1& inlandszone%5B%5D=NULL&inlandszone%5B%5D=NULL&ausl andszonen%5B%5D=Frankreich&auslandszonen%5B%5D=&ze itraum=wt&tageszeitraum=0-24&kompakt=y&ids%5B%5D=8378&taktmax=60&tarif_ansag e=n&inc_190=on&berechnen=berechnen&ids%5B%5D=8516& ids%5B%5D=8494&ids%5B%5D=8636&ids%5B%5D=8621&ids%5 B%5D=8614&ids%5B%5D=8610&ids%5B%5D=8580&ids%5B%5D= 8345&ids%5B%5D=8058&ids%5B%5D=8639&ids%5B%5D=8343& ids%5B%5D=8496&ids%5B%5D=8633&ids%5B%5D=8561&ids%5 B%5D=8254&ids%5B%5D=8619&ids%5B%5D=8550&ids%5B%5D= 8061&ids%5B%5D=8563&ids%5B%5D=8638&ids%5B%5D=8604& ids%5B%5D=8611&ids%5B%5D=7775&ids%5B%5D=8059&ids%5 B%5D=8634&ids%5B%5D=8562&ids%5B%5D=8377&ids%5B%5D= 8615&ids%5B%5D=8605&ids%5B%5D=8057&ids%5B%5D=8631& ids%5B%5D=7765&ids%5B%5D=7732&ids%5B%5D=7513&ids%5 B%5D=8612&ids%5B%5D=8632&ids%5B%5D=8635&ids%5B%5D= 8616&ids%5B%5D=8624&ids%5B%5D=8599&ids%5B%5D=8592& printversion=yes' -O /tmp/bt.txt
grep fbbb /tmp/bt.txt | awk -F 'fbbb">' \
'{ split ($2,ar,"<"); print ar[1] " " ar[3]; \
split ($3,ar,"<"); print ar[1] " " ar[3]; \
split ($4,ar,"<"); print ar[1] " " ar[3]; \
split ($5,ar,"<"); print ar[1] " " ar[3]; \
}' > /tmp/bt-call-cost.txt
Es werden die Variablen LCR und COSTS gesetzt, nun muß man das nur noch irgendwie ausgeben.....
Dominic
Asterisk 1.2.1-BRIstuffed-0.3.0-PRE-1g
www.thomes-event-cafe.de Feiern, tanzen, lachen. Starten Sie ihre Feier in Thomés Event Café in Quierschied
Um die ganze Sache dann zu vervollständigen :
exten => _XXX.,1,SetLanguage(de)
exten => _XXX.,2,Ringing
exten => _XXX.,3,Macro(Tel${PRI_NETWORK_CID})
exten => _XXX.,4,SetCIDNum(${outMSN})
exten => _XXX.,5,agi(bt.agi,${EXTEN},06897)
exten => _XXX.,6,SayPhonetic,${COSTS} ;
exten => _XXX.,7,Dial(${ISDNEXT}/${LCR}${EXTEN},60,Tr)
exten => _XXX.,8,Congestion
exten => _XXX.,107,agi(bt.agi,${EXTEN},06897,'fallback')
exten => _XXX.,108,SayPhonetic,${COSTS} ;
exten => _XXX.,109,Dial(${ISDNEXT}/${LCR}${EXTEN},60,Tr)
exten => _XXX.,110,Congestion
exten => h,1,Hangup
Hmmm, hab ich eigentlich nix besseres zu tun ?????
Gruß
Dominic
Asterisk 1.2.1-BRIstuffed-0.3.0-PRE-1g
www.thomes-event-cafe.de Feiern, tanzen, lachen. Starten Sie ihre Feier in Thomés Event Café in Quierschied
Hi
danke für den genial schnellen service!
Das SayPhonetic scheint bei mir noch nicht richtig zu laufen - obwohl meine gebristuffte 1.0.7 den Befehl schon kennt. Ich denke ich werde mir das irgendwie noch zurechtbiegen mit
"Dieses Gespräch Kostet"
Saynumber( Zahl vor dem Komma)
"Komma"
SayNumber (Zahl nach dem Komma)
"cent pro Minute"
Das krieg ich aber auch selbst gebacken...
Gruß
Thorsten
Keine Ursache,
wenn Du dann das nette Ansagegespräch zusammengeschaubt hast, bitte zukommen lassen...
Gruß
Dominic
Asterisk 1.2.1-BRIstuffed-0.3.0-PRE-1g
www.thomes-event-cafe.de Feiern, tanzen, lachen. Starten Sie ihre Feier in Thomés Event Café in Quierschied
Hi
ein kleiner Fehler den ich gerade Festgestellt habe:
wir haben nun 23:15 - das Script verwendet die Preise die für 22-23 Uhr angegeben sind!
Keine Ahnung ob das nur in diesem Zeitfenster so ist (vielleicht weil das Fenster von 23 bis 0 geht?)
Meine Preisansage sieht so aus:
exten => _8.,3,agi(bt.agi,${EXTEN:1},06027)
exten => _8.,4,Wait(0.5)
exten => _8.,5,SayNumber(${COSTS}) <-- Das sagt die Zahl von dem Komma
exten => _8.,6,Playback(comma)
exten => _8.,7,SayNumber(${COSTS:-2,2}) <-- Das sagt die letzten beiden Ziffern
exten => _8.,8,Playback(cent)
Gruß
Thorsten
Hoppla, dummer Fehler hier nun korrigiert :
Code:program lcr; uses Dos; const fallback : boolean = false; pre : string = ''; Type t_Distance = (none,local,DE,Mobile,Foreign); var infile : Text; tString : string; Distance : t_Distance; CallerString : String; procedure trim(var is :string); begin while (pos (' ',is) > 0) do delete (is,pos (' ',is),1); end; function timeOK:boolean; var h,m,s,hund : word; fromT,toT : byte; temp : string[5]; begin timeOK:=false; if pos('Uhr',tString) > 0 then begin GetTime (h,m,s,hund); temp := copy (tString,1,pos('-',tString)-1); trim (temp); val (temp,fromT,hund); temp := copy (tString,pos('-',tString)+1,2); trim (temp); val (temp,toT,hund); if toT = 0 then toT := 24; timeOK:= (h>=fromT) and (h<toT); { writeln (tString);} end; end; procedure workOn; const start = 7; var count : byte; cost, lcr : string[12]; startp : byte; endp : byte; begin if Distance = local then count := start; if Distance = DE then count := start+1; if Distance = Mobile then count := start+2; if Distance = Foreign then count := start+3; if fallback then count:=count+4; while (not EOF(infile)) do begin readln (infile,tString); if count = 0 then begin writeln (tString); lcr := copy (tString,1,pos(' ',tString)-1); startp := pos('>',tString)+1; endp := pos (' c',tString); writeln ('Start : ',startp, ' Ende : ',endp); cost := copy (tString,startp, endp-startp); writeln ( 'SET VARIABLE LCR ',lcr,pre); writeln ( 'SET VARIABLE COSTS ',cost); end; dec(count); end; end; function setDistance:boolean; begin Distance := none; if callerString[1] <> '0' then Distance := local; if callerString[1] = '0' then Distance := DE; if pos ('01',callerString) = 1 then Distance := Mobile; if pos ('00',callerString) = 1 then Distance := Foreign; if pos (paramstr(2),callerString)> 0 then Distance := local; if Distance = local then pre := paramstr(2); setDistance := Distance <> none; end; begin { Parameter 1 : gewaehlte Nummer 2 : lokale Vorwahl 3 : Fallback } Assign (infile, '/tmp/bt-call-cost.txt'); Reset(infile); callerString := paramstr(1); fallback := paramstr(3) = 'fallback'; if setDistance then begin while (not EOF(infile)) do begin readln (infile,tString); if timeOK then workOn; end; end; writeln; end.