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

Trixbox 2.0 und tsblcr von Telefonsparbuch

Dieses Thema im Forum "FreePBX, TrixBox (Asterisk@Home)" wurde erstellt von fstolzen, 5 Feb. 2007.

  1. fstolzen

    fstolzen Neuer User

    Registriert seit:
    8 Nov. 2004
    Beiträge:
    39
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Gemeinde,

    hat schon irgendjemand das tsblcr macro von Telefonsparbuch in die Trixbox 2.0 Version integriert ?

    Wenn ja, kann mir mal da jemand auf die Sprünge helfen, er liest zwar tsblcr Dateien aus, jedoch wählt er keine Nummer, sondern bringt ein Congestion.

    In der extensions.conf, musste man da ja noch ein paar Zeilen einfügen, nur sieht die bei Trixbox 2.0 sehr anders aus,

    Danke für Eure Hilfe.

    Gruss Frank
     
  2. stony999

    stony999 Neuer User

    Registriert seit:
    12 Aug. 2006
    Beiträge:
    169
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    bei mir gehts jetzt.

    Ich hatte das LCR auf meiner Trixbox 1.1 bereits installiert:
    Aus http://www.ip-phone-forum.de/showthread.php?t=70005&highlight=tsb
    Mit Enum aus http://www.ip-phone-forum.de/showpost.php?p=563793&postcount=179

    Jetzt habe ich die Dateien auf die Trixbox 2.0 herübergenommen und folgende Einstellungen vorgenommen:

    extensions_custom.conf
    Code:
    #include lcr/extensions.tsblcr
    Meine Wahllregeln definieren zap/g0 als Trunk, wenn ich Mobilnummern wählen möchte. Alles andere geht über SIP. Deshalb überprüfe ich hier Trunk=1 (bei mir zap/g0), und verzweige zum LCR

    extensions.conf
    Code:
    [macro-dialout-trunk]
    exten => s,1,Set(DIAL_TRUNK=${ARG1})
    
    ; If NODEST is set, clear it. No point in remembering since dialout-trunk will just end in the
    ; bit bucket. But if answered by an outside line with transfer capability, we want NODEST to be
    ; clear so a subsequent transfer to an internal extension works and goes to voicmail or other
    ; destinations.
    ;
    exten => s,n,Set(_NODEST=)
    
    exten => s,n,Set(DIAL_NUMBER=${ARG2})
    exten => s,n,Set(ROUTE_PASSWD=${ARG3})
    exten => s,n,Set(DIAL_TRUNK_OPTIONS=${DIAL_OPTIONS}) // will be reset to TRUNK_OPTIONS if not intra-company
    exten => s,n,GotoIf($["${ROUTE_PASSWD}" = ""]?noauth) ; arg3 is pattern password
    exten => s,n(auth),Authenticate(${ROUTE_PASSWD})
    exten => s,n(noauth),Set(GROUP()=OUT_${DIAL_TRUNK})
    exten => s,n,Macro(user-callerid,SKIPTTL)
    exten => s,n,Macro(record-enable,${CALLERID(number)},OUT)
    exten => s,n,GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?skipoutcid) ;Set to YES if treated like internal
    exten => s,n,Set(DIAL_TRUNK_OPTIONS=${TRUNK_OPTIONS})
    exten => s,n,Macro(outbound-callerid,${DIAL_TRUNK})
    exten => s,n(skipoutcid),GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]?nomax)
    exten => s,n(checkmax),GotoIf($[ ${GROUP_COUNT()} > ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull)
    exten => s,n(nomax),DeadAGI(fixlocalprefix) ; this sets DIAL_NUMBER to the proper dial string for this trunk
    exten => s,n,Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER}) ; OUTNUM is the final dial number
    exten => s,n,Set(custom=${CUT(OUT_${DIAL_TRUNK},:,1)}) ; Custom trunks are prefixed with "AMP:"
    exten => s,n,GotoIf($["${custom}" = "AMP"]?customtrunk)
    
    [B];Modifikation, Wenn Trunk = 1 = zap/g0 ist
    exten => s,n,NoOp(TRUNK is '${ARG1}')
    exten => s,n,GotoIf($["${ARG1}" = "1"]?50) ; Wenn Trunk=1 (zap/g0) dann ueber LCR waehlen[/B]
    
    
    exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM},300,${DIAL_TRUNK_OPTIONS}) ; Regular Trunk Dial
    exten => s,n,Goto(s-${DIALSTATUS},1)
    exten => s,n(customtrunk),Set(pre_num=${CUT(OUT_${DIAL_TRUNK},$,1)})
    exten => s,n,Set(the_num=${CUT(OUT_${DIAL_TRUNK},$,2)}) ; this is where we expect to find string OUTNUM
    exten => s,n,Set(post_num=${CUT(OUT_${DIAL_TRUNK},$,3)})
    exten => s,n,GotoIf($["${the_num}" = "OUTNUM"]?outnum:skipoutnum) ; if we didn't find "OUTNUM", then skip to Dial
    exten => s,n(outnum),Set(the_num=${OUTNUM}) ; replace "OUTNUM" with the actual number to dial
    exten => s,n(skipoutnum),Dial(${pre_num:4}${the_num}${post_num},300,${DIAL_TRUNK_OPTIONS})
    exten => s,n,Goto(s-${DIALSTATUS},1)
    
    [B]exten => s,50,Noop(Wir waehlen jetzt ueber LCR ---------------------------------------------)
    exten => s,51,Macro(tsblcr,${OUTNUM},/etc/asterisk/lcr/tsblcr.routing,${AMPUSER},${AMPUSERCIDNAME},ZAP/g0,/etc/asterisk/sip_additional.conf)
    exten => s,52,Goto(s-${DIALSTATUS},1)
    [/B]
    exten => s,n(chanfull),Noop(max channels used up)
    Dann noch einen Cronjob aufgesetzt mit
    Code:
    /etc/asterisk/lcr/tsblcrupdate.php /etc/asterisk/lcr/tsblcr.cfg /etc/asterisk/lcr/tsblcr.routing  >>/var/log/asterisk/full
    Fertig.

    Viel Spass!
     
  3. fstolzen

    fstolzen Neuer User

    Registriert seit:
    8 Nov. 2004
    Beiträge:
    39
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    danke erstmal für deine Hilfe.

    Man(n) sollte vielleicht auch die nötigen Dateien in agi-bin kopieren, so das auch das routing durchgeführt werden kann.

    Gruss Frank
     
  4. cereal

    cereal Guest

    pbx.c: Function result is '0'

    Hallo zusammen,

    ich habe versucht, dass ganze wie es stony999 gemacht hat auch bei mir in die Trixbox zu übernehmen. Bei mir sollten allerdings alle Gespräche über die ISDN Leitung nach draußen gehen und sich dabei die Nummer von tsblcr holen.

    Nun bekomm ich allerdings als Fehler folgendes:

    Code:
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Goto (macro-outbound-callerid,s,16)
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Expression result is '1'
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing GotoIf("*ERSETZT*", "1?usercid") in new stack
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Goto (macro-outbound-callerid,s,18)
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Expression result is '0'
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing GotoIf("*ERSETZT*", "0?report") in new stack
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Not taking any branch
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing Set("*ERSETZT*", "CALLERID(all)=*ERSETZT*") in new stack
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Function result is ''
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Expression result is '1'
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing GotoIf("*ERSETZT*", "1?report:hidecid") in new stack
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Goto (macro-outbound-callerid,s,22)
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Function result is '"" <*ERSETZT*>'
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing NoOp("*ERSETZT*", "CallerID set to "" <*ERSETZT*>") in new stack
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Expression result is '1'
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing GotoIf("*ERSETZT*", "1?nomax") in new stack
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Goto (macro-dialout-trunk,s,16)
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing DeadAGI("*ERSETZT*", "fixlocalprefix") in new stack
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Launched AGI Script /var/lib/asterisk/agi-bin/fixlocalprefix
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- AGI Script fixlocalprefix completed, returning 0
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing Set("*ERSETZT*", "OUTNUM=*ERSETZT*") in new stack
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Function result is 'ZAP/g0'
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing Set("*ERSETZT*", "custom=ZAP/g0") in new stack
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Expression result is '0'
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing GotoIf("*ERSETZT*", "0?customtrunk") in new stack
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Not taking any branch
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing NoOp("*ERSETZT*", "TRUNK is 1") in new stack
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Expression result is '1'
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing GotoIf("*ERSETZT*", "1?50") in new stack
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Goto (macro-dialout-trunk,s,50)
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing NoOp("*ERSETZT*", "Wir waehlen jetzt ueber LCR ----------------
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing Macro("*ERSETZT*", "tsblcr|*ERSETZT*|/etc/asterisk/lcr/t
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing SetVar("*ERSETZT*", "RESTART=0") in new stack
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing SetVar("*ERSETZT*", "ROPT=") in new stack
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Function result is '0'
    Mar 23 16:21:32 DEBUG[4319] pbx.c: Expression result is '1'
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing GotoIf("*ERSETZT*", "1?9") in new stack
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Goto (macro-tsblcr,s,9)
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing SetLanguage("*ERSETZT*", "de") in new stack
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing Goto("*ERSETZT*", "dial|1") in new stack
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Goto (macro-tsblcr,dial,1)
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Executing AGI("*ERSETZT*", "tsblcr.agi|/etc/asterisk/lcr/tsblcr.routing|0
    Mar 23 16:21:32 VERBOSE[4319] logger.c:     -- Launched AGI Script /var/lib/asterisk/agi-bin/tsblcr.agi
    
    Leider versucht Trixbox nur den Bruchteil einer Sekunde rauszutelefonieren. Ich hoffe ihr könnt mir eventuell ein paar Lösungsansätze verraten, weil ich da leider nicht weiterkomme.

    Ich wünsche allen noch eine ruhigen Start in die kurze Woche.

    Gruß Sebastian
     
  5. stony999

    stony999 Neuer User

    Registriert seit:
    12 Aug. 2006
    Beiträge:
    169
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Mir scheint, als würde beim Aufruf von tsblcr noch einige Paremeter fehlen.

    So sieht es bei mir aus:
    Code:
        -- AGI Script fixlocalprefix completed, returning 0
        -- Executing Set("SIP/202-b7801690", "OUTNUM=0171xxxxxxx") in new stack
        -- Executing Set("SIP/202-b7801690", "custom=ZAP/g0") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "0?customtrunk") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "1?50") in new stack
        -- Goto (macro-dialout-trunk,s,50)
        -- Executing NoOp("SIP/202-b7801690", "Wir waehlen jetzt ueber LCR ---------------------------------------------") in new stack
        -- Executing Macro("SIP/202-b7801690", "tsblcr|0171xxxxxxx|/etc/asterisk/lcr/tsblcr.routing|202|SIP202|ZAP/g0|/etc/asterisk/sip_additional.conf") in new stack
        -- Executing Set("SIP/202-b7801690", "RESTART=0") in new stack
        -- Executing Set("SIP/202-b7801690", "ROPT=") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "1?9") in new stack
        -- Goto (macro-tsblcr,s,9)
        -- Executing Set("SIP/202-b7801690", "LANGUAGE()=de") in new stack
        -- Executing Goto("SIP/202-b7801690", "dial|1") in new stack
        -- Goto (macro-tsblcr,dial,1)
        -- Executing AGI("SIP/202-b7801690", "tsblcr.agi|/etc/asterisk/lcr/tsblcr.routing|0171xxxxxxx") in new stack
        -- Launched AGI Script /var/lib/asterisk/agi-bin/tsblcr.agi
      tsblcr.agi|/etc/asterisk/lcr/tsblcr.routing|0171xxxxxxx: Started routing for 0171xxxxxxx
      tsblcr.agi|/etc/asterisk/lcr/tsblcr.routing|0171xxxxxxx: Result=enum 01079 01079 01079 01086 01086 01086 preselection
        -- AGI Script tsblcr.agi completed, returning 0
        -- Executing GotoIf("SIP/202-b7801690", "0?disabled|1") in new stack
        -- Executing Set("SIP/202-b7801690", "IT=0") in new stack
        -- Executing Set("SIP/202-b7801690", "IT=1") in new stack
        -- Executing Cut("SIP/202-b7801690", "CBC=TSBLCRROUTING| |1") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "0?end|1") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "1?enum|start") in new stack
        -- Goto (macro-tsblcr,enum,4)
        -- Executing Set("SIP/202-b7801690", "E164NETWORKS=e164.arpa-e164.info-e164.org") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "0?failed") in new stack
        -- Executing Set("SIP/202-b7801690", "ENUMNET=e164.arpa") in new stack
        -- Executing Set("SIP/202-b7801690", "E164NETWORKS=e164.info-e164.org") in new stack
        -- Executing Set("SIP/202-b7801690", "ENUMCOUNT=") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "1?begin") in new stack
        -- Goto (macro-tsblcr,enum,5)
        -- Executing GotoIf("SIP/202-b7801690", "0?failed") in new stack
        -- Executing Set("SIP/202-b7801690", "ENUMNET=e164.info") in new stack
        -- Executing Set("SIP/202-b7801690", "E164NETWORKS=e164.org") in new stack
        -- Executing Set("SIP/202-b7801690", "ENUMCOUNT=") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "1?begin") in new stack
        -- Goto (macro-tsblcr,enum,5)
        -- Executing GotoIf("SIP/202-b7801690", "0?failed") in new stack
        -- Executing Set("SIP/202-b7801690", "ENUMNET=e164.org") in new stack
        -- Executing Set("SIP/202-b7801690", "E164NETWORKS=") in new stack
        -- Executing Set("SIP/202-b7801690", "ENUMCOUNT=") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "1?begin") in new stack
        -- Goto (macro-tsblcr,enum,5)
        -- Executing GotoIf("SIP/202-b7801690", "1?failed") in new stack
        -- Goto (macro-tsblcr,enum,30)
        -- Executing NoOp("SIP/202-b7801690", "EnumLookups failed") in new stack
        -- Executing Goto("SIP/202-b7801690", "end") in new stack
        -- Goto (macro-tsblcr,enum,33)
        -- Executing NoOp("SIP/202-b7801690", "Exiting macro-dialout-enum") in new stack
        -- Executing Goto("SIP/202-b7801690", "dial|4") in new stack
        -- Goto (macro-tsblcr,dial,4)
        -- Executing Set("SIP/202-b7801690", "IT=2") in new stack
        -- Executing Cut("SIP/202-b7801690", "CBC=TSBLCRROUTING| |2") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "0?end|1") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "0?enum|start") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "0?9:11") in new stack
        -- Goto (macro-tsblcr,dial,11)
        -- Executing GotoIf("SIP/202-b7801690", "0?12:14") in new stack
        -- Goto (macro-tsblcr,dial,14)
        -- Executing GotoIf("SIP/202-b7801690", "0?15:pstn|1") in new stack
        -- Goto (macro-tsblcr,pstn,1)
        -- Executing Set("SIP/202-b7801690", "CALLERID(number)=202") in new stack
        -- Executing Set("SIP/202-b7801690", "CALLERID(name)=SIP202") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "0?4:6") in new stack
        -- Goto (macro-tsblcr,pstn,6)
        -- Executing Set("SIP/202-b7801690", "PSTNTRUNK=ZAP/g0/") in new stack
        -- Executing SetCDRUserField("SIP/202-b7801690", "01079") in new stack
        -- Executing GotoIf("SIP/202-b7801690", "0? 20 : 10") in new stack
        -- Goto (macro-tsblcr,pstn,10)
        -- Executing Dial("SIP/202-b7801690", "ZAP/g0/010790171xxxxxxx|120|rTt") in new stack
        -- Requested transfer capability: 0x00 - SPEECH
        -- Called g0/010790171xxxxxxx
        -- Hungup 'Zap/1-1'
    
    Hier der Teil in der Extensions.conf
    Code:
    exten => s,50,Noop(Wir waehlen jetzt ueber LCR ---------------------------------------------)
    exten => s,51,Macro(tsblcr,${OUTNUM},/etc/asterisk/lcr/tsblcr.routing,${AMPUSER},${AMPUSERCIDNAME},ZAP/g0,/etc/asterisk/sip_additional.conf)
    exten => s,52,Goto(s-${DIALSTATUS},1)