chan_capi und 2 B-Kanäle gleichzeitig -> geht nicht

hahni

Neuer User
Mitglied seit
26 Mai 2007
Beiträge
52
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen!

Ich habe ein Problem mit meinem Asterisk, ich vermute es passiert dann, wenn ich 2 Kanäle gleichzeitig nutzen will.

Zum Szenario: Ich möchte mir über chan_capi und * einen Anrufer auf eine andere Nummer weiterleiten (ohne dafür das Capi-eigene-Modul zu benutzen). Über B-Kanal 1 (MSN: 301) kommt der Anrufer von extern, über B-Kanal 2 (MSN: 402) soll er wieder rausgehen. Und hier fängt das Problem an. Über einen Kanal von IAX nach CAPI funktioniert wunderbar. Ein Defekt an der ISDN-Karte schließe ich aus, habe die Karte bereits ausgetauscht. Ich kopiere mal, was da so passiert, sobald jemand anruft.

Code:
  == ISDN1#02: Incoming call '00160******' -> '301'
    -- Executing Dial("CAPI/ISDN1#02/301-3", "CAPI/g1/402:00175******") in new stack
    -- Called g1/402:00175******
    -- CAPI/ISDN1#01/00175******-4 is making progress passing it to CAPI/ISDN1#02/301-3
    -- CAPI/ISDN1#01/00175******-4 is proceeding passing it to CAPI/ISDN1#02/301-3
  == ISDN1#01: CAPI Hangingup for PLCI=0x201 in state 5
  == Spawn extension (isdn, 301, 1) exited non-zero on 'CAPI/ISDN1#02/301-3'
  == ISDN1#02: CAPI Hangingup for PLCI=0xdead0000 in state 4
       > ISDN1#01: CAPI INFO 0x3490: Normal call clearing

Im Glücksfall klingelt das Handy genau 1x und dann kommt schon das Hangup.

Das DIAL-Kommando:

Code:
[isdn]
exten => 301,1,Dial(CAPI/g1/402:00175*******)
exten => 301,2,Hangup

Meine /etc/asterisk/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=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=off     ;enable/disable software dtmf detection, recommended for AVM cards
relaxdtmf=off    ;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=isdn     ;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=on         ;enable use of Q.SIG extensions.

Ich hoffe ihr könnt mir weiterhelfen. Ganz vielen lieben Dank schon im Voraus!

Hahni
 
Du musst mindestens ein "Ringing" vor dein Dial einfügen - sonst greift ein Timeout (Keine Antwort - kein Endgerät fühlt sich zuständig) und der eingehende Anruf wird abgebrochen, bevor das Handy klingelt.
 
Hallo und Danke für einen so schnellen Lösungsversuch!

Ich habe mich wohl etwas falsch ausgedrückt: Der eingehende Channel klingelt weiter, der wird nicht aufgelegt. Der Ausgehende Channel Richtung Handy klingelt nur 1x kurz und dann wird sofort automatisch vom * aufgelegt.

Wenn ich ein Ringing vor das DIAL setze, dann "geht" der Asterisk doch aber ran und spielt den Klingelton, auch wenn ich das Ziel-Handy ausgeschaltet habe bzw. ohne dass derjenige überhaupt eine Chance hat mich zu erreichen, oder nicht? Ich möchte gerne eine Lösung (damals mit * 1.0.9 und chan_capi 0.3.5 ging das zumindest), bei der die Anrufer erst zusammengeschaltet werden, sobald ich am Ziel-Handy abhebe. Vorher sollen für beide Parteien keine Kosten entstehen.

Wie kann ich denn den Timeout verlängern?

Vielleicht gibt es da ja eine Lösung?!

Grüße und vielen Dank

Hahni
 
Zuletzt bearbeitet:
Bei Ringing wird kein Ruf angenommen - nur signalisiert, dass es klingelt - sonst kommt "No Answer".
Den Timeout kanst du nicht ändern, sofern du keinen Zugriff auf die Software deiner Vermittlungsstelle hast - das ist im ISDN Standard festgelegt.

Wenn das dann immer noch nicht geht, dann mach mal ein "set verbose 5" und "capi debug" und poste den log.
Dort kann man wesentlich besser sehen, was passiert - alles weitere ist nur raten.

Mario
 
Vielen lieben Dank!

Das hat das Problem gelöst.
 
Kostenlos!

Statistik des Forums

Themen
248,447
Beiträge
2,291,616
Mitglieder
377,863
Neuestes Mitglied
chauf