[Gelöst] FreePBX/Asterisk erkennt Gesprächsende bei Vorzeitigem Auflegen nicht

sschu

Neuer User
Mitglied seit
7 Nov 2009
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich nutze einen SPA3102 (Linksys) um eine analoge Leitung in eine VOIP-Leitung zu verwandeln. Alle eingehenden Gespräche kommen über den ATA, alle ausgehenden laufen auch darüber. Soweit so gut.
Dem ATA hab ich als Disconnect-Tone folgendes eingestellt: 440@-30,440@-30;2(.5/.5/1+2)
Die Asterisk/FreePBX-Version: Core 2.10.1.0 , Voicemail 2.10.0.4
Das funktioniert soweit auch sehr gut. Wenn ein Gespräch zu Stande kam, wird die SIP-Verbindung einwandfrei beendet und es sind in der *-CLI keine offenen Channels mehr. Wenn aber die Voicebox rangeht und die Aufnahme nicht mit # beendet wird oder auch schon während der Ansage aufgelegt wird, dann bleibt der Channel offen und weitere Anrufversuche an die Nummer scheitern (in diesem Fall die 2753).
Wenn ich dann in der CLI "channel request hangup all" tipper, wird der Channel freigegeben und die Nummer 2753 kann wieder angerufen werden.
Ansonsten dauert es Ewigkeiten, bis der Asterisk die Leitung wieder freigibt...

