capicommand(ect) funktioniert nur einmal pro msn bzw. extension

liberavia

Neuer User
Mitglied seit
12 Mai 2008
Beiträge
92
Punkte für Reaktionen
0
Punkte
0
Nach Stundenlangem Probieren hoffe ich durch euch auf eine Lösung.

Anlagenaufbau:

Ich hänge mit meinem Asterisk (1.4.10 mit Ubuntu Server 7.10) über eine PCI-Fritz-Card an einer Integral 5 TK-Anlage (ISDN). Es funktioniert alles ziemlich Reibungslos.

I5+Asterisk.png


Der Asterisk stellt ein Sprachmenü bereit welches über die MSN 15 und 16 (erstmal beide) von der TK-Anlage zu erreichen ist. Asterisk vermittelt dann je nach Auswahl wieder auf die passende MSN der TK-Anlage. Dabei werden beim klassischen Rufaufbau mittels Dial 2 B-Kanäle belegt.

Um dieses zu Umgehen hat man ja mit der applikation capicommand die Möglichkeit ein hold und anschließend ein Explicit Call Transfer (ECT) über ein Makro durchzuführen.

Problem:

Verwende ich die in der README-Datei emfohlene Vorgehensweise, kann ich jede MSN nur einmal anrufen. Verwende ich die andere MSN habe ich danach dasselbe Problem. Nur ein Neustart von Asterisk macht die Leitungen wieder Zugänglich. Es ist für mich derzeit nicht erkennbar, ob Asterisk oder die TK-Anlage das Problem verursacht.

Meine Konfigurationsdateien:

extensions.conf
Code:
[sonstige]

[telefone]


include => capi-in
include => capi-out

;SIP-interne Telefonie
exten => _1[0-3],1,Dial(SIP/${EXTEN},20)
exten => _1[0-3],n,VoiceMail(${EXTEN},u)


; Die Extension 70 stellt eine Callcenter-Warteschleife bereit
exten => 70,1,Answer()
exten => 70,n(Warteschleife),Set(MUSICCLASS()=default)
; exten => 70,n,Set(GLOBAL(CALLERID(rdnis)) = 70)
exten => 70,n,Queue(betreuung,t)
; Je nachdem, welcher Queue-Status zurückgeliefert wird
exten => 70,n,Goto(q-${QUEUESTATUS},1)
; Es folgen die möglichen Verlinkungen
;
; Für den Fall das kein Agent angemeldet ist
exten => q-JOINEMPTY,1,Wait(1) 
exten => q-JOINEMPTY,n,Playback(vm-nobodyavail,noanswer)
exten => q-JOINEMPTY,n,Playback(vm-goodbye, noanswer)
exten => q-JOINEMPTY,n,Hangup()
;
; Für den Fall, dass kein Kanal verfügbar ist
exten => q-CHANUNAVAIL,1,Goto(q-JOINEMPTY,1)
;
; Für den Fall, dass kein Agent erreichbar ist
exten => q-JOINUNAVAIL,1,Goto(q-JOINEMPTY,1)
;
; Für den Fall, dass alle Agenten die Schlange verlassen haben
exten => q-LEAVEEMPTY,1,Goto(q-JOINEMPTY,1)
;
; Für den Fall, dass alle Agenten (auch nicht verfügbare) die Schlange verlassen haben
exten => q-LEAVEUNAVAIL,1,Goto(q-JOINEMPTY,1)
;
; Für den Fall, dass kein Agent antwortet
exten => q-TIMEOUT,1,Goto(q-JOINEMPTY,1)
;
; Für den Fall, dass die Warteschlange voll ist
exten => q-FULL,1,Busy(5)
exten => q-FULL,n,Hangup()

; Die Einloggschleife für die Agenten
exten => 71,1,Answer()
exten => 71,n,AgentLogin()
exten => 71,n,Hangup()

; Agentenanmeldung mit Rückruf
exten => 72,1,AgentCallbackLogin(${CALLERID(num)},s, ${CALLERID(num)}@telefone)

;Zentrale Voicemail-Abfrage
exten => 3000,1,VoiceMailMain(s${CALLERID(num)})
exten => asterisk,1,VoiceMailMain(s${CALLERID(num)})


[B][ivr-ebene0]
exten => 4000,1,Answer()
exten => 4000,2,Background(eingabe)
exten => 4000,3,Background(silence/1)
exten => 4000,4,Goto(4000,2)

