LCR für Asterisk auf Basis TSB

macke384

Neuer User
Mitglied seit
19 Feb 2006
Beiträge
14
Punkte für Reaktionen
0
Punkte
1
Hallo,

die meisten werden auf der Fritz!box die LCR Erweiterung von Telefon-Sparbuch laufen haben.

Ich möchte nun die diese Erweiterung auch vom * nutzen können. Hierzu gibt es anscheinend noch keine Aktivitäten.

Was habe ich schon getan:

- Das [macro-tsblcr] -> extensions.tsblcr <- auf die aktuelle Asterisk Version 1.6 angepasst.
- im Verzeichnis die Datei /var/media/ftp/Ut163-USB2FlashStorage-01/addons/asterisk16/etc/asterisk/lcr/extensions.tsblcr abgelegt
- PHP-CGI auf der Box installiert (aus dem Lighttpd) . Momentan im Verzeichnis /var/media/ftp/Ut163-USB2FlashStorage-01/addons/asterisk16/usr/lib/asterisk/agi-bin
- die zugehörigen AGI Scripte tsblcr.agi, tsblcr.agi, tsblcr.agi nach agi-bin kopiert und die erste Zeile auf #!./php -q angepasst, damit php gefunden wird.

Ich möchte nun die vorhande LCR Datei lcr.bin, die in /var/tmp/tsb/var liegt verwenden. leider gibt es immer den Fehle, dass die Datei nicht vorhanden ist.

Code:
  == Using SIP RTP CoS mark 5

  == Using SIP RTP CoS mark 5

    -- Executing [089567896@sip7701:1] Macro("SIP/7701-0061b298", "tsblcr,089567896,/var/tmp/tsb/var/lcr.bin,510768,,CAPI/ISDN1,/etc/asterisk/sip.conf,/etc/asterisk/iax.conf,") in new stack
    -- Executing [s@macro-tsblcr:1] Set("SIP/7701-0061b298", "RESTART=0") in new stack
    -- Executing [s@macro-tsblcr:2] Set("SIP/7701-0061b298", "ROPT=") in new stack
    -- Executing [s@macro-tsblcr:3] GotoIf("SIP/7701-0061b298", "1?9") in new stack
    -- Goto (macro-tsblcr,s,9)
    -- Executing [s@macro-tsblcr:9] Set("SIP/7701-0061b298", "CHANNEL(Language)=de") in new stack
    -- Executing [s@macro-tsblcr:10] Goto("SIP/7701-0061b298", "dial,1") in new stack
    -- Goto (macro-tsblcr,dial,1)
    -- Executing [dial@macro-tsblcr:1] AGI("SIP/7701-0061b298", "tsblcr.agi|/var/tmp/tsb/var/lcr.bin|089567896") in new stack
[Dec 26 12:21:41] WARNING[27869]: res_agi.c:623 launch_script: Failed to execute '/usr/lib/asterisk/agi-bin/tsblcr.agi|/var/tmp/tsb/var/lcr.bin|089567896': File does not exist.
    -- Executing [dial@macro-tsblcr:2] GotoIf("SIP/7701-0061b298", "0?disabled,1") in new stack
    -- Executing [dial@macro-tsblcr:3] Set("SIP/7701-0061b298", "IT=0") in new stack
    -- Executing [dial@macro-tsblcr:4] Set("SIP/7701-0061b298", "IT=1") in new stack
[Dec 26 12:21:41] WARNING[27869]: pbx.c:3082 pbx_extension_helper: No application 'Cut' for extension (macro-tsblcr, dial, 5)
  == Spawn extension (macro-tsblcr, dial, 5) exited non-zero on 'SIP/7701-0061b298' in macro 'tsblcr'
  == Spawn extension (macro-tsblcr, dial, 5) exited non-zero on 'SIP/7701-0061b298'

Ausschnitt aus extensions.conf
Code:
exten => _0X.,1,Macro(tsblcr,${EXTEN},/var/tmp/tsb/var/lcr.bin,${CAPI_CALLERID},${PSTNCALLERIDNAME},CAPI/ISDN1,/etc/asterisk/sip.conf,/etc/asterisk/iax.conf,${RESTART})

