Hangup geht nicht wenn SIP nicht erreichbar ist.

jackfritt

Mitglied
Mitglied seit
28 Dez 2005
Beiträge
329
Punkte für Reaktionen
0
Punkte
16
Rufe ich über misdn die 919315 an:
Code:
exten => _0.,1,Set(LANGUAGE()=de)
exten => _0.,n,SetMusicOnHold(default)
exten => _0.,n,Set(CALLERID(number)=91930)
exten => _0.,n,dial,misdn/g:port1-3/${EXTEN}||r

Wird das Gespräch auch angenommen und an SIP/Gehtsonich
weitergeleitet was aber KEINE gültige SIP Adresse is. Somit lande
ich in CHANUNAVAIL.

Code:
exten => _919315,1,Verbose(${EXTEN:4:2})
exten => _919315,n,Dial(SIP/Gehtsonich,,); Goto DDI
exten => _919315,n,Goto,r-${DIALSTATUS}|1

;exten => _0.,n,Congestion
;exten => _0.,n,Busy
;exten => _0.,n,Hangup
;exten => i,1,Hangup
;exten => h,1,Hangup
;exten => t,1,Hangup

exten => r-BUSY,1,Verbose(Channel:${CHANNEL})
exten => r-BUSY,n,Playback(vm-isunavail)
exten => r-BUSY,n,Hangup

exten => r-CHANUNAVAIL,1,Verbose(Channel:${CHANNEL})
exten => r-CHANUNAVAIL,n,Set(PRI_CAUSE()=18)
;exten => r-CHANUNAVAIL,n,Playback(vm-isunavail)
exten => r-CHANUNAVAIL,n,Hangup

exten => r-CONGESTION,1,Verbose(Channel:${CHANNEL})
exten => r-CONGESTION,n,Playback(vm-isunavail)
exten => r-CONGESTION,n,Hangup

exten => r-NOANSWER,1,Verbose(Channel:${CHANNEL})
exten => r-NOANSWER,n,Playback(vm-isunavail)
exten => r-NOANSWER,n,Hangup

Log:
Code:
 -- Executing Dial("mISDN/3-1", "SIP/Gehtsonich||") in new stack
Jul 12 13:11:32 WARNING[9071]: chan_sip.c:1989 create_addr: No such host: Gehtsonich
Jul 12 13:11:32 NOTICE[9071]: app_dial.c:1040 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing Goto("mISDN/3-1", "r-CHANUNAVAIL|1") in new stack
    -- Goto (Extern,r-CHANUNAVAIL,1)
    -- Executing Verbose("mISDN/3-1", "Channel:mISDN/3-1") in new stack
Channel:mISDN/3-1
    -- Executing Set("mISDN/3-1", "PRI_CAUSE()=18") in new stack
Jul 12 13:11:32 ERROR[9071]: pbx.c:1417 ast_func_write: Function PRI_CAUSE not registered
    -- Executing Hangup("mISDN/3-1", "") in new stack
  == Spawn extension (Extern, r-CHANUNAVAIL, 3) exited non-zero on 'mISDN/3-1'
P[ 3] CC_RELEASE_COMPLETE|CONFIRM [TE]
  == Spawn extension (default, 0xxxx919315, 4) exited non-zero on 'SIP/Snom14-a685'

Wie mann schön sieht wird auch ein Hangup ausgeführt aber ich höre an meinem SIP Telefon von wo ich die 919315 anrufe weiterhin einen Klingelton ?? Jetz kommt das beste. Füge ich vor dem Hangup noch ein Playback ein
funktioniert das ganze ohne Probleme. Wo is denn hier mein Denkfehler ?
Es muss doch auch ohne Playback gehn oder ?

P.S.: Der Set Befehl mit PRI_CAUSE hat nix zu sagen geht wohl nur mit BRISTUFF. War ein Test weil ich hier verzweifele :)

Vielen Dank fürs zuhören,

Gruss Jörg
 
Scheinbar habe ich mich nicht richtig ausgedrückt oder niemand hat mein Problem.
Deswegen habe ich mal eine einfache extension geschrieben die mein Problem nochmals verdeutlichen soll.
Ich stehe hier nämlich kurz vor dem Nervenzusammenbruch.

Code:
[general]
static=yes
writeprotect=yes

[globals]
language=de

[default]
exten => _0.,1,dial,misdn/g:port1-3/${EXTEN}||r
exten => _0.,n,Goto,r-${DIALSTATUS}|1
exten => r-BUSY,1,Busy
exten => r-CHANUNAVAIL,1,Hangup
exten => r-CONGESTION,1,Congestion
exten => r-NOANSWER,1,Hangup
exten => r-HANGUP,1,Hangup

[Intern]
exten => 14,1,Dial(SIP/Snom14,,HtTrm)
exten => 14,n,Congestion
exten => 14,n,Busy
exten => 14,n,Hangup

[Extern]
exten => _919315,1,Dial(SIP/h,,r); Goto DDI
exten => _919315,n,Goto,r-${DIALSTATUS}|1
exten => r-CHANUNAVAIL,1,Busy

