Line-Select, CbC, ISDN/SIP, ... eine Beispiel-Konfiguration!

Hallo allesOK,

so also Hardware ist es nicht, ist die Konfiguration ...

wenn ich z.B. eine 0800.... wähle ist alles in Ordnung, genauso wenn ich CallbyCall mache und z.b. 01038 direkt wähle funktioniert dies auch. Sobald aber die Macros ins Spiel kommen, z.b. von selbst cbc local gesetzt wird geht dann gar nichts. Wieso raff ich nicht, da die Config ist wie Deine, bloss mit 030 anstelle 069. In dem Sipphones include wird ja auch nix sein ausser den extensions für die SipPhones .Oder ?

Weiterhin taucht auch ein Macro Error auf ....
Code:
*CLI>   == Primary D-Channel on span 1 up for TEI 64
Nov  3 02:52:52 NOTICE[196620]: channel.c:284 ast_alloc_uniqueid: uid = asterisk-24079-1099446772.0
    -- Executing Wait("Zap/2-1", "0.1") in new stack
    -- Accepting call from '11111' to '01038327XXXXX' on channel 0/2, span 1
    -- Executing DigitTimeout("Zap/2-1", "2") in new stack
    -- Set Digit Timeout to 2
    -- Executing SetLanguage("Zap/2-1", "de") in new stack
    -- Executing Macro("Zap/2-1", "user") in new stack
Nov  3 02:52:52 WARNING[294930]: app_macro.c:90 macro_exec: No such context 'macro-user' for macro 'user'
    -- Executing Goto("Zap/2-1", "callout|01038327XXXXX|1") in new stack
    -- Goto (callout,01038327XXXXX,1)
    -- Executing SetVar("Zap/2-1", "CALLMACRO2USE=") in new stack
    -- Executing SetVar("Zap/2-1", "SIP2USE=") in new stack
    -- Executing Macro("Zap/2-1", "numbers|01038327XXXXX") in new stack
    -- Executing GotoIf("Zap/2-1", "0?2:5") in new stack
    -- Goto (macro-numbers,s,5)
    -- Executing GotoIf("Zap/2-1", "1?6:9") in new stack
    -- Goto (macro-numbers,s,6)
    -- Executing SetVar("Zap/2-1", "EWL=01038327XXXXX") in new stack
    -- Executing SetVar("Zap/2-1", "INTL=+491038327XXXXX") in new stack
    -- Executing Goto("Zap/2-1", "11") in new stack
    -- Goto (macro-numbers,s,11)
    -- Executing NoOp("Zap/2-1", "") in new stack
    -- Executing Goto("Zap/2-1", "number-preselection|01038327XXXXX|1") in new stack
    -- Goto (number-preselection,01038327XXXXX,1)
    -- Executing Macro("Zap/2-1", "callwithpstn||") in new stack
    -- Executing SetCIDNum("Zap/2-1", "") in new stack
    -- Executing SetCIDName("Zap/2-1", "") in new stack
    -- Executing Dial("Zap/2-1", "Zap/g2/01038327XXXXX|60|Ttr") in new stack
Nov  3 02:52:52 NOTICE[294930]: channel.c:284 ast_alloc_uniqueid: uid = asterisk-24079-1099446772.1
    -- Called g2/01038327XXXXX
    -- Extension '327XXXXX' in context 'tcom-in' from '030327XXXXX' does not exist.  Rejecting call on channel 0/2, span 2
    -- Zap/4-1 is ringing
    -- Channel 0/2, span 1 got hangup
    -- Hungup 'Zap/4-1'
  == Spawn extension (macro-callwithpstn, s, 3) exited non-zero on 'Zap/2-1' in macro 'callwithpstn'
  == Spawn extension (number-preselection, 01038327XXXXX, 1) exited non-zero on 'Zap/2-1'
    -- Executing NoOp("Zap/2-1", "") in new stack
    -- Hungup 'Zap/2-1'
