Least Cost Routing komplett!

ich auch ... *g*, ist nur leider komplizierter, da viele sachen und setups beachtet werden sollen ... ich muss mir mal urlaub nehmen und es dann machen ..
 
Hi,

geht bei euch die 01026 mit *?

Euracom oder Isdn Telefon ohne * kein Problem.

Am *:

Code:
  Called g2/01026.......
    -- Channel 0/1, span 2 got hangup
    -- Hungup 'Zap/4-1'
  == No one is available to answer at this time
    -- Executing Goto("Zap/2-1", "ds-NOANSWER|1") in new stack

Gruß
Matthias
 
klappt der fallback denn schon? immo stellt der viopbuster nicht durch. ich hatte erwartet, dass er auf den nächsten anbieter zurückfällt, aber pustekuchen - musste die tsblcr.routing ändern um wieder rauszukommen.
 
Also hier klappt der Fallback mit voipbuster meistens (~80%).
Es hängt vom Error Code ab, einer macht Ärger (weiß aber im mom nicht welcher, kommt ja jedes mal ein anderer ;-))

Gruß
Matthias
 
fehlercode

503 - unavaible

meldet der voipbuster zurück
 
Bei nem 503 funktioniert hier Fallback ohne Probleme.

Code:
 -- Executing Dial("Zap/2-1", "SIP/....@voipbuster-intl00||T") in new stack
    -- Called ....@voipbuster-intl00
    -- Got SIP response 503 "Unavailable" back from 213.61.187.146
    -- SIP/voipbuster-intl00-e897 is circuit-busy
  == Everyone is busy/congested at this time
    -- Executing Goto("Zap/2-1", "ds-CONGESTION|1") in new stack
    -- Goto (macro-tsblcr,ds-CONGESTION,1)
    -- Executing Goto("Zap/2-1", "dial|4") in new stack
    -- Goto (macro-tsblcr,dial,4)
    -- Executing SetVar("Zap/2-1", "IT=8") in new stack
    -- Executing Cut("Zap/2-1", "CBC=TSBLCRROUTING| |8") in new stack
    -- Executing GotoIf("Zap/2-1", "0?end|1") in new stack
    -- Executing GotoIf("Zap/2-1", "0?sip|1:pstn|1") in new stack
    -- Goto (macro-tsblcr,pstn,1)
    ....

So.. wenn VB Ärger macht hat man mal Zeit ein paar Cbcs zu testen.

01035 und 01026 machen hier Ärger und zwar nur mit *

Gruß
Matthias
 
mir hat gestern auch die 01038 besetzt signalisiert obwohl nur congested war (01033 vorwahl ging naemlich durch). die fehlsignalisierung laesst natuerlich das ganze skript ueberfluessig werden ... sehr nervig
 
Ich habe ein Problem mit den Nummer, welche über den Preselect-Provider geleitet werden sollen. In der Konfiguration habe ich angegeben, das Nummern welche mit 999 anfangen nicht von lcr berücksichtigt werden. Auf der Website zeigt er es auch noch an, aber in der tsblcr.routing fehlt die 999.
 
kannst du mal deine cfg datei posten ...
 
allesOK schrieb:
kannst du mal deine cfg datei posten ...

ok, hier meine cfg datei:

