Rückmeldungen bei capiCommand(sendfax)

Ralph*

Mitglied
Mitglied seit
7 Mrz 2006
Beiträge
369
Punkte für Reaktionen
2
Punkte
18
Ich versende Faxe mit capiCommand(sendfax) auf unseren Dialogic-Karten.

Wird ein Fax erfolgreich verschickt, dann erhalte ich auch eine entsprechende Statusmeldung, das Script faxstatus.sh wird also ausgeführt.
Code:
    -- Attempting call on CAPI/g1/123:0xxxxx721 for s@faxversand:1 (Retry 1)
  == ISDN_TE2#02: Setting up echo canceller (PLCI=0x102, function=1, options=4, tail=0)
  == ISDN_TE2#02: Setting up DTMF detector (PLCI=0x102, flag=1)
       > Channel CAPI/ISDN_TE2#02/0xxxxx721-cd0 was answered.
    -- Executing [s@faxversand:1] Set("CAPI/ISDN_TE2#02/0xxxxx721-cd0", "CALLERID(num)=123") in new stack
    -- Executing [s@faxversand:2] Set("CAPI/ISDN_TE2#02/0xxxxx721-cd0", "TIMESTART=1256047331") in new stack
    -- Executing [s@faxversand:3] capicommand("CAPI/ISDN_TE2#02/0xxxxx721-cd0", "sendfax|/pfad/zum/Fax/32.sff|+49711xxxxx123||f") in new stack
    -- ISDN_TE2#02: Echo canceller successfully set up (PLCI=0x102)
  == ISDN_TE2#02: Setting up echo canceller (PLCI=0x102, function=2, options=4, tail=0)
  == ISDN_TE2#02: Setting up DTMF detector (PLCI=0x102, flag=0)
    -- ISDN_TE2#02: Echo canceller successfully disabled (PLCI=0x102)
       > ISDN_TE2#02: CAPI INFO 0x3490: Normal call clearing
 capi sendfax: fax sent successful.
    -- Executing [h@faxversand:1] System("CAPI/ISDN_TE2#02/0xxxxx721-cd0", "/var/lib/asterisk/scripts/faxstatus.sh "32" "/pfad/zum/Fax/32.sff" "0xxxxx721" "1" "28800" "0" "OK" "       +49 xxx xx721" "Username"") in new stack
  == ISDN_TE2#02: CAPI Hangingup for PLCI=0xdead0000 in state 4

Im Fehlerfall (hier: Kein Anschluss unter dieser Nummer) führt Asterisk aber das Script faxstatus.sh nicht aus - die h-extension wird nicht angesprungen.
Code:
    -- Attempting call on CAPI/g1/123:0800123456 for s@faxversand:1 (Retry 1)
       > Channel CAPI/ISDN_TE2#02/0800123456-cc6 was never answered.
  == ISDN_TE2#02: CAPI Hangingup for PLCI=0x202 in state 5
       > ISDN_TE2#02: CAPI INFO 0x3481: Unallocated (unassigned) number

    -- Attempting call on CAPI/g1/123:0800123456 for s@faxversand:1 (Retry 2)
       > Channel CAPI/ISDN_TE2#02/0800123456-cc7 was never answered.
  == ISDN_TE2#02: CAPI Hangingup for PLCI=0x202 in state 5
       > ISDN_TE2#02: CAPI INFO 0x3481: Unallocated (unassigned) number

Hier noch der betreffende Teil der extensions.conf:
Code:
[faxversand]
; ***********************************************
; Fax versenden
; ***********************************************
exten => s,1,Set(CALLERID(num)=123)
exten => s,2,Set(TIMESTART=${STRFTIME(${EPOCH},,%s)})
exten => s,3,capiCommand(sendfax|${FAXFILE}|+49xxxxxxxx123||f)
exten => s,4,Hangup()

exten => h,1,System(/var/lib/asterisk/scripts/faxstatus.sh "${JOBNUM}" "${FAXFIL
E}" "${FAXDEST}" "${FAXPAGES}" "${FAXRATE}" "${FAXSTATUS}" "${FAXREASONTEXT}" "$
{FAXID}" "${FAXUSER}")

Hat jemand eine Idee?

Ralph
 