Habe mich selbst angerufen ... für das Log. Jetzt dann nochmal ein Auszug mit direkter Wahl von 030327XXXXX (also nach meinem MacroVerständis, das automatische Preselection, wobei ich dies auf 01038 anstelle 01019 geändert habe).

Code:
Asterisk Ready.
*CLI>   == Primary D-Channel on span 1 up for TEI 64
Nov  3 03:02:12 NOTICE[196620]: channel.c:284 ast_alloc_uniqueid: uid = asterisk-24119-1099447332.0
    -- Executing Wait("Zap/2-1", "0.1") in new stack
    -- Accepting call from '11111' to '030327XXXXX' on channel 0/2, span 1
    -- Executing DigitTimeout("Zap/2-1", "2") in new stack
    -- Set Digit Timeout to 2
    -- Executing SetLanguage("Zap/2-1", "de") in new stack
    -- Executing Macro("Zap/2-1", "user") in new stack
Nov  3 03:02:13 WARNING[294930]: app_macro.c:90 macro_exec: No such context 'macro-user' for macro 'user'
    -- Executing Goto("Zap/2-1", "callout|030327XXXXX|1") in new stack
    -- Goto (callout,030327XXXXX,1)
    -- Executing SetVar("Zap/2-1", "CALLMACRO2USE=") in new stack
    -- Executing SetVar("Zap/2-1", "SIP2USE=") in new stack
    -- Executing Macro("Zap/2-1", "numbers|030327XXXXX") in new stack
    -- Executing GotoIf("Zap/2-1", "0?2:5") in new stack
    -- Goto (macro-numbers,s,5)
    -- Executing GotoIf("Zap/2-1", "1?6:9") in new stack
    -- Goto (macro-numbers,s,6)
    -- Executing SetVar("Zap/2-1", "EWL=030327XXXXX") in new stack
    -- Executing SetVar("Zap/2-1", "INTL=+4930327XXXXX") in new stack
    -- Executing Goto("Zap/2-1", "11") in new stack
    -- Goto (macro-numbers,s,11)
    -- Executing NoOp("Zap/2-1", "") in new stack
    -- Executing Goto("Zap/2-1", "number-preselection|030327XXXXX|1") in new stack
    -- Goto (number-preselection,030327XXXXX,1)
    -- Executing Macro("Zap/2-1", "cbc|01038") in new stack
    -- Executing SetVar("Zap/2-1", "CBC=01038") in new stack
    -- Executing Macro("Zap/2-1", "|||") in new stack
Nov  3 03:02:13 WARNING[294930]: app_macro.c:84 macro_exec: Invalid macro name specified
    -- Executing Hangup("Zap/2-1", "") in new stack
  == Spawn extension (macro-cbc, s, 3) exited non-zero on 'Zap/2-1' in macro 'cbc'
  == Spawn extension (number-preselection, 030327XXXXX, 1) exited non-zero on 'Zap/2-1'
    -- Executing NoOp("Zap/2-1", "") in new stack
    -- Hungup 'Zap/2-1'
Die Wahl ausgelöst durch 1*327XXXXX funktioniert auch.

Na ich hoffe das hilft, und bin mächtig gespannt wo ich den Fehler habe.
Gute Nacht,

alf.
 
Ja, das sieht ganz dem besetztem CbC-Carrier aus. Sowas habe ich auch, aber leider noch keine Zeit gehabt zu lösen.

Die CbC-Lösung selbst ist beliebig skalierbar. Alternativ kann man auch ein AGI verwenden oder ne DB oder .... ich fand diese Lösung zunächst recht simple, da ich mich eh auf sehr wenige CbC-Provider stütze, die ich so von Hand konfigurieren kann.
 
aktuelle CbC Daten

Hallo,

wie wäre es denn die CbC-Informationen täglich aktuell abzugleichen?
Dazu würden sich die freien und täglich aktuellen Daten von billiger-telefonieren.de anbieten, siehe:
http://www.billiger-telefonieren.de/downloads/index.php3

Ich weiß bloß nicht, ob sich das Datenformat so einfach verarbeiten läßt.

