Least Cost Routing komplett!

allesOK

Mitglied
Mitglied seit
24 Mai 2004
Beiträge
732
Punkte für Reaktionen
0
Punkte
0
Hallo!

Lang ersehnt haben viele bestimmt schon das LCR. Mir ist es endlich gelungen zusammen mit Harald Becker vom telefon-sparbuch.de eine (Beta-)Version meines LCR-Tools fuer den * zu veroeffentlichen.

Einige Schritte:
1) http://www.telefon-sparbuch.de/tmpl/calc/telephone/lcr/info/asterisk.htm durchlesen (teilweise Englisch)
2) Tool dort runter laden und die Dateien in eure entsprechenden Verzeichne kopieren
3) Konfig hier http://www.telefon-sparbuch.de/tmpl/calc/telephone/lcr/Asterisk/calc_tk.htm?TKANLAGE_BASE=Asterisk erstellen und abspeichern.
4) tsblcrupdate einmal laufen lassen und wie in 1) beschrieben cronjob aufsetzen! Maximal drei mal am Tag!!!! Sonst bricht der tsb-Server zusammen!!!!
5) Macro aus extensions.tsblcr einbinden. D.h. Variablen entsprechend setzen und in eurem Outgoing-Kontext das Dial-Kommanda durch den Makro-Aufruf ersetzen!!!
6) Viel Spass!

[7) 'Restart' ist nur ein nettes Gimmick. Damit koennt ihr nach dem Anruf noch ne weitere Aktion durchfuehren zb sich nochmal einen Dialtone geben lassen .... am besten wartet ihr noch ein paar Tage, dann veroeffentliche ich noch mehr).]

vg Eric

Coming next:
a) user.conf -> so behaltet ihr den Ueberblick ueber eure Accounts/MSN. Zum Beispiel kann man fuer jeden User eine eigene tsblcr.routing anlegen *g*.
b) Line-Select reloaded (in memoriam meines alten Threads!)
c) Callback'n'through: Mit callback.conf, d.h. spezielles Verhalten fuer vordefinierte CallerIDs, allow unknown callerid?, allow no callerid? Im letzeren Fall, mit der Aufforderung nach Passwort eine Callback Nummer einzugeben. Funktioniert auch mit Sip-Providern!!!
d) noch aufgefallen: ENUM *g*

Also seid gespannt!
 
Hallo,

Also ich hab das jetzt mal probiert, aber kann es sein das da so nen denkfehler im update script ist? weil wenn ich das ja richtig verstehe, dann suchst du dir das workdirectory und setzt es mit dem eingabepath zusammen. Das ist ja dann doppeltgemoppelt und der pfad stimmt nicht mehr und somit kann er auch nicht die leserechte überprüfen.

es reicht ja wenn man den absoluten pfad beim starten angibt.
gruss
Tobias
 
@"Asterisk-Pro" ;-)

[7) 'Restart' ist nur ein nettes Gimmick. Damit koennt ihr nach dem Anruf noch ne weitere Aktion durchfuehren zb sich nochmal einen Dialtone geben lassen .... am besten wartet ihr noch ein paar Tage, dann veroeffentliche ich noch mehr).]

Also steht der dazu passende komplette und überarbeitete Dialplan mit "Benutzerverwaltung" kurz vor dem Release? Ich kann es kaum noch warten, LCR ist für mich nur ein Add-On, aber auf diesen Dialplan bin ich echt gespannt :)

Gruß,

Jui
 
Ja auch der Dialplan steh kurz vor der release - muss noch was mit call-placing testen. Ich denke, es dauert nicht mehr so lange ... 1-10 Tage *g*

@crazyman: Ja das stimmt, das war auch das letzte, was ich kurz vor der Release noch machen musste. Das Problem ist, das relative Pfade auch dann stimmen muessen, wenn das Skript als cronjob ausgefuehrt wird. Wobei man dort am besten sowieso den absoluten Pfad (wie im Beispiel) eingibt. Hast du die korrekt Loesung schon eingebaut? Herschicken und ich uebernehme es. Funktioniert es denn bei dir nicht? Ich hatte keine Probleme ...

Fragen bitte wenn es geht hier im Forum diskutieren!
 
Hallo allesOK,

also ich hab halt einfach den schnick schnack weggemacht;)

$configfile = $argv[1];
$routingfile = $argv[2];


gruss
Tobias
 