Ersetze ich die letzte Zeile durch ein
exten => r-CHANUNAVAIL,1,Hangup
funktioniert das leider nicht. Ich höre weiterhin ein Klingelton in meinem Snom360.
Bei Busy funktioniert es prima. Das Snom360 meldet mir ein besetzt.

Kann das denn niemand nachvollziehen ?
Hier nochmal das Log mit Busy wo mann toll erkennen kann das auch Busy an das Snom weitergegeben wird.
Im Display steht dann Besetzt.

Code:
   -- Executing Dial("SIP/Snom14-08229c30", "misdn/g:port1-3/0xxxx919315||r") in new stack
    -- Called g:port1-3/0xxxx919315
    -- Executing Dial("mISDN/1-2", "SIP/h||r") in new stack
Jul 17 18:03:01 WARNING[30304]: chan_sip.c:1980 create_addr: No such host: h
Jul 17 18:03:01 NOTICE[30304]: app_dial.c:1049 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing Goto("mISDN/1-2", "r-CHANUNAVAIL|1") in new stack
    -- Goto (Extern,r-CHANUNAVAIL,1)
    -- Executing Busy("mISDN/1-2", "") in new stack
  == Spawn extension (Extern, r-CHANUNAVAIL, 1) exited non-zero on 'mISDN/1-2'
    -- mISDN/1-u2 is busy
  == Everyone is busy/congested at this time (1:1/0/0)
    -- Executing Goto("SIP/Snom14-08229c30", "r-BUSY|1") in new stack
    -- Goto (default,r-BUSY,1)
    -- Executing Busy("SIP/Snom14-08229c30", "") in new stack
  == Spawn extension (default, r-BUSY, 1) exited non-zero on 'SIP/Snom14-08229c30'


Und hier wenn in der letzten Zeile ein Hangup steht.

Code:
 -- Executing Dial("SIP/Snom14-082237d8", "misdn/g:port1-3/0xxxx919315||r") in new stack
    -- Called g:port1-3/0xxxx919315
    -- Executing Dial("mISDN/3-1", "SIP/h||r") in new stack
Jul 17 18:04:43 WARNING[30599]: chan_sip.c:1980 create_addr: No such host: h
Jul 17 18:04:43 NOTICE[30599]: app_dial.c:1049 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing Goto("mISDN/3-1", "r-CHANUNAVAIL|1") in new stack
    -- Goto (Extern,r-CHANUNAVAIL,1)
    -- Executing Hangup("mISDN/3-1", "") in new stack
  == Spawn extension (Extern, r-CHANUNAVAIL, 1) exited non-zero on 'mISDN/3-1'
P[ 3] CC_RELEASE_COMPLETE|CONFIRM [TE]
  == Spawn extension (default, 0xxxx919315, 1) exited non-zero on 'SIP/Snom14-082237d8'

Wie mann sieht beachtet * den Code nicht. Was mache ich falsch ????

Hilfäääää ;)

Danke,

Jörg
 
Ich hab mal deinen dialplan so ausprobiert und hab dann auf der extension angerufen. Nach dem hangup bekomme ich dann von der Telekom die Ansage:

"kein Anschluss unter dieser Nummer", was im prinzip auch korrekt ist, da chan_sip hier den cause auf 3 setzt. Cause 18 wäre eigentlich nicht richtig, da ja das sip gerät nicht existiert somit kann es auch nicht "nicht Antworten".
 
Hallo,

erstmal vielen Dank für deine Mühen.

Evtl. war dies ein dummes Beispiel mit dem nicht existenten SIP. Nehme ich ein SIP Gerät was zzt nicht angemeldet ist, habe ich gleiches Problem.

Hierbei handelt es sich um ein existierendes SIP Gerät :

Code:
  -- Executing Dial("SIP/Snom14-0825c4c8", "misdn/g:port1-3/0xxxx919315||r") in new stack
    -- Called g:port1-3/0xxxx919315
    -- Executing Dial("mISDN/2-1", "SIP/Snom10||r") in new stack
Jul 19 09:42:15 NOTICE[14476]: app_dial.c:1049 dial_exec_full: Unable to create channel of type 'SIP' (cause 3 - No route to destination)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing Goto("mISDN/2-1", "r-CHANUNAVAIL|1") in new stack
    -- Goto (Extern,r-CHANUNAVAIL,1)
    -- Executing Hangup("mISDN/2-1", "") in new stack
  == Spawn extension (Extern, r-CHANUNAVAIL, 1) exited non-zero on 'mISDN/2-1'
P[ 2] CC_RELEASE_COMPLETE|CONFIRM [TE]
Hier habe ich auch CAUSE 3. Allerdings weiss ich das es dieses Snom ja gibt
also liegt eine ztw. Unterbrechung vor und nicht "Kein Anschluss unter dieser Nummer".
Ich denke es sollte wie beim Handy eine Meldung generiert werden
"zzt. nicht erreichbar" und nicht "Kein Anschluss unter dieser Nummer".
Kann man das nicht über die ZAP Variable PRI_CAUSE Sieh e Link erledigen ?

