ect + retrieve funktioniert nicht (-immer)

bern

Neuer User
Mitglied seit
19 Jul 2007
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich komme einfach nicht weiter. An der FitzBox hat es noch geklappt und an der Agfeo geht es nicht mehr.

Ich habe eine AGFEO AS40 (Firmware 3.6l) an deren internen S0-Bus eine Fritz-Card PCI angeschlossen ist. Ich möchte damit Anrufe von ISDN nach einem kleinen Sprachmenue weiterleiten.
Damit die B-Kanäe wieder frei werden wird ECT verwendet. In den meisten Situationen (Gespräch wird angenommen, Leitung ist besetzt) klappt es gut, aber eine Situation bereitet mir Zahnschmerzen:

Wenn der gewünschte Gesprächsteilnehmer nicht ab nimmt (timeout) wird der Anrufende einfach aus der Leitung geworfen.

Im Detail:
Das Gespräch wird von Asterisk angenommen, das Sprachmenue läuft, das Gespräch wird mit capicommand(hold) onhold gesetzt. Die Weitervermittlung geschieht mit dem Macro capiect (wie im chan_capi-README beschrieben) durch den Befehl "Dial(CAPI,ISDN1,33,20,M(capiect))". Wenn nun die 20 Sekunden vorbei sind und der Anschluß mit der "33" nicht abgehoben wurde sollte das Gespräch wieder mit capicommand(retrieve) zurück geholt werden damit eine entsprechende Information abgespielt wird. Leider klappt das nicht.
"retrieve" ergibt eine Fehlermeldung und der Anrufer wird aus der Leitung geworfen.

