Asterisk als PBX Ersatz, interner Wählton

fkroeger

Neuer User
Mitglied seit
12 Sep 2004
Beiträge
6
Punkte für Reaktionen
0
Punkte
1
Hallo Leute,

ich plane den Einsatz von Asterisk als kompletten Ersatz für eine ISDN TK-Anlage.
Probeweise habe ich jetzt mal 2 ISDN Telefone an einen Rechner gehängt. Der Rechner hat 2 HFC Karten. Eine im NT-Modus die andere im TE-Modus. VoIP spielt jetzt noch keine große Rolle, soll aber später auch implementiert werden.

Dank der Beiträge in diesem Forum habe ich es mittlerweile geschafft, dass von beiden Apparaten über die 2. HFC ins T-Kom Netz telefoniert werden kann und auch externe Anrufe entgegengenommen werden können.

In der endgültigen Fassung soll von den Telefonen bei Wahl einer 0 ins Telekomnetz gewählt werden, und bei Wahl der 9 per Sipgate.

Wenn ich jetzt den Hörer eines Telefons abhebe höre ich den normalen Wählton. Damit ich extern anrufen kann, muss ich nun die 0 wählen. Ich habe in der extensions.conf den Punkt ignorepat => 0 eingetragen, so dass nach der Wahl der Null der Wählton erhalten bleibt.

Was ich bisher nicht gefunden habe, ist wie ich separate Wähltöne definieren kann.

Wenn man den Hörer abhebt soll ein interner Wählton zu hören sein (wie bei TK-Anlagen ohne automatische Amtsholung). Erst bei Wahl der 0 soll der Wählton der Telekom zu hören sein.

Wie kann ich das realisieren?

Danke im voraus, Frank
 
Kenne nur diesen Link. http://www.junghanns.net/asterisk/page19.html

Werde aber in den nächsten Wochen auch sowas basteln müssen, da ich mir in der neuen Wohnung keine Tk mehr kaufe, sondern nur den * als PBX verwende.

Noch ein Trick: Ich programmiere in die ISDN-Phones gleich die externen MSNs rein, so kann man im Notfall einfach umstecken. Die Umsetzung zwischen (z.B.) zweistelligen Internrufnummern und den dann doch eigentlichen externen MSN kann der * machen. Wenn ich fertig bin, werde ich die Konfig hier ebenfalls posten und bis dahin diesen Thread sehr aufmerksam verfolgen.
 
Habe gestern abend etwas gebastelt und werde heute noch den Feinschliff machen. Dann wird es gepostest. Ich erweitere damit die Konfig aus diesem Thread

und zwar wie folgt: Im alten Thread war es ratsam eine TK an die NT-Karte zu hängen. In diesem Thread ist es sinnvoll das ISDN-Telefon direkt an die Karte zu hängen (oder anders: Die NT-Karte simuliert hier einen internen S0, im anderen Thread einen Telekom-S0). Also schon mal einlesen...
 
Hi,

die von Junghanns gezeigte Fassung funktioniert bei mir nicht. Habe die Version etwas abgewandelt.

Hier Auszüge aus der extensions.conf

Code:
extensions.conf

[globals]
INTERN=Zap/g1
TKOM=Zap/g2

[intern]
exten => s,1,SetLanguage(de)
exten => s,2,DigitTimeout(1)
exten => s,3,WaitExten(0.5)
exten => s,4,Playtones(500/200,0/500)

exten => _0X.,1,Dial(${TKOM}/${EXTEN:1}}

exten => 0,1,Goto(outsidedialtone,s,1)

;interne Apparate 2XX
exten => _2XX,1,StopPlaytones()
exten => _2XX,2,Dial(${INTERN}/${EXTEN},60,R)

exten => t,1,Playtones(busy)
exten => t,2,Wait(3)
exten => t,3,hangup()


[outsidedialtone]
exten => s,1,Wait(0.5)
exten => s,2,DigitTimeout(3)
exten => s,3,Playtones(440)

exten => _x,1,SetVar(FIRSTNUM=${EXTEN})
exten => _x,2,StopPlaytones()
exten => _x,3,Goto(outgoingdial,s,1)

[outgoingdial]
exten => s,1,NoOp()