Code:
LCR_CONFIG=tr&il%09es%09ho%09in%09g%09az%09ec%09ic%09dw%09cf%09ih%09em%09gs%09de%09b%09eh%09hw%09ii%09gr%09ea%09ga%09ep%09at%09bi%09f%09hx%09bg%09n%09fl%09gp%09ca%09ig%09ik%09fh%09ij%09hh&FALLBACK_TARIFF&cheap&WELT_NETZ&1&S_il&dusnet1&WEEKEND_DISABLED&1&LCR_SEC_OFF&1&SHOW_PRICE&A&S_hs&PURtel_Premium&DISABLED_NUMBERS&019%2C0900&S_fz&nikotel_SIP&FALLBACK_RETRY2&3&S_hi&blueSIP_Premium&LCR_CALCULATE&EXT&CONNECT&Deutsche%20Telekom_Call%20Plus&S_ga&sipgate1&XXL&0&S_hz&freenet_iPhone%20Plus&LCR_SEC_ZONES&e&LCR_SEC_ZONES_SHOW&1&BLOCKED_NUMBERS&999&LCR_P&0&S_hk&Sipsnip_basic&%2B%2BSTORE&pB1%09pTB5%09pB5%09S_il%09pT5%09S_hs%09S_fz%09S_hi%09p1%09S_ga%09p4%09S_hz%09pT2%09pTB3%09pT4%09S_hk%09pB3%09p5%09S_hp%09S_hm%09S_hy%09S_io%09pTB2%09pB4%09S_im%09pTB1%09S_hu%09pT3%09S_hj%09pB2%09p2%09pT1%09p3%09pTB4&zone&a%09vl%09d%09e%09vm%09b%09qu%09qt&S_hp&web.de_FreePhone%20Club&S_hm&Sipsnip_plus&S_hy&GMX_Netphone&LCR_SEC_PRICE&1.2&S_io&VoipBuster_Standard&LCR_TARIF_NAME&V_T&WELT_TARIFF&az&TKANLAGE_BASE&Asterisk&WELT_AUTO&1&tro&g%09ec%09dw%09b%09hx%09bg%09gp%09ca&VORWAHL&03834&LCR_MAX_TARIFFS&101&S_im&1und1_VoIP&PULSE_EXTRA_CHOICE&60%2F60&CBC_A&0&IVORWAHL&0049&S_hu&PURtel_FreePhone&FALLBACK_RETRY&3&pMAX&5&PULSE_EXTRA&1&S_hj&web.de_FreePhone&FALLBACK&Ja&WELT&EU_W&FALLBACK_TARIFF2&preselect&pBMAX&5&CBC_A_PRICE&1.05&LCR_SEC&Mobile;path=/tmpl/calc/telephone/lcr/;id=a7613dee1889a65feff414d5be4e7a31;s=6758255aa262d7839fea3f57d74d03e4
 
Ich habe ein Problem mit den Nummer, welche über den Preselect-Provider geleitet werden sollen. In der Konfiguration habe ich angegeben, das Nummern welche mit 999 anfangen nicht von lcr berücksichtigt werden. Auf der Website zeigt er es auch noch an, aber in der tsblcr.routing fehlt die 999.

Ich kann den von Dir beschriebenen Fehler nicht nachvollziehen:

Die 999 findet sich in der erstellten Routingtabelle wieder:
Code:
[lcr table]
00800|010|012|013|018|0700|0800|11|19222|999,PRESELECT,ff,0-24,0,0,,,

Ich habe mal Deine CFG Datei und die daraus erstellte LCR Datei als Dateianhang beigefügt (ist dann leichter zu verwenden als mit Cut&Paste).

Grüße
Harald
 

Anhänge

  • asterisk_cfg_und_lcr_datei.zip
    2.1 KB · Aufrufe: 5
Die mit der Website erzeugte Routingdatei enthält die '|999'.
Die mit dem Updatescript heruntergeladene Datei nicht.
 
Ich kriegs nicht hin, bekomme immer Result=disabled

Hallo zusammen,