Zuletzt bearbeitet:
Das ist eine Asterisk-Besonderheit. Wenn du ein call-file benutzt, dann wird der Context ja nur angesprungen wenn der Channel aufgebaut wurde. Das ist in deinem 'Fehlerfall' ja nicht so. Um das zu umgehen habe ich abgehend nicht die CAPI angewählt, sondern setze im Callfile einen Local-Channel in dem ich dann das Dial() mache. Und hier geht es dann auch mit der h-extension.

Armin
 
Stimmt, noch nicht mal der Context wird angesprungen - das war mir so noch gar nicht bewusst...

Das mit dem Local-Channel habe ich leider noch nicht wirklich begriffen. Mein Callfile sieht bislang so aus:
Code:
Channel: CAPI/g1/4711:0815
MaxRetries: 1
RetryTime: 120
WaitTime: 45
Context: faxversand
Extension: s
Priority: 1

Hättest Du mir freundlicherweise ein Beispiel mit einem Local-Channel, in dem dann das Dial-Kommando erfolgt?

Ralph
 
Zuletzt bearbeitet:
Bei Channel einfach nicht CAPI angeben, sondern Local:
Channel: Local/1234@my-out-context

Armin
 
Armin, danke für Deine Antwort.

Ich habe versucht, das entsprechend umzusetzen... jetzt will er aber mein Callfile nicht mehr lesen:
Code:
WARNING[1913] pbx_spool.c: At least one of app or extension must be specified, along with tech and dest in file /var/spool/asterisk/outgoing/33.wrk


Callfile 33.wrk:
Code:
Channel: Local/1@faxdial
MaxRetries: 1
RetryTime: 120
WaitTime: 45
Set: CDR(userfield)=00800123456
Set: FAXDEST=0800123456
Set: JOBNUM=33
Set: FAXFILE=/pfad/zum/Fax/33.sff
Set: FAXUSER=Benutzername

extensions.conf
Code:
[faxdial]
exten => 1,1,Dial(CAPI/g1/123:${FAXDEST},20,G(faxversand,s,1))

[faxversand]
exten => s,1,Set(CALLERID(num)=123)
exten => s,2,Set(TIMESTART=${STRFTIME(${EPOCH},,%s)})
exten => s,3,capiCommand(sendfax|${FAXFILE}|+49xxxxxxxx123||f)
exten => s,4,Hangup

exten => h,1,System(/var/lib/asterisk/scripts/faxstatus.sh "${JOBNUM}" "${FAXFIL
E}" "${FAXDEST}" "${FAXPAGES}" "${FAXRATE}" "${FAXSTATUS}" "${FAXREASONTEXT}" "$
{FAXID}" "${FAXUSER}")

Ralph
 
Warum hast du denn Context und Extension entfernt? Das wird doch weiterhin gebraucht. Und das G() im Dial ist auch nicht nötig.

Armin
 
Das G im Dial habe ich aus Deiner Doku (README.Diva.fax)...

Ich habe es so verstanden, dass

- durch das Callfile die Extension 1 im Context faxdial angesprungen wird
- dort per Dial(CAPI...) eine ISDN-Verbindung aufgebaut wird
- und in den Context faxversand gesprungen wird.

Ich muss also im Callfile weiterhin Context und Extension angeben. Und welche Parameter bekommt Channel: Local dann?

=========== EDIT===============

Folgende Änderungen habe ich durchgeführt:

Ich habe versucht, im Callfile für Context und Extension und beim Channel identische Angaben zu machen - auch wenn ich zugeben muss, dass ich nicht wirklich weiß, was ich da veranstalte:
Code:
Channel: [B]Local/s@faxversand[/B]
MaxRetries: 1
RetryTime: 120
WaitTime: 45
Context: [B]faxversand[/B]
Extension: [B]s[/B]
Priority: [B]1[/B]
Set: CDR(userfield)=00800123456
Set: FAXSRC=123
Set: FAXDEST=0800123456
Set: JOBNUM=33
Set: FAXFILE=/pfad/zum/Fax/33.sff
Set: FAXUSER=Benutzername

In der extensions.conf habe ich im Vergleich zu den älteren Posts in diesem Thread nur noch einen Context, der jetzt auch ein Dial(CAPI...) beinhaltet.
Code:
[faxversand]
exten => s,1,Set(CALLERID(num)=123)
exten => s,2,Set(TIMESTART=${STRFTIME(${EPOCH},,%s)})
exten => s,3,Dial(CAPI/g1/123:${FAXDEST})
exten => s,4,capiCommand(sendfax|${FAXFILE}|+49xxxxxxxx123||f)
exten => s,5,Hangup