Hier ein Mitschnitt der CLI-Ausgabe (verbosity 3) wenn der Anrufende aufgelegt hat, während die Mailbox-Ansage noch lief.
Code:
    -- SIP/2753-00000031 is ringing
    -- SIP/2753-00000031 is ringing
    -- SIP/2753-00000031 is ringing
    -- SIP/2753-00000031 is ringing
    -- Nobody picked up in 10000 ms
    -- Executing [s@macro-dial-one:43] ExecIf("SIP/1-pstn-00000030", "0?Set(DIALSTATUS=)") in new stack
    -- Executing [s@macro-dial-one:44] GosubIf("SIP/1-pstn-00000030", "0?s-NOANSWER,1()") in new stack
    -- Executing [s@macro-dial-one:45] MacroExit("SIP/1-pstn-00000030", "") in new stack
    -- Executing [s@macro-exten-vm:8] Set("SIP/1-pstn-00000030", "SV_DIALSTATUS=NOANSWER") in new stack
    -- Executing [s@macro-exten-vm:9] GosubIf("SIP/1-pstn-00000030", "0?docfu,1()") in new stack
    -- Executing [s@macro-exten-vm:10] GosubIf("SIP/1-pstn-00000030", "0?docfb,1()") in new stack
    -- Executing [s@macro-exten-vm:11] Set("SIP/1-pstn-00000030", "DIALSTATUS=NOANSWER") in new stack
    -- Executing [s@macro-exten-vm:12] ExecIf("SIP/1-pstn-00000030", "0?MacroExit()") in new stack
    -- Executing [s@macro-exten-vm:13] GotoIf("SIP/1-pstn-00000030", "0?s-NOANSWER,1") in new stack
    -- Executing [s@macro-exten-vm:14] Macro("SIP/1-pstn-00000030", "vm,2753,NOANSWER,") in new stack
    -- Executing [s@macro-vm:1] Macro("SIP/1-pstn-00000030", "user-callerid,SKIPTTL") in new stack
    -- Executing [s@macro-user-callerid:1] Set("SIP/1-pstn-00000030", "AMPUSER=01017613312111") in new stack
    -- Executing [s@macro-user-callerid:2] GotoIf("SIP/1-pstn-00000030", "0?report") in new stack
    -- Executing [s@macro-user-callerid:3] ExecIf("SIP/1-pstn-00000030", "0?Set(REALCALLERIDNUM=01017613312111)") in new stack
    -- Executing [s@macro-user-callerid:4] Set("SIP/1-pstn-00000030", "AMPUSER=") in new stack
    -- Executing [s@macro-user-callerid:5] Set("SIP/1-pstn-00000030", "AMPUSERCIDNAME=") in new stack
    -- Executing [s@macro-user-callerid:6] GotoIf("SIP/1-pstn-00000030", "1?report") in new stack
    -- Goto (macro-user-callerid,s,12)
    -- Executing [s@macro-user-callerid:12] GotoIf("SIP/1-pstn-00000030", "1?continue") in new stack
    -- Goto (macro-user-callerid,s,25)
    -- Executing [s@macro-user-callerid:25] Set("SIP/1-pstn-00000030", "CALLERID(number)=01017613312111") in new stack
    -- Executing [s@macro-user-callerid:26] Set("SIP/1-pstn-00000030", "CALLERID(name)=anonym") in new stack
    -- Executing [s@macro-user-callerid:27] Set("SIP/1-pstn-00000030", "CHANNEL(language)=en") in new stack
    -- Executing [s@macro-vm:2] Set("SIP/1-pstn-00000030", "VMGAIN=""") in new stack
    -- Executing [s@macro-vm:3] Macro("SIP/1-pstn-00000030", "blkvm-check,") in new stack
    -- Executing [s@macro-blkvm-check:1] Set("SIP/1-pstn-00000030", "GOSUB_RETVAL=") in new stack
    -- Executing [s@macro-blkvm-check:2] ExecIf("SIP/1-pstn-00000030", "0?Set(GOSUB_RETVAL=TRUE)") in new stack
    -- Executing [s@macro-blkvm-check:3] MacroExit("SIP/1-pstn-00000030", "") in new stack
    -- Executing [s@macro-vm:4] GotoIf("SIP/1-pstn-00000030", "1?vmx,1") in new stack
    -- Goto (macro-vm,vmx,1)
    -- Executing [vmx@macro-vm:1] Set("SIP/1-pstn-00000030", "MEXTEN=2753") in new stack
    -- Executing [vmx@macro-vm:2] Set("SIP/1-pstn-00000030", "MMODE=NOANSWER") in new stack
    -- Executing [vmx@macro-vm:3] Set("SIP/1-pstn-00000030", "RETVM=") in new stack
    -- Executing [vmx@macro-vm:4] Set("SIP/1-pstn-00000030", "MODE=unavail") in new stack
    -- Executing [vmx@macro-vm:5] GotoIf("SIP/1-pstn-00000030", "1?chknomsg") in new stack
    -- Goto (macro-vm,vmx,8)
    -- Executing [vmx@macro-vm:8] GotoIf("SIP/1-pstn-00000030", "0?s-NOANSWER,1") in new stack
    -- Executing [vmx@macro-vm:9] GotoIf("SIP/1-pstn-00000030", "1?notdirect") in new stack
    -- Goto (macro-vm,vmx,11)
    -- Executing [vmx@macro-vm:11] NoOp("SIP/1-pstn-00000030", "Checking if ext 2753 is enabled: ") in new stack
    -- Executing [vmx@macro-vm:12] GotoIf("SIP/1-pstn-00000030", "1?s-NOANSWER,1") in new stack
    -- Goto (macro-vm,s-NOANSWER,1)
    -- Executing [s-NOANSWER@macro-vm:1] Macro("SIP/1-pstn-00000030", "get-vmcontext,2753") in new stack
    -- Executing [s@macro-get-vmcontext:1] Set("SIP/1-pstn-00000030", "VMCONTEXT=default") in new stack
    -- Executing [s@macro-get-vmcontext:2] GotoIf("SIP/1-pstn-00000030", "0?200:300") in new stack
    -- Goto (macro-get-vmcontext,s,300)
    -- Executing [s@macro-get-vmcontext:300] NoOp("SIP/1-pstn-00000030", "") in new stack
    -- Executing [s-NOANSWER@macro-vm:2] VoiceMail("SIP/1-pstn-00000030", "2753@default,u""") in new stack
    -- <SIP/1-pstn-00000030> Playing '/var/spool/asterisk/voicemail/default/2753/unavail.slin' (language 'en')
    -- <SIP/1-pstn-00000030> Playing 'vm-intro.ulaw' (language 'en')
    -- <SIP/1-pstn-00000030> Playing 'beep.ulaw' (language 'en')
    -- Recording the message
    -- x=0, open writing:  /var/spool/asterisk/voicemail/default/2753/tmp/DwanGa format: wav49, 0x6ae5668
    -- x=1, open writing:  /var/spool/asterisk/voicemail/default/2753/tmp/DwanGa format: wav, 0x6ae6018

