chan_misdn mit 1TR6

Tucca

Neuer User
Mitglied seit
14 Jul 2004
Beiträge
174
Punkte für Reaktionen
0
Punkte
0
Abgetrennt von Neues Release chan_capi-cm-0.6 Sollte hier jetzt was drin stehen was nicht zum 1TR6 Thema gehört bitte kurze PN, dann trenne ich das auch noch ab. rollo
================================================

Hallo Armin,

ich habe folgendes Problem mit chan_capi 0.6:
Ich nutze eine AVM B1 mit dem 1TR6-Protokoll.

Leider bekomme ich folgende Fehlermeldung bei einem eingehenden Anruf:
Code:
*CLI> Sep 27 07:54:06 NOTICE[6676]: chan_capi.c:3020 capi_handle_connect_indication: Received a call waiting CONNECT_IND
Sep 27 07:54:06 WARNING[6676]: chan_capi.c:2874 capi_call_deflect: capi deflection requires an argument (destination phone number)

capi.conf:
Code:
;
; CAPI config
;
;

; general section

[general]
nationalprefix=0
internationalprefix=00
rxgain=0.8
txgain=0.8
;ulaw=yes        ;set this, if you live in u-law world instead of a-law

; interface sections ...

[ISDN1]          ;this example interface gets name 'ISDN1' and may be any
                 ;name not starting with 'g' or 'contr'.
;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, ptp should be set in any case
incomingmsn=*    ;allow incoming calls to this list of MSNs/DIDs, * == any
;controller=0    ;ISDN4BSD default
;controller=7    ;ISDN4BSD USB default
controller=1     ;capi controller number to use
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
accountcode=     ;Asterisk accountcode to use in CDRs
context=capi-in  ;context for incoming calls
holdtype=hold    ;when Asterisk puts the call on hold, ISDN HOLD will be used. If
                 ;set to 'local' (default value), no hold is done and Asterisk may
                 ;play MOH.
;immediate=yes   ;immediate start of pbx with extension 's' if no digits were
                 ;received on incoming call (no destination number yet)
;echosquelch=1   ;_VERY_PRIMITIVE_ echo suppression
;echocancel=yes  ;EICON DIVA SERVER (CAPI) echo cancelation
                 ;(possible values: 'no', 'yes', 'force', 'g164', 'g165')
echocancelold=yes;use facility selector 6 instead of correct 8 (necessary for older eicon drivers)
echocancelold=yes;use facility selector 6 instead of correct 8 (necessary for older eicon drivers)
;echotail=64     ;echo cancel tail setting
;bridge=yes      ;native bridging (CAPI line interconnect) if available
;callgroup=1     ;Asterisk call group
;deflect=1234567 ;deflect incoming calls to 1234567 if all B channels are busy
devices=2        ;number of concurrent calls on this controller
                 ;(2 makes sense for single BRI, 30 for PRI)


;[myName]
;;PointToPoint (55512-0)
;isdnmode=ptp
;incomingmsn=*
;controller=2
;devices=30

liegt es an der Capi.conf oder geht das Protokoll mit der neuen chan_capi nicht mehr?
Mit 0.5.4 hat es funktioniert...

Gruß,
Tucca
 
Am Protokoll liegt das nicht. Aus Sicht von CAPI ist das Protokoll darunter egal.
Ist das denn wirklich ein Anruf wo schon zwei Kanaele belegt sind (call waiting)?
Warum deflect versucht wird, obwohl in der capi.conf 'deflect' nicht aktiviert ist, kann ich noch nicht sagen.
Kannst Du mir mal ein capi debug / verbose 5 log zusenden?
Wenn moeglich auch eins mit 0.5.4 zum Vergleich.
In der Config kann ich jedenfalls keinen Fehler sehen.

Armin
 
Der Kanal ist sicher frei, da nur Asterisk an diesem Kabel hängt.

0.5.4 bringt mir:
Code:
  == CONNECT_IND (PLCI=0x101,DID=2,CID=01791234567,CIP=0x10,CONTROLLER=0x1)
Sep 27 10:47:54 ERROR[7623]: chan_capi.c:2324 capi_handle_connect_indication: received a call waiting CONNECT_IND
    -- started pbx on channel (callgroup=0)!
  == Starting CAPI/contr1/2-1 at capi-in,2,1 failed so falling back to exten 's'
    -- Executing Dial("CAPI/contr1/2-1", "IAX2/master:[email protected]/97") in new stack
    -- Called master:[email protected]/97