Also ich habe das ganze Paket installiert, CFG erstellt bei Telefonsparbuch.de, update gemacht... es scheint auch soweit das Dial-Macro auszuführen, aber ich kriege immer keine Auflösungen, siehe hier:
Code:
    -- Accepting overlap voice call from '******' to '04241*******' on channel 0/1, span 1
    -- Starting simple switch on 'Zap/1-1'
    -- Executing NoOp("Zap/1-1", "Internal: Extension: 04241******* Caller: ****** ****** 0 Type: ") in new stack
    -- Executing SetAccount("Zap/1-1", "Buero") in new stack
    -- Executing SetCallerPres("Zap/1-1", "prohib_not_screened") in new stack
    -- Executing Macro("Zap/1-1", "tsblcr|04241*******|"/etc/asterisk/lcr/tsblcr.routing"|******|******|"Zap/g2"|"/etc/asterisk/sip.conf"|") in new stack
    -- Executing SetVar("Zap/1-1", "RESTART=0") in new stack
    -- Executing SetVar("Zap/1-1", "ROPT=") in new stack
    -- Executing GotoIf("Zap/1-1", "1?9") in new stack
    -- Goto (macro-tsblcr,s,9)
    -- Executing SetLanguage("Zap/1-1", "de") in new stack
    -- Executing Goto("Zap/1-1", "dial|1") in new stack
    -- Goto (macro-tsblcr,dial,1)
    -- Executing AGI("Zap/1-1", "tsblcr.agi|"/etc/asterisk/lcr/tsblcr.routing"|04241*******") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/tsblcr.agi
  tsblcr.agi|"/etc/asterisk/lcr/tsblcr.routing"|04241*******: Started routing for 04241******
  tsblcr.agi|"/etc/asterisk/lcr/tsblcr.routing"|04241*******: Result=disabled
    -- AGI Script tsblcr.agi completed, returning 0
    -- Executing GotoIf("Zap/1-1", "1?disabled|1") in new stack
    -- Goto (macro-tsblcr,disabled,1)
    -- Executing Answer("Zap/1-1", "") in new stack
    -- Executing Wait("Zap/1-1", "0.1") in new stack
    -- Executing Playback("Zap/1-1", "ss-noservice") in new stack
    -- Playing 'ss-noservice' (language 'de')
    -- Channel 0/1, span 1 got hangup

Wie Ihr seht, kriege ich Result=disabled. Das bekomme ich für jede erdenkliche Vorwahl oder Nummer.

Hat jemand ne Idee, was ich hier falsch mache?

Gruß, Markus
 
klingeldauer

Hallo,

ich habe ein Problem mit der Klingeldauer. Wenn ich mit dem Script herraus telefoniere klingelt es ca. 15 Sekunden, dann kommt folgende Meldung und es wird aufgelegt:

(Hinweis: Ich rufe von mir eine Nummer bei mir an, das Problem tritt auch bei anderen Anrufen auf!)

Code:
  == Spawn extension (macro-tsblcr, pstn, 10) exited non-zero on 'Zap/1-1' in macro 'tsblcr'
  == Spawn extension (extern, xxxxxx, 1) exited non-zero on 'Zap/1-1'

Hier der ganze Output eines Telefonats:
Code:
AGI Debugging Enabled
    -- Accepting overlap voice call from 'ssssss' to 'xxxxxxx' on channel 0/1, span 1
    -- Starting simple switch on 'Zap/1-1'
    -- Executing Macro("Zap/1-1", "tsblcr|xxxxxxx|/etc/asterisk/lcr/tsblcr.routing|ssssss|dumdidum|Zap/g2|/etc/asterisk/sip.conf") in new stack
    -- Executing SetVar("Zap/1-1", "RESTART=0") in new stack
    -- Executing SetVar("Zap/1-1", "ROPT=") in new stack
    -- Executing GotoIf("Zap/1-1", "1?9") in new stack
    -- Goto (macro-tsblcr,s,9)
    -- Executing SetLanguage("Zap/1-1", "de") in new stack
    -- Executing Goto("Zap/1-1", "dial|1") in new stack
    -- Goto (macro-tsblcr,dial,1)
    -- Executing AGI("Zap/1-1", "tsblcr.agi|/etc/asterisk/lcr/tsblcr.routing|xxxxxx") in new stack
    -- Launched AGI Script /usr/share/asterisk/agi-bin/tsblcr.agi