; Bei der 1 auf das Callcenter
exten => 1,1,Goto(telefone,70,Warteschleife)

; Bei der 2 auf die 11 der I5
exten => 2,1,capicommand(hold)
exten => 2,2,Dial(CAPI/ISDN1/11,30,M(capiect))
exten => 2,3,Hangup()

exten => i,1,Playback(falscheingabe)
exten => i,2,Goto(4000,2)[/B]


[B][capi-in]
; Eingehende Anrufe über ISDN
exten => 16,1,Goto(ivr-ebene0,4000,1)
exten => 15,1,Goto(ivr-ebene0,4000,1)[/B]

[capi-out]
; Ausgehende Anrufe über ISDN
exten => _0X.,1,Dial(CAPI/ISDN1/${EXTEN:1})

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

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=*    ;allow incoming calls to this list of MSNs/DIDs, * = any
defaultcid=asterisk ;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

Ein Beispielvorgang in verbose 5 und capi:

1. Anruf von TK-Anlage MSN 19 an MSN 16 (Asterisk)
2. Assterisk nimmt Anruf entgegen
3. Goto Sprachmenü
4. Auswahl 2 -> schlate per capicommand auf hold
5. Wähle mit capiesc-makro die MSN 11 der TK-Anlage
6. Abnehmen der MSN 11 -> Gespräch ist vermittelt und läuft im folgenden Weiter
7. Versuch von der MSN 13 wieder die MSN 16 zu wählen (fehlschlag, besetzt)
8. Laufendes Gespräch wird beendet
9. Jeder erneute Versuch die MSN 16 anzuwählen schlägt fehl, bis Asterisk neu gesatrtet wird
10. Anruf von TK-Anlage MSN 19 an MSN 15 (Auch Asterisk) -> funktioniert (erstmal)
11. Der Rest verläuft wie bei MSN 16

Code:
[email protected]:/home/tkadmin# asterisk -rvvvvvc
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 ubuntu-tkserver (pid = 11137)
Verbosity was 0 and is now 5
ubuntu-tkserver*CLI> capi debug
CAPI Debugging Enabled
CONNECT_IND ID=003 #0x1e19 LEN=0033
  Controller/PLCI/NCCI            = 0x101
  CIPValue                        = 0x4
  CalledPartyNumber               = <80>16
  CallingPartyNumber              = <01 80>19
  CalledPartySubaddress           = default
  CallingPartySubaddress          = default
  BC                              = <90 90 a3>
  LLC                             = default
  HLC                             = default
  AdditionalInfo                  = default

    -- CONNECT_IND (PLCI=0x101,DID=16,CID=19,CIP=0x4,CONTROLLER=0x1)
       > ISDN1#02: msn='*' DNID='16' MSN
  == ISDN1#02: setting format alaw - 0x8 (alaw)
  == ISDN1#02: Incoming call '19' -> '16'
    -- ISDN1#02: CAPI/ISDN1#02/16-0: 16 matches in context capi-in
  == Started pbx on channel CAPI/ISDN1#02/16-0
INFO_IND ID=003 #0x1e1a LEN=0017
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x1e
  InfoElement                     = <80 83>