Sep 27 10:47:54 WARNING[7623]: chan_iax2.c:5553 socket_read: Call rejected by 192.168.2.8: No authority found
    -- Hungup 'IAX2/192.168.2.8:4569/1'
  == No one is available to answer at this time

0.6
Code:
*CLI>     -- CONNECT_IND (PLCI=0x101,DID=2,CID=01791234567,CIP=0x10,CONTROLLER=0x1)
Sep 27 10:53:48 NOTICE[7737]: chan_capi.c:3020 capi_handle_connect_indication: Received a call waiting CONNECT_IND
Sep 27 10:53:48 WARNING[7737]: chan_capi.c:2874 capi_call_deflect: capi deflection requires an argument (destination phone number)

Der IAX-Fehler ist OK.

Oder meinst du eine log-Datei ? Wie kann ich diese bekommen?
 
Auch mit 0.5.4 wird ein call-waiting angezeigt. Keine Ahnung warum die B1 das so signalisiert.
Ich habe im CVS das call-waiting handling etwas modifiziert (Revision 1.101), kannst Du das mal testen?
Ein log mit allen wichtigen Daten bekommst du nach 'set verbose 5' und 'capi debug'.

Armin
 
sehe in der WEB-CVS leider nur die Rev. 100

0.6
Code:
*CLI> CONNECT_IND ID=001 #0x001f LEN=0050
  Controller/PLCI/NCCI            = 0x101
  CIPValue                        = 0x10
  CalledPartyNumber               = <80>2
  CallingPartyNumber              = <00 80>01791234567
  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=0x101,DID=2,CID=01791234567,CIP=0x10,CONTROLLER=0x1)
Sep 27 12:04:43 NOTICE[7873]: chan_capi.c:3020 capi_handle_connect_indication: Received a call waiting CONNECT_IND
       > ISDN1: msn='*' DNID='2' MSN
Sep 27 12:04:43 WARNING[7873]: chan_capi.c:2874 capi_call_deflect: capi deflection requires an argument (destination phone number)
  == ISDN1: Incoming call '01791234567' -> '2'
INFO_IND ID=001 #0x0020 LEN=0017
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x70
  InfoElement                     = <80>2

INFO_RESP ID=001 #0x0020 LEN=0012
  Controller/PLCI/NCCI            = 0x101

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

INFO_RESP ID=001 #0x0021 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1: info element CHANNEL IDENTIFICATION 89
INFO_IND ID=001 #0x0022 LEN=0017
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x70
  InfoElement                     = <80>2

INFO_RESP ID=001 #0x0022 LEN=0012
  Controller/PLCI/NCCI            = 0x101

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

INFO_RESP ID=001 #0x0023 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1: info element CHANNEL IDENTIFICATION 89
INFO_IND ID=001 #0x0024 LEN=0017
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x70
  InfoElement                     = <80>2

INFO_RESP ID=001 #0x0024 LEN=0012
  Controller/PLCI/NCCI            = 0x101

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

INFO_RESP ID=001 #0x0025 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1: info element CHANNEL IDENTIFICATION 89
 
Sourceforge brauch einige Zeit um anonymous cvs zu syncen. In ein paar Stunden solle 1.101 verfuegbar sein.
Da ich kein 1TR6 habe, kann ich das auch nicht testen, aber nach deinem Log sollte es mit der neuen CVS version funktionieren, wenn du in capi.conf 'immediate=yes' setzt.

Es ist aber schon merkwuerdig, dass die B1 (oder 1TR6) bei B-Channelinformation meldet:
"use neither B nor D channel', was eigentlich call-waiting bedeutet.

Armin
 
Code:
[general] 
nationalprefix=0 
internationalprefix=00 
rxgain=0.8 
txgain=0.8 
[ISDN1]          ;this example interface gets name 'ISDN1' and may be any 
isdnmode=msn     ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial) 
incomingmsn=*    ;allow incoming calls to this list of MSNs/DIDs, * == any 
controller=1     ;capi controller number to use 
group=1          ;dialout group 
softdtmf=on      ;enable/disable software dtmf detection, recommended for AVM cards 
relaxdtmf=on     ;in addition to softdtmf, you can use relaxed dtmf detection 
accountcode=     ;Asterisk accountcode to use in CDRs 
context=default  ;context for incoming calls 
holdtype=hold    ;when Asterisk puts the call on hold, ISDN HOLD will be used. If 
echocancelold=yes;use facility selector 6 instead of correct 8 (necessary for older eicon drivers) 
devices=2        ;number of concurrent calls on this controller 
                 ;(2 makes sense for single BRI, 30 for PRI)