exten => h,1,System(/var/lib/asterisk/scripts/faxstatus.sh "${JOBNUM}" "${FAXFILE}" "${FAXDEST}" "${FAXPAGES}" "${FAXRATE}" "${FAXSTATUS}" "${FAXREASONTEXT}" "${FAXID}" "${FAXUSER}")


Die h-extension wird bei einem Anruf auf eine nicht vergebene Nummer nun auch angesprungen, aber die Variablen von capiCommand(sendfax), also z.B. ${FAXSTATUS} sind jetzt leer:
Code:
    -- Attempting call on Local/s@faxversand for s@faxversand:1 (Retry 2)
    -- Executing [s@faxversand:1] Set("Local/s@faxversand-912e,2", "CALLERID(num)=123") in new stack
    -- Executing [s@faxversand:2] Set("Local/s@faxversand-912e,2", "TIMESTART=1256147465") in new stack
    -- Executing [s@faxversand:3] Dial("Local/s@faxversand-912e,2", "CAPI/g1/123:0800123456") in new stack
    -- Called g1/123:0800123456
    -- CAPI/ISDN_TE2#02/0800123456-1 is proceeding passing it to Local/s@faxversand-912e,2
    -- CAPI/ISDN_TE2#02/0800123456-1 is making progress passing it to Local/s@faxversand-912e,2
    -- CAPI/ISDN_TE2#02/0800123456-1 is busy
  == ISDN_TE2#02: CAPI Hangingup for PLCI=0x402 in state 5
  == Everyone is busy/congested at this time (1:1/0/0)
    -- Executing [s@faxversand:4] capicommand("Local/s@faxversand-912e,2", "sendfax|/pfad/zum/Fax/34.sff|+49xxxxxxxx123||f") in new stack
  == Spawn extension (faxversand, s, 4) exited non-zero on 'Local/s@faxversand-912e,2'
    -- Executing [h@faxversand:1] System("Local/s@faxversand-912e,2", "/var/lib/asterisk/scripts/faxstatus.sh "34" "/pfad/zum/Fax/34.sff" "0800123456" "" "" "" "" "" "Benutzername"") in new stack
       > ISDN_TE2#02: CAPI INFO 0x3481: Unallocated (unassigned) number
 
Zuletzt bearbeitet:
Stefan,

die extension failed hatte ich auch schon entdeckt und jetzt auch mal getestet:

Code:
[faxversand]
exten => s,1,Set(CALLERID(num)=123)
exten => s,2,Set(TIMESTART=${STRFTIME(${EPOCH},,%s)})
; exten => s,3,Dial(CAPI/g1/123:${FAXDEST})
exten => s,3,capiCommand(sendfax|${FAXFILE}|+49xxxxxxxx123||f)
exten => s,4,Hangup

exten => h,1,System(/var/lib/asterisk/scripts/faxstatus.sh "${JOBNUM}" "${FAXFILE}" "${FAXDEST}" "${FAXPAGES}" "${FAXRATE}" "${FAXSTATUS}" "${FAXREASONTEXT}" "${FAXID}" "${FAXUSER}")

exten => failed,1,System(/var/lib/asterisk/scripts/faxstatus.sh "${JOBNUM}" "${FAXFILE}" "${FAXDEST}" "${FAXPAGES}" "${FAXRATE}" "${FAXSTATUS}" "${FAXREASONTEXT}" "${FAXID}" "${FAXUSER}" "FOO")

Code:
Channel: CAPI/g1/123:0800123456
MaxRetries: 1
RetryTime: 120
WaitTime: 45
Context: faxversand
Extension: s
Priority: 1
Set: CDR(userfield)=00800123456
Set: FAXSRC=123
Set: FAXDEST=0800123456
Set: JOBNUM=33
Set: FAXFILE=/pfad/zum/Fax/33.sff
Set: FAXUSER=Benutzername