Oder unterstützt diese Meldungen die Telekom nicht ?
Ich könnte das zwar alles mit Asterisk abfangen leider zahlt dann immer der Anrufer.
Warum also nicht die Telekom mit der richtigen CAUSE dazu "nötigen" ;)


Gruss,

Jörg
 
das ist aber ein bug von chan_sip würde ich sagen. der müsste einen sinvolleren cause zurückliefern.

Aber du hast schon recht es wäre schön wenn man den cause aus der extensions.conf heraus beeinflussen kann, ich würde dich bitten dafür einen feature request für 0.4.0 bei bugs.beronet.com zu posten.
 
Ok erledigt.
Es gibt nun die Variable PRI_CAUSE zu beeinflussen wie folgt.

Code:
exten => _91930[1-9],1,Set(PRI_CAUSE=28)
exten => _91930[1-9],n,Hangup


Gruss,

Jörg
 
Zuletzt bearbeitet:
Ich habe den Fehler gefunden. Es liegt an dem r im Dail Befehl. Mit dem r generiert Asterisk einen eigenen Ring Ton. Somit bekommt man die Meldungen von der Telekom nicht mit. Dort gibt es ja mittlerweile immer eine tolle Ansage.
Solange diese Ansage abgespielt wird meldet chan_misdn auch nichts.

Wird bei Inband Info´s nicht direkt eine PRI_CAUSE von der Telekom zurückgegeben ? Kann man diese nicht auch sofort auswerten bzw. an Asterisk weitergeben ? Dann könnte man nämlich mit Asteriskmeldungen arbeiten ohne
auf die Telekom zu warten. Oder habe ich hier einen Denkfehler ?

Oder mache ich nur in meinen extension etwas falsch ?


Gruss,

Jörg
 
Hier noch ein LOG bei einem Inband Info.

Hier rufe ich Asterisk über die 919301 an und schicke PRI_CAUSE 29 an die Telekom. Wie mann im CLI durch meine Tastatureingaben sieht dauert es eine ganze Zeit bis die Ansage "Dienst oder Dienstmerkmal nicht möglich" von der Telekom abgeschaltet wird.
Code:
    -- Executing Dial("SIP/Snom14-08471448", "misdn/g:port1-3/919301||") in new stack
    -- Called g:port1-3/919301
P[ 1] After SETUP BC
    -- Executing Set("mISDN/1-2", "PRI_CAUSE=29") in new stack
    -- Executing Hangup("mISDN/1-2", "") in new stack
  == Spawn extension (Extern, 919301, 2) exited non-zero on 'mISDN/1-2'
defi-esser*CLI>
defi-esser*CLI>
defi-esser*CLI> lalal
No such command 'lalal' (type 'help' for help)
defi-esser*CLI>
defi-esser*CLI> alalal
No such command 'alalal' (type 'help' for help)
defi-esser*CLI> lalal
No such command 'lalal' (type 'help' for help)
defi-esser*CLI> blah
No such command 'blah' (type 'help' for help)
defi-esser*CLI> blah
No such command 'blah' (type 'help' for help)
defi-esser*CLI> blah
No such command 'blah' (type 'help' for help)
defi-esser*CLI> blah
No such command 'blah' (type 'help' for help)
defi-esser*CLI> blah
No such command 'blah' (type 'help' for help)
defi-esser*CLI> blah
No such command 'blah' (type 'help' for help)
defi-esser*CLI> blah
No such command 'blah' (type 'help' for help)
defi-esser*CLI> blah
No such command 'blah' (type 'help' for help)
defi-esser*CLI> blah
No such command 'blah' (type 'help' for help)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing Goto("SIP/Snom14-08471448", "r-CHANUNAVAIL|1") in new stack
    -- Goto (default,r-CHANUNAVAIL,1)
    -- Executing Playback("SIP/Snom14-08471448", "de/privacy-incorrect") in new stack
    -- Playing 'de/privacy-incorrect' (language 'de')
    -- Executing Hangup("SIP/Snom14-08471448", "") in new stack
  == Spawn extension (default, r-CHANUNAVAIL, 2) exited non-zero on 'SIP/Snom14-08471448'
defi-esser*CLI> blahjetz hat die telekom aufgelegt !!!!
No such command 'blahjetz' (type 'help' for help)
defi-esser*CLI>

Es wäre super wenn man chan_misdn einen Paramter mitgeben könnte nachdem eine Verbindung zustandegekommen ist aber eine PRI_CAUSE > 0 (0 ist doch alles i.O. oder ?) von der Telekom kommt.
Diesen könnte man dann für eigene Ansagen sofort auswerten ohne noch lange zu warten bis die Telekom auflegt.

Ich merke gerade das ich mich wiederhole.

Danke fürs zuhören ;)

Gruss,

Jörg
 

Zurzeit aktive Besucher

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.