Trixbox 2.0 und tsblcr von Telefonsparbuch

fstolzen

Neuer User
Mitglied seit
8 Nov 2004
Beiträge
39
Punkte für Reaktionen
0
Punkte
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
 
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!
 
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
 
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
 
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)
 
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.