Das ist das Ergebnis - das Script wird zwei mal aufgerufen und die Variablen sind immer noch leer:
Code:
    -- Attempting call on CAPI/g1/123:0800123456 for s@faxversand:1 (Retry 2)
       > Channel CAPI/ISDN_TE2#02/0800123456-3 was never answered.
  == ISDN_TE2#02: CAPI Hangingup for PLCI=0x402 in state 5
    -- Executing [failed@faxversand:1] System("OutgoingSpoolFailed", "/var/lib/asterisk/scripts/faxstatus.sh "33" "/pfad/zum/Fax/33.sff" "0800123456" "" "" "" "" "" "Benutzername" "FOO"") in new stack
  == Auto fallthrough, channel 'OutgoingSpoolFailed' status is 'UNKNOWN'
    -- Executing [h@faxversand:1] System("OutgoingSpoolFailed", "/var/lib/asterisk/scripts/faxstatus.sh "33" "/pfad/zum/Fax/33.sff" "0800123456" "" "" "" "" "" "Benutzername"") in new stack
       > ISDN_TE2#02: CAPI INFO 0x3481: Unallocated (unassigned) number


======= Edit: ========

Konnte das Fax erfolgreich verschickt werden, sind die Variablen übrigens ordnungsgemäß gefüllt:
Code:
 capi sendfax: fax sent successful.
    -- Executing [h@faxversand:1] System("CAPI/ISDN_TE2#02/xxxxxxx-6", "/var/lib/asterisk/scripts/faxstatus.sh "33" "/pfad/zum/Fax/33.sff" "xxxxxxx" "1" "33600" "0" "OK" "+49xxxxxxxxxx       " "Benutzername"") in new stack

???

Ralph
 
Zuletzt bearbeitet:
Darf ich das nochmals aufwärmen?

Noch immer kann ich den Status eines nicht verschickten Faxes nicht auslesen. Die Konfiguration sieht derzeit wie folgt aus:

Code:
[faxversand]
exten => s,1,Set(TIMESTART=${STRFTIME(${EPOCH},,%s)})
exten => s,2,capiCommand(sendfax|${FAXFILE}|+49711xxx||f)
exten => s,3,Hangup

exten => h,1,System(/var/lib/asterisk/scripts/faxstatus.sh "${JOBNUM}" "${FAXFIL
E}" "${FAXDEST}" "${FAXPAGES}" "${FAXRATE}" "${FAXSTATUS}" "${FAXREASONTEXT}" "$
{FAXID}" "${FAXUSER}")

exten => failed,1,NoOp(Faxversand war nicht erfolgreich)


Kann das Fax nicht verschickt werden, erhalte ich folgende Ausgabe:
Code:
    -- Attempting call on CAPI/g1/456:1234567 for s@faxversand:1 (Retry 1)
       > Channel CAPI/ISDN_TE2#02/1234567-46d was never answered.
  == ISDN_TE2#02: CAPI Hangingup for PLCI=0x202 in state 5
    -- Executing [failed@faxversand:1] NoOp("OutgoingSpoolFailed", "Faxversand war nicht erfolgreich") in new stack
  == Auto fallthrough, channel 'OutgoingSpoolFailed' status is 'UNKNOWN'
    -- Executing [h@faxversand:1] System("OutgoingSpoolFailed", "/var/lib/asterisk/scripts/faxstatus.sh "90" "/pfad/zum/Fax/90.sff" "1234567" "" "" "" "" "" "Name"") in new stack
       > ISDN_TE2#02: CAPI INFO 0x349b: Destination out of order

Ich hätte gerne die Fehlermeldung, in diesem Fall also "Destination out of order", im Script ausgewertet. ${FAXREASONTEXT} ist im Fehlerfall aber leer...

Ralph
 
Ich hätte gerne die Fehlermeldung, in diesem Fall also "Destination out of order", im Script ausgewertet. ${FAXREASONTEXT} ist im Fehlerfall aber leer...

Ein Faxversand konnte gar nicht begonnen werden, da ja schon diie benötigte Verbindung über CAPI nicht aufgebaut wurde. ${HANGUPCAUSE} könnte Informationen liefern, so wie ich es eben ausprobiert habe, wird hier aber der Wert 0 geliefert.

Auch der Event des Manager Protokolls ergibt nur "Cause: 16" und "Cause-txt: Normal Clearing".

Stefan
 
Stefan,

danke für Deine Antwort!

Das bedeutet, dass die CAPI-Fehlermeldung zwar vorhanden ist (mir angezeigt wird), aber nicht an das Script übergeben werden kann, weil kein CAPI-Channel aufgebaut wurde?

