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

Asterisk als PBX Ersatz, interner Wählton

Dieses Thema im Forum "Asterisk ISDN mit Bristuff (hfc, zaptel)" wurde erstellt von fkroeger, 12 Sep. 2004.

  1. fkroeger

    fkroeger Neuer User

    Registriert seit:
    12 Sep. 2004
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  2. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  3. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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...
     
  4. fkroeger

    fkroeger Neuer User

    Registriert seit:
    12 Sep. 2004
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  5. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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)
    
     
  6. fkroeger

    fkroeger Neuer User

    Registriert seit:
    12 Sep. 2004
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  7. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Aha, was für eine Telefon ist das denn?
     
  8. fkroeger

    fkroeger Neuer User

    Registriert seit:
    12 Sep. 2004
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  9. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Du meinst Wahlwiederholung nachdem man den Hörer abgehoben hat. Das muss ich mal probieren.
     
  10. fkroeger

    fkroeger Neuer User

    Registriert seit:
    12 Sep. 2004
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  11. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Wahlwiederholung bei aufgelegtem Hörer klappt bei mir wunderbar. Er springt direkt in den Blockwahl Kontext.
     
  12. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Lösung:

    Code:
    [dialextern]
    
    exten => s,1,Wait(0)
    exten => s,2,DigitTimeout(0) 
    
     
  13. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    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
     
  14. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  15. fkroeger

    fkroeger Neuer User

    Registriert seit:
    12 Sep. 2004
    Beiträge:
    6
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  16. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  17. udosw

    udosw Aktives Mitglied

    Registriert seit:
    20 März 2004
    Beiträge:
    1,114
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Hannover
    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
     
  18. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  19. Whoopie

    Whoopie Aktives Mitglied

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    812
    Zustimmungen:
    3
    Punkte für Erfolge:
    18
    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
     
  20. allesOK

    allesOK Mitglied

    Registriert seit:
    24 Mai 2004
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Surf mal zu www.junghanns.net (edited) und dort bei Tips&Tricks gibts ne demo Konfig