AGI Tx >> agi_request: tsblcr.agi
AGI Tx >> agi_channel: Zap/1-1
AGI Tx >> agi_language: de
AGI Tx >> agi_type: Zap
AGI Tx >> agi_uniqueid: asterisk-30660-1126786713.12
AGI Tx >> agi_callerid: ssssss
AGI Tx >> agi_dnid: xxxxxx
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: macro-tsblcr
AGI Tx >> agi_extension: dial
AGI Tx >> agi_priority: 1
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode:
AGI Tx >>
AGI Rx << VERBOSE "Started routing for xxxxxxx" 5
  tsblcr.agi|/etc/asterisk/lcr/tsblcr.routing|xxxxxx: Started routing for xxxxxx
AGI Tx >> 200 result=1
AGI Rx << VERBOSE "Result=01038 01038 01038 01019 01019 01019 preselection" 5
  tsblcr.agi|/etc/asterisk/lcr/tsblcr.routing|8071904: Result=01038 01038 01038 01019 01019 01019 preselection
AGI Tx >> 200 result=1
AGI Rx << SET VARIABLE TSBLCRROUTING "01038 01038 01038 01019 01019 01019 preselection" 1
AGI Tx >> 200 result=1
AGI Rx << SET VARIABLE TSBLCRFULL xxxxxxxxx 1
AGI Tx >> 200 result=1
AGI Rx << SET VARIABLE TSBLCRINTL xxxxxxxxx 1
AGI Tx >> 200 result=1
    -- AGI Script tsblcr.agi completed, returning 0
    -- Executing GotoIf("Zap/1-1", "0?disabled|1") in new stack
    -- Executing SetVar("Zap/1-1", "IT=0") in new stack
    -- Executing SetVar("Zap/1-1", "IT=1") in new stack
    -- Executing Cut("Zap/1-1", "CBC=TSBLCRROUTING| |1") in new stack
    -- Executing GotoIf("Zap/1-1", "0?end|1") in new stack
    -- Executing GotoIf("Zap/1-1", "0?sip|1:pstn|1") in new stack
    -- Goto (macro-tsblcr,pstn,1)
    -- Executing SetCIDNum("Zap/1-1", "ssssss") in new stack
    -- Executing SetCIDName("Zap/1-1", "dimdudimm") in new stack
    -- Executing GotoIf("Zap/1-1", "0?4:6") in new stack
    -- Goto (macro-tsblcr,pstn,6)
    -- Executing SetVar("Zap/1-1", "PSTNTRUNK=Zap/g2/") in new stack
    -- Executing GotoIf("Zap/1-1", "0? 20 : 10") in new stack
    -- Goto (macro-tsblcr,pstn,10)
    -- Executing Dial("Zap/1-1", "Zap/g2/01038sssssss||Tt") in new stack
    -- Called g2/010388071904
    -- Accepting voice call from 'sssss' to 'xxxxx' on channel 0/2, span 2
    -- Executing Dial("Zap/5-1", "Zap/g1/xxxxxx|120|rt") in new stack
    -- Called g1/xxxxxx
    -- Zap/2-1 is making progress passing it to Zap/5-1
    -- Zap/2-1 is ringing
Sep 15 14:18:40 WARNING[30660]: chan_zap.c:7445 pri_fixup_principle: Call specified, but not found?
Sep 15 14:18:40 WARNING[30660]: chan_zap.c:8287 pri_dchannel: Ringing requested on channel 0/1 not in use on span 2
    -- Channel 0/1, span 1 got hangup
Sep 15 14:19:02 WARNING[30660]: app_dial.c:369 wait_for_answer: Unable to forward frame
    -- Hungup 'Zap/4-1'
  == Spawn extension (macro-tsblcr, pstn, 10) exited non-zero on 'Zap/1-1' in macro 'tsblcr'
  == Spawn extension (extern, xxxxx, 1) exited non-zero on 'Zap/1-1'
    -- Hungup 'Zap/1-1'
    -- Channel 0/2, span 2 got hangup
    -- Hungup 'Zap/2-1'
  == Spawn extension (default, xxxxxxx, 1) exited non-zero on 'Zap/5-1'
    -- Hungup 'Zap/5-1'