Falls Armin mitlesen sollte: Könnte man chan_capi so erweitern, dass ich die CAPI-Meldung auswerten kann? Oder würde das auch anders gehen?

Die Information (CAPI INFO) ist ja sozusagen direkt vor meiner Nase. Ich weiß nur nicht, wie ich sie im Script auswerten kann...

Ralph
 
Das Problem ist die Reihenfolge. Hangupcause wird zwar gesetzt, aber zu spät. Wie in deinem Log zu sehen, kommt CAPI INFO nachdem schon die h-Extension aufgerufen wurde.
Ob das aber noch doch einen anderen Grund hat, kann ich nur mit einem Log sagen.

Armin
 
Welches Log würde Dir denn helfen?

Ich habe mal verbose auf 5 und capi debug gesetzt:
Code:
    -- Attempting call on CAPI/g1/456:1234567 for s@faxversand:1 (Retry 1)
       > data = g1/456:1234567 format=8
       > parsed dialstring: 'g1' '456' '1234567' ''
       > capi request group = 2
  == ISDN_TE2#02: setting format alaw - 0x8 (alaw)
       > parsed dialstring: 'g1' '456' '1234567' ''
       > capi: peerlink -1 allocated, peer is unlinked
  == ISDN_TE2#02: Call CAPI/ISDN_TE2#02/1234567-518   (pres=0x00, ton=0x00)
       > chan_capi devicestate requested for ISDN_TE2#02/1234567 is 'In use'
CONNECT_REQ                ID=002 #0x1d85 LEN=0056
  Controller/PLCI/NCCI            = 0x2
  CIPValue                        = 0x1
  CalledPartyNumber               = <80>1234567
  CallingPartyNumber              = <00 80>456
  CalledPartySubaddress           = default
  CallingPartySubaddress          = default
  BProtocol                      
   B1protocol                     = 0x1
   B2protocol                     = 0x1
   B3protocol                     = 0x0
   B1configuration                = default
   B2configuration                = default
   B3configuration                = default
   GlobalConfiguration            = default
  BC                              = default
  LLC                             = default
  HLC                             = default
  AdditionalInfo                 
   BChannelinformation            = <00 00>
   Keypadfacility                 = default
   Useruserdata                   = default
   Facilitydataarray              = default
   SendingComplete                = <01 00>

CAPI: ApplId=0x0002 Command=0x02 SubCommand=0x81 MsgNum=0x1d85 NCCI=0x00000202
CONNECT_CONF               ID=002 #0x1d85 LEN=0014
  Controller/PLCI/NCCI            = 0x202
  Info                            = 0x0

    -- ISDN_TE2#02: received CONNECT_CONF PLCI = 0x202
CAPI: ApplId=0x0002 Command=0x08 SubCommand=0x82 MsgNum=0x18e9 NCCI=0x00000202
INFO_IND                   ID=002 #0x18e9 LEN=0016
  Controller/PLCI/NCCI            = 0x202
  InfoNumber                      = 0x18
  InfoElement                     = <89>

INFO_RESP                  ID=002 #0x18e9 LEN=0012
  Controller/PLCI/NCCI            = 0x202

    -- ISDN_TE2#02: info element CHANNEL IDENTIFICATION 89
CAPI: ApplId=0x0002 Command=0x08 SubCommand=0x82 MsgNum=0x18ea NCCI=0x00000202
INFO_IND                   ID=002 #0x18ea LEN=0015
  Controller/PLCI/NCCI            = 0x202
  InfoNumber                      = 0x8002
  InfoElement                     = default