Weiter muss ich das tsblcr.agi Script noch weiter anpassen. hier gibt es noch eine paar Fehler wie "No application 'Cut' for extension". Aber da mache ich weiter sobald ich auf die Datei zugreifen kann.

Wer kann hier weiterhelfen? bzw Warum werden die realtiven Pfade nicht gefunden?

Sollte die Variante mit der LCR.bin nicht funktionieren werde ich versuchen die Asterisk Variante von telefonsparbuch zu implementieren.

Gruß
macke384
 

Anhänge

  • extensions.tsblcr.txt
    10.6 KB · Aufrufe: 13
  • tsblcr.agi.txt
    10.9 KB · Aufrufe: 9
@macke384
Weiter muss ich das tsblcr.agi Script noch weiter anpassen. hier gibt es noch eine paar Fehler wie "No application 'Cut' for extension". Aber da mache ich weiter sobald ich auf die Datei zugreifen kann.

Wer kann hier weiterhelfen? bzw Warum werden die realtiven Pfade nicht gefunden?
Ich glaube, dass beide Probleme darauf zurückzuführen sind, dass Deine extensions.tsblcr nicht an die neue 1.6'er Syntax angepasst worden ist:
1) AGI-Aufruf: Bei Asterisk 1.6 müssten m.W. im AGI Aufruf die Pipe Zeichen durch Kommata ersetzt werden ( siehe dazu auch hier )
2) Die Applikation CUT existiert in 1.6 nicht mehr und ist durch die Funktion "CUT" ersetzt die in Zusammenhang mit SET genutzt wird, siehe hier

Gruß
dynamic
 
Hallo,
ich bin inzwischen weiter und habe die Scripte soweit bereinigt. Es wird das AGI nun aufgerufen, aber bei der Abarbeitung gibt es fehler die ich mir nicht erklären kann.

Code:
  == Using SIP RTP CoS mark 5

    -- Executing [0621456@sip7701:1] Macro("SIP/7701-005fbc08", "tsblcr,0621456,/etc/asterisk/lcr/tsblcr.lcr,510768,,CAPI/ISDN1,/etc/asterisk/sip.conf,/etc/asterisk/iax.conf,") in new stack
    -- Executing [s@macro-tsblcr:1] Set("SIP/7701-005fbc08", "RESTART=0") in new stack
    -- Executing [s@macro-tsblcr:2] Set("SIP/7701-005fbc08", "ROPT=") in new stack
    -- Executing [s@macro-tsblcr:3] GotoIf("SIP/7701-005fbc08", "1?9") in new stack
    -- Goto (macro-tsblcr,s,9)
    -- Executing [s@macro-tsblcr:9] Set("SIP/7701-005fbc08", "CHANNEL(Language)=de") in new stack
    -- Executing [s@macro-tsblcr:10] Goto("SIP/7701-005fbc08", "dial,1") in new stack
    -- Goto (macro-tsblcr,dial,1)
    -- Executing [dial@macro-tsblcr:1] AGI("SIP/7701-005fbc08", "tsblcr.agi,/etc/asterisk/lcr/tsblcr.lcr,0621456") in new stack
    -- Launched AGI Script /usr/lib/asterisk/agi-bin/tsblcr.agi