Aber das wäre schon genial...


Gruß,
Razor
 
Hallo,

würde bestimmt auch eine tolle Idee sein, für mich war diese ganze Anleitung sehr wichtig um wirklich zu sehen ob es in alle Richtungen funktioniert. Sehe aber bei mir auch das Phänomen, dass das CBC anscheinend auch für die SIP Verbindungen gilt, somit die Sip Nummer die lokale Vorwahl angehängt bekommt. Vielleicht ist das ja auch ein Feature und nicht ein Bug, bzw. bei mir ein Sonderfall, es funktioniert weder die 2*Sipnummer, noch 2Z* , da manche Macros anscheinend nicht interpretiert werden, bzw. die Variablen nicht gefüllt. Ersetze ich die Variablen mit dem dirkten Ziel, z.b. Sipgate11, funktioniert es dann eher. Habe bis jetzt auch immer nur ein ISDN Phone als 11111 genutzt ,daran wird es aber auch nicht liegen. Aber das Ziel ist erreicht, man weiss die Hardware funktioniert, und man kann sich endlich um den Asterisk kümmern - wenn was nicht geht, hat man es selber verbockt - Learning by Doing :)

Ich beschäftige mich jetzt damit die Konfiguration als Basis Modell für eine Datenbank zu nutzen mit MySQL, letztendlich auch um es bequemer in der Administration zu machen. Den Gedanken mit dem Online LCR hatte ich dabei auch, man könnte ja so eine Geschichte mit RSS erledigen, sollte ja kein Problem sein. Allerdings stellt sich die Frage ob Asterisk anstelle von perl auch php verarbeitet, so wie es aussieht müsste es allerdings gehen.
Somit wäre es sehr einfach dazuzubringen sich Daten zu holen und in die extensions einer Datenbank zu intergrieren. ( Mit Perl geht das natürlich auch, aber damit habe ich nicht soviel am Hut.)

Wäre auf jedenfall ein sinnvolles Addon und Wert unterstützt zu werden, da sowieso Telefonieren ins nationale Festnetz über z.B. Sipgate heutzutage teurer ist als, die meisten Preselection oder CBC Provider und das bei weniger komfort. Beim Ausland mag es ja anders sein, aber wann telefoniert man Privat ins Ausland... Geschäftlich ja, aber dann doch nicht mit Sip sondern IAX. :)

Naja, vielleicht finden das ja auch noch andere ausser Razorblade und mir interessant, dann sollte man das doch mal in Angriff nehmen. Damit können wir dann allesOK auch was zurückgeben für die Super Basis, damit wir alle ein funktionierendes "CBC" haben ... :lol:

bis bald,

alf
 
Hey danke für die Ideen. Ja klar Online CbC wäre richtig cool. Wenn die DB steht ist es auch schnell in der extensions.conf implemeniert.

Wenn ein Anruf über Sip rausgeht und du keine 010xx gewählt hast, sollte keine CbC-Vorwahl zugefügt werden. Wenn du allerdingx 2*010xxyyyyyy wählt geht das schief, jo. Hab ich reingefixt (in [callout])
 
Hallo allesOK und Ihr Anderen ...

Zu dem Thema mit den Extensions 1* , 2* . Hatte ja erwähnt, dass das nicht so wirklich funktioniert. Nach einiger Rumprobiererei musste ich festellen, dass nicht jedes Telefon in der Lage ist den "*" zu interpretieren.

Mein gutes altes Europa 30 macht das, allerdings jedes Siemens-Telefon was ich besitze macht das nicht, egal ob ich ein analoges DECT Phone an einem ATA betreibe oder eine Siemens ISDN DECT Basis an dem NT Mode NTBA. Sobald man allerdings die Extension, z.B. 1* in 15 ändert, kann man auch von allen Telefonen über ISDN telefonieren, gleiches Problem hatte ich bei einem Kumpel, der nur Siemens Telefone und son dreck AudioLine Telefon hatte.