extensions.conf
Code:
[outgoing]
include => intern
exten => _X.,1,Dial(CAPI/contr1/${EXTEN}/b)

Wenn ich nun rausgehend telefonieren will, klingelt das ISDN Telefon einmal und hört dann auf. In der Console kommt sofort die Meldung
Code:
Called contr1/3348
  == ISDN1: CAPI Hangingup
  == No one is available to answer at this time
    -- Hungup 'IAX2/3090@3090/5'

Was mache ich falsch?
 
... Du hast vergessen die Klingeldauer anzugeben.

Dial (Capi/contr1/${EXTEN}/b,120,tT)

120 = 120 Sek. oder leer lassen für unbegrenzt
 
Auch das bringt leider keinen Erfolg:-(

Code:
Accepting AUTHENTICATED call from 149.204.132.222, requested format = 256, actual format = 256
    -- Executing Dial("IAX2/3090@3090/2", "CAPI/contr1/3348/b|120|tT") in new stack
    -- Called contr1/3348/b
  == ISDN1: CAPI Hangingup
  == No one is available to answer at this time
    -- Hungup 'IAX2/3090@3090/2'
Das ganze mit der 3.5'er Chan_Capi lief soweit...

Achja, nun klingelt das Telefon dafür ständig weiter, aber die Meldung bleibt wie im vorherigen Fall. Wenn ich nun abnehme habe ich aber keine Verbindung. Und es kommt eine weitere Ausgabe im CLI, also nochmal alles zusammen:
Code:
 Accepting AUTHENTICATED call from 149.204.132.222, requested format = 256, actual format = 256
    -- Executing Dial("IAX2/3090@3090/5", "CAPI/contr1/3348/b|120|tT") in new stack
    -- Called contr1/3348/b
  == ISDN1: CAPI Hangingup
  == No one is available to answer at this time

Dann nehme ich das ISDN Telefon ab und es kommt:
Code:
2005-09-27 16:42:34 WARNING[6770]: pbx.c:1948 ast_pbx_run: Timeout, but no rule 't' in context 'outgoing'
    -- Hungup 'IAX2/3090@3090/5'
 
@sdh: schalte doch bitte mal auf 'set verbose 5' und 'capi debug', dann kann man vieleicht mehr sehen.

Armin
 
Hier das detailiertere Protokoll:

Also es klingelt das ISDN Telefon und beim abheben kommt die Meldung "No One is available..." und der Rest.

Code:
*CLI> set verbose 5
Verbosity was 7 and is now 5
*CLI> capi debug
CAPI Debugging Enabled
    -- Accepting AUTHENTICATED call from 149.204.132.222, requested format = 256, actual format = 256
    -- Executing Dial("IAX2/3090@3090/1", "CAPI/contr1/3348/b|120|tT") in new stack
       > data = contr1/3348/b
       > parsed dialstring: 'contr1' '3348' 'b'
       > capi request controller = 1
       > parsed dialstring: 'contr1' '3348' 'b'
  == ISDN1: Call CAPI/ISDN1/3348-b with B3  (pres=0x00, ton=0x00)
CONNECT_REQ ID=002 #0x000e LEN=0068
  Controller/PLCI/NCCI            = 0x1
  CIPValue                        = 0x10
  CalledPartyNumber               = <80>3348
  CallingPartyNumber              = <00 80 22>Sascha Hampe <3c>3090<3e 22>
  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 contr1/3348/b
CONNECT_CONF ID=002 #0x000e LEN=0014
  Controller/PLCI/NCCI            = 0x101
  Info                            = 0x0

    -- ISDN1: received CONNECT_CONF PLCI = 0x101
INFO_IND ID=002 #0xe330 LEN=0018
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x8
  InfoElement                     = <81 e4>l

INFO_RESP ID=002 #0xe330 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN1: info element CAUSE 81 e4
DISCONNECT_IND ID=002 #0xe331 LEN=0014
  Controller/PLCI/NCCI            = 0x101
  Reason                          = 0x0

DISCONNECT_RESP ID=002 #0xe331 LEN=0012
  Controller/PLCI/NCCI            = 0x101

  == ISDN1: CAPI Hangingup
  == ISDN1: Interface cleanup PLCI=0x101
  == No one is available to answer at this time
2005-09-27 17:40:19 NOTICE[6770]: chan_iax2.c:2447 iax2_read: I should never be called!
2005-09-27 17:40:19 WARNING[6770]: pbx.c:1948 ast_pbx_run: Timeout, but no rule 't' in context 'outgoing'
    -- Hungup 'IAX2/3090@3090/1'

Eingehende Gespräche funktionieren ohne Probleme...
 
Code:
CallingPartyNumber              = <00 80 22>Sascha Hampe <3c>3090<3e 22>
Dies ist wohl das Problem. Deine Callerid beinhaltet nicht nur 'number', sondern auch 'name'
und das wird wohl von der switch zurueckgewiesen.
Schau mal in deiner extensions.conf nach...

Armin
 
Wunderbar, Danke... das war es:)