<SIP/7701-005fbc08>AGI Tx >> agi_request: tsblcr.agi
<SIP/7701-005fbc08>AGI Tx >> agi_channel: SIP/7701-005fbc08
<SIP/7701-005fbc08>AGI Tx >> agi_language: de
<SIP/7701-005fbc08>AGI Tx >> agi_type: SIP
<SIP/7701-005fbc08>AGI Tx >> agi_uniqueid: 1230331198.0
<SIP/7701-005fbc08>AGI Tx >> agi_version: 1.6.0.1
<SIP/7701-005fbc08>AGI Tx >> agi_callerid: 7701
<SIP/7701-005fbc08>AGI Tx >> agi_calleridname: Büro 7701
<SIP/7701-005fbc08>AGI Tx >> agi_callingpres: 0
<SIP/7701-005fbc08>AGI Tx >> agi_callingani2: 0
<SIP/7701-005fbc08>AGI Tx >> agi_callington: 0
<SIP/7701-005fbc08>AGI Tx >> agi_callingtns: 0
<SIP/7701-005fbc08>AGI Tx >> agi_dnid: 0621456
<SIP/7701-005fbc08>AGI Tx >> agi_rdnis: unknown
<SIP/7701-005fbc08>AGI Tx >> agi_context: macro-tsblcr
<SIP/7701-005fbc08>AGI Tx >> agi_extension: dial
<SIP/7701-005fbc08>AGI Tx >> agi_priority: 1
<SIP/7701-005fbc08>AGI Tx >> agi_enhanced: 0.0
<SIP/7701-005fbc08>AGI Tx >> agi_accountcode: 
<SIP/7701-005fbc08>AGI Tx >> agi_threadid: 13325
<SIP/7701-005fbc08>AGI Tx >> agi_arg_1: /etc/asterisk/lcr/tsblcr.lcr
<SIP/7701-005fbc08>AGI Tx >> agi_arg_2: 0621456
<SIP/7701-005fbc08>AGI Tx >> 
<SIP/7701-005fbc08>AGI Rx << verbose "Failed to execute '/usr/lib/asterisk/agi-bin/tsblcr.agi': Permission denied" 2

  == tsblcr.agi,/etc/asterisk/lcr/tsblcr.lcr,0621456: Failed to execute '/usr/lib/asterisk/agi-bin/tsblcr.agi': Permission denied
<SIP/7701-005fbc08>AGI Tx >> 200 result=1
    -- Executing [dial@macro-tsblcr:2] GotoIf("SIP/7701-005fbc08", "0?disabled,1") in new stack

Selbtverständlich hat das AGI Script +X Rechte.

Wenn ich das AGI über CLI starte funktioniert es wunderbar.

Code:
 ./tsblcr.agi /etc/asterisk/lcr/tsblcr.lcr 01711234567

VERBOSE "Started routing for 01711234567" 5

VERBOSE "Result=01029 01083 preselection" 5

SET VARIABLE TSBLCRROUTING "01029 01083 preselection" 1

SET VARIABLE TSBLCRFULL 01711234567 1

SET VARIABLE TSBLCRINTL +1711234567 1

Hat noch jemand eine Idee??

Gruß
macke384
 
Selbtverständlich hat das AGI Script +X Rechte.
Hat das AGI-Verzeichnis auch Execute Rechte ?
Code:
chmod o+rx /usr/lib/asterisk/agi-bin
 
ja

Gruß
macke384
 
... und es funktioniert auch mit +x Rechten auf dem agi Verzeichnis nicht ?
 
Hallo,

soweit funktioniert jetzt "fast alles". Ich werde in den nächsten Tagen die geänderten Files hochladen.

Ich habe momentan nur noch das Problem, dass ich das LCR File von TelefonSparbuch via tsblcrupdate.php nicht erzeugen kann, da der in der Busybox eingebaute wget --post-data nicht kann.

Ich muss mir mal ein paar gedanken machen wie es zu lösen ist.

Gruß
macke384
 
@macke384
Wurde das "Permission Denied" Problem nun durch Anpassen der Zugriffsrechte des "agi-bin" Verzeichnises gelöst, oder musste da was anderes gemacht werden ?
 
hallo,
ich habe den absoluten Pfad zum PHP Cli eingetragen.

Gruß
macke384
 
@macke384
mich würde das LCR auch interessieren. Könntest Du ne kleine Anleitung schreiben und die Files online stellen? Wäre echt super von Dir.;)
 