Ist natürlich eine Geschichte, die viel Zeit rauben kann wenn man nicht drauf kommt. Hilft vielleicht jedem, der es nicht schafft über Isdn wieder raus zu telefonieren.

Jetzt muss ich erstmal meine Extensions.conf wieder in lesbare Form bringen, die CBC Geschichte sollte man dann auch gleich verfeinern. Oben beschriebenes Problem, bringt natürlich auch den Asterisk dazu, die Macro Variablen nicht zu übersetzten - Wie ein paar Posts vorher beschrieben...

Noch was ganz anderes ... was ist mit Makeln, bzw. Rückfrage. Wenn ein zweites Gespräch angenommen wird, geht das zwar, bzw. das vorherige geht on hold, aber man bekommt es nicht mehr zurück. Zumindest ist das in der Config wohl nicht berücksichtigt. Parken geht auch ganz toll aber nicht mehr das Zurückholen

alf.
 
Ja, welche extension zu verwendest um bestimmte "Lines" zu wählen darfst du selbst bestimmen, klar!

Ohja, Parken, Halten, Makeln -> TODO
 
Hi,

ja, ist schon klar! Allerdings fand ich das mit 1* gar nicht so übel ... Schade nur das die Siemens Phones den * nicht richtig weitergeben.

Ansonsten ist da noch das Thema mit der '#', die ich noch nutze um intern zu verbinden. Leider kann der Anrufer auch die # wählen und naturlich auch wenn er die extensions weiss wieder raustelefonieren ?!

Da Asterisk natürlich auf die Tones reagiert ist das ziemlich uncool.Ausser die Raute gar nicht mehr zu benutzen, bzw. mit einem Hangup zu verknüpfen fällt mir dazu nicht viel ein. Im Forum steht leider auch nichts brauchbares.

Ein Kunde von mir war ganz stolz auf seine Lösung mit der Obelix CD, nachdem ich Ihm eine Raute auf die Leitung gesendet habe und er nicht mehr herr über den Asterisk war, ist er nicht sehr begeistert gewesen.

Ich hoffe, das war jetzt kein anderes Topic. Denke aber das es auch hierzu gehört, damit wir dann auch für andere Neulinge diese Probs vorweg nehmen können ... .

Was ist eigentlich mit dem :

WARNING[294930]: app_macro.c:90 macro_exec: No such context 'macro-user' for macro 'user' ...

Hab nur ich dieses Warning ? Noch viel wichtiger ich bekomm es nicht weg ...

alf
 
Da hast solltest du an den richtigen Stellen vor dem Macro Aufruf Wait(0.1) setzen. Es dauert leider einen Moment bis die Variable gezetzt ist. Benutzt du CALLINGNUM oder PRI_NETWORK_CID (ich würde mittlerweile letzteres empfehlen)
 
Hi...
na wunderbar, am Anfang hatte ich immer die PRI_NETWORK_CID drin, durch die ganzen Probs hatte ich dann CALLINGNUM wieder eingetragen, da ich dachte es könnte daran liegen und habe es wieder vergessen rückgangig zu machen. Die Waits hatte ich auch drin, war aber das selbe Resultat - nachdem ich jetzt wieder PRI_NETWORK_CID benutze funktioniert auch die Makroauflösung wieder... Der Error ist auch weg...

Besten dank, hat auch ein anderes Prob in meinen Datenbank Test Extensions gelöst. Da muss man erstmal drauf kommen .. .

alf.
 
forbidden macro einbinden

Hallo allesOK,

vielen Dank für die Beispielkonfig, interessant fand ich das forbidden macro. Dieses möchte ich nun auch einbinden - allerdings wie schon der Nick sagt ...

Meine Dialout:
[outgoing]
exten => _0.,1,SetLanguage(de)
exten => _0.,2,Dial(CAPI/@99:b${EXTEN},60,r)
exten => _0.,3,Hangup;Congestion

ich habe schon ein Goto(forbidden) probiert, das macro includiert etc.
Die Macros forbidden und macro-notallowed sind unverändert von Dir übernommen.

