Rufabbruch vor Timeout

Boje

Neuer User
Mitglied seit
16 Aug 2005
Beiträge
36
Punkte für Reaktionen
0
Punkte
0
Hallo,

Bei Anrufen von extern wird nicht der im Dial-Befehl eingestellte Timeout abgewartet, sondern der Ruf bricht vorher ab. (weniger als 30 s)
Somit werden auch keine folgenden Extensions angesprungen (Voicemail). Im Display des Anrufers erscheint "keine Antwort". Der Dialstatus vom Asterisk ist aber "Cancel"
Ein funktionierender Workaround ist ein Timeout im Dial-Befehl von 25 s.

Interessant ist auch, daß dieses Problem sporadisch auftritt und nach einem Neustart u.U. weg ist (bis zum nächsten Neustart).

Code:
CONNECT_IND ID=001 #0x225f LEN=0053
  Controller/PLCI/NCCI            = 0x301
  CIPValue                        = 0x10
  CalledPartyNumber               = <c1>14444
  CallingPartyNumber              = <21 83>1701234567
  CalledPartySubaddress           = default
  CallingPartySubaddress          = default
  BC                              = <80 90 a3>
  LLC                             = default
  HLC                             = <91 81>
  AdditionalInfo
   BChannelinformation            = <02 00>
   Keypadfacility                 = default
   Useruserdata                   = default
   Facilitydataarray              = default
   SendingComplete                = default

    -- CONNECT_IND (PLCI=0x301,DID=14444,CID=170234567,CIP=0x10,CONTROLLER=0x1)
       > ISDN1-pseudo-D: msn='*' DNID='14444' MSN
  == ISDN1-pseudo-D: Incoming call '01701234567 -> '14444'
    -- ISDN1-pseudo-D: CAPI/ISDN1-pseudo-D/14444-2a: 14444 matches in context extern
       > CAPI devicestate requested for ISDN1-pseudo-D/14444
  == Started pbx on channel CAPI/ISDN1-pseudo-D/14444-2a
    -- Executing System("CAPI/ISDN1-pseudo-D/14444-2a", "/etc/asterisk/isdn-ppp-down.agi") in new stack
    -- Remote UNIX connection
    -- Remote UNIX connection disconnected
    -- Executing Wait("CAPI/ISDN1-pseudo-D/14444-2a", "0.3") in new stack
Aug  2 17:27:35 WARNING[21954]: channel.c:1589 ast_waitfor_nandfds: Thread 4014098 Blocking 'CAPI/ISDN1-pseudo-D/14444-2a', already blocked by thread 0 in procedure (null)
INFO_IND ID=001 #0x2260 LEN=0021
  Controller/PLCI/NCCI            = 0x301
  InfoNumber                      = 0x70
  InfoElement                     = <c1>14444

INFO_RESP ID=001 #0x2260 LEN=0012
  Controller/PLCI/NCCI            = 0x301

    -- ISDN1-pseudo-D: info element CALLED PARTY NUMBER
       > ISDN1-pseudo-D: INFO_IND DID digits not used in this state.
INFO_IND ID=001 #0x2261 LEN=0016
  Controller/PLCI/NCCI            = 0x301
  InfoNumber                      = 0x18
  InfoElement                     = <80>

INFO_RESP ID=001 #0x2261 LEN=0012
  Controller/PLCI/NCCI            = 0x301

    -- ISDN1-pseudo-D: info element CHANNEL IDENTIFICATION 80
INFO_IND ID=001 #0x2262 LEN=0016
  Controller/PLCI/NCCI            = 0x301
  InfoNumber                      = 0xa1
  InfoElement                     = <a1>

