[gelöst] LCR(?) Timeout bei einem Wait() in asterisk

toma9316

Neuer User
Mitglied seit
4 Feb 2012
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Falls meine Frage dumm ist, entschuldige ich mich von vorneweg ... aber ich habe die Antwort tatsächlich nicht selber gefunden.

Parallel zu meinen ISDN-Telefonen hängt eine Asterisk-Box mit ISDN-Karte (hfcpci) und mISDN/LCR. Für einen Anschluss (MSN 24) sollte Asterisk neuerdings nach einer Wartezeit Voicemailbox spielen. Das versuche ich so zu erreichen:

LCR routing.conf:

Code:
dialing=24				: remote application=asterisk context=extern_context exten=24

Asterisk extensions.conf:

Code:
exten => 24,1,Wait(20)
exten => 24,2,Answer 
exten => 24,3,Wait(1)
exten => 24,4,Goto(s,1)

(unter "s" kommt der Code für eine Voice-Mailbox - lasse ich hier weg, weil der erwiesenermassen korrekt funktioniert).

Das funktioniert wunderbar, wenn die Wartezeit im Wait() oben klein genug ist. Nach 15 Sekunden jedoch ist Schluss. In Asterisk sieht das etwa so aus:

Code:
 [call=NULL ast=NULL line=1502] Received new ref by LCR, due to incomming call. (ref=1002)
[call=0 ast=NULL line=327] Call instance allocated.
[call=1002 ast=NULL line=861] Incomming setup from LCR. (callerid 28, dialing 24)
[call=1002 ast=lcr/1 line=770] Try to start pbx. (exten=24 context=extern_context complete=no)
[call=NULL ast=NULL line=363] Sending MESSAGE_OVERLAP to socket. (ref=1002)
[call=1002 ast=lcr/1 line=807] Extensions matches.
[call=1002 ast=lcr/1 line=838] Starting call to Asterisk due to matching extension.
    -- Executing [24@extern_context:1] Wait("lcr/1", "20") in new stack
[call=1002 ast=lcr/1 line=1224] Incomming release from LCR, releasing ref. (cause=16)
[call=0 ast=lcr/1 line=1851] Sending queued HANGUP to Asterisk.
  == [call=0 ast=lcr/1 line=2512] Received hangup from Asterisk thread.
Spawn extension (extern_context, 24, 1) exited non-zero on 'lcr/1'
[call=0 ast=lcr/1 line=2536] Freeing call instance, because we have no ref AND we are requesting no ref.
[call=0 ast=NULL line=301] Call instance freed.

und im LCR-Log:

Code:
04.02.12 14:42:42.875 CH(3): MT_NEW_L3ID INDICATION  port 0  callref new=0x1003b
04.02.12 14:42:42.875 CH(3): MT_SETUP INDICATION U<-N  port 0  calling_pn type=4 plan=1 present=0 screen=0 number=28  called_pn type=0 plan=0 number=24  channel_id exclusive=1 channel=1  bearer coding=0 capability=16 mode=0 rate=16 multi=-1 user=3
04.02.12 14:42:42.876 CH(3): CHANNEL SELECTION (setup)  port 0  channel request='1 (forced)' reserved=0  conclusion 'channel available'  connect channel=1
04.02.12 14:42:42.876 CH(3): BCHANNEL create socket  port 0  channel 1  socket 11
04.02.12 14:42:42.876 CH(3): BCHANNEL activate  port 0  channel 1
04.02.12 14:42:42.876 EP(3): SETUP  from CH(3)  caller id number=28 present=allowed  dialing 24
04.02.12 14:42:42.877 EP(3): TONE  to CH(3)  directory default  name dialing
04.02.12 14:42:42.877 EP(3): ACTION (match)  action goto  line 9
04.02.12 14:42:42.877 EP(3): ACTION goto/menu (change to)  ruleset extern  dialing 24
04.02.12 14:42:42.877 EP(3): ACTION (match)  action remote  line 25
04.02.12 14:42:42.878 EP(3): ACTION remote (setup)  number 24  remote asterisk  context extern_context
04.02.12 14:42:42.878 EP(3): SETUP ACKNOWLEDGE  to CH(3)
04.02.12 14:42:42.878 CH(3): MT_SETUP_ACK REQUEST U->N  port 0  channel_id exclusive=1 channel=1
04.02.12 14:42:42.878 CH(3): BCHANNEL control  port 0  DSP-DTMF 1
04.02.12 14:42:42.889 EP(3): TONE  to CH(3)  directory default  name dialing

04.02.12 14:42:57.887 CH(3): MT_TIMEOUT INDICATION U<-N  port 0  timer 302
04.02.12 14:42:57.958 CH(3): MT_RELEASE INDICATION U<-N  port 0
04.02.12 14:42:57.959 CH(3): MT_RELEASE_L3ID INDICATION  port 0  callref 0x1003b
04.02.12 14:42:57.959 EP(3): RELEASE  from CH(3)  cause value=16 location=5-Remote-PBX
04.02.12 14:42:57.959 EP(3): ACTION hangup
04.02.12 14:42:57.959 CH(3): BCHANNEL deactivate  port 0  channel 1
04.02.12 14:42:57.959 CH: BCHANNEL remove socket  port 0  channel 1  socket 11

Woher kommt denn dieses MT_TIMEOUT_INDICATION (die Leerzeile davor habe ich selbst eingefügt) und wie kann ich es loswerden? Ein "timeout=40" in der remote-Anweisung im routing.conf habe ich probiert, aber wie befürchtet wars das nicht. Das parallel hängende Telefon klingelt dabei (natürlich) munter weiter. Mir war, dass die gleiche Asterix-Konfiguration früher mit chan_capi funktioniert hat - aber dieser Teil war eine ganze Weile unbenutzt.

Vielen Dank für jeden Hinweis.

Grüsse,
Tom
 
Zuletzt bearbeitet:
Du könntest vor dem Wait ein Ringing versuchen, damit Asterisk so tut als würde ein Endgeräte klingeln.
 
Du könntest vor dem Wait ein Ringing versuchen, damit Asterisk so tut als würde ein Endgeräte klingeln.

Tatsächlich, das hat geholfen, vielen Dank! Wie man sieht habe ich keine grosse Ahnung von Asterisk ...

Grüsse,
Tom
 
Hallo ,
Es wäre schon wenn auch die Lösung dazu kommen würde :) danke schon mal im vorraus.
mfg
Starwing
ps.: hab genau das gleiche prob nach mehr als 15 sec exit non-zero.
 
Hallo,

die Lösung stand im Beitrag von rentier-s.

Aber expliziter ... mein erstes Beispiel sieht korrigiert und funktionierend jetzt so aus:

exten => 24,1,Ringing()
exten => 24,2,Wait(50)
exten => 24,3,Answer
exten => 24,4,Wait(1)
exten => 24,5,Goto(s,1)

Das Einfügen eines Ringing() vor dem Wait() hat wahre Wunder gewirkt!

Ich hoffe, das hilft Dir weiter.

Herzliche Grüsse,
Tom
 
Lösung:
Code:
exten => 24,1,Ringing()
exten => 24,2,Wait(20)
exten => 24,3,Answer 
exten => 24,4,Wait(1)
exten => 24,5,Goto(s,1)

Beitrag 2:

coole doppel lösung :) ist nicht nur für mich es gibt noch genug andere die eine lösung bräuchten.
 
Zuletzt bearbeitet von einem Moderator:
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.