Vielen Dank für die Hilfe
noplan
 
Für welche extensions willst du forbidden aufrufen?

Versuch mal folgendes:
Code:
[outgoing]
include => forbidden

exten => _0.,1,SetLanguage(de)
exten => _0.,2,Dial(CAPI/@99:b${EXTEN},60,r)
exten => _0.,3,Hangup
 
allesOK schrieb:
[outgoing]
include => forbidden

Danke für den Tipp. es hat auch nicht funktioniert. Irgendwie greift die dialout-rule nicht in das forbidden-macro (vorrausgesetzt, macro-<name> wir auch von macro() so erkannt :) )

Hier mal die extensions.conf (snipped)

Code:
[default]
include => outgoing
include => incoming
include => users
include => emergency

[outgoing]
include => forbidden
exten => _0.,1,SetLanguage(de)
exten => _0.,2,Dial(CAPI/@99:b${EXTEN},60,r)
exten => _0.,3,Hangup;Congestion

[incoming]
exten => s,1,SetVar(CALLEDEXTEN=${EXTEN})
exten => s,2,SetLanguage(de)
exten => s,3,Dial(SIP/${EXTEN},15,r)
exten => s,4,Goto(musiconhold,camp,1)

[forbidden]
; 019x
exten => _0019X.,1,Macro(notallowed)
; 0900
exten => _00900X.,1,Macro(notallowed)
; EMSAT
exten => _0088X.,1,Macro(notallowed)

[macro-notallowed]
exten => s,1,Answer
exten => s,2,Wait(0.5)
exten => s,3,Playback(de/ss-noservice)
exten => s,4,Hangup

Es soll nur bei extension 0 (also Vorwahl) die forbidden greifen (wir haben ISDN im Einsatz ohne VoiP Carrier)
Da die Anbieter vorwiegend 0XXXX als Einwahl haben und nicht im Ortsnetz agieren, habe ich die ext. auf _0 (anlage)019xxx gesetzt.

vielen Dank

noplan
 
try this:

Code:
[forbidden]
; 019x
exten => _0019X.,1,Macro(notallowed)
; 0900
exten => _00900X.,1,Macro(notallowed)
; EMSAT
exten => _0088X.,1,Macro(notallowed) 

[realoutgoing]
exten => _0.,1,SetLanguage(de)
exten => _0.,2,Dial(CAPI/@99:b${EXTEN},60,r)
exten => _0.,3,Hangup;Congestion

[outgoing]
include => forbidden
include => realoutgoing
 
allesOK schrieb:
try this:

Code:
[forbidden]
; 019x
exten => _0019X.,1,Macro(notallowed)
; 0900
exten => _00900X.,1,Macro(notallowed)
; EMSAT
exten => _0088X.,1,Macro(notallowed) 

[realoutgoing]
exten => _0.,1,SetLanguage(de)
exten => _0.,2,Dial(CAPI/@99:b${EXTEN},60,r)
exten => _0.,3,Hangup;Congestion

[outgoing]
include => forbidden
include => realoutgoing

danke - funzt a net ..

hier nun mal meine komplette extensions:

Code:
[general]
static=yes
writeprotect=yes
autofallthrough=yes

[globals]
TRUNK=CAPI
TRUNKMSD=1
language=de

[outgoing_allowed]
exten => _0.,1,SetLanguage(de)
exten => _0.,2,Dial(CAPI/@99:b${EXTEN},60,r)
exten => _0.,3,Hangup;Congestion

[forbidden]
; 019x
exten => _0019X.,1,Macro(notallowed)
; 0900
exten => _00900X.,1,Macro(notallowed)
; EMSAT
exten => _0088X.,1,Macro(notallowed)

[macro-notallowed]
exten => s,1,Answer
exten => s,2,Wait(0.5)
exten => s,3,Playback(de/ss-noservice)
exten => s,4,Hangup