INFO_RESP ID=001 #0x2262 LEN=0012
  Controller/PLCI/NCCI            = 0x301

    -- ISDN1-pseudo-D: info element Sending Complete
  == ISDN1-pseudo-D: pbx already started on channel CAPI/ISDN1-pseudo-D/14444-2a
    -- Executing Set("CAPI/ISDN1-pseudo-D/14444-2a", "CALLERID(number)=01701234567") in new stack
    -- Executing Macro("CAPI/ISDN1-pseudo-D/14444-2a", "user14490") in new stack
    -- Executing SetVar("CAPI/ISDN1-pseudo-D/14444-2a", "MYNAME=MSN14444") in new stack
    -- Executing SetVar("CAPI/ISDN1-pseudo-D/14444-2a", "MYMSN=14444") in new stack
    -- Executing SetVar("CAPI/ISDN1-pseudo-D/14444-2a", "MYCALLMACRO=callwithpstn") in new stack
    -- Executing SetVar("CAPI/ISDN1-pseudo-D/14444-2a", "MYNUMSIP=1") in new stack
    -- Executing SetVar("CAPI/ISDN1-pseudo-D/14444-2a", "MYSIP1=web") in new stack
    -- Executing SetVar("CAPI/ISDN1-pseudo-D/14444-2a", "MYINTERNALID=13") in new stack
    -- Executing SetVar("CAPI/ISDN1-pseudo-D/14444-2a", "INTERN=Zap/g1") in new stack
    -- Executing Set("CAPI/ISDN1-pseudo-D/14444-2a", "status=") in new stack
    -- Executing GotoIf("CAPI/ISDN1-pseudo-D/14444-2a", "0?1:101") in new stack
    -- Goto (extern,14444,101)
    -- Executing Dial("CAPI/ISDN1-pseudo-D/14444-2a", "Zap/g1/14444|40|t") in new stack
    -- Requested transfer capability: 0x00 - SPEECH
    -- Called g1/14444
    -- Zap/1-1 is ringing
  == ISDN1-pseudo-D: Requested RINGING-Indication for CAPI/ISDN1-pseudo-D/14444-2a
ALERT_REQ ID=001 #0xb041 LEN=0018
  Controller/PLCI/NCCI            = 0x301
  AdditionalInfo
   BChannelinformation            = default
   Keypadfacility                 = default
   Useruserdata                   = default
   Facilitydataarray              = default
   SendingComplete                = default

ALERT_CONF ID=001 #0xb041 LEN=0014
  Controller/PLCI/NCCI            = 0x301
  Info                            = 0x0

INFO_IND ID=001 #0x226e LEN=0017
  Controller/PLCI/NCCI            = 0x301
  InfoNumber                      = 0x8
  InfoElement                     = <82 e6>

INFO_RESP ID=001 #0x226e LEN=0012
  Controller/PLCI/NCCI            = 0x301

    -- ISDN1-pseudo-D: info element CAUSE 82 e6
DISCONNECT_IND ID=001 #0x226f LEN=0014
  Controller/PLCI/NCCI            = 0x301
  Reason                          = 0x34e6

DISCONNECT_RESP ID=001 #0x226f LEN=0012
  Controller/PLCI/NCCI            = 0x301

       > CAPI INFO 0x34e6: Recovery on timer expiry
    -- Hungup 'Zap/1-1'
  == Spawn extension (extern, 14444, 101) exited non-zero on 'CAPI/ISDN1-pseudo-D/14444-2a'
    -- Executing NoOp("CAPI/ISDN1-pseudo-D/14444-2a", "CANCEL 20060802-172806 Anruf von Extern Ende") in new stack
    -- Executing System("CAPI/ISDN1-pseudo-D/14444-2a", "/etc/asterisk/isdn-ppp-up.agi &") in new stack
  == ISDN1-pseudo-D: CAPI Hangingup
  == ISDN1-pseudo-D: Interface cleanup PLCI=0x301
       > CAPI devicestate requested for ISDN1-pseudo-D/14444
       > CAPI devicestate requested for ISDN1-pseudo-D/14444
    -- Remote UNIX connection
    -- Remote UNIX connection disconnected



Auch mit Ringing() im Kontext kein Unterschied. (Wie in anderen Beiträgen empfohlen)

Code:
    -- Executing Ringing("CAPI/ISDN1-pseudo-D/14444-29", "") in new stack
  == ISDN1-pseudo-D: Requested RINGING-Indication for CAPI/ISDN1-pseudo-D/14444-29
ALERT_REQ ID=001 #0xb040 LEN=0018
  Controller/PLCI/NCCI            = 0x301
  AdditionalInfo
   BChannelinformation            = default
   Keypadfacility                 = default
   Useruserdata                   = default
   Facilitydataarray              = default
   SendingComplete                = default

    -- Executing Wait("CAPI/ISDN1-pseudo-D/14444-29", "0.1") in new stack
ALERT_CONF ID=001 #0xb040 LEN=0014
  Controller/PLCI/NCCI            = 0x301
  Info                            = 0x0

    -- Executing Dial("CAPI/ISDN1-pseudo-D/1444-29", "Zap/g1/1444|40|t") in new stack
    -- Requested transfer capability: 0x00 - SPEECH
    -- Called g1/14444
    -- Zap/1-1 is ringing
  == ISDN1-pseudo-D: Requested RINGING-Indication for CAPI/ISDN1-pseudo-D/14444-29
    -- ISDN1-pseudo-D: attempting ALERT in state 1