exten => _X.,1,SetCallerID(${CALLERIDNUM})

als ersten Step und es funktioniert.

Danke & Gruß Sascha
 
@armin:

die Rev. 101 habe ich nun eingespielt. Beim compilieren kommt folgendes:

Code:
linux:/home/marco/chan_capi-cm-0.6 # make clean
rm -f config.h
rm -f *.so *.o
linux:/home/marco/chan_capi-cm-0.6 # make
./create_config.sh "/usr/include"
Checking Asterisk version...
 * no 'struct ast_channel_tech', using old pvt
 * no 'ast_bridged_channel'
 * no 'ast_bridge_result'
 * ast_dsp_process() without 'needlock'
 * no 'struct ast_callerid'
 * found 'struct timeval delivery'
 * no 'transfercapability'
 * no 'ast_config_load'
 * no 'AST_CONTROL_HOLD'
 * no 'struct ast_custom_function'
config.h complete.
gcc -pipe -fPIC -Wall -Wmissing-prototypes -Wmissing-declarations -g  -I/usr/include -D_REENTRANT -D_GNU_SOURCE -O6 -march=i686  -DASTERISKVERSION=\"\" -Wno-missing-prototypes -Wno-missing-declarations -DCRYPTO   -c -o chan_capi.o chan_capi.c
chan_capi.c: In function `start_pbx_on_match':
chan_capi.c:2023: error: `CAPI_ISDN_STATE_PBX' undeclared (first use in this function)
chan_capi.c:2023: error: (Each undeclared identifier is reported only once
chan_capi.c:2023: error: for each function it appears in.)
make: *** [chan_capi.o] Error 1
 
@Tucca: Du hast nur chan_capi.c erneuert ! Bitte mache ein update von allen Dateien.

Armin
 
sorry - dumme frage aber wie mache ich mit Sourceforge ein update?

cvs checkout ?

Er sagt was von ich soll die "-d" Option benutzen...
 
Wie der anonymous CVS Zugang funktioniert, steht auf sourceforge. Wenn Du im chan_capi project auf CVS clickst bekommst Du eine Beschreibung.

Armin
 
Hallo mal wieder,

nachdem ja gestern alles lief soweit und heute eigentlich auch, nun diese Fehlermeldungen:

Code:
pbx-han*CLI>
2005-09-28 18:16:36 ERROR[10167]: chan_capi.c:205 _capi_put_cmsg: CAPI error sending DATA_B3_REQ ID=002 #0x44d5 LEN=0030
  Controller/PLCI/NCCI            = 0x10201
  Data32                          = 0x40c01e00
  DataLength                      = 0xa0
  DataHandle                      = 0x42ad
  Flags                           = 0x0
  Data64                          = 0x0
 (NCCI=0x10201) (error=0x1103)
 
error 0x1103 bedeutet 'queue full' und sollte niemals nie passieren.
Leider fehlt der komplette Zusammenhang, und ich kann nichts weiter dazu sagen.

Armin
 
Ok, Queue Full, also z.B. wenn zwei Capikanäle belegt sind und noch nen dritter Versucht wird? Das könnt ich mir dann Vorstellen.
Ansonsten zum Zusammenhang.

Ich habe hier einen Asteriskserver, der ist mit einer AVM Karte an unsere Hausinterne Telefonanlage angeschlossen. Dem internen S0 wurden mehrere Durchwahlen zugewiesen.

Außerdem kommen per IAX2 bzw. SIP div. PCs und Sip/IAX Desktoptelefone auf diesen Server an.

Das ganze soll eigentlich im ersten Schritt nur ermöglichen, das Kollegen die im Ausland sind, per Internet/Intranet div. Mitarbeiter hier im Haus erreichen können. Und umgekehrt. Das funktioniert soweit ganz gut, nur das eben nach einiger Zeit der besagte Fehler gemeldet wird und (lt. den Nutzern) die Gespräche sehr abgehackt werden.

Ist das der benötigte Hintergrund? Sorry der etwas unhöflichen vorhergehenden Frageweise.

Gruß
Sascha
 
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.