Achtung, dann musst du aber immer, den absoluten Pfad angeben!
 
hallo,

ja das ist klar,
wenn man das umgehen will muss man halt ne abfrage machen ob das erste zeichen von den arg nen "/" ist ... und damit wäre es gegessen ... aber man gibt sowiso immer absolute pfade an von demher ..
es beisst sich atm eh mit deiner beschreibung ;) weil wenn mans eben so macht wie du es erklärt hast geht es nicht ;)

andere frage .. warum ist die ganze erklärung auf english? ist das teil auch für english sprachige interresant? man bekommt ja nur LCR für deutschland oder ?
 
Englisch: Liegt daran, dass ich eigentlich sehr viel auf Englisch mache... Aber die Schritte oben und zusammen mit den Dateien sollten eigentlich ausreichen. Wo ist es weniger intuitiv? Ich denke, es ist noch nicht die Endversion!
 
Ich hab den LCR ausprobiert, in extensions.tsblcr mußte ich Zeile 120 ändern, damit bei mir per Capi rausgewählt werden kann:

exten => pstn,10,Dial(${ARG5}:${CBC}${ARG1},,Tt${ROPT})

(":" statt "/").

Wie funktioniert das mit dem Fallback? Währe interessant, da der billigste Provider oft überlaufen ist, wenn dann automatisch der zweite gewählt würde, könnte man sich viel ärger sparen.
 
Du kannst das auf der Webseite einstellen, wir oft der erste Provider versucht werden soll. Ist dieser belegt, kannst du auf Fallback zurueckgreifen. Dann wird der zweite Provider eine bestimmte Anzahl oft versucht. Und dann kannst du festlegen, ob abgebrochen wird, oder ob dein preselection anbieter genutzt werden soll (keine Vorwahl).

Der Preselection Provider wird auch immer bei Sonderrufnummern genutzt. Und wenn du XXL hast, wird auch nichts vorgewaehlt an den XXL Tagen.

Danke fuer den CAPI-Tip. Ich werde es einbauen!
 
hallo,

also ich wollte das script jetzt grad mal vom shell aus starten ... da kommen ne menge fehlermeldungen .. ist das normal ?