INFO_RESP                  ID=002 #0x18ea LEN=0012
  Controller/PLCI/NCCI            = 0x202

    -- ISDN_TE2#02: info element CALL PROCEEDING
    -- chan_capi queue frame: [ TYPE: Control (4) SUBCLASS: Unknown control '15' (15) ] [ISDN_TE2#02]
CAPI: ApplId=0x0002 Command=0x08 SubCommand=0x82 MsgNum=0x18ec NCCI=0x00000202
INFO_IND                   ID=002 #0x18ec LEN=0017
  Controller/PLCI/NCCI            = 0x202
  InfoNumber                      = 0x1e
  InfoElement                     = <82 88>

INFO_RESP                  ID=002 #0x18ec LEN=0012
  Controller/PLCI/NCCI            = 0x202

    -- ISDN_TE2#02: info element PI 82 88
       > ISDN_TE2#02: In-band information available
    -- chan_capi queue frame: [ TYPE: Control (4) SUBCLASS: Unknown control '14' (14) ] [ISDN_TE2#02]
CAPI: ApplId=0x0002 Command=0x08 SubCommand=0x82 MsgNum=0x18ed NCCI=0x00000202
INFO_IND                   ID=002 #0x18ed LEN=0017
  Controller/PLCI/NCCI            = 0x202
  InfoNumber                      = 0x1e
  InfoElement                     = <82 82>

INFO_RESP                  ID=002 #0x18ed LEN=0012
  Controller/PLCI/NCCI            = 0x202

    -- ISDN_TE2#02: info element PI 82 82
       > ISDN_TE2#02: Destination is non ISDN
CAPI: ApplId=0x0002 Command=0x08 SubCommand=0x82 MsgNum=0x18ee NCCI=0x00000202
INFO_IND                   ID=002 #0x18ee LEN=0017
  Controller/PLCI/NCCI            = 0x202
  InfoNumber                      = 0x8
  InfoElement                     = <82 9b>

INFO_RESP                  ID=002 #0x18ee LEN=0012
  Controller/PLCI/NCCI            = 0x202

    -- ISDN_TE2#02: info element CAUSE 82 9b
CAPI: ApplId=0x0002 Command=0x08 SubCommand=0x82 MsgNum=0x18ef NCCI=0x00000202
INFO_IND                   ID=002 #0x18ef LEN=0015
  Controller/PLCI/NCCI            = 0x202
  InfoNumber                      = 0x8045
  InfoElement                     = default

INFO_RESP                  ID=002 #0x18ef LEN=0012
  Controller/PLCI/NCCI            = 0x202

    -- ISDN_TE2#02: info element DISCONNECT
    -- ISDN_TE2#02: Disconnect case 1
    -- chan_capi queue frame: [ TYPE: Control (4) SUBCLASS: Busy (5) ] [ISDN_TE2#02]
       > Channel CAPI/ISDN_TE2#02/1234567-518 was never answered.
  == ISDN_TE2#02: CAPI Hangingup for PLCI=0x202 in state 5
    -- ISDN_TE2#02: activehangingup (cause=27) for PLCI=0x202
DISCONNECT_REQ             ID=002 #0x1d86 LEN=0013
  Controller/PLCI/NCCI            = 0x202
  AdditionalInfo                  = default

       > chan_capi devicestate requested for ISDN_TE2#02/1234567 is 'Not in use'
       > chan_capi devicestate requested for ISDN_TE2#02/1234567 is 'Not in use'
    -- Executing [failed@faxversand:1] NoOp("OutgoingSpoolFailed", "Faxversand war nicht erfolgreich") in new stack
  == Auto fallthrough, channel 'OutgoingSpoolFailed' status is 'UNKNOWN'
    -- Executing [h@faxversand:1] System("OutgoingSpoolFailed", "/var/lib/asterisk/scripts/faxstatus.sh "91" "/smbexport/daten/GreenBox/Fax/91.sff" "1234567" "" "" "" "" "" "Ralph"") in new stack
CAPI: ApplId=0x0002 Command=0x04 SubCommand=0x81 MsgNum=0x1d86 NCCI=0x00000202
DISCONNECT_CONF            ID=002 #0x1d86 LEN=0014
  Controller/PLCI/NCCI            = 0x202
  Info                            = 0x0

CAPI: ApplId=0x0002 Command=0x08 SubCommand=0x82 MsgNum=0x18f1 NCCI=0x00000202
INFO_IND                   ID=002 #0x18f1 LEN=0015
  Controller/PLCI/NCCI            = 0x202
  InfoNumber                      = 0x805a
  InfoElement                     = default

INFO_RESP                  ID=002 #0x18f1 LEN=0012
  Controller/PLCI/NCCI            = 0x202

    -- ISDN_TE2#02: info element RELEASE COMPLETE
CAPI: ApplId=0x0002 Command=0x04 SubCommand=0x82 MsgNum=0x18f3 NCCI=0x00000202
DISCONNECT_IND             ID=002 #0x18f3 LEN=0014
  Controller/PLCI/NCCI            = 0x202
  Reason                          = 0x349b

DISCONNECT_RESP            ID=002 #0x18f3 LEN=0012
  Controller/PLCI/NCCI            = 0x202

       > ISDN_TE2#02: CAPI INFO 0x349b: Destination out of order
  == ISDN_TE2#02: Interface cleanup PLCI=0x202

HTH...

Ralph
 
Zuletzt bearbeitet:
Ja, das Log ist genau was ich meinte :)

Leider verstehe ich nicht, warum ${HANGUPCAUSE} nicht den korrekten Wert zeigen sollte. Denn im Log ist eindeutig über CAPI der cause code schon vorher gemeldet
ISDN_TE2#02: info element CAUSE 82 9b
und in die Asterisk channel-Struktur ->hangupcause eingetragen worden (das wird dann auch beim Disconnect gezeigt:
activehangingup (cause=27)
Warum also die Variable HANGUPCAUSE nicht gesetzt ist, könnte nur an einer Besonderheit in Asterisk (ggf. wegen dem Contextwechsel oder h-Extension?) sein.

Armin
 
Armin,

auch ich werte nun den HANGUPCAUSE aus, der ist aber in der Tat 0:

Code:
    -- Attempting call on CAPI/g1/456:1234567 for s@faxversand:1 (Retry 2)
       > Channel CAPI/ISDN_TE2#02/1234567-625 was never answered.
  == ISDN_TE2#02: CAPI Hangingup for PLCI=0x202 in state 5
    -- Executing [failed@faxversand:1] NoOp("OutgoingSpoolFailed", "Faxversand war nicht erfolgreich") in new stack
  == Auto fallthrough, channel 'OutgoingSpoolFailed' status is 'UNKNOWN'
    -- Executing [h@faxversand:1] System("OutgoingSpoolFailed", "/var/lib/asterisk/scripts/faxstatus.sh "96" "/pfad/zum/Fax/96.sff" "1234567" "" "" "" "" "" "User" "0"") in new stack
       > ISDN_TE2#02: CAPI INFO 0x349b: Destination out of order

Dabei verwende ich folgende Syntax - die hoffentlich stimmt:
Code:
exten => s,1,Set(TIMESTART=${STRFTIME(${EPOCH},,%s)})
exten => s,2,capiCommand(sendfax|${FAXFILE}|+49711xxxxxxx||f)
exten => s,3,Hangup

exten => h,1,System(/var/lib/asterisk/scripts/faxstatus.sh "${JOBNUM}" "${FAXFILE}" "${FAXDEST}" "${FAXPAGES}" "${FAXRATE}" "${FAXSTATUS}" "${FAXREASONTEXT}" "${FAXID}" "${FAXUSER}" "${HANGUPCAUSE}")

exten => failed,1,NoOp(Faxversand war nicht erfolgreich)

BTW: Wenn ich die Extension "failed" weglasse, springt Asterisk nicht in die h-extension:
Code:
    -- Attempting call on CAPI/g1/456:1234567 for s@faxversand:1 (Retry 1)
       > Channel CAPI/ISDN_TE2#02/1234567-624 was never answered.
  == ISDN_TE2#02: CAPI Hangingup for PLCI=0x202 in state 5
       > ISDN_TE2#02: CAPI INFO 0x349b: Destination out of order

Kann ich sonst noch etwas ausprobieren?

Ralph
 
Welche Asterisk version verwendest du?

Armin
 
Hallo Armin,

sorry für die späte Antwort... ich verwende die 1.4.28

Ralph
 
Hmmm... keine Ahnung was Asterisk da macht. Ich denke die Information wird bei diesem speziellen Ablauf intern wohl nicht korrekt übernommen.
Man müsste das mal genauer 'tracen', also den Code genau verfolgen um zu sehen wo da was passiert.

Armin
 
Mittlerweile bin ich bei der derzeit aktuellen Asterisk Version 1.4.33.1 angekommen und der HANGUPCAUSE wird im Fehlerfall noch immer nicht in Asterisk übernommen. Bei erfolgreichem Faxversand erhalte ich den Wert 16, im Fehlerfall die 0 - egal welcher ISDN-Cause tatsächlich vorliegt.

Also scheint der Fehler (und es scheint ja ein Fehler in Asterisk zu sein) noch niemanden außer mir zu nerven ;-)

Hat mir jemand einen Tip, wo in den Sourcen von Asterisk ich ansetzen könnte um das Problem mal zu verfolgen?

Ralph
 
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.