Die Warnings habe ich immer, egal ob übers Script oder ohne -- macht also keinen unterschied. Auch ist es egal ob ich v1.4 oder 1.6 verwende!



Wenn ich ohne das Script telefoniere, wird erst nach 120Sekunden (wohl die maximale Dauer) aufgelegt!

Code:
    -- Nobody picked up in 120000 ms


Gruß
 
@markus: bist du sicher dass du eine ordentlich routing-tabelle hast?

@htims: sieht aus also ob dein PSTN-TRUNK nicht richtig konfiguriert waere

Code:
p 15 14:18:40 WARNING[30660]: chan_zap.c:7445 pri_fixup_principle: Call specified, but not found?
Sep 15 14:18:40 WARNING[30660]: chan_zap.c:8287 pri_dchannel: Ringing requested on channel 0/1 not in use on span 2
    -- Channel 0/1, span 1 got hangup
Sep 15 14:19:02 WARNING[30660]: app_dial.c:369 wait_for_answer: Unable to forward frame
    -- Hungup 'Zap/4-1'
 
allesOK schrieb:
@htims: sieht aus also ob dein PSTN-TRUNK nicht richtig konfiguriert waere

Code:
p 15 14:18:40 WARNING[30660]: chan_zap.c:7445 pri_fixup_principle: Call specified, but not found?
Sep 15 14:18:40 WARNING[30660]: chan_zap.c:8287 pri_dchannel: Ringing requested on channel 0/1 not in use on span 2
    -- Channel 0/1, span 1 got hangup
Sep 15 14:19:02 WARNING[30660]: app_dial.c:369 wait_for_answer: Unable to forward frame
    -- Hungup 'Zap/4-1'

hiervon ist nurnoch die app_dial Zeile übrig geblieben. Habe mittlerweile auf asterisk 1.0.9 geupdatet.

Das Problem mit der Klingeldauer existiert weiterhin. Damals bekam ich die selben Fehlermeldungen beim wählen ohne das Script.

Gibt es einen Weg dieses noch weiter zu debuggen? - Ich habe verbose und debug schon auf 9!
 
