.titleBar { margin-bottom: 5px!important; }

LCR für Asterisk auf Basis TSB

Dieses Thema im Forum "Asterisk auf FBF" wurde erstellt von macke384, 26 Dez. 2008.

  1. macke384

    macke384 Neuer User

    Registriert seit:
    19 Feb. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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:

  2. dynamic

    dynamic Aktives Mitglied

    Registriert seit:
    1 Apr. 2006
    Beiträge:
    1,154
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    @macke384
    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
     
  3. macke384

    macke384 Neuer User

    Registriert seit:
    19 Feb. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  4. dynamic

    dynamic Aktives Mitglied

    Registriert seit:
    1 Apr. 2006
    Beiträge:
    1,154
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Hat das AGI-Verzeichnis auch Execute Rechte ?
    Code:
    chmod o+rx /usr/lib/asterisk/agi-bin
     
  5. macke384

    macke384 Neuer User

    Registriert seit:
    19 Feb. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ja

    Gruß
    macke384
     
  6. dynamic

    dynamic Aktives Mitglied

    Registriert seit:
    1 Apr. 2006
    Beiträge:
    1,154
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    ... und es funktioniert auch mit +x Rechten auf dem agi Verzeichnis nicht ?
     
  7. macke384

    macke384 Neuer User

    Registriert seit:
    19 Feb. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  8. dynamic

    dynamic Aktives Mitglied

    Registriert seit:
    1 Apr. 2006
    Beiträge:
    1,154
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    @macke384
    Wurde das "Permission Denied" Problem nun durch Anpassen der Zugriffsrechte des "agi-bin" Verzeichnises gelöst, oder musste da was anderes gemacht werden ?
     
  9. macke384

    macke384 Neuer User

    Registriert seit:
    19 Feb. 2006
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hallo,
    ich habe den absoluten Pfad zum PHP Cli eingetragen.

    Gruß
    macke384
     
  10. SR166

    SR166 Neuer User

    Registriert seit:
    11 Apr. 2007
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @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.;)
     
  11. SR166

    SR166 Neuer User

    Registriert seit:
    11 Apr. 2007
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #11 SR166, 10 Jan. 2009
    Zuletzt bearbeitet: 24 Jan. 2009
    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.
     
  12. AtzeW

    AtzeW Neuer User

    Registriert seit:
    26 Dez. 2004
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo macke384,

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

    Danke,
    Alex