[emergency]
; re-rewrite emergency call numbers
exten => 089110,1,Dial(CAPI/@99:0110,60,Ttr)
exten => 110,1,Dial(CAPI/@99:0110,60,Ttr)
exten => 089112,1,Dial(CAPI/@99:0112,60,Ttr)
exten => 112,1,Dial(CAPI/@99:0112,60,Ttr)
exten => 08919222,1,Dial(CAPI/@99:019222,60,Ttr)
exten => 19222,1,Dial(CAPI/@99:019222,60,Ttr)

[incoming]
exten => s,1,SetVar(CALLEDEXTEN=${EXTEN})
exten => s,2,SetLanguage(de)
exten => s,3,Dial(SIP/${EXTEN},15,r)
exten => s,4,Goto(musiconhold,camp,1)

[default]
include => outgoing
include => incoming
include => users
include => emergency

[outgoing]
include => forbidden
include => outgoing_allowed

[musiconhold]
exten => camp,1,Answer
exten => camp,2,Wait(1)
exten => camp,3,Background(busy-pls-hold)
exten => camp,4,Background(silence/8)
exten => camp,5,WaitMusicOnHold(30)
exten => camp,6,Voicemail2(b${CALLEDEXTEN})
exten => camp,7,Hangup;Congestion

[users]
exten => 233,1,SetVar(CALLEDEXTEN=${EXTEN})
exten => 233,2,Dial(SIP/${EXTEN},15,r)
exten => 233,3,Goto(musiconhold,camp,1)

exten => 234,1,SetVar(CALLEDEXTEN=${EXTEN})
exten => 234,2,Dial(SIP/${EXTEN},15,r)
exten => 234,3,Goto(musiconhold,camp,1)

exten => 235,1,SetVar(CALLEDEXTEN=${EXTEN})
exten => 235,2,Dial(SIP/${EXTEN},15,r)
exten => 235,3,Goto(musiconhold,camp,1)

;;; Voicebox
exten => 9999/_[1-9].,1,SendText(Voicebox ${CALLERIDNUM})
exten => 9999/_[1-9].,2,Wait(1)
exten => 9999/_[1-9].,3,VoicemailMain2(s${CALLERIDNUM})
exten => 9999/_[1-9].,4,Hangup

;; conference room 9876
exten => 9876,1,Answer
exten => 9876,2,Wait(1)
exten => 9876,3,Playback(de/agent-loginok)
exten => 9876,4,MeetMe(101)
exten => 9876,5,Playback(de/vm-goodbye)
exten => 9876,6,Hangup;Congestion

Habe ich da einen bock drin? Eventuell in der Reihenfolge? Aba finden tu ich nixe ...

danke

noplan
 
Springt er von default denn nach outgoing_allowed??? Schau mal mit set verbose 5 was er macht.
 
Hallo allesOK,

was soll ich sagen: es geht .... nachdem ich auf verbose 5 gesetzt hatte, ging es ... *wunder*
Er spingt jetzt schön in die forbidden und dann erst in den regulären call.
Danke für die Hilfe

- noplan
 
no problem
 
@allesOK

Mal ne Frage ... ihr habt ja im laufe des Thread einige Änderungen diskutiert und eingepflegt um diverse kleinere Probleme zu lösen. Sind denn die geposteten config-files am anfang des thread entsprechend editiert und spiegeln den aktuellsten Wissensstand wider :)

Ich will hier das ganze an einem Anlagenanschluss (Anschluss über AVM B1 im PtP-Mode) umsetzen, hoffe dass der Dialplan grundsätzlich identisch aufgebaut sein kann. Bin ja auch Neuling. Der interne S0 des Asterisk soll über eine HFC im NT-Mode dargestellt werden, daran dann entweder ne TK-anlage oder direkt ein Siemens Gigaset an dem ein paar DECT-Telefone hängen. Hoffetnlich klappt das .... Derzeit teste ich noch den Asterisk an einer MSN meiner TK-Anlage.

Gruß,

Jui
 
Ja, ich denke die Konfigfiles habe ich angepasst..... demächst kommt noch das LCR dazu (statt des selfmade-cbc)
 
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.