bin momentan nicht am * und kann daher nur vermutungen anstellen ... ausserdem ist mein * dringend update-noetig - dauert leider nur noch mind. einen monat :-(
 
MaFL schrieb:
Ich wäre eher für das einführen einer neuen Variable...

/intl00

Hallo Matthias und alle, hat sich in Bezug auf das Thema 0049 und voipbuster inzwischen was getan? In 1.04 und 1.06 ist das noch nicht drin, daher wählen diese Versionen mit VB nicht richtig, und es kommt BUSY.

Ansonsten geilomat! Habe das heute eingerichtet, den o.g. Bug erst mal händisch gefixt (immer 00 statt +, habe nur VB als intl. provider) und gut is. ISDN geht per ZAPHFC über meine alte Euracom, was zwar beide B-Kanäle der Anlagenkopplung belegt, aber erstmal OK.

:nemma:

(Nachteil: Der Euracom muss ich noch 0900 und 0190 Sperrnummern abgewöhnen, weil der * ja u.U. diese Nummer explizit vorwählt. Sch***-Idee. Also abwählen?)
 
hmilz schrieb:
MaFL schrieb:
Ich wäre eher für das einführen einer neuen Variable...

/intl00

Hallo Matthias und alle, hat sich in Bezug auf das Thema 0049 und voipbuster inzwischen was getan? In 1.04 und 1.06 ist das noch nicht drin, daher wählen diese Versionen mit VB nicht richtig, und es kommt BUSY.

Habe diese intl00 Geschichte mal weiter verfolgt. Folgendes in tsblcr.agi tut et jetz:

Code:
// rewriting numbers
if (substr($number,0,2) == "00") {
    execute_agi("SET VARIABLE TSBLCRFULL $number 1");
    execute_agi("SET VARIABLE TSBLCRINTL +" . substr($number,2) . " 1");
    execute_agi("SET VARIABLE TSBLCRINTL00 $number 1");
} else if (substr($number,0,1) == "0") {
    execute_agi("SET VARIABLE TSBLCRFULL $number 1");
    execute_agi("SET VARIABLE TSBLCRINTL +$internationalprefix" .
                substr($number,1) ." 1");
    execute_agi("SET VARIABLE TSBLCRINTL00 00$internationalprefix" .
                substr($number,1) ." 1");
} else {
    execute_agi("SET VARIABLE TSBLCRFULL 0$localprefix$number 1");
    execute_agi("SET VARIABLE TSBLCRINTL +$internationalprefix$localprefix" .
                $number. " 1");
    execute_agi("SET VARIABLE TSBLCRINTL00 00$internationalprefix$localprefix" .
                $number. " 1");
}

plus der Teil in extensions.conf für die SIPse (geklaut glaube ich von MaFL):


Code:
; sip-provider
; TODO test if exists
exten => sip,1,Cut(PURECBC=CBC,'/',1)
exten => sip,2,Cut(PARAMETERS=CBC,'/',2)
exten => sip,3,GotoIf($["${PARAMETERS}" = ""]? 15)
exten => sip,4,GotoIf($["${PARAMETERS}" = "intl"]? 5 : 7)
exten => sip,5,SetVar(NUMBER2DIAL=${TSBLCRINTL})
exten => sip,6,Goto(16)
exten => sip,7,GotoIf($["${PARAMETERS}" = "intl00"]? 8 : 10)
exten => sip,8,SetVar(NUMBER2DIAL=${TSBLCRINTL00})
exten => sip,9,Goto(16)
exten => sip,10,Cut(ROFFSET=PARAMETERS,':',1)
exten => sip,11,Cut(RLENGTH=PARAMETERS,':',2)
exten => sip,12,Cut(RSTRING=PARAMETERS,':',3)
exten => sip,13,SetVar(NUMBER2DIAL=${ARG1:0:${ROFFSET}}${RSTRING}${ARG1:$[${ROFF
SET} + ${RLENGTH}]})
exten => sip,14(Goto(16)
exten => sip,15,SetVar(NUMBER2DIAL=${TSBLCRFULL})
exten => sip,16,Dial(SIP/${NUMBER2DIAL}${PURECBC},,T${ROPT})
;exten => sip,16,Dial(SIP/${NUMBER2DIAL}${PURECBC},,Tt${ROPT})
exten => sip,17,Goto(ds-${DIALSTATUS},1)
exten => sip,104,Goto(ds-${DIALSTATUS},1)

Auf telefonsparbuch habe ich VoipBuster_Standard/intl00 stehen.
Damit wählt er alles, was mit 00 anfängt und über VB soll, richtig mit 00 (i.e. verbatim wie eingegeben), 0X über VB mit 0049X, sonst CbC-Vorwahl, XX über VB mit 0049 und Ortnetzvorwahl, sonst CbC.

Nun würde ich mir noch wünschen, iAX einzubauen zusätzlich zu SIP. Und in tsblcrupdate.php Abgrasen der Sponsored Links ... *duck*
 
Habe hier auch ein lustiges Problem. Gerade rufe ich eine 0175 Nummer an und stelle fest, dass er über 01039 wählt, obwohl doch andere gerade jetzt viel günstiger wären. Die passenden Einträge in der gerade frisch geholten Routing-Tabelle wären doch wohl.

5=01039,01039
13=01086,01086

und später

015|016|017,Mobile,1f,0-24,5,0,,,
015|016|017,Mobile,e0,0-24,5,0,,,

Aber warum sagt mir die Webseite dann, dass z.B. 01086 deutlich billiger wäre?

Abgesehen davon bräuchte ich auch dringend IAX2 Support. Wie sieht es denn zeitlich damit aus? Kann man unterstützen?

Liebe Grüße,
JP
 
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.