INFO_RESP ID=003 #0x1e1a LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element PI 80 83
       > ISDN1#02: Origination is non ISDN
    -- CAPI queue frame: [ TYPE: Control (4) SUBCLASS: Unknown control '14' (14) ] [ISDN1#02]
INFO_IND ID=003 #0x1e1b LEN=0018
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x70
  InfoElement                     = <80>16

INFO_RESP ID=003 #0x1e1b 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=003 #0x1e1c LEN=0016
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x18
  InfoElement                     = <89>

INFO_RESP ID=003 #0x1e1c LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element CHANNEL IDENTIFICATION 89
       > CAPI devicestate requested for ISDN1#02/16
    -- Executing [[email protected]:1] Goto("CAPI/ISDN1#02/16-0", "ivr-ebene0|4000|1") in new stack
    -- Goto (ivr-ebene0,4000,1)
    -- Executing [[email protected]:1] Answer("CAPI/ISDN1#02/16-0", "") in new stack
  == ISDN1#02: Answering for 16
CONNECT_RESP ID=003 #0x1e19 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>16
  ConnectedSubaddress             = default
  LLC                             = default
  AdditionalInfo                 
   BChannelinformation            = default
   Keypadfacility                 = default
   Useruserdata                   = default
   Facilitydataarray              = default
   SendingComplete                = default

    -- Executing [[email protected]:2] BackGround("CAPI/ISDN1#02/16-0", "eingabe") in new stack
    -- <CAPI/ISDN1#02/16-0> Playing 'eingabe' (language 'de')
[Jun 25 12:41:43] WARNING[11170]: file.c:1078 waitstream_core: Unexpected control subclass '14'
       > CAPI devicestate requested for ISDN1#02/16
CONNECT_ACTIVE_IND ID=003 #0x1e1f LEN=0015
  Controller/PLCI/NCCI            = 0x101
  ConnectedNumber                 = default
  ConnectedSubaddress             = default
  LLC                             = default

CONNECT_ACTIVE_RESP ID=003 #0x1e1f LEN=0012
  Controller/PLCI/NCCI            = 0x101

CONNECT_B3_IND ID=003 #0x1e20 LEN=0013
  Controller/PLCI/NCCI            = 0x10101
  NCPI                            = default

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

CONNECT_B3_ACTIVE_IND ID=003 #0x1e21 LEN=0013
  Controller/PLCI/NCCI            = 0x10101
  NCPI                            = default

CONNECT_B3_ACTIVE_RESP ID=003 #0x1e21 LEN=0012
  Controller/PLCI/NCCI            = 0x10101

  == CDR updated on CAPI/ISDN1#02/16-0
    -- Executing [[email protected]:1] capiCommand("CAPI/ISDN1#02/16-0", "hold") in new stack
    -- capiCommand: 'hold' '(null)'
FACILITY_REQ ID=003 #0x0132 LEN=0018
  Controller/PLCI/NCCI            = 0x101
  FacilitySelector                = 0x3
  FacilityRequestParameter        = <02 00 00>

       > ISDN1#02: sent HOLD for PLCI=0x101
    -- Executing [[email protected]:2] Dial("CAPI/ISDN1#02/16-0", "CAPI/ISDN1/11|30|M(capiect)") in new stack
       > data = ISDN1/11 format=8
       > parsed dialstring: 'ISDN1' 'NULL' '11' ''
       > capi request for interface 'ISDN1'
  == ISDN1#01: setting format alaw - 0x8 (alaw)
       > parsed dialstring: 'ISDN1' 'NULL' '11' ''
  == ISDN1#01: Call CAPI/ISDN1#01/11-1   (pres=0x00, ton=0x01)
CONNECT_REQ ID=003 #0x0133 LEN=0047
  Controller/PLCI/NCCI            = 0x1
  CIPValue                        = 0x4
  CalledPartyNumber               = <80>11
  CallingPartyNumber              = <01 80>19
  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/11
       > CAPI devicestate requested for ISDN1#01/11
FACILITY_CONF ID=003 #0x0132 LEN=0022
  Controller/PLCI/NCCI            = 0x101
  Info                            = 0x0
  FacilitySelector                = 0x3
  FacilityConfirmationParameter   = <02 00 02 00 00>

CONNECT_CONF ID=003 #0x0133 LEN=0014
  Controller/PLCI/NCCI            = 0x201
  Info                            = 0x0

    -- ISDN1#01: received CONNECT_CONF PLCI = 0x201
DISCONNECT_B3_IND ID=003 #0x1f54 LEN=0015
  Controller/PLCI/NCCI            = 0x10101
  Reason_B3                       = 0x3301
  NCPI                            = default

DISCONNECT_B3_RESP ID=003 #0x1f54 LEN=0012
  Controller/PLCI/NCCI            = 0x10101

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

FACILITY_RESP ID=003 #0x1f55 LEN=0020
  Controller/PLCI/NCCI            = 0x101
  FacilitySelector                = 0x3
  FacilityResponseParameters      = <02 00 02 00 00>

    -- ISDN1#02: PLCI=0x101 put onhold
INFO_IND ID=003 #0x1f56 LEN=0015
  Controller/PLCI/NCCI            = 0x201
  InfoNumber                      = 0x8002
  InfoElement                     = default

INFO_RESP ID=003 #0x1f56 LEN=0012
  Controller/PLCI/NCCI            = 0x201

    -- ISDN1#01: info element CALL PROCEEDING
    -- CAPI queue frame: [ TYPE: Control (4) SUBCLASS: Unknown control '15' (15) ] [ISDN1#01]
INFO_IND ID=003 #0x1f57 LEN=0016
  Controller/PLCI/NCCI            = 0x201
  InfoNumber                      = 0x18
  InfoElement                     = <89>

INFO_RESP ID=003 #0x1f57 LEN=0012
  Controller/PLCI/NCCI            = 0x201

    -- ISDN1#01: info element CHANNEL IDENTIFICATION 89
    -- CAPI/ISDN1#01/11-1 is proceeding passing it to CAPI/ISDN1#02/16-0
  == ISDN1#02: Requested PROCEEDING-Indication for CAPI/ISDN1#02/16-0
INFO_IND ID=003 #0x1f58 LEN=0015
  Controller/PLCI/NCCI            = 0x201
  InfoNumber                      = 0x8001
  InfoElement                     = default

INFO_RESP ID=003 #0x1f58 LEN=0012
  Controller/PLCI/NCCI            = 0x201

    -- ISDN1#01: info element ALERTING
    -- CAPI queue frame: [ TYPE: Control (4) SUBCLASS: Unknown control '14' (14) ] [ISDN1#01]
    -- CAPI queue frame: [ TYPE: Control (4) SUBCLASS: Ringing (3) ] [ISDN1#01]
    -- CAPI/ISDN1#01/11-1 is making progress passing it to CAPI/ISDN1#02/16-0
  == ISDN1#02: Requested PROGRESS-Indication for CAPI/ISDN1#02/16-0
    -- CAPI/ISDN1#01/11-1 is ringing
  == ISDN1#02: Requested RINGING-Indication for CAPI/ISDN1#02/16-0
    -- ISDN1#02: attempting ALERT in state 10
       > CAPI devicestate requested for ISDN1#01/11
CONNECT_ACTIVE_IND ID=003 #0x1f59 LEN=0019
  Controller/PLCI/NCCI            = 0x201
  ConnectedNumber                 = <01 80>11
  ConnectedSubaddress             = default
  LLC                             = default

CONNECT_ACTIVE_RESP ID=003 #0x1f59 LEN=0012
  Controller/PLCI/NCCI            = 0x201

CONNECT_B3_REQ ID=003 #0x0134 LEN=0013
  Controller/PLCI/NCCI            = 0x201
  NCPI                            = default

    -- ISDN1#01: sent CONNECT_B3_REQ PLCI=0x201
CONNECT_B3_CONF ID=003 #0x0134 LEN=0014
  Controller/PLCI/NCCI            = 0x10201
  Info                            = 0x0

CONNECT_B3_ACTIVE_IND ID=003 #0x1f5a LEN=0013
  Controller/PLCI/NCCI            = 0x10201
  NCPI                            = default

CONNECT_B3_ACTIVE_RESP ID=003 #0x1f5a LEN=0012
  Controller/PLCI/NCCI            = 0x10201

    -- CAPI queue frame: [ TYPE: Control (4) SUBCLASS: Answer (4) ] [ISDN1#01]
    -- CAPI/ISDN1#01/11-1 answered CAPI/ISDN1#02/16-0
    -- Executing [[email protected]:1] capiCommand("CAPI/ISDN1#01/11-1", "ect") in new stack
    -- capiCommand: 'ect' '(null)'
       > ISDN1#01: using PLCI=0x101 for ECT
DISCONNECT_B3_REQ ID=003 #0x0135 LEN=0013
  Controller/PLCI/NCCI            = 0x10201
  NCPI                            = default

ISDN1#01: wait for DISCONNECT_B3_CONF (0x8481)
       > CAPI devicestate requested for ISDN1#01/11
DISCONNECT_B3_CONF ID=003 #0x0135 LEN=0014
  Controller/PLCI/NCCI            = 0x10201
  Info                            = 0x0

ISDN1#01: found and signal for DISCONNECT_B3_CONF
ISDN1#01: cond signal received for DISCONNECT_B3_CONF
ISDN1#01: wait for b3 down.
DISCONNECT_B3_IND ID=003 #0x1f5b LEN=0015
  Controller/PLCI/NCCI            = 0x10201
  Reason_B3                       = 0x3301
  NCPI                            = default

DISCONNECT_B3_RESP ID=003 #0x1f5b LEN=0012
  Controller/PLCI/NCCI            = 0x10201

ISDN1#01: found and signal for b3 down state.
ISDN1#01: cond signal received for b3 down.
FACILITY_REQ ID=003 #0x0136 LEN=0022
  Controller/PLCI/NCCI            = 0x101
  FacilitySelector                = 0x3
  FacilityRequestParameter        = <06 00 04 01 01 00 00>

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

ISDN1#02: found and signal for FACILITY_CONF
ISDN1#02: cond signal received for FACILITY_CONF
       > ISDN1#01: sent ECT for PLCI=0x101 to PLCI=0x201
  == ISDN1#02: Requested Indication-STOP for CAPI/ISDN1#02/16-0
  == ISDN1#02:ISDN1#01 Requested native bridge for CAPI/ISDN1#02/16-0 and CAPI/ISDN1#01/11-1
INFO_IND ID=003 #0x1f5c LEN=0015
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x8045
  InfoElement                     = default

INFO_RESP ID=003 #0x1f5c LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element DISCONNECT
    -- ISDN1#02: Disconnect ECT call
INFO_IND ID=003 #0x1f5d LEN=0017
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x1e
  InfoElement                     = <81 88>

INFO_RESP ID=003 #0x1f5d LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element PI 81 88
       > ISDN1#02: In-band information available
INFO_IND ID=003 #0x1f5e LEN=0017
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x8
  InfoElement                     = <81 90>

INFO_RESP ID=003 #0x1f5e LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element CAUSE 81 90
INFO_IND ID=003 #0x1f5f LEN=0021
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x1c
  InfoElement                     = <91 a2 03 02 01 c4>

INFO_RESP ID=003 #0x1f5f LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element FACILITY
INFO_IND ID=003 #0x1f60 LEN=0017
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x8
  InfoElement                     = <81 90>

INFO_RESP ID=003 #0x1f60 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1#02: info element CAUSE 81 90
DISCONNECT_IND ID=003 #0x1f61 LEN=0014
  Controller/PLCI/NCCI            = 0x101
  Reason                          = 0x3490

DISCONNECT_RESP ID=003 #0x1f61 LEN=0012
  Controller/PLCI/NCCI            = 0x101

       > ISDN1#02: CAPI INFO 0x3490: Normal call clearing
    -- CAPI queue frame: [ TYPE: Control (4) SUBCLASS: Hangup (1) ] [ISDN1#02]
  == ISDN1#01: CAPI Hangingup for PLCI=0x201 in state 2
    -- ISDN1#01: activehangup ECT call
  == Spawn extension (ivr-ebene0, 2, 2) exited non-zero on 'CAPI/ISDN1#02/16-0'
  == ISDN1#02: CAPI Hangingup for PLCI=0xdead0000 in state 4
  == ISDN1#02: Interface cleanup PLCI=0xdead0000
       > CAPI devicestate requested for ISDN1#01/11
       > CAPI devicestate requested for ISDN1#01/11
       > CAPI devicestate requested for ISDN1#02/16
       > CAPI devicestate requested for ISDN1#02/16

So sehen die Capi-Infos danach aus:

Code:
ubuntu-tkserver*CLI> capi info
Contr1: 2 B channels total, 2 B channels free.
ubuntu-tkserver*CLI> capi show channels
CAPI B-channel information:
Line-Name       NTmode state i/o bproto isdnstate   ton  number
----------------------------------------------------------------
ISDN1#02         no    Disc   -  trans              0x00 ''->''  B3q=160 B3count=2
ISDN1#01         no    discP  O  trans  *PT         0x00 '19'->'11'  B3q=480 B3count=0
ubuntu-tkserver*CLI>

Ich bin mit meinem Latein, derzeit am Ende. Vielleicht sieht ja jemand von euch den Fehler.

Vielen Dank im Voraus

André
 
Zuletzt bearbeitet:

liberavia

Neuer User
Mitglied seit
12 Mai 2008
Beiträge
92
Punkte für Reaktionen
0
Punkte
0
Das Problem ist eigentlich klar:

Asterisk legt einfach nicht auf. Hab das von beiden Seiten eingekreist. Auf den ISDN-Telefonen kann ich sehen, dass der Kanal, sobald das Gespräch per ECT vermittelt wurde, einfach nicht aufgelegt wird.

; Bei der 2 auf die 11 der I5
exten => 2,1,capicommand(hold)
exten => 2,2,Dial(CAPI/ISDN1/11,30,M(capiect))
exten => 2,3,Hangup() <- Hier kommt er nie an!


Die Bestätigung habe ich durch ein paar NoOp()-Anweisungen bekommen, die vor- und nach der Vermittlung ausgegeben werden. Habs zusätzlich mit dem Flag g in der Dial-Anweisung nach dem Makro probiert, leider ohne Erfolg.

Das kann doch echt nicht sein, dass das an so einem popligen Problem scheitert. Hangups nach dem Dial bzw. im Makro sind auch Fehlgeschlagen.


Lass ich Asterisk vor dem ECT auflegen, so wird sauber getrennt und danach (mit dem Nirvana) verbunden.
 
Zuletzt bearbeitet:

armincm

Aktives Mitglied
Mitglied seit
3 Aug 2005
Beiträge
1,006
Punkte für Reaktionen
0
Punkte
36
Es sieht eher so aus, als ob die ISDN Karte (der Treiber) die Verbindung nicht richtig auflöst. Welche Version von chan_capi verwendest Du? Falls es nicht die aktuelle trunk Version ist, teste das bitte mal.

Armin
 

liberavia

Neuer User
Mitglied seit
12 Mai 2008
Beiträge
92
Punkte für Reaktionen
0
Punkte
0
Welche Version von chan_capi verwendest Du?

Version 1.0.1 aus den Paketquellen von ubuntu 7.10.

Es sieht eher so aus, als ob die ISDN Karte (der Treiber) die Verbindung nicht richtig auflöst.

Ich verwende auch hier den AVM-Treiber aus den Quellen von ubuntu 7.10. In Version 8.04 hatte ich bereits Treiberprobleme, die ich auch nicht vollständig mit einem Workarround lösen konnte. Deshalb bin ich auch auf 7.10 ausgewichen, wo in Sachen Capi bisher alles in Butter schien.

Am Montag sitz ich wieder an meiner Anlage und rate mal was ich definitiv zuerst austausche ;) Das wär ja super, wenn sich das über die neue Version auflöst.


Es tut sehr gut Deinen Namen in meinem Beitrag zu lesen.

Zudem bekomme ich am Montag noch ein paar ISDN-Karten (Diva, Longshine mit Cologne und wenn mich nicht täuscht eine sirrix).

Zum Thema "Warum Ubuntu und nich Debian":
Ich habe vor ein Ubuntu zu remastern, welches bereits eine Vorkonfiguration für einen bestimmten Einsatzzweck beinhaltet. Daher (vorerst) diese Linientreue.

Ich werde sehen, dass ich die neueste chan_capi Version installiere.

Danke bis hierhin

André
 

liberavia

Neuer User
Mitglied seit
12 Mai 2008
Beiträge
92
Punkte für Reaktionen
0
Punkte
0
:groesste:

Super, danke!!!!!

Mit dem aktuellen trunk von chan capi hat es geklappt :D Hattest du das gerade behoben oder ab welcher Version kann ich davon ausgehen, dass es so reibungslos funktioniert wie jetzt?

Tja, jetzt bin ich erstmal überglücklich, dass es jetzt so toll funktioniert, denn diese Funktionalität ist für mich essentiell! Ich hoffe das klappt mit der DIVA bzw. einer hfc-karte auch so gut.

Für alle die dies unter ubuntu auch machen wollen und dabei die Asterisk-Verison aus den Paketwuellen verwenden:
- asterisk-dev installieren
- Zusätzlich muss in /usr/include noch die datei asterisk.h hinzugefügt werden Hierzu muss man sich das source-paket von der launchpad Seite ziehen.

Danke für alle die sich mit mir den Kopf zerbrochen haben.

Dieser Thread ist gelöst :cool:
 

armincm

Aktives Mitglied
Mitglied seit
3 Aug 2005
Beiträge
1,006
Punkte für Reaktionen
0
Punkte
36
Mit dem aktuellen trunk von chan capi hat es geklappt :D Hattest du das gerade behoben oder ab welcher Version kann ich davon ausgehen, dass es so reibungslos funktioniert wie jetzt?
Das ist schon einige Zeit drin (also auch schon in 1.1.1).

Armin
 

Zurzeit aktive Besucher

3CX

Statistik des Forums

Themen
238,137
Beiträge
2,107,148
Mitglieder
360,752
Neuestes Mitglied
farlap6

Erhalten Sie 3CX für 1 Jahr kostenlos!

Gehostet, in Ihrer privaten Cloud oder on-Premise! Ganz ohne Haken. Geben Sie Ihren Namen und Ihre E-Mail an und los geht´s:

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.
oder via