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

Asterisk an ISDN-Anlage T-Octopus

Dieses Thema im Forum "Asterisk ISDN mit CAPI (chan_capi, chan_capi_cm)" wurde erstellt von zugi, 4 Feb. 2005.

  1. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo!

    Ich suche schon seit Tagen in diesem Forum und auf anderen Asterisk-Internetseiten, um mein Problem zu lösen. Habe jedoch leider keine Lösung gefunden.

    Da ich noch ein Asterisk-Anfänger bin, habe ich Probleme bei der richtigen Konfiguration.

    Damit ihr wisst, was ich vorhabe, werde ich mal eben kurz meine Anlage beschreiben:
    In meinen Asterisk-Server (mit Debian) habe ich eine Avm FritzCard PCI eingebaut und auch schon das CAPI-Modul etc. installiert.
    Die ISDN-Karte ist an den internen S0-Bus unserer ISDN-Anlage (T-Octopus E) angeschlossen und hat die interne MSN 30.
    Ich möchte nun von den ISDN-Telefonen aus über meinen Asterisk-Server Gespräche per VoIP (Sipgate) führen, sowie auch Gespräche die über Sipgate ankommen an die ISDN-Telefone weiterleiten.
    Ausgehende Gespräche sollen von allen ISDN-Telefonen möglich sein und eingehende sollen nur an die MSN 11 und 21 weitergeleitet werden.


    Hier meine bisherige Konfiguration:

    capi.conf
    Code:
    [general]
    nationalprefix=49
    internationalprefix=00
    rxgain=0.8
    txgain=0.8
    
    [interfaces]
    
    msn=30
    incomingmsn=30
    controller=1
    softdtmf=0
    context=isdn
    echocancel=no
    devices=2
    

    extensions.conf
    Code:
    [default]
    exten => _9,1,Dial(CAPI/@11:${EXTEN})
    exten => _9,2,Congestion
    
    exten => 11,1,DISA,no-password|sipgateohneneun
    
    [sipgateohneneun]
    exten => _.,1,Goto(sipgate,9${EXTEN})
    

    sip.conf
    Code:
    [general]
    port = 5060
    bindaddr = 0.0.0.0
    context = default
    qualify=no
    disable=all
    allow=alaw
    allow=alaw
    allow=ulaw
    allow=g729
    allow=gsm
    allow=slinear
    srvlookup=yes
    canreinvite=yes
    language=de
    
    register => <SIP-ID>:<SIP-Passwort>@sipgate.de/<SIP-ID>
    
    [sipgate] 
    type=friend 
    username=<SIP-ID>
    host=sipgate.de 
    fromuser=<SIP-ID>
    fromdomain=sipgate.de
    nat=no
    context=default
    canreinvite=no
    

    Wenn ich jetzt von einem ISDN-Telefon den Asterisk-Server über die 30 anrufe, höre ich kurz ein Freizeichen, dann wird der Anruf nach kurzer Zeit abgebrochen. Die command-line von Asterisk zeigt daraufhin "WARNING[1063]: pbx.c: 1878 ast_pbx_run: Channel 'CAPI[contr1/30]/1' sent into invalid extension 's' in context 'default', but no invalid handler." und "ERROR[1047]: chan_capi.c:1226 pipe_frame: wrote -1 bytes instead of 48" an.
    Wenn ich den Asterisk-Server über meine SIP-Nummer anrufen will, komme ich erst gar nicht durch. Es kommt sofort die Sprachmeldung, dass der Anschluss nicht erreichbar ist etc.


    Kann mir jemand helfen??? Ich komme leider echt nicht mehr alleine weiter.


    Schönen Abend noch und vielen Dank im voraus!!!
     
  2. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Hallo & willkommen.

    In der capi.conf hast Du einen
    context=isdn
    definiert, den es in der extensions.conf aber gar nicht gibt. Von daher solltest Du den entweder anlegen oder capi in den default schicken.

    Was das sipgate-Problem anbelangt: ist der asterisk überhaupt korrekt bei sipgate registriert (sip show registry) und weiterhin solltest du dann auch eine extension mit der sipgate-id in der extensions.conf haben.

    Weiterhin gilt: Wenn Du den Dialplan mal soweit hast wie Du ihn möchtest solltest Du darauf achten, dass Gespräche die von extern (sei es ISDN Festnetz / SIP per Sipgate) in den Asterisk kommen nicht in Kontexte gelangen, von wo sie für Dich kostenpflichtige Anrufe starten können (will sagen: am Ende nicht alles in einen einzigen default-kontext packen ;) )
     
  3. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    so, das habe ich jetzt gemacht... geht trotzdem nicht (fehlermeldung in der command-line kommt immer noch)

    sip show registry zeigt an:
    "Host: sipgate.de:5060
    Username: <SIP-ID>
    Refresh: 105
    State: Registered"
    der anmeldungsvorgang scheint also wohl geklappt zu haben... trotzdem noch die sprachmeldung von sipgate: "dieser anschluss ist aus technischen gründen vorübergehend nicht verfügbar"

    welche genau?

    wie könnte man das am besten machen?


    Vielen Dank übrigens für deine schnelle Antwort!!!
     
  4. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Okay, dann gehts weiter :)
    Die MSN der ISDN-Karte ist ja die 30, ergo brauchst Du auch eine passende exten => .... in der extensions.conf die eben dann zutrifft, sprich entweder was generisches wie exten => _.,1,... oder halt exten => 30,1,...
    Wär schonmal ein Anfang ;)

    Fein soweit schonmal. Sagt asterisk denn was wenn Du versuchst Dich per sip anzurufen? Immerhin sollte dann was auf dem CLI erscheinen. Wenn icht würde ich mal evtl. vorhandene Firewalls/Router prüfen ob da denn nicht was geblockt wird.


    wie könnte man das am besten machen?

    Nja, das kommt halt drauf an was man so will ;) Da gibts eigentlich schon reichlich Dialplan-Beispiele hier in den einzelnen Threads.
    Grundsätzlich gilt z.B. dass man das was von sipgate reinkommt in einen extra kontext (z.b. [sipgateincoming]) steckt der dann selber nur die internen Teilnehmer (sei es jetzt sip/isdn) erreichen darf. Gleiches für eingehendes aus dem ISDN.
    Da kann man sich dann mehrere relativ kleine spezielle Kontexte bauen die man dann am Schluss für die internen Teilnehmer einfach per include zusammenfasst.

    Ein (für Deine Dinge evtl. etwas heftiges Beispiel) wäre z.B. http://graphics.cs.uni-sb.de/VoIP/fopra/node88.html bzw. http://graphics.cs.uni-sb.de/VoIP/fopra/node45.html und folgende.
     
  5. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    das habe ich gemacht. ich hatte vorher auch schon eine exten, allerdings habe ich da dummerweise eine falsche msn eingetragen, also nicht 11 ;)

    jetzt kann ich den asterisk-server anrufen... ich bekomme ein freizeichen.
    dann müsste ich ja eigentlich nur noch die rufnummer eingeben. wenn ich das mache, passiert jedoch gar nichts. man hört keinen ton mehr!

    nein, da kommt leider nichts *verzweifel*. hab im router für den asterisk-server schon udp-ports freigegeben (5060, 5062, 30000-30021, 10000-10021, 3478, 3479).
    ändert nur nichts an dem problem.

    wenn ich asterisk endlich zum laufen bekomme, dann werd ich mich damit mal genauer beschäftigen...
     
  6. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Fein, fein -- soweit ja schonmal in Ordnung, das DISA tut also. Allerdings ist dann das wo Du Dein DISA reinschickst fehlerhaft:

    [sipgateohneneun]
    exten => _.,1,Goto(sipgate,9${EXTEN})

    Du hast keinen Kontext [sipgate] in den Du mit dem Goto reinspringen könntest. Also leg Dir einen solchen an:
    Code:
     [sipgate] 
     include => default
     exten => _9.,1,Dial(SIP/${EXTEN:1}@sipgate,60)
     exten => _9.,2,Congestion
     exten => _9.,102,Busy
    
    Siehe auch: http://www.ip-phone-forum.de/spip/article.php3?id_article=7

    Hmm... das iss jetzt interessant -- Der Asterisk ist bei sipgate erfolgreich registriert aber wenn Du Die Sipgatenr. anrufst erscheint nix?
    Wie ist denn der genaue Netzaufbau?
     
  7. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Das habe ich jetzt gemacht.
    Meine extensions.conf sieht jtzt so aus:
    Code:
    [default]
    exten => 30,1,DISA,no-password|sipgateohneneun
    
    [sipgateohneneun]
    exten => _.,1,Goto(sipgate,9${EXTEN})
    
    [sipgate]
    include => default
    exten => _9.,1,Dial(SIP/${EXTEN:1}@sipgate,60)
    exten => _9.,2,Congestion
    exten => _9.,102,Busy
    
    Da fehlt doch jetzt aber auch eine exten, in der steht, was mit eingehenden anrufen (über SIP) passiert, oder?

    Wie funktioniert das eigentlich mit dem Rauswählen. Da muss ich doch jetzt nur die MSN des Asterisk-Servers anrufen und kann dann direkt die Rufnummer, die angerufen werden soll, eingeben, oder?

    Wen ich das so mache, bekomme ich nach kurzer zeit (am Hörer höre ich keinen Ton!) in der CLI folgende Meldung:


    Wenn ich jetzt über SIP anrufe, bekomme ich ein Besetztzeichen!
     
  8. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ja, klar -- dazu musst Du dann in der sip.conf im general-abschnitt einen context angeben in dem die eingehenden sip-gespräche landen sollen und dann diesen kontext in der extensions.conf mit den Wählregeln Deiner Wahl füllen.

    MSN der ISDN-Karte anrufen, auf erneutes Freizeichen vom DISA warten, Rufnummer wählen.

    Hmm... das hat jetzt irgendwie gar nix mit o.g. zu tun. Starte Asterisk mal mit ein paar v's mehr und dann müsste sobald Du die MSN angerufen hast einiges mehr als nur eine Zeile als Ausgabe kommen. Zeig die dann mal her.



    s.o. -- da müsste man * jetzt verraten was er dann mit den Anrufen machen sollte.
     
  9. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    wie sieht das dann zum beispiel aus?
    also meine sip.conf sieht im mom noch so aus:
    Code:
    [general]
    port = 5060
    bindaddr = 0.0.0.0
    context = default
    qualify=no
    disable=all
    allow=alaw
    allow=alaw
    allow=ulaw
    allow=g729
    allow=gsm
    allow=slinear
    srvlookup=yes
    canreinvite=yes
    language=de
    
    register => <SIP-ID>:<SIP-Passwort>@sipgate.de/<SIP-ID>
    
    [sipgate]
    type=friend
    username=<SIP-ID>
    host=sipgate.de
    fromuser=<SIP-ID>
    fromdomain=sipgate.de
    nat=no
    context=default
    canreinvite=no
    

    wie starte ich asterisk "mit ein paar v's mehr"???

    sorry, dass ich mich so blöd anstelle! ;)
    aber ich bin halt noch ein anfänger, was linux und asterisk betrifft.
     
  10. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Nunja, was willste machen? Im Prinzip ist es egal wo Anrufe herkommen und hingehen -- die Syntax der extensions.conf ist immer gleich:

    Es gibt einen Kontext, der hat extensions und diesen wird irgendeine Aktion zugeordnet. Siehe Funktionsweise der extensions: http://graphics.cs.uni-sb.de/VoIP/fopra/node45.html

    Will sagen, Du musst dann im default-Kontext z.B. eine exten mit Deiner Sipgatenr. anlegen die dann irgendwas macht, wenn jemand von draussen diese Nr. anruft.

    Wie startest Du asterisk denn derzeit?
    pack mal ein par v's bei den startaufruf -- also entweder asterisk -gcvvvvvvvvvv oder sowas wie asterisk -rvvvvvv
    dann sollte der ein wenig gesprächiger werden.
    Alternativ "set verbose <zahl>" (z.b. 4) auf der Asterisk-Konsole.
     
  11. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    also wenn ich meine SIP-Nummer anrufe, dann soll das Gespräch an die MSN 21 weitergeleitet werden. Wie seiht dazu die extension aus, die ich in die extensions.conf schreiben muss?

    so, das habe ich jetzt auch gemacht. wenn ich jetzt asterisk über die msn anrufe und dann die testnummer 10000 dahinter wähle, bekomme ich auf der CLI folgende nachricht:
     
  12. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich in leider mit meinem Problem immer noch nicht weitergekommen...

    Kann mir dabei nochmal jemand helfen?


    Hier meine aktuellen Konfigurationsdateien:

    capi.conf
    Code:
    [general]
    nationalprefix=49
    internationalprefix=00
    rxgain=0.8
    txgain=0.8
    
    [interfaces]
    
    msn=30
    incomingmsn=30
    controller=1
    softdtmf=0
    context=default
    echocancel=no
    devices=2
    
    extensions.conf
    Code:
    [default]
    exten => 30,1,DISA,no-password|sipgateohneneun
    
    [sipgateohneneun]
    exten => _.,1,Goto(sipgate,9${EXTEN})
    
    [sipgate]
    include => default
    exten => _9.,1,Dial(SIP/${EXTEN:1}@sipgate,60)
    exten => _9.,2,Congestion
    exten => _9.,102,Busy
    
    sip.conf
    Code:
    [general]
    port = 5060
    bindaddr = 0.0.0.0
    context = default
    qualify=no
    disable=all
    allow=alaw
    allow=alaw
    allow=ulaw
    allow=g729
    allow=gsm
    allow=slinear
    srvlookup=yes
    canreinvite=yes
    language=de
    
    register => <SIP-ID>:<SIP-Passwort>@sipgate.de/<SIP-ID>
    
    [sipgate] 
    type=friend 
    username=<SIP-ID>
    host=sipgate.de 
    fromuser=<SIP-ID>
    fromdomain=sipgate.de
    nat=no
    context=default
    canreinvite=no
    
     
  13. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
  14. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ich kann allerdings auch keine anderen telefonnummern anrufen und auch keine anrufe empfangen

    wenn ich z.b. die kostenl. hotline der telekom anrufe, kommt folgende meldung:
     
  15. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    so, also ein teil des problems ist schon mal gelöst. *freu* :!:

    ich kann jetzt über sip anrufen und werde dann an die msn 21 weitergeleitet.
    ist es eigentlich möglich den anruf auch an mehrere msn's weiterzuleiten?
    ein problem ist allerdings noch, dass ich am anrufenden telefon während der weiterleitung keinen ton höre. es wäre also z.b. gut, wenn stattdessen ein zuhören ist (wie bei einem normalen anruf) oder evtl. eine warteschleife....

    wie kann ich das realisieren???


    hier meine aktualisierte extensions.conf
    Code:
    [default]
    ; Wir verwenden in der ISDN-TK-Anlage zweistellige MSNs
    ; Dies sind Gespraeche die z.B. per VoIP eingehen und per
    ; CAPI weitervermittelt werden zum ISDN
    ; X ist ein Platzhalter fuer alle Ziffern von 0 bis 9
    ; [1-9] bezeichnet alle Ziffern von 1 bis 9
    ; muss ggf. noch an die lokale TK-Anlage
    ; angepasst werden.
    exten => <SIP-ID>,1,Dial(CAPI/@30:21)
    exten => <SIP-ID>,2,Congestion
    
    ; Hier wird die ISDN-Karte von der
    ; ISDN-TK-Anlage aus angerufen und
    ; in den Kontext "sipgateohneneun" gesprungen:
    exten => 30,1,DISA,no-password|sipgateohneneun
    
    [sipgateohneneun]
    exten => _.,1,Goto(sipgate,9${EXTEN})
    
    [sipgate]
    exten => _9.,1,Dial(SIP/${EXTEN:1}@sipgate,60)
    exten => _9.,2,Congestion
    exten => _9.,102,Busy
    
    (der asterisk-server hat die msn 30 und das telefon, das die weitergeleiteten sip-anrufe bekommt, die msn 21)


    ich kann allerdings immer noch nicht von der isdn-anlage über sip raustelefonieren....
    weiß jemand, was ich da falsch gemacht habe???
     
  16. shiva

    shiva Neuer User

    Registriert seit:
    24 Jan. 2005
    Beiträge:
    20
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    "ist es eigentlich möglich den anruf auch an mehrere msn's weiterzuleiten?"

    du kannst es mit einem "&" verbinden, ich habe sip&capi verbunden
    exten => sipgate,1,Dial(SIP/1234&CAPI/41:30,60)

    meine extension sieht so aus:

    exten => 41,1,DISA,no-password|sipgateohneneun

    [sipgateohneneun]
    include => default
    exten => _0.,1,Dial(SIP/${EXTEN:1}@sipgate,60,r)
    exten => _0.,2,Congestion
    exten => _0.,102,Busy

    und sie funktioniert. Wählen muss ich dann die 41(das ist die MSN des asterisk)dann 0 um zusagen das es über Sipgate geht dann die Rufnummer also
    41P0030123456
    das P ist ein pausenzeichen welches ich immer brauche um dem * ein wenig Zeit zu geben. wie man das wegbekommt weiss ich noch nicht.
    PS:
    ist der * in der TK registriert mit seiner MSN??

    mfg
    shiva
     
  17. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ... funktioniert!

    ...funktioniert auch!

    Juchuu, jetzt läuft mein *. Ich kann eingehende Anrufe annehmen und von meiner ISDN-Anlage über * raustelefonieren. :D



    Ich hätte allerdings noch zwei Fragen:

    - Wie kann ich die oben genannte Extension für ausgehende Anrufe so verändern, dass nur Gespräche, die von bestimmten internen MSN's und von einer bestimmten externen Rufnummer kommen, über SIP rausgeführt werden?
    - Was muss ich machen damit man am Telefon, während * wählt bzw. den Anruf weiterleitet, z.b. einen Ton (wie nach dem normalen Wählen) oder eine Warteschleife (mit Musik oder Ansage) hört?


    Gruß,
    Malte



    P.S.: Es ist echt super, dass es dieses Forum gibt. Alleine wäre ich vermutlich nicht mit meinem * fertig geworden.
     
  18. zugi

    zugi Neuer User

    Registriert seit:
    4 Feb. 2005
    Beiträge:
    25
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    dazu hab ich mittlerweile eine antwort gefunden.


    bleibt nur noch die Frage: