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

PSTN vom SPA-3000 und Asterisk

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von zwelch, 31 Dez. 2006.

  1. zwelch

    zwelch Neuer User

    Registriert seit:
    16 Okt. 2005
    Beiträge:
    63
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,
    ich habe einen Linksys SPA-3000 den ich nun an meinen frisch eingerichteten Asterisk anbinden will.
    Wenn auf der PSTN vom SPA ein Anruf eingeht, soll dieser automatisch wie ein VoIP-Anruf behandelt werden (1. auf Telefon leiten 2. nach bestimmter Zeit Mailbox).

    In der sip.conf habe ich den SPA als ganz normales Telefon eingebunden
    Code:
    [30] ; fxo-port (PSTN Line)
    callerid=PSTN <30>
    host=dynamic
    domain=172.16.0.6
    user=30
    secret=geheim
    type=friend
    mailbox=30
    nat=yes
    canreinvite=no
    Das funktioniert auch so weit. Der SPA leitet die Festnetzanrufe an den Asterisk und man ist dann quasi so verbunden, als hätte man den hörer an einem lokalen Telefon abgehoben (Freizeichen ist vorhanden). Aber das will ich ja nicht...
    Also im Dialplan vom SPA folgendes eingetragen: (S0<:6781234>)

    Die extensions.conf sieht demnach so aus
    Code:
    [pstn_ankommend]
    exten => 6781234,1,Dial,SIP/31|3|r ; Signalisierung des Anrufs am Telefon 31
    exten => 6781234,2,Goto,r-${DIALSTATUS}|1 ; Nach 3 Sekunden Weiterleitung an Mailbox
    
    exten => r-BUSY,1,voicemail,b30
    exten => r-BUSY,2,Hangup
    
    exten => r-NOANSWER,1,voicemail,u30
    exten => r-NOANSWER,2,Hangup
    Tja, und das geht nicht. Der SPA sagt "VoIP Gateway Call Timeout" und Asterisk schweigt sich aus.

    Natürlich habe ich auch schon hier im Forum gesucht, aber bei aller Bastelei ist nichts bei herumgekommen :(

    Gruß
    zwelch
     
  2. madiehl

    madiehl Mitglied

    Registriert seit:
    15 Feb. 2005
    Beiträge:
    438
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich habe zwar nicht ganz verstanden was Du machen möchtest, aber mir ist aufgefallen, das Du in der sip.conf dem Gerät keinen Kontext zugewiesen hast. Du solltest dort noch so etwas
    context=pstn_ankommend
    eintragen und am besten mal prüfen ob die Registrierung klappt mit
    sip show peers
     
  3. zwelch

    zwelch Neuer User

    Registriert seit:
    16 Okt. 2005
    Beiträge:
    63
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ok, ich werde es nochmal anders versuchen:

    1. eingehender Anruf aus dem Festnetz -> SPA (PSTN) -> SPA (VoIP2) -> Asterisk
    2. falls Telefon (VoIP1) frei: Asterisk -> SPA (VoIP1) -> Telefon
    3. falls Telefon (VoIP1) nicht frei: Asterisk -> Mailbox

    Ich hoffe, dass es so verständlicher ist...

    Das läuft.

    Den Tipp werde ich gleich ausprobieren.


    Gruß
    zwelch
     
  4. zwelch

    zwelch Neuer User

    Registriert seit:
    16 Okt. 2005
    Beiträge:
    63
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #4 zwelch, 1 Jan. 2007
    Zuletzt bearbeitet: 1 Jan. 2007
    Der Tipp hat definitv schonmal was gebracht.
    Asterisk übernimmt den Anruf und das Telefon bimmelt. Nur abnehmen kann ich nicht. Dann geht die Mailbox dran (xx gerade im Gespräch...). Wenn ich dann das Telefon auflege, legt auch die Mailbox auf.
    Das Problem besteht sonst nicht (bei eingehenden VoIP-Verbindungen).

    Asterisk gibt folgendes aus:
    Code:
    -- Executing [6781234@pstn_ankommend:1] Dial("SIP/30-b6c040d8", "SIP/31|30|r") in new stack
        -- Called 31
        -- SIP/31-081cf218 is ringing
      == Spawn extension (pstn_ankommend, 6781234, 1) exited non-zero on 'SIP/30-b6c040d8'
        -- Executing [6781234@pstn_ankommend:1] Dial("SIP/30-b6c040d8", "SIP/31|30|r") in new stack
        -- Called 31
        -- SIP/31-081d3180 is ringing
    == Spawn extension (pstn_ankommend, 6781234, 1) exited non-zero on 'SIP/30-b6c02b58'
        -- Executing [6781234@pstn_ankommend:1] Dial("SIP/30-b6c02b58", "SIP/31|30|r") in new stack
        -- Called 31
        -- Got SIP response 486 "Busy Here" back from 172.16.0.253
        -- SIP/31-081d3180 is busy
      == Everyone is busy/congested at this time (1:1/0/0)
        -- Executing [6781234@pstn_ankommend:2] Goto("SIP/30-b6c02b58", "r-BUSY|1") in new stack
        -- Goto (pstn_ankommend,r-BUSY,1)
        -- Executing [r-BUSY@pstn_ankommend:1] VoiceMail("SIP/30-b6c02b58", "b30") in new stack
        -- Playing 'vm-theperson' (language 'de')
        -- Playing 'digits/3' (language 'de')
        -- Playing 'digits/0' (language 'de')
        -- Playing 'vm-isonphone' (language 'de')
        -- Playing 'vm-intro' (language 'de')
      == Spawn extension (pstn_ankommend, r-BUSY, 1) exited non-zero on 'SIP/30-b6c02b58'
    //edit
    Ich kann das Gespräch scheinbar nur mit dem Telefon annehmen während es bimmelt. Ansonsten geht halt die Mailbox dran.
    Ich weiß jetzt bloß nicht, ob das Problem beim Asterisk oder beim SPA liegt.

    Gruß
    zwelch
     
  5. madiehl

    madiehl Mitglied

    Registriert seit:
    15 Feb. 2005
    Beiträge:
    438
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Zeig doch bitte mal Deine komplette sip.conf und extensions.conf, denn die sieht in den Logs wieder anders aus als Du es oben gepostet hast. Einmal klingelt es angeblich 3 Sekunden laut Logs wird der Anruf aber für 30 Sekunden durchgeführt. Ausserdem wäre es hilfeich zu wissen welches Telefon in welchem Kontext steht. Ich habe den Verdacht, das Du mit dem eingehenden Anruf mehrfach die gleiche Nummer anrufst oder aber Dein Log stammt von mehreren Anrufversuchen.
    Du kannst das Gespräch natürlich nur mit dem Telefon annehmen, solange es klingelt, denn danach geht der Ruf ja zur Mailbox. Genaueres kann ich nach kurzem Überfliegen nur sagen, wenn die Configfiles vorliegen.

    Nachtrag: Wenn ich das richtig lese, hast Du 2 SPA? Einer mit der Rufnummer 30 und einer mit der 31? Lass am besten im Dialstring mal das r weg. Das gaukelt Dir nur ein ringing vor und kann schon auftreten, wenn das Telefon noch gar nicht wirklich klingelt.
     
  6. zwelch

    zwelch Neuer User

    Registriert seit:
    16 Okt. 2005
    Beiträge:
    63
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ja, das habe ich zwischenzeitlich mehrfach geändert (um verschiedene Sachen zu testen).

    30 = SPA VoIP2 = PSTN
    31 = SPA VoIP1 = Telefon

    Der Log stammt von einem Anruf, ist aber gekürzt. Da stand mehrfach
    Code:
    == Spawn extension (pstn_ankommend, 6781234, 1) exited non-zero on 'SIP/30-b6c040d8'
        -- Executing [6781234@pstn_ankommend:1] Dial("SIP/30-b6c040d8", "SIP/31|30|r") in new stack
        -- Called 31
        -- SIP/31-081d3180 is ringing
    drin. Bei jedem neuen Klingelzeichen wurde ein entsprechender Log ausgegeben.


    Das Problem ist, dass ich es nur annehmen kann, während es klingelt (also während das akkustische Signal ertönt).

    Nein, ich habe einen SPA-3000.
    Dieser hat zwei VoIP Lines.
    SPA VoIP1 = Telefon = 31
    SPA VoIP2 = PSTN = 30

    sip.conf
    Code:
    [general]
    context=default
    bindport=5060
    bindaddr=172.16.0.6
    srvlookup=yes
    language=de
    
    register => 000xxxxxxxxx:pwd@dus.net/000xxxxxxxxx
    
    [000xxxxxxxxx]
    ; dies ist der Context, den wir zum Raustelefonieren verwenden
    
    type=peer
    username=000xxxxxxxxx
    fromuser=000xxxxxxxxx
    secret=pwd
    host=voip.dus.net
    fromdomain=voip.dus.net
    insecure=very
    canreinvite=no
    nat=yes
    disallow=all
    allow=ulaw
    
    [dusnet_de_in] 
    ; das ist der Context fr ankommende Anrufe von dus.net
    
    type=peer
    fromdomain=voip.dus.net
    host=voip.dus.net
    disallow=all
    allow=ulaw
    context=ankommend
    
    [30] ; fxo-port (PSTN Line)
    callerid=PSTN <30>
    host=dynamic
    domain=172.16.0.6
    user=30
    secret=geheim
    type=friend
    mailbox=30
    nat=yes
    canreinvite=no
    context=pstn_ankommend
    
    [31]
    callerid=Phone 1 <31>
    host=dynamic
    domain=172.16.0.6
    user=31
    secret=geheim
    type=friend
    mailbox=31
    nat=yes
    canreinvite=no
    extensions.conf
    Code:
    [general]
    static=yes
    writeprotect=no
    
    [echotest]
    exten => 81,1,answer
    exten => 81,2,wait,1
    exten => 81,3,playback,demo-echotest
    exten => 81,4,echo
    exten => 81,5,playback,demo-echodone
    exten => 81,6,hangup
    
    [mailbox]
    exten => 80,1,answer
    exten => 80,n,wait,1
    exten => 80,n,voicemailmain
    exten => 80,n,hangup
    
    [mailbox_own]
    exten => 88,1,answer
    exten => 88,n,wait,1
    exten => 88,n,voicemailmain,s${CALLERIDNUM}
    exten => 88,n,hangup
    
    
    [lokal]
    ; Erreichbarkeit der Nebenstellen 30-39 untereinander herstellen
    
    exten => _3X,1,NoCDR()
    exten => _3X,n,Dial,SIP/${EXTEN}|55|Ttr
    
    [dusnet_out]
    ; ausgehende Rufe ueber dus.net
    
    exten => _0.,1,Dial,SIP/${EXTEN}@000xxxxxxxxx|45|r
    
    [ankommend]
    ; ankommende Rufe von dus.net
    
    exten => 000xxxxxxxxx,1,Dial,SIP/31|30|r
    exten => 000xxxxxxxxx,2,Goto,r-${DIALSTATUS}|1
    
    exten => r-BUSY,1,voicemail,b30
    exten => r-BUSY,2,Hangup
    
    exten => r-NOANSWER,1,voicemail,u30
    exten => r-NOANSWER,2,Hangup
    
    [pstn_ankommend]
    exten => 6781234,1,Dial,SIP/31|30|r
    exten => 6781234,2,Goto,r-${DIALSTATUS}|1
    
    exten => r-BUSY,1,voicemail,b30
    exten => r-BUSY,2,Hangup
    
    exten => r-NOANSWER,1,voicemail,u30
    exten => r-NOANSWER,2,Hangup
    
    
    ; --------------------------------------------------------------------
    
    [default]
    include => lokal
    include => echotest
    include => mailbox
    include => mailbox_own
    include => dusnet_out
    Nochmal ein kompletter Log, der mit der geposteten conf gemacht wurde. Anruf vom Festnetz (PSTN = 30). Telefon (31) bimmelt mehrfach. Telefon wird nicht abgehoben, Mailbox geht auch noch nicht dran.
    Code:
    -- Executing [6781234@pstn_ankommend:1] Dial("SIP/30-b6c01d60", "SIP/31|30|r") in new stack
        -- Called 31
        -- SIP/31-081d1200 is ringing
      == Spawn extension (pstn_ankommend, 6781234, 1) exited non-zero on 'SIP/30-b6c01d60'
        -- Executing [6781234@pstn_ankommend:1] Dial("SIP/30-b6c01d60", "SIP/31|30|r") in new stack
        -- Called 31
        -- SIP/31-081d5168 is ringing
      == Spawn extension (pstn_ankommend, 6781234, 1) exited non-zero on 'SIP/30-b6c01d60'
        -- Executing [6781234@pstn_ankommend:1] Dial("SIP/30-b6c01d60", "SIP/31|30|r") in new stack
        -- Called 31
        -- SIP/31-081d90d0 is ringing
      == Spawn extension (pstn_ankommend, 6781234, 1) exited non-zero on 'SIP/30-b6c01d60'
        -- Executing [6781234@pstn_ankommend:1] Dial("SIP/30-b6c01d60", "SIP/31|30|r") in new stack
        -- Called 31
        -- SIP/31-081dd038 is ringing
      == Spawn extension (pstn_ankommend, 6781234, 1) exited non-zero on 'SIP/30-b6c01d60'
        -- Executing [6781234@pstn_ankommend:1] Dial("SIP/30-b6c01d60", "SIP/31|30|r") in new stack
        -- Called 31
        -- SIP/31-081e0fa0 is ringing
      == Spawn extension (pstn_ankommend, 6781234, 1) exited non-zero on 'SIP/30-b6c01d60'
    Falls andere Szenarien gewünscht sind (Telefon abheben/Mailbox etc.) bitte bescheid sagen. Ich belaste meine Handyrechnung gerne ;)

    Gruß
    zwelch
     
  7. madiehl

    madiehl Mitglied

    Registriert seit:
    15 Feb. 2005
    Beiträge:
    438
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich kenne den SPA-3000 nicht, habe aber eine Vermutung dazu:
    Mit dem von Dir im SPA eingetragenen Dialplan werden alle eingehende Anrufe an die 6781234 im Asterisk weitergeleitet, richtig?
    Asterisk wählt nun die Nummer 31 im SPA, was wiederum dazu führt das dieser das Gespräch an die 6781234 weiterleitet und Du hast eine wunderbare Schleife. Das Problem dürfte daran liegen, das der Dialplan des Sipura so nicht geht, aber dazu kann ich Dir leider nichts sagen. Am besten schaust Du mal im entsprechenden Forum.
     
  8. zwelch

    zwelch Neuer User

    Registriert seit:
    16 Okt. 2005
    Beiträge:
    63
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Wenn ich das richtig verstanden habe, wird die Nummer irgendwie zu Identifizierung genutzt (kenne mich mit dem Dialplan auch null aus :( )

    Warum sollte der SPA das Gespräch erneut weiterleiten? Asterisk leitet das Gespräch auf VoIP1 (Telefon) vom SPA. Um eine Schleife zu verursachen, müsste der SPA das Gespräch ja wiederum auf VoIP2 leiten :confused:

    Ich denke, das dass Problem darin liegt, dass der SPA bei jedem Klingeln immer wieder eine neue Verbindung aufbaut - also immer wieder neu den Asterisk anwählt.
     
  9. zwelch

    zwelch Neuer User

    Registriert seit:
    16 Okt. 2005
    Beiträge:
    63
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich habs! :)

    Habe im SPA
    Code:
    Off Hook While Calling VoIP: yes
    gesetzt und nun läufts :)

    Besten Dank für die Hilfe!

    Gruß
    zwelch