Da ich mit dem Script vom Telefon-Sparbuch überhaupt nicht klargekommen bin, hab ich mir ne andre Lösungeinfallen lassen.
Ich hab ein Script geschrieben,bzw..hab mir im Unixforum helfen lassen..
welches die aktuelle Vorwahl für Mobiltelefone von der HP von telefontarifrechner.de abholt.
Das Script wird aufgerufen mit
exten => _01X.,1,AGI(lcr.agi,${CALLERID(num)},${EXTEN})
dann das Script:
Code:
#!/bin/sh
read agi_request
read agi_language
read agi_channel
read agi_type
read agi_uniqueid
read agi_callerid
read agi_dnid
read agi_rdnis
read agi_context
read agi_extension
read agi_priority
read agi_enhanced
read agi_accountcode
read emptyline

#pfad zum log
LOG="/var/media/ftp/MassStorageDevice-Partition-0-5/lcr/LOG.txt"
TMPFILE="/var/media/ftp/MassStorageDevice-Partition-0-5/lcr/tmpsuche"
DB=lcr
CID="$1"
EX="$2"


rm $TMPFILE

echo "Suche im telefontarifrechner"

case $EX in
  0151*|0160*|0161*|0170*|0171*|0175*) wget -q -O $TMPFILE "http://www.telefontarifrechner.de/cgi-bin/handytarife.pl?Anbieter=2&Region=D1-Netz&Uhrzeit=24+Stunden-Tabelle&Tag=Werktag&Dauer=3&Rang=1" ;;
  
  0152*|0162*|0172*|0173*|0174*) wget -q -O $TMPFILE "http://www.telefontarifrechner.de/cgi-bin/handytarife.pl?Anbieter=2&Region=D2-Netz&Uhrzeit=24+Stunden-Tabelle&Tag=Werktag&Dauer=3&Rang=1" ;;

  0155*|0157*|0163*|0177*|0178*) wget -q -O $TMPFILE "http://www.telefontarifrechner.de/cgi-bin/handytarife.pl?Anbieter=2&Region=E-Plus&Uhrzeit=24+Stunden-Tabelle&Tag=Werktag&Dauer=3&Rang=1" ;;
  0159*|0176*|0179*) wget -q -O $TMPFILE "http://www.telefontarifrechner.de/cgi-bin/handytarife.pl?Anbieter=2&Region=E2-Netz&Uhrzeit=24+Stunden-Tabelle&Tag=Werktag&Dauer=3&Rang=1" ;;
esac

if grep -Eo 'Netzvorwahl\:<b>[[:digit:]]*' $TMPFILE | grep -Eo '[[:digit:]][COLOR="Red"]{4,6}[/COLOR]'> /var/media/ftp/MassStorageDevice-Partition-0-5/lcr/null; then
        VORWAHL=`grep -Eo 'Netzvorwahl\:<b>[[:digit:]]*' $TMPFILE | grep -Eo '[[:digit:]]{4,5}'`
	echo 'DATABASE DEL asterisk '"\"$DB\""
	echo 'DATABASE PUT asterisk '"$DB \"$VORWAHL\""
	echo "VORWAHL: $VORWAHL" 	
	echo 'SET VARIABLE LCR '"\"$VORWAHL\""
	echo -e "`date +%e.%m\ %H:%M `von-$CID-an-$EX-ueber-$VORWAHL" >>$LOG
else
	echo "KEIN_LCR"
	echo 'SET VARIABLE LCR '"\"\""
fi;

Nach der Abarbeitung gehts zurück zum Wählplan
exten => _01X.,2,Dial(CAPI/ISDN1/${LCR}${EXTEN},60,r)
wo die vorwahl mit ${LCR} übergeben wird.
Vielleicht hat jemand noch Verbesserungsvorschläge, da ich absoluter Linuxneuling bin.
 
Zuletzt bearbeitet:
Hallo macke384,

kannst Du Deine an Asterisk 1.4/.6 angepassten Scripte posten? Ich sterbe noch immer an dem Cut Fehler.

Danke,
Alex
 

Statistik des Forums

Themen
244,839
Beiträge
2,219,262
Mitglieder
371,543
Neuestes Mitglied
Brainbanger
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.