exten => _x.,1,Dial(${TKOM}/${FIRSTNUM}${EXTEN},60,R)
exten => _x.,2,hangup()


[tcom-in]
; hier die MSN für eingehende Rufe

Wenn ich nun den Hörer abhebe, höre ich einen internen Wählton (tüt - tüt). Ich kann nun die internen Rufnummern wählen (200-299).
Wenn ich die 0 wähle, erhalte ich nach ca. 1.5 Sekunden meinen Amtswählton (playtones(440)) und kann ganz normal wählen.

Etwas störend ist die lange Wartezeit bis bei Wahl der 0 der Wählton ändert. Durch Ändern von DigitTimout(1) und WaitExten(0.5) auf niedrigere Werte kommt der Amtston schneller. Wenn ich aber unter diese Werte gehe, funktioniert die Blockwahl bei meinem ISDN Telefon nicht mehr (Nummer eingeben und dann erst den Hörer abheben).
Ist der Wert für DigitTimeout kleiner als 1 dann verschluckt * sich irgendwie.

Aber mit der Verzögerung kann ich leben.
Ich hoffe nur, dass irgendwie auch die anderen ISDN Merkmale simuliert werden können. Zum Beispiel Anklopfen, Rückfrage, Makeln etc.

Gruß,

Frank
 
So hier meine momentante Lösung. Bin noch ein wenig am feilen, aber grob klappt es schon recht gut. Interne Telefnummern sind 1X, als externe MSN 11111,22222.

Habe in die ISDN-Telefone nur externe MSN programmiert. Damit kann ich bei Ausfall des * direkt umstecken. Die Übersetzung zu internen CallerIDs machen die user-macros. MYMSN und MYINTERNALID

Code:
[macro-ch]

exten => s,1,Playtones(congestion)
exten => s,2,Wait(5)
exten => s,3,Hangup

[macro-user11111]

exten => s,1,SetVar(MYNAME=Frank Falkenstein)
exten => s,2,SetVar(MYMSN=11111)
exten => s,3,SetVar(MYINTERNALID=11)

[macro-user22222]

exten => s,1,SetVar(MYNAME=Erich Erbelding)
exten => s,2,SetVar(MYMSN=22222)
exten => s,3,SetVar(MYINTERNALID=12)


[dialextern]

exten => s,1,Wait(0.1)
exten => s,2,DigitTimeout(0)
exten => s,3,ResponseTimeout(10)
exten => s,4,Playtones(dial)

exten => _X,1,SetVar(DIALED=${DIALED}${EXTEN})
exten => _X,2,GotoIf(${LEN(${DIALED})} > 1?3:4)
exten => _X,3,StopPlaytones
exten => _X,4,ResponseTimeout(2)
exten => _X,5,WaitExten(2)