Code:
./tsblcr.agi /etc/asterisk/lcr/tsblcr.routing 0173987xxxx
PHP Notice:  Use of undefined constant STDIN - assumed 'STDIN' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 318
PHP Notice:  Use of undefined constant STDOUT - assumed 'STDOUT' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 319
PHP Notice:  Use of undefined constant STDERR - assumed 'STDERR' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 320
PHP Warning:  fputs(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 323
PHP Warning:  fflush(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 324
PHP Warning:  fgets(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 328
PHP Notice:  Use of undefined constant STDIN - assumed 'STDIN' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 318
PHP Notice:  Use of undefined constant STDOUT - assumed 'STDOUT' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 319
PHP Notice:  Use of undefined constant STDERR - assumed 'STDERR' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 320
PHP Warning:  fputs(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 323
PHP Warning:  fflush(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 324
PHP Warning:  fgets(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 328
PHP Notice:  Use of undefined constant STDIN - assumed 'STDIN' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 318
PHP Notice:  Use of undefined constant STDOUT - assumed 'STDOUT' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 319
PHP Notice:  Use of undefined constant STDERR - assumed 'STDERR' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 320
PHP Warning:  fputs(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 323
PHP Warning:  fflush(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 324
PHP Warning:  fgets(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 328
PHP Notice:  Use of undefined constant STDIN - assumed 'STDIN' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 318
PHP Notice:  Use of undefined constant STDOUT - assumed 'STDOUT' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 319
PHP Notice:  Use of undefined constant STDERR - assumed 'STDERR' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 320
PHP Warning:  fputs(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 323
PHP Warning:  fflush(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 324
PHP Warning:  fgets(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 328
PHP Notice:  Use of undefined constant STDIN - assumed 'STDIN' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 318
PHP Notice:  Use of undefined constant STDOUT - assumed 'STDOUT' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 319
PHP Notice:  Use of undefined constant STDERR - assumed 'STDERR' in /var/lib/asterisk/agi-bin/tsblcr.agi on line 320
PHP Warning:  fputs(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 323
PHP Warning:  fflush(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 324
PHP Warning:  fgets(): supplied argument is not a valid stream resource in /var/lib/asterisk/agi-bin/tsblcr.agi on line 328

Edit von Christoph: Bitte an die "Code"-Funktion denken. :)
 
Hmm gute Frage. Welche PHP-Version hast du denn?

Bei mir laeuft diese: PHP 4.3.8-12 (cli) (built: Sep 6 2004 05:46:13)
 
PHP 4.3.10 (cgi) (built: Dec 21 2004 10:27:48)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
 
Hast du auch das CLI von php installiert? Bei mir steht (cli) dabei, bei dir (cgi).
 
@elmar:

schau mal ich habe in extensions.tsblcr den pstn-Teil aufgebohrt:

Code:
; pstn
exten => pstn,1,SetCIDNum(${ARG3})
exten => pstn,2,SetCIDName(${ARG4})
exten => pstn,3,GotoIf($["${ARG5}" = "CAPI"]?4:6)
exten => pstn,4,SetVar(PSTNTRUNK=CAPI/${ARG3}:b)
exten => pstn,5,Goto(7)
exten => pstn,6,SetVar(PSTNTRUNK=${ARG5}/)
exten => pstn,7,GotoIf($["${CBC}" = "preselection"]? 20 : 10)
exten => pstn,10,Dial(${PSTNTRUNK}${CBC}${ARG1},,Tt${ROPT})
exten => pstn,11,Goto(ds-${DIALSTATUS},1)
exten => pstn,111,Goto(ds-${DIALSTATUS},1)
exten => pstn,211,Goto(ds-${DIALSTATUS},1)
exten => pstn,20,Dial(${PSTNTRUNK}${ARG1},,Tt${ROPT})
exten => pstn,21,Goto(ds-${DIALSTATUS},1)
exten => pstn,121,Goto(ds-${DIALSTATUS},1)
exten => pstn,221,Goto(ds-${DIALSTATUS},1)

Es reicht dann als TRUNK den Wert "CAPI" zu setzen. Der Rest wird dann gebaut. Hab leider selbst keine CAPI, vllt kannst du es ja mal probieren und mir Feedback geben!
 
allesOK schrieb:
Du kannst das auf der Webseite einstellen, wir oft der erste Provider versucht werden soll. Ist dieser belegt, kannst du auf Fallback zurueckgreifen. Dann wird der zweite Provider eine bestimmte Anzahl oft versucht. Und dann kannst du festlegen, ob abgebrochen wird, oder ob dein preselection anbieter genutzt werden soll (keine Vorwahl).

Hat den Fallback mal jemand ausprobiert? Bei mir scheint es nicht zu funktionieren. Falls der CbC-Provider busy ist, gibts nur tutut. :(
 
Bei mir klappt es, aber ich werde es nochmal ueberpruefen. Ich baue mal ezu Testzwecken eine Ansage rein, die mir sagt, welchen Provider ich gerade teste.
 
Hallo AllesOK!

Also was Du da auf die Beine gestellt hast ist echt ne Super Sache. Man kann ja zum rauswählen auch SIP Provider nutzen. Wie müsste ich das ganze denn konfigurieren, so dass private Anrufe (Line1) z.B. immer über "sip-privat" und geschäftliche Anrufe (Line2) immer über "sip-gesch" rausgehen? Bzw. geht das überhaupt? Hier wäre es spitze, falls das noch nicht geht, wenn man die Sip-Provider irgendwie noch den internen MSN's am S0 Bus zuweisen könnte. Ansonsten gibts Probleme mit dem Finanzamt, wenn alle Privatgespäche übers Geschäft laufen ;-)

Gruß,

Marco
 
Ja, du kannst es trennen. Du musst halt zwei Konfigurationen bei tsb.de erstellen (wo halt einmal sip-gesch und einmal sip-privat bei z.b. sipgate steht) und dann auch zwei Routings per cronjob runterladen.

Beim Makroaufruf selbst kannst du angeben, welche Routing-Datei verwendert werden soll. Jetzt musst du nur noch im Dialplan sicherstellen, dass zu deiner MSN (PRI_NETWORK_CID od. CALLERIDNUM) die richtige Routing-Datei genwaehlt wird. Am Wochenende werde ich wohl meine Nutzerverwaltung und einen erweiterten Dialplan veroeffentlichen. Dann bekommst du alles "frei Haus".
 
Ok! Ich denke dann werde ich einfach noch bis zum Wochenende abwarten, um nicht alles 2 mal machen zu müssen ;-)

Marco
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.