INFO_IND ID=001 #0x1f1c LEN=0017
  Controller/PLCI/NCCI            = 0x301
  InfoNumber                      = 0x8
  InfoElement                     = <82 e6>

INFO_RESP ID=001 #0x1f1c LEN=0012
  Controller/PLCI/NCCI            = 0x301

    -- ISDN1-pseudo-D: info element CAUSE 82 e6
DISCONNECT_IND ID=001 #0x1f1d LEN=0014
  Controller/PLCI/NCCI            = 0x301
  Reason                          = 0x34e6

DISCONNECT_RESP ID=001 #0x1f1d LEN=0012
  Controller/PLCI/NCCI            = 0x301

       > CAPI INFO 0x34e6: Recovery on timer expiry
    -- Hungup 'Zap/1-1'
  == Spawn extension (extern, 14444, 103) exited non-zero on 'CAPI/ISDN1-pseudo-D/14444-29'
    -- Executing NoOp("CAPI/ISDN1-pseudo-D/14444-29", "CANCEL 20060802-170421 Anruf von Extern Ende") in new stack
    -- Executing System("CAPI/ISDN1-pseudo-D/14444-29", "/etc/asterisk/isdn-ppp-up.agi &") in new stack
  == ISDN1-pseudo-D: CAPI Hangingup
  == ISDN1-pseudo-D: Interface cleanup PLCI=0x301
       > CAPI devicestate requested for ISDN1-pseudo-D/14444
       > CAPI devicestate requested for ISDN1-pseudo-D/14444
    -- Remote UNIX connection
    -- Remote UNIX connection disconnected


Vielleicht kann jemand damit was anfangen oder weis eine Lösung.

Danke
 
Der Anruf kommt ohne B-Kanal, deswegen steht da auch 'pseudo-D'.
Das heisst, es ist kein B-Kanal fuer diese Verbindung da und dieser Anruf kann sowieso nicht angenommen werden. z.B. ein 'deflect' wuerde hier eher Sinn machen.

Armin
 
Danke Armin für die Antwort.

Ein B-Kanal ist beim Eintreffen des Rufs allerdings nicht frei. Ich lasse Asterisk aber einen Kanal bzw bei Bedarf auch den zweiten Kanal öffnen. Die Kanäle sind ansonsten vom pppd besetzt. Ich kann sicher auch einen Debug-Output ohne pseudo-D erzeugen.

Das ist auch nicht das Problem, denn man kann die Anrufe vor diesem CANCEL normal entgegennehmen.
Auch wenn ich den Dial-Timeout zum internen Endgerät auf 25s setze, funktioniert alles (NOANSWER, BUSY ...) und der Dialplan wird korrekt abgearbeitet (Voicemail usw).

Aber schon bei 30s Timeout wird nach dieser Zeit mit CANCEL abgebrochen.

Wie gesagt habe ich dieses Phänomen sporadisch und es existiert schon eine Weile durch mehrere Asterisk und chan-capi-cm Versionen.

Es nervt halt langsam. Zudem möchten die Teilnehmer ihre Telefone länger als eine halbe Minute klingeln lassen bevor der Anrufbeantwoter rangeht.

MfG
Burkhard
 
Ich hab das selbe Problem, allerdings schon nach 10s.
Wenn Du eine Loesung findest, sag bitte bescheid.
Ich benutze CAPI mit einer fcpci (in einem vserver, aber das duerfte keinen unterschied machen).
 
Zuletzt bearbeitet:
Also ein Log von einem solchen Fall (mit B-Kanal, ohne pseudo-D) waere schon hilfreich.

Armin
 
Hallo,

Arnin hat recht. Es liegt wohl ausschlielich am besetzten B-Kanal.
Mit freiem Kanal kommt keine "Recovery on timer expiry" Meldung, wie ich erst dachte und der Dialplan geht weiter auch bei mehr als 30s Timeout.

@lilalinux

Warum bei dir das Problem schon nach 10s auftritt weiss ich leider auch nicht. Es kann ja nur noch an Unterschieden beim ISDN Anbieter liegen.

MfG
Burkhard
 
Kostenlos!

Statistik des Forums

Themen
249,052
Beiträge
2,309,533
Mitglieder
378,850
Neuestes Mitglied
IchBinEsDoch