Leider ist es sehr unhöflich einen Anrufer komentarlos aus der Leitung zu werfen.:(

Hier ein Ausschnitt aus dem Dialplan:

[macro-capiect]
exten => s,1,capicommand(ect)

[macro-connection]
exten => s,1,Set(numToCall=${ARG1}|soundToPlay=${ARG2})
;ARG1 und ARG2 werden leider bei GoSub/Return vergessen.
exten => s,2,Wait(1)
exten => s,3,Playback(${soundToPlay})
exten => s,4,capicommand(hold)
exten => s,5,Wait(0)
exten => s,6,Dial(CAPI/ISDN1/${numToCall},20,M(capiect))
exten => s,7,capicommand(retrieve)
exten => s,8,Wait(1)
exten => s,9,GoToIf($[${HANGUPCAUSE} = 0]?50) ;HANGUPCAUSE ist 0 bei timeout, 17 bei busy
exten => s,10,GoSubIf($[${HANGUPCAUSE} = 17]?busymenue,s,1)
exten => s,11,GoTo(5)
exten => s,50,Playback(${NICHT-ERREICHB})
exten => s,51,Wait(1)
exten => s,52,Playback(${UEBERL-H-MENUE})
exten => s,53,GoTo(mainmenue,s,1)

[mainmenue]
exten => s,1,Wait(1)
exten => s,2,Background(${MENUE-TAG}|m) ; m reagiert nur wenn entspr. extension vorhanden ist.
exten => s,6,GoTo(1,1)
exten => 1,1,Macro(connection,33,${UEBERL-PFLEGE})
exten => 1,2,GoTo(s,1)


Die Fehlermeldung ist:
-- Executing [s@macro-connection:6] Dial("CAPI/ISDN1#02/35-1", "CAPI/ISDN1/33|20|M(capiect)") in new stack
-- Called ISDN1/33
-- CAPI/ISDN1#01/33-2 is making progress passing it to CAPI/ISDN1#02/35-1
-- CAPI/ISDN1#01/33-2 is ringing
-- Nobody picked up in 20000 ms
[Aug 13 17:24:10] WARNING[6673]: chan_capi_utils.c:305 capi_wait_conf: ISDN1#02: timed out waiting for FACILITY_CONF
== ISDN1#01: CAPI Hangingup for PLCI=0x201 in state 5

-- Executing [s@macro-connection:7] capiCommand("CAPI/ISDN1#02/35-1", "retrieve") in new stack
[Aug 13 17:24:10] WARNING[6673]: chan_capi.c:3970 pbx_capi_retrieve: ISDN1#02: 0x101 is not valid or not on hold to retrieve!
-- Executing [s@macro-connection:8] Wait("CAPI/ISDN1#02/35-1", "1") in new stack
== Spawn extension (macro-connection, s, 8) exited non-zero on 'CAPI/ISDN1#02/35-1' in macro 'connection'
== Spawn extension (macro-connection, s, 8) exited non-zero on 'CAPI/ISDN1#02/35-1'

Ich verwende Asterisk asterisk-1.4.10, zaptel-1.4.4, asterisk-addons-1.4.2, libpri-1.4.1, chan-capi-HEAD (Rev 532).

Mit Asterisk 1.4.9 an einer FritzBox Fon hat alles funktionert. Nun, an der AS 40 mit Asterisk funktioniert es nicht mehr
Kann das an der aktuelleren Version von Asterisk liegen oder an der TK-Anlage? Und wie könnte ich abhilfe schaffen.

Vielen Dank für die Hilfe.

Bernhard
 
Wie immer bringt set verbose 5 und capi debug informatives zu Tage.
Und bitte einen vollständigen Trace - die Infos zum Hold fehlen hier.

Gruß Mario

Edit:

hmm, irgendwie hab' ich das Gefühl, das das hold im Makro auf dem falschen Channel arbeitet...
Leider fehlt der erste Teil der Meldungen...
 
Hallo,

vielen Dank für die rasche Antwort. Wenn ich set verbose 5 und capi debug verwende bekomme ich folgende Ausgabe:

Code:
Asterisk 1.4.10, Copyright (C) 1999 - 2007 Digium, Inc. and others.
Created by Mark Spencer <[email protected]>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
  == Parsing '/etc/asterisk/asterisk.conf': Found
  == Parsing '/etc/asterisk/extconfig.conf': Found
Connected to Asterisk 1.4.10 currently running on kiwi (pid = 6607)
Verbosity was 0 and is now 5
kiwi*CLI> capi debug
CAPI Debugging Enabled
kiwi*CLI>
kiwi*CLI>
CONNECT_IND ID=004 #0x0000 LEN=0033
  Controller/PLCI/NCCI            = 0x101
  CIPValue                        = 0x4
  CalledPartyNumber               = <81>35
  CallingPartyNumber              = A<80>17
  CalledPartySubaddress           = default
  CallingPartySubaddress          = default
  BC                              = <90 90 a3>
  LLC                             = default
  HLC                             = default
  AdditionalInfo                  = default

    -- CONNECT_IND (PLCI=0x101,DID=35,CID=17,CIP=0x4,CONTROLLER=0x1)
       > ISDN1#02: msn='35' DNID='35' MSN
  == ISDN1#02: setting format alaw - 0x8 (alaw)
  == ISDN1#02: Incoming call '17' -> '35'
INFO_IND ID=004 #0x0001 LEN=0017
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x1e
  InfoElement                     = <81 83>

INFO_RESP ID=004 #0x0001 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element PI 81 83
       > ISDN1#02: Origination is non ISDN
INFO_IND ID=004 #0x0002 LEN=0018
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x70
  InfoElement                     = <81>35

INFO_RESP ID=004 #0x0002 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element CALLED PARTY NUMBER
       > ISDN1#02: INFO_IND DID digits not used in this state.
INFO_IND ID=004 #0x0003 LEN=0016
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x18
  InfoElement                     = <89>

INFO_RESP ID=004 #0x0003 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element CHANNEL IDENTIFICATION 89
INFO_IND ID=004 #0x0004 LEN=0016
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0xa1
  InfoElement                     = <a1>

INFO_RESP ID=004 #0x0004 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element Sending Complete
    -- ISDN1#02: CAPI/ISDN1#02/35-0: 35 matches in context capi-in
  == Started pbx on channel CAPI/ISDN1#02/35-0
       > CAPI devicestate requested for ISDN1#02/35
    -- Executing [35@capi-in:1] Wait("CAPI/ISDN1#02/35-0", "0") in new stack
    -- Executing [35@capi-in:2] AGI("CAPI/ISDN1#02/35-0", "klsch-ftag.agi") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/klsch-ftag.agi
    -- AGI Script klsch-ftag.agi completed, returning 0
    -- Executing [35@capi-in:3] Set("CAPI/ISDN1#02/35-0", "ftag=1|g") in new stack
  == Setting global variable 'ftag' to '1'
    -- Executing [35@capi-in:4] Answer("CAPI/ISDN1#02/35-0", "") in new stack
  == ISDN1#02: Answering for 35
CONNECT_RESP ID=004 #0x0000 LEN=0038
  Controller/PLCI/NCCI            = 0x101
  Reject                          = 0x0
  BProtocol
   B1protocol                     = 0x1
   B2protocol                     = 0x1
   B3protocol                     = 0x0
   B1configuration                = default
   B2configuration                = default
   B3configuration                = default
   GlobalConfiguration            = default
  ConnectedNumber                 = <00 80>35
  ConnectedSubaddress             = default
  LLC                             = default
  AdditionalInfo
   BChannelinformation            = default
   Keypadfacility                 = default
   Useruserdata                   = default
   Facilitydataarray              = default
   SendingComplete                = default

    -- Executing [35@capi-in:5] Wait("CAPI/ISDN1#02/35-0", "1") in new stack
       > CAPI devicestate requested for ISDN1#02/35
CONNECT_ACTIVE_IND ID=004 #0x000a LEN=0015
  Controller/PLCI/NCCI            = 0x101
  ConnectedNumber                 = default
  ConnectedSubaddress             = default
  LLC                             = default

CONNECT_ACTIVE_RESP ID=004 #0x000a LEN=0012
  Controller/PLCI/NCCI            = 0x101

CONNECT_B3_IND ID=004 #0x000b LEN=0013
  Controller/PLCI/NCCI            = 0x10101
  NCPI                            = default

CONNECT_B3_RESP ID=004 #0x000b LEN=0015
  Controller/PLCI/NCCI            = 0x10101
  Reject                          = 0x0
  NCPI                            = default

CONNECT_B3_ACTIVE_IND ID=004 #0x000c LEN=0013
  Controller/PLCI/NCCI            = 0x10101
  NCPI                            = default

CONNECT_B3_ACTIVE_RESP ID=004 #0x000c LEN=0012
  Controller/PLCI/NCCI            = 0x10101

    -- Executing [35@capi-in:6] Playback("CAPI/ISDN1#02/35-0", "klsch-begruessung-dummy") in new stack
    -- <CAPI/ISDN1#02/35-0> Playing 'klsch-begruessung-dummy' (language 'de')
    -- Executing [35@capi-in:7] Goto("CAPI/ISDN1#02/35-0", "mainmenue|s|1") in new stack
    -- Goto (mainmenue,s,1)
    -- Executing [s@mainmenue:1] Wait("CAPI/ISDN1#02/35-0", "1") in new stack
    -- Executing [s@mainmenue:2] BackGround("CAPI/ISDN1#02/35-0", "klsch-menue-tag-dummy|m") in new stack
    -- <CAPI/ISDN1#02/35-0> Playing 'klsch-menue-tag-dummy' (language 'de')
  == CDR updated on CAPI/ISDN1#02/35-0
    -- Executing [1@mainmenue:1] Macro("CAPI/ISDN1#02/35-0", "connection|33|klsch-ueberleitung-pflegepersonal-dummy") in new stack
    -- Executing [s@macro-connection:1] Set("CAPI/ISDN1#02/35-0", "numToCall=33|soundToPlay=klsch-ueberleitung-pflegepersonal-dummy") in new stack
    -- Executing [s@macro-connection:2] Wait("CAPI/ISDN1#02/35-0", "1") in new stack
    -- Executing [s@macro-connection:3] Playback("CAPI/ISDN1#02/35-0", "klsch-ueberleitung-pflegepersonal-dummy") in new stack
    -- <CAPI/ISDN1#02/35-0> Playing 'klsch-ueberleitung-pflegepersonal-dummy' (language 'de')
    -- Executing [s@macro-connection:4] capiCommand("CAPI/ISDN1#02/35-0", "hold") in new stack
    -- capiCommand: 'hold' '(null)'
FACILITY_REQ ID=004 #0x01d2 LEN=0018
  Controller/PLCI/NCCI            = 0x101
  FacilitySelector                = 0x3
  FacilityRequestParameter        = <02 00 00>

ISDN1#02: wait for FACILITY_CONF (0x8081)
FACILITY_CONF ID=004 #0x01d2 LEN=0022
  Controller/PLCI/NCCI            = 0x101
  Info                            = 0x0
  FacilitySelector                = 0x3
  FacilityConfirmationParameter   = <02 00 02 00 00>

    -- ISDN1#02: Call on hold (PLCI=0x101)
ISDN1#02: found and signal for FACILITY_CONF
ISDN1#02: cond signal received for FACILITY_CONF
       > ISDN1#02: sent HOLD for PLCI=0x101
    -- Executing [s@macro-connection:5] Wait("CAPI/ISDN1#02/35-0", "0") in new stack
    -- Executing [s@macro-connection:6] Dial("CAPI/ISDN1#02/35-0", "CAPI/ISDN1/33|20|M(capiect)") in new stack
       > data = ISDN1/33 format=8
       > parsed dialstring: 'ISDN1' 'NULL' '33' ''
       > capi request for interface 'ISDN1'
  == ISDN1#01: setting format alaw - 0x8 (alaw)
       > parsed dialstring: 'ISDN1' 'NULL' '33' ''
       > capi: peerlink -1 allocated, peer is unlinked
  == ISDN1#01: Call CAPI/ISDN1#01/33-1   (pres=0x00, ton=0x41)
CONNECT_REQ ID=004 #0x01d3 LEN=0047
  Controller/PLCI/NCCI            = 0x1
  CIPValue                        = 0x4
  CalledPartyNumber               = <80>33
  CallingPartyNumber              = A<80>17
  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                = default

    -- Called ISDN1/33
CONNECT_CONF ID=004 #0x01d3 LEN=0014
  Controller/PLCI/NCCI            = 0x201
  Info                            = 0x0

    -- ISDN1#01: received CONNECT_CONF PLCI = 0x201
       > CAPI devicestate requested for ISDN1#01/33
DISCONNECT_B3_IND ID=004 #0x0270 LEN=0015
  Controller/PLCI/NCCI            = 0x10101
  Reason_B3                       = 0x3301
  NCPI                            = default

DISCONNECT_B3_RESP ID=004 #0x0270 LEN=0012
  Controller/PLCI/NCCI            = 0x10101

FACILITY_IND ID=004 #0x0271 LEN=0020
  Controller/PLCI/NCCI            = 0x101
  FacilitySelector                = 0x3
  FacilityIndicationParameter     = <02 00 02 00 00>

    -- ISDN1#02: PLCI=0x101 put onhold
FACILITY_RESP ID=004 #0x0271 LEN=0015
  Controller/PLCI/NCCI            = 0x101
  FacilitySelector                = 0x3
  FacilityResponseParameters      = default

INFO_IND ID=004 #0x0272 LEN=0015
  Controller/PLCI/NCCI            = 0x201
  InfoNumber                      = 0x800d
  InfoElement                     = default

INFO_RESP ID=004 #0x0272 LEN=0012
  Controller/PLCI/NCCI            = 0x201

    -- ISDN1#01: info element SETUP ACK
INFO_IND ID=004 #0x0273 LEN=0017
  Controller/PLCI/NCCI            = 0x201
  InfoNumber                      = 0x1e
  InfoElement                     = <81 88>

INFO_RESP ID=004 #0x0273 LEN=0012
  Controller/PLCI/NCCI            = 0x201

    -- ISDN1#01: info element PI 81 88
       > ISDN1#01: In-band information available
    -- CAPI queue frame: [ TYPE: Control (4) SUBCLASS: Unknown control '14' (14) ] [ISDN1#01]
INFO_IND ID=004 #0x0274 LEN=0016
  Controller/PLCI/NCCI            = 0x201
  InfoNumber                      = 0x18
  InfoElement                     = <89>

INFO_RESP ID=004 #0x0274 LEN=0012
  Controller/PLCI/NCCI            = 0x201

    -- ISDN1#01: info element CHANNEL IDENTIFICATION 89
    -- CAPI/ISDN1#01/33-1 is making progress passing it to CAPI/ISDN1#02/35-0
  == ISDN1#02: Requested PROGRESS-Indication for CAPI/ISDN1#02/35-0
INFO_IND ID=004 #0x0275 LEN=0015
  Controller/PLCI/NCCI            = 0x201
  InfoNumber                      = 0x8001
  InfoElement                     = default

INFO_RESP ID=004 #0x0275 LEN=0012
  Controller/PLCI/NCCI            = 0x201

    -- ISDN1#01: info element ALERTING
    -- CAPI queue frame: [ TYPE: Control (4) SUBCLASS: Ringing (3) ] [ISDN1#01]
INFO_IND ID=004 #0x0276 LEN=0017
  Controller/PLCI/NCCI            = 0x201
  InfoNumber                      = 0x1e
  InfoElement                     = <81 88>

INFO_RESP ID=004 #0x0276 LEN=0012
  Controller/PLCI/NCCI            = 0x201

    -- ISDN1#01: info element PI 81 88
       > ISDN1#01: In-band information available
INFO_IND ID=004 #0x0277 LEN=0016
  Controller/PLCI/NCCI            = 0x201
  InfoNumber                      = 0x18
  InfoElement                     = <89>

INFO_RESP ID=004 #0x0277 LEN=0012
  Controller/PLCI/NCCI            = 0x201

    -- ISDN1#01: info element CHANNEL IDENTIFICATION 89
    -- CAPI/ISDN1#01/33-1 is ringing
  == ISDN1#02: Requested RINGING-Indication for CAPI/ISDN1#02/35-0
    -- ISDN1#02: attempting ALERT in state 10
       > CAPI devicestate requested for ISDN1#01/33
    -- Nobody picked up in 20000 ms
  == ISDN1#02: Requested Indication-STOP for CAPI/ISDN1#02/35-0
       > ISDN1#02: using PLCI=0x101 for retrieve
FACILITY_REQ ID=004 #0x01d4 LEN=0018
  Controller/PLCI/NCCI            = 0x101
  FacilitySelector                = 0x3
  FacilityRequestParameter        = <03 00 00>

ISDN1#02: wait for FACILITY_CONF (0x8081)
FACILITY_CONF ID=004 #0x01d4 LEN=0022
  Controller/PLCI/NCCI            = 0x101
  Info                            = 0x0
  FacilitySelector                = 0x3
  FacilityConfirmationParameter   = <03 00 02 00 00>

[Aug 13 20:53:06] WARNING[6648]: chan_capi_utils.c:305 capi_wait_conf: ISDN1#02: timed out waiting for FACILITY_CONF
       > ISDN1#02: sent RETRIEVE for PLCI=0x101
  == ISDN1#01: CAPI Hangingup for PLCI=0x201 in state 5
    -- ISDN1#01: activehangingup (cause=0) for PLCI=0x201
DISCONNECT_REQ ID=004 #0x01d5 LEN=0013
  Controller/PLCI/NCCI            = 0x201
  AdditionalInfo                  = default

ISDN1#01: wait for DISCONNECT_CONF (0x481)
    -- ISDN1#02: unhandled FACILITY_CONF supplementary function 0003
ISDN1#02: found and signal for FACILITY_CONF
INFO_IND ID=004 #0x0278 LEN=0016
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x18
  InfoElement                     = <89>

INFO_RESP ID=004 #0x0278 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element CHANNEL IDENTIFICATION 89
DISCONNECT_IND ID=004 #0x0279 LEN=0014
  Controller/PLCI/NCCI            = 0x101
  Reason                          = 0x0

DISCONNECT_RESP ID=004 #0x0279 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- CAPI queue frame: [ TYPE: Control (4) SUBCLASS: Hangup (1) ] [ISDN1#02]
DISCONNECT_CONF ID=004 #0x01d5 LEN=0014
  Controller/PLCI/NCCI            = 0x201
  Info                            = 0x0

ISDN1#01: found and signal for DISCONNECT_CONF
ISDN1#01: cond signal received for DISCONNECT_CONF
       > CAPI devicestate requested for ISDN1#01/33
       > CAPI devicestate requested for ISDN1#01/33
    -- Executing [s@macro-connection:7] capiCommand("CAPI/ISDN1#02/35-0", "retrieve") in new stack
    -- capiCommand: 'retrieve' '(null)'
[Aug 13 20:53:06] WARNING[6648]: chan_capi.c:3970 pbx_capi_retrieve: ISDN1#02: 0x101 is not valid or not on hold to retrieve!
    -- Executing [s@macro-connection:8] Wait("CAPI/ISDN1#02/35-0", "1") in new stack
  == Spawn extension (macro-connection, s, 8) exited non-zero on 'CAPI/ISDN1#02/35-0' in macro 'connection'
  == Spawn extension (macro-connection, s, 8) exited non-zero on 'CAPI/ISDN1#02/35-0'
  == ISDN1#02: CAPI Hangingup for PLCI=0xdead0000 in state 4
  == ISDN1#02: Interface cleanup PLCI=0xdead0000
       > CAPI devicestate requested for ISDN1#02/35
       > CAPI devicestate requested for ISDN1#02/35
DISCONNECT_IND ID=004 #0x027a LEN=0014
  Controller/PLCI/NCCI            = 0x201
  Reason                          = 0x3400

DISCONNECT_RESP ID=004 #0x027a LEN=0012
  Controller/PLCI/NCCI            = 0x201

  == ISDN1#01: Interface cleanup PLCI=0x201
kiwi*CLI>

"hold im Makro auf dem falschen Channel" klingt interessant. Wobei, was mich auch iritiert ist, dass der capicommand(retrieve) dann funktioniert wenn der gewünschte Gesprächspartner "BUSY" ist. Nur wenn der Geprächspartner nicht abhebt geht der Anruf verlohren.

Leider kann ich mit der Ausgabe von Asterisk nicht viel anfangen, vielleicht haben Sie eine Anregung?

Gruß, Bernhard
 
Eben sehe ich, dass ich bei der Antwort nicht auf die Trace eingegangen bin. Sorry. Ich verstehe allerdings nicht genau, was meinen Sie mit "vollständigen Trace - die Infos zum Hold fehlen hier." meinen. Ich beschäftige mich noch nicht lange mit Asterisk. Wo kann ich diese Informationen bekommen?
 
Der vollständige Trace war dein voriger Post, dort waren alle Infos enthalten.
Im ersten Post fing der Trace da an, wo du den Teilnehmer der Agfeo rufst. Das Hold wurde aber nicht gezeigt.

Meine Vermutung mit dem Makro war falsch.

Leider kann ich hier momentan auch nicht sagen, wo das Problem liegt.
So wie ich das sehe, versucht chan_capi selbstständig ein retrieve abzusetzen, nachdem der Call mit Timeout abgebrochen ist.
Prinzipiell ist das erfolgreich (die CAPI Rückmeldung sieht so aus), allerdings wird die Rückmeldung vom chan_capi aus irgendeinem Grund nicht erkannt.

Du kannst ja mal versuchen das capicommand(hold) in
Code:
capicommand(hold|MYHOLDVAR)
und das retrieve in

Code:
capicommand(retrieve|${MYHOLDVAR})
zu ändern.

Momentan siehts aber eher nach einem Bug irgendwo im chan_capi aus.
Poste auch mal deine capi.conf.

Mario
 
Hallo,

vielen Dank für die Antwort. Auf Deine erste Antwort habe das Ganze mit

exten => s,4,capicommand(hold|${MYHOLDVAR})
exten => s,5,Wait(1)
exten => s,6,Dial(CAPI/ISDN1/${numToCall},20,M(capiect,${MYHOLDVAR}))
exten => s,7,capicommand(retrieve|${MYHOLDVAR})
exten => s,8,Wait(1)
[...]

[macro-capiect]
exten => s,1,capicommand(ect|${ARG1})
bereits ausprobiert. Leider ohne Erfolg. Im Moment habe ich die asterisk 1.4 komplett gegen asterisk 1.2.24 ausgetauscht, aber damit funktioniert ECT überhaupt nicht. Ich werde Version 1.4 nachher wieder reinstallieren.

Ich denke auch über einen Bug bei chan_capi oder asterisk nach - wobei es an einer FritzBox Fon 7170 schon funktioniert hat. Somit hat es auch etwas mit der Hardware zu tun. (Ich habe heute einmal die AGFEO Holtline angerufen, aber die konnten nichts dazu sagen und haben mich auf den email-Support verwiesen.)

Hier also noch die capi.conf:
Code:
;
; CAPI config
;
;

; general section

[general]
nationalprefix=0
internationalprefix=00
rxgain=1.0       ;linear receive gain (1.0 = no change)
txgain=1.0       ;linear transmit gain (1.0 = no change)
language=de      ;set default language
;ulaw=yes        ;set this, if you live in u-law world instead of a-law

;jb.....         ;with Asterisk 1.4 you can configure jitterbuffer,
                 ;see Asterisk documentation for all jb* setting available.
;mohinterpret=default ;Asterisk 1.4: default music on hold class when placed on hold.


; interface sections ...

[ISDN1]          ;this example interface gets name 'ISDN1' and may be any
                 ;name not starting with 'g' or 'contr'.
                 ;Use one interface section for each isdn port!
;ntmode=yes      ;if isdn card operates in nt mode, set this to yes
isdnmode=msn     ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial)
                 ;when using NT-mode, 'DID' should be set in any case
incomingmsn=35    ;allow incoming calls to this list of MSNs/DIDs, * = any
;defaultcid=123  ;set a default caller id to that interface for dial-out,
                 ;this caller id will be used when dial option 'd' is set.
;controller=0    ;ISDN4BSD default
;controller=7    ;ISDN4BSD USB default
controller=1     ;capi controller number of this interface/port
group=1          ;dialout group
;prefix=0        ;set a prefix to calling number on incoming calls
softdtmf=on      ;enable/disable software dtmf detection, recommended for AVM cards
relaxdtmf=on     ;in addition to softdtmf, you can use relaxed dtmf detection
faxdetect=off    ;enable faxdetection and redirection to EXTEN 'fax' for incoming and/or
                 ;outgoing calls. (default='off', possible values: 'incoming','outgoing','both')
accountcode=     ;PBX accountcode to use in CDRs
;amaflags=default;AMA flags for CDR ('default', 'omit', 'billing', or 'documentation')
context=capi-in  ;context for incoming calls
;holdtype=hold   ;when the PBX puts the call on hold, ISDN HOLD will be used. If
                 ;set to 'local' (default value), no hold is done and the PBX may
                 ;play MOH.
;immediate=yes   ;DID: immediate start of pbx with extension 's' if no digits were
                 ;     received on incoming call (no destination number yet)
                 ;MSN: start pbx on CONNECT_IND and don't wait for SETUP/SENDING-COMPLETE.
                 ;     info like REDIRECTINGNUMBER may be lost, but this is necessary for
                 ;     drivers/pbx/telco which does not send SETUP or SENDING-COMPLETE.
;echosquelch=1   ;_VERY_PRIMITIVE_ echo suppression
;echocancel=yes  ;EICON DIVA SERVER (CAPI) echo cancelation (yes=g165)
                 ;(possible values: 'no', 'yes', 'force', 'g164', 'g165') 
echocancelold=yes;use facility selector 6 instead of correct 8 (necessary for older eicon drivers)
;echotail=64     ;echo cancel tail setting (default=0 for maximum)
;echocancelnlp=1 ;activate non-linear-processing; this improves echo cancel ratio, but might
                 ;incorporate variable gain in the signal path.
;bridge=yes      ;native bridging (CAPI line interconnect) if available
;callgroup=1     ;PBX call group
;pickupgroup=1   ;PBX pickup group (which call groups are we allowed to pickup)
;language=de     ;set language for this device (overwrites default language)
;disallow=all    ;RTP codec selection (valid with Eicon DIVA Server only)
;allow=all       ;RTP codec selection (valid with Eicon DIVA Server only)
devices=2        ;number of concurrent calls (b-channels) on this controller
                 ;(2 makes sense for single BRI, 30/23 for PRI/T1)
;jb.....         ;with Asterisk 1.4 you can configure jitterbuffer,
                 ;see Asterisk documentation for all jb* setting available.
;mohinterpret=default ;Asterisk 1.4: default music on hold class when placed on hold.
;qsig=1           ;enable use of Q.SIG extensions. ECMA Variant
;qsig_prnum=1234  ;enable inbound bridging - this should be an QSIG-network-wide unique number

Gruss, Bernhard
 
Das mit dem Agfeo Support wirst du wohl vergessen können. Wenn du sagst, das das mit einer FritzBox schon funktionierte, kann es gut Möglich sein, das irgendwo ein Firmware-Bug in der Agfeo steckt.
Ich kann mich erinnern, dass ich mit diesem Softwarestand auch Probleme hatte, bei ECT an einem ISDN Tel (Ascom Eurit 30).

Da es keine neuere Firmware für deine Anlage gibt (zumindest nicht mit deinem jetzigen CPU Board), brauchst du da keine Lösung von Agfeo erwarten.

Evtl. kann Armin hier noch was dazu sagen, er kennt die CAPI besser als ich.
Ich schicke ihm, wenn ich heute daheim bin, einen Link auf diesen Thread, er schaut nur unregelmäßig hier rein.

Mario
 
Agfeo hat in einem früheren Briefwechsel von einer Version 3.7j geschrieben. Allerdings wird auf deren Server keine Firmware (mehr) für diese Anlage zum download angeboten. Erhältlich nurnoch über den autorisierten Fachhändler.

Ich habe im Netz die Datei AS_37j_d.exe (376320 Byte) gefunden aber ich weiß nicht ob es das Orginal ist oder ein übler Scherz. Falls etwas schief geht hätte ich keine ältere Version zum Wiederherstellen.

Wäre nett, wenn Armin einen Blick darauf werfen würde. Ich bin aber die nächsten zwei Tage unterwegs und kann frühestens Freitag wieder reagieren.

Gruss, Bernhard
 
Hast recht, es gab' noch eine j.

Agfeo hatte die Firmware früher auch nur an Händler gegeben.
Da ich bei einem Arbeite habe ich auch Zugangsdaten ;-).

Die Dateigrösse passt. Hab' die exe noch bei mir gefunden.
Bei Interesse kann ich dir diese Datei mal zumailen.

Auf Arbeit könnte ich evtl. auch noch die 3.6i finden.

Mario
 
Diese Zeile ist schonmal falsch:
exten => s,4,capicommand(hold|${MYHOLDVAR})
denn bei hold, muss der Variablenname uebergeben werden, und nicht der Inhalt.

Anyway, ich denke ich habe einem Fehler im Retrieve Code von chan-capi gefunden. Kannst Du bitte mal die trunk Version (rev. 534) testen?

Ein capicommand(retrieve) sollte nach dem Dial() nicht notwendig sein, denn wenn der Dial() abbricht, signalisiert Asterisk ein 'STOP' und hier wird automatisch ein retrieve gemacht. Dies koennte aber störend sein. Ich habe das nie wirklich im Einsatz gehabt, d.h. wenn erforderlich könnte ich diesen Automatismus auch rausnehmen.

Armin
 
:-) Danke für das Angebot mit der Firmware. Ich denke ich riskiere es mit dem Update. Schlimmsten Falls komme ich auf das Angebot mit der 3.6l zurück...

:-) Danke auch für die Rev534 und die Hinweise. Ich habe retrieve entsprechend entfernt. Wobei ich nicht ganz verstehe: Bei Nichtabheben benötige ich kein retrieve, bei Besetzt benötige ich es (nach meiner Erfahrung). Im Dialplan sieht das irgendwie uneinheitlich aus.
Leider hat Rev534 noch nicht zum Durchbruch verholfen: Der Anrufer wird immernoch aus der Leitung geworfen. Vielleicht bringt das Firmwareupdate der TK-Anlage etwas.

Bernhard

p.s.: Habe eben das Update auf 3.7j durchgeführt. Hat problemlos funktioniert, aber keine Änderung bezüglich ECT bewirkt.
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

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