Bei einem "channel request hangup all", wird auf der CLI dann folgendes ausgegeben:
Code:
    -- <SIP/1-pstn-00000035> Playing 'vm-intro.ulaw' (language 'en')
voip*CLI> sip show channels
Peer             User/ANR         Call ID          Format           Hold     Last Message    Expiry     Peer
10.69.0.24       1-pstn           a6b30c4b-830c05  0x4 (ulaw)       No       Rx: ACK                    1-pstn
10.69.0.24       (None)           523d1e70327f13e  0x0 (nothing)    No       Init: OPTIONS              1-pstn
2 active SIP dialogs
    -- <SIP/1-pstn-00000035> Playing 'beep.ulaw' (language 'en')
    -- Recording the message
    -- x=0, open writing:  /var/spool/asterisk/voicemail/default/2753/tmp/tKuVLW format: wav49, 0x2aaac808de38
    -- x=1, open writing:  /var/spool/asterisk/voicemail/default/2753/tmp/tKuVLW format: wav, 0x2aaac8037b68
[2012-12-14 22:10:50] NOTICE[11183]: chan_sip.c:26625 sip_poke_noanswer: Peer '1-pstn' is now UNREACHABLE!  Last qualify: 6
[2012-12-14 22:11:00] NOTICE[11183]: chan_sip.c:21107 handle_response_peerpoke: Peer '1-pstn' is now Reachable. (5ms / 2000ms)
voip*CLI> sip show channels
Peer             User/ANR         Call ID          Format           Hold     Last Message    Expiry     Peer
10.69.0.24       1-pstn           a6b30c4b-830c05  0x4 (ulaw)       No       Rx: ACK                    1-pstn
1 active SIP dialog
voip*CLI> channel request hangup all
Requested Hangup on channel 'SIP/1-pstn-00000035'
    -- User hung up
  == Parsing '/var/spool/asterisk/voicemail/default/2753/INBOX/msg0000.txt':   == Found
  == Parsing '/var/spool/asterisk/voicemail/default/2753/INBOX/msg0000.txt':   == Found
  == Parsing '/var/spool/asterisk/voicemail/default/2753/INBOX/msg0000.txt':   == Found
  == Spawn extension (macro-vm, s-NOANSWER, 2) exited non-zero on 'SIP/1-pstn-00000035' in macro 'vm'
  == Spawn extension (macro-exten-vm, s, 14) exited non-zero on 'SIP/1-pstn-00000035' in macro 'exten-vm'
  == Spawn extension (from-did-direct, 2753, 2) exited non-zero on 'SIP/1-pstn-00000035'
    -- Executing [h@from-did-direct:1] Macro("SIP/1-pstn-00000035", "hangupcall,") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("SIP/1-pstn-00000035", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,3)
    -- Executing [s@macro-hangupcall:3] ExecIf("SIP/1-pstn-00000035", "0?Set(CDR(recordingfile)=)") in new stack
    -- Executing [s@macro-hangupcall:4] Hangup("SIP/1-pstn-00000035", "") in new stack
  == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/1-pstn-00000035' in macro 'hangupcall'
  == Spawn extension (from-did-direct, h, 1) exited non-zero on 'SIP/1-pstn-00000035'
voip*CLI>

Ist das jetzt ein Bug von FreePBX oder von *? Gibt es da evtl. eine Lösung für? Wonach müßte ich evtl. suchen?

