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

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

Dieses Thema im Forum "Asterisk ISDN mit mISDN" wurde erstellt von toma9316, 4 Feb. 2012.

  1. toma9316

    toma9316 Neuer User

    Registriert seit:
    4 Feb. 2012
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 toma9316, 4 Feb. 2012
    Zuletzt bearbeitet: 6 Feb. 2012
    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
     
  2. rentier-s

    rentier-s Guest

    Du könntest vor dem Wait ein Ringing versuchen, damit Asterisk so tut als würde ein Endgeräte klingeln.
     
  3. toma9316

    toma9316 Neuer User

    Registriert seit:
    4 Feb. 2012
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Tatsächlich, das hat geholfen, vielen Dank! Wie man sieht habe ich keine grosse Ahnung von Asterisk ...

    Grüsse,
    Tom
     
  4. Starwing

    Starwing Neuer User

    Registriert seit:
    27 Apr. 2005
    Beiträge:
    32
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Beruf:
    IT - Support
    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.
     
  5. toma9316

    toma9316 Neuer User

    Registriert seit:
    4 Feb. 2012
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

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

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

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

    Ich hoffe, das hilft Dir weiter.

    Herzliche Grüsse,
    Tom
     
  6. Starwing

    Starwing Neuer User

    Registriert seit:
    27 Apr. 2005
    Beiträge:
    32
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Beruf:
    IT - Support
    #6 Starwing, 7 Mai 2012
    Zuletzt von einem Moderator bearbeitet: 9 Mai 2012
    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.