exten => t,1,GotoIf(${LEN({${DIALED})} > 1?5:2)
exten => t,2,Macro(ch)
exten => t,5,Goto(isdn2out,${DIALED},1)

[dialintern]

exten => s,1,StopPlaytones
exten => s,2,SetCIDNum(${MYINTERNALID})
exten => s,3,WaitExten(0.2)

exten => _X,1,SetVar(DIALED=${DIALED}${EXTEN})
exten => _X,2,Goto(local,${DIALED},1)

exten => t,1,Playtones(Congestion)
exten => t,2,Wait(5)
exten => t,3,Hangup

exten => i,1,Playtones(Congestion)
exten => i,2,Wait(5)
exten => i,3,Hangup

[dialtone]

exten => s,1,Wait(0.1)
exten => s,2,DigitTimeout(0)
exten => s,3,ResponseTimeout(3)
exten => s,4,WaitExten(1.5)

exten => 0,1,SetVar(DIALED=${EXTEN})
exten => 0,2,Goto(dialextern,s,1)

exten => _Z,1,SetVar(DIALED=${EXTEN})
exten => _Z,2,Goto(dialintern,s,1)

exten => t,1,Playtones(Congestion)
exten => t,2,Wait(5)
exten => t,3,Hangup

exten => i,1,Playtones(Congestion)
exten => i,2,Wait(5)
exten => i,3,Hangup

[isdn2out]

exten => s,1,Playtones(internal)
exten => s,2,Wait(0.1)
exten => s,3,DigitTimeout(2)
exten => s,4,SetLanguage(de)
exten => s,5,Macro(user${CALLINGNUM})
exten => s,6,Goto(dialtone,s,1)

exten => _XX,1,Wait(0.1)
exten => _XX,2,DigitTimeout(2)
exten => _XX,3,SetLanguage(de)
exten => _XX,4,Macro(user${CALLINGNUM})
exten => _XX,5,SetCallerID(${MYINTERNALID})
exten => _XX,6,Goto(local,${EXTEN},1)

exten => _0X.,1,Wait(0.1)
exten => _0X.,2,DigitTimeout(2)
exten => _0X.,3,SetLanguage(de)
exten => _0X.,4,Macro(user${CALLINGNUM})
exten => _0X.,5,Goto(callout,${EXTEN:1},1)

Beginnen tut alles in isdn2out. Die nicht-s-extensions sind für die Blockwahl vom ISDN-Telefon, also Wahl bei aufgelegtem Hörer. Damit kann ich direkt interne (local) und externe (callout) Anrufe tätigen. Wichtig ist hierbei nur das user-Makro. Wenn ein interner Anruf (XX) getätigt wird muss die CallerID umgesetzt werden.

Wenn ich abhebe ohne vorher zu wählen lande ich im s-Kontext. Dieser stellt erstmal den Internwählton bereit. (internal = 440/200,0/300,440/200,0/300,440/200,0/800, elmeg-intern)
Danach geht es in [dialtone] hier wird anhand der ersten Ziffer die gewählt wird geschaut ob man weiter intern oder gleich extern telefonieren möchte.

In [dialintern] wird der Wahlton gestoppt. Die nächste gewählte Ziffer macht die extension intern komplett und man kann die in DIALED gespeicherte Rufnummer im local-Kontext nachschlagen.

In [dialextern] wird der normale dial tone gestartet und weitere Ziffern gesammelt bis das Timeout (Responsetimeout) erreicht wird. Dann wird die in DIALED gespeicherte Nummer an [isdn2out] (wie mit Blockwahl) gegeben. Die extern-0 ist ja auch in DIALED gespeichert.

Anmerkung: Habe kein Warten auf den extern-Dialtone nach Wahl der 0. Der Ton springt sofort um.

.
.

Was nicht geht,w as aber vielleicht auch an meinem ISDN-Telefon liegt. Wenn man die 0 wählt, dann abhebt: Jetzt erwarte ich einen extern-Dialtone (wie bei meiner Elmeg). Allerdings schaltet mein Telefon in Tonwahl um, und weitere gewählte Ziffern werden vom * nicht erkannt auch wenn ich wie im nächsten Codeabschnitt gleich in den dialextern Kontext springe (der extern-Wählton) kommt auf jeden Fall.

Code:
exten => 0,1,Wait(0.1)
exten => 0,2,DigitTimeout(2)
exten => 0,3,SetLanguage(de)
exten => 0,4,Macro(user${CALLINGNUM})
exten => 0,5,Goto(dialextern,0,1)
 
Hi,

hab deine Lösung mal kurz angetestet. Bei meinem ISDN Telefon klappt es auch wenn ich die 0 eintippe und dann erst abhebe. Ich habe dann ein AMT und kann normal wählen.

Gruß, Frank
 
Aha, was für eine Telefon ist das denn?
 
Ein billiges Tiptel 190.

Hab jetzt mal beide Versionen etwas intensiver getestet. Bei deiner Version ist sehr schön, dass der Amtston recht schnell zur Verfügung steht. Was leider bei mir nicht richtig funktioniert ist die Wahlwiederholung vom Tiptel Telefon aus. Hier verschluckt sich der Asterisk.

Bsp.: zuletzt gewählte Nummer: 0 12345

Drücke ich auf Wahlwiederholung sehe ich im Log von Asterisk, dass er nicht in den Context DIALEXTERN gesprungen ist, sondern in den Context DIALINTERN.

Das macht er bei meiner Version nicht. Hier klappt die Wiederholung. Nur leider der verzögerte Wählton. Aber wie oben geschrieben kann ich damit leben.

Weißt du, ob man über Zap auch Funktionen wie Rückfrage, Konferenz etc. hinbekommt?

Ich teste parallel zum Asterisk auch pbx4linux und hier funktionieren diese Merkmale recht gut. Bei Asterisk hab ich noch nichts eindeutiges gefunden.

Gruß, Frank
 
Du meinst Wahlwiederholung nachdem man den Hörer abgehoben hat. Das muss ich mal probieren.
 
beide Varianten. Egal ob bei aufgelegtem Hörer oder wenn ich vorher abhebe. Aber das kann am Telefon liegen. Das Tiptel 190 ist nicht gerade das was ich ein gutes ISDN Telefon nennen würde.
 
Wahlwiederholung bei aufgelegtem Hörer klappt bei mir wunderbar. Er springt direkt in den Blockwahl Kontext.
 
Lösung:

Code:
[dialextern]

exten => s,1,Wait(0)
exten => s,2,DigitTimeout(0)
 
Bzgl. des anderen Problems (0 wählen dann abheben, keine weitere Wahl möglich) habe ich Fortschritte gemacht.

Ein "pri debug span 1" (evtl. andere Nummer als 1 bei euch) zeigt mir, dass nach der Wahl von 0 und danach abheben das Telefon vom * ein CALL PROCEEDING geschickt bekommt. D.h. laut http://www.funkschau.de/heftarchiv/pdf/2001/fs0301/FS0103055.pdf dass die Informationen die das Telefon an den * schicken muss komplett sind. Daher schaltet das Telefon auch in den Tonwahl Modus um.

Wie sieht der ein entsprechender D-kanal Log bei dir aus @fkroeger
 
Wie hast du denn overlapdial stehen???

overlapdial = yes erzeugt das CALL PROCEEDING, sprich man kann nach der 0 nichts mehr nachwählen.

overlapdial = no ist verantwortlich für eine längere Pause bis zum Wahlton, dafür kann man nachwählen.

Mal schauen, ob man das irgendwie mischen kann.
 
Hi,
also bei mir steht overlapdial auf no. Darum also kann ich also nach Eintippen der 0 und abheben nachwählen.

Zu den Logs kann ich im Moment nix sagen. Ich hatte * testweise auf einem Rechner installiert, den ich für einen Kunden gebaut habe. Der Rechner ist nun ausgeliefert.
Werde morgen/übermorgen mal einen von meinen Rechnern mit * aufsetzen und weitertesten.

Gruß,

Frank
 
Seltsam. Dann müsste der * auch an dein Tiptel CALL PROCEEDING schicken. Was halt nicht, wie das Telefon das auswertet. Vielleicht ist es nicht so restriktiv.

Bin auf die Logs gespannt, mach dir aber keinen Stress.
 
Hallo,

könntet Ihr mal Eure zapata.conf's posten? Ich versuche, * mit HFC im TE-Modus hinter den internen S0 einer TK-Anlage zu hängen, aber da klappt im Moment noch gar nichts (obwohl es im NT-Modus geht, natürlich umgekehrt mit einer TK-Anlage dahinter). Ich brauche den * aber als 'ISDN-Nebenstelle'.

Udo
 
Hallo! Die Frage passt zwar nicht zum Thread, aber bekommst trotzdem Antwort.

Code:
switchtype = euroisdn
signalling = bri_cpe_ptmp
pridialplan = local
prilocaldialplan = local
echocancel = yes
echocancelwhenbridged=no
echotraining=no
usecallerid = yes
overlapdial = no
immediate = no
context = intern
group = 1
channel => 1-2

Evtl. musst du context, group & channel anpassen, je nachdem wie viele Karten du im Rechner hasst und in welchen Kontext eingehende Gespräche landen sollen.
 
Hi,
habe gerade versucht, den internen Wählton in meinem * einzubauen. Aber schaffe es leider nicht.
Könntet Ihr nochmal ne Kurzfassung posten, die ich in den default-Kontext integrieren könnte?
Vielen Dank schonmal.
Bis denn,
Whoopie
 
Surf mal zu www.junghanns.net (edited) und dort bei Tips&Tricks gibts ne demo Konfig
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
244,695
Beiträge
2,216,699
Mitglieder
371,316
Neuestes Mitglied
realbluethunder
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.