Wenn die Voicebox-Aufnahme mit # abgebrochen wird und die Aufnahme dann nicht mit 1 bestätigt wird, spuckt die *-CLI folgendes aus:
Code:
    -- User ended message by pressing #
    -- <SIP/1-pstn-00000037> Playing 'auth-thankyou.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-review.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-review-urgent.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-reachoper.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-review.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-review-urgent.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-reachoper.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-review.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-review-urgent.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-reachoper.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-review.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-review-urgent.ulaw' (language 'en')
    -- <SIP/1-pstn-00000037> Playing 'vm-reachoper.ulaw' (language 'en')
  == Parsing '/var/spool/asterisk/voicemail/default/2753/INBOX/msg0001.txt':   == Found
  == Parsing '/var/spool/asterisk/voicemail/default/2753/INBOX/msg0001.txt':   == Found
  == Parsing '/var/spool/asterisk/voicemail/default/2753/INBOX/msg0001.txt':   == Found
    -- <SIP/1-pstn-00000037> Playing 'vm-goodbye.ulaw' (language 'en')
    -- Executing [s-NOANSWER@macro-vm:3] Goto("SIP/1-pstn-00000037", "exit-SUCCESS,1") in new stack
    -- Goto (macro-vm,exit-SUCCESS,1)
    -- Executing [exit-SUCCESS@macro-vm:1] GotoIf("SIP/1-pstn-00000037", "0?exit-RETURN,1") in new stack
    -- Executing [exit-SUCCESS@macro-vm:2] Playback("SIP/1-pstn-00000037", "goodbye") in new stack
    -- <SIP/1-pstn-00000037> Playing 'goodbye.gsm' (language 'en')
    -- Executing [exit-SUCCESS@macro-vm:3] Hangup("SIP/1-pstn-00000037", "") in new stack
  == Spawn extension (macro-vm, exit-SUCCESS, 3) exited non-zero on 'SIP/1-pstn-00000037' in macro 'vm'
  == Spawn extension (macro-exten-vm, s, 14) exited non-zero on 'SIP/1-pstn-00000037' in macro 'exten-vm'
  == Spawn extension (from-did-direct, 2753, 2) exited non-zero on 'SIP/1-pstn-00000037'
    -- Executing [h@from-did-direct:1] Macro("SIP/1-pstn-00000037", "hangupcall,") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("SIP/1-pstn-00000037", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,3)
    -- Executing [s@macro-hangupcall:3] ExecIf("SIP/1-pstn-00000037", "0?Set(CDR(recordingfile)=)") in new stack
    -- Executing [s@macro-hangupcall:4] Hangup("SIP/1-pstn-00000037", "") in new stack
  == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/1-pstn-00000037' in macro 'hangupcall'
  == Spawn extension (from-did-direct, h, 1) exited non-zero on 'SIP/1-pstn-00000037'

Bei Bestätigung mit # gefolgt von 1 geht das ganze etwas schneller... Schöner wäre es aber auch da, wenn die Voicebox bei Auflegen des Anrufers nach getätigter Aufnahme (auch ohne Bestätigung) das Gesprächsende erkennt und direkt wieder die Leitung freigibt.

Bin für jeden Hinweis dankbar

Sven
 
Zuletzt bearbeitet:
Hallo Namensvetter ;-)

Bist Du Dir sicher, dass bei einem echten Gespräch der Channel seitens SPA beendet wird, wenn Dein Gegenüber auflegt? Ich vermute eher, das Hangup erfolgt durch Asterisk, sobald Du auflegst.

Lass Dich mal anrufen, dann soll der andere auflegen und Du bleibst dran. Bleibt der Channel dann auch offen?
 
Bingo... Scheint mein DisconnectTone-Sequenz 440@-30,440@-30;2(.5/.5/1+2) fehlerhaft zu sein. Hatte die als für Deutschland gültig im Linksys-Manual gefunden... hat jemand bekannte bei ihm funktionierende Vorschläge dafür?

[Beitrag 2:]

Hab jetzt mal mir die Voicebox-Aufnahme per Mail zuschicken lassen und bin dabei auf folgenden Disconnect-Tone gekommen 425@-18,425@-18;2(0.16/0.48/1+2)
und siehe da: Das Gespräch wird beendet... :D
Dieser scheinbar nicht der deutschen Norm entsprechende "Disconnect"-Tone scheint von unserer Uni-Internen Telefonanlage produziert zu werden.
Die macht nämlich auch CLIP nach Dänischem Vorbild.
 
Zuletzt bearbeitet von einem Moderator:
Kostenlos!

Statistik des Forums

Themen
248,888
Beiträge
2,304,093
Mitglieder
378,571
Neuestes Mitglied
Heiko2026