Capi und Durchwahl am Anlagenanschluß (PtP)

floama

Neuer User
Mitglied seit
24 Jan 2007
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich kämpfe seit geraumer Zeit mit folgendem Problem: Erreichen von Durchwahlnummern am Anlagenanschluß von nicht blockwahlfähigen Telefonen.

Das Thema wurde hier schon öfters diskutiert, nur leider konnte ich dadurch mein Problem nicht lösen.
Mein Fehler liegt wohl eher in der Konfiguration der Diva Karte bzw. des capi Treibers.

Meine Konfig sieht folgendermaßen aus:

Trixbox ce 2.6.2
Eicon Diva 4BRI
Diva4Linux 9.0-108-38
CAPI mit chan_capi 1.1.2
Anlagenanschluß mit Rufnummernblock 0 - 59 und drei NTBA's

Als einstellige Durchwahl gibt es nur die 0 für die Zentrale. Die Nummern der restlichen Extensions sind alle zweistellig. Die Kopfnummer ist fünfstellig.
Wenn man nun von einem analogen Telefon aus eine der zweistelligen Durchwahlen anwählt, dann bekommt man eine Ansagen, daß die Nummer nicht vergeben ist.
Zuerst dachte ich, es wär ein Fehler im Dialplan, aber wenn ich mir die Logs anschaue, dann sehe ich, daß die vollständige Nummer erst garnicht bis in den Dialplan kommt. Es wird vom CAPI nur die erste Stelle der Durchwahl übermittelt.

Hier ein Beispiel auf die Nebenstelle 33:

Code:
 == ISDN3#02: Incoming call '0123456789' -> '123453'
    -- ISDN3#02: Updated channel name: CAPI/ISDN3#02/123453-5f
    -- Executing [123453@from-pstn:1] Set("CAPI/ISDN3#02/123453-5f", "__FROM_DID=123453") in new stack
    -- Executing [123453@from-pstn:2] NoOp("CAPI/ISDN3#02/123453-5f", "Received an unknown call with DID set to 123453") in new stack
    -- Executing [123453@from-pstn:3] Goto("CAPI/ISDN3#02/123453-5f", "s|a2") in new stack
    -- Goto (from-pstn,s,2)
    -- Executing [s@from-pstn:2] Answer("CAPI/ISDN3#02/123453-5f", "") in new stack
  == ISDN3#02: Answering for 123453
    -- Executing [s@from-pstn:3] Wait("CAPI/ISDN3#02/123453-5f", "2") in new stack
    -- Executing [s@from-pstn:4] Playback("CAPI/ISDN3#02/123453-5f", "ss-noservice") in new stack
    -- <CAPI/ISDN3#02/123453-5f> Playing 'ss-noservice' (language 'de')
    -- Executing [s@from-pstn:5] SayAlpha("CAPI/ISDN3#02/123453-5f", "123453") in new stack
    -- <CAPI/ISDN3#02/123453-5f> Playing 'digits/1' (language 'de')
    -- <CAPI/ISDN3#02/123453-5f> Playing 'digits/2' (language 'de')
    -- <CAPI/ISDN3#02/123453-5f> Playing 'digits/3' (language 'de')
    -- <CAPI/ISDN3#02/123453-5f> Playing 'digits/4' (language 'de')
    -- <CAPI/ISDN3#02/123453-5f> Playing 'digits/5' (language 'de')
    -- <CAPI/ISDN3#02/123453-5f> Playing 'digits/3' (language 'de')
    -- Executing [s@from-pstn:6] Hangup("CAPI/ISDN3#02/123453-5f", "") in new stack
  == Spawn extension (from-pstn, s, 6) exited non-zero on 'CAPI/ISDN3#02/123453-5f'
    -- Executing [h@from-pstn:1] Hangup("CAPI/ISDN3#02/123453-5f", "") in new stack
  == Spawn extension (from-pstn, h, 1) exited non-zero on 'CAPI/ISDN3#02/123453-5f'
  == ISDN3#02: CAPI Hangingup for PLCI=0xc03 in state 2
       > ISDN3#02: CAPI INFO 0x3490: Normal call clearing

Wenn ich versuche das Problem über "TIMEOUT" und "WaitExten" zu lösen, dann sieht der Call so aus (hier wird die NS 59 angerufen):

Code:
 == ISDN2#02: Incoming call '0123456789' -> '123455'
 -- ISDN2#02: Updated channel name: CAPI/ISDN2#02/123455-5a
 -- Executing [123455@from-pstn:1] Set("CAPI/ISDN2#02/418055-5a", "TIMEOUT(digit)=2") in new stack
 -- Digit timeout set to 2
 -- Executing [123455@from-pstn:2] WaitExten("CAPI/ISDN2#02/418055-5a", "5") in new stack
 -- ISDN2#02: Updated channel name: CAPI/ISDN2#02/1234559-5b
 == CDR updated on CAPI/ISDN2#02/1234559-5b
 -- Executing [9@from-pstn:1] Set("CAPI/ISDN2#02/1234559-5b", "TIMEOUT(digit)=2") in new stack
 -- Digit timeout set to 2
 -- Executing [9@from-pstn:2] WaitExten("CAPI/ISDN2#02/1234559-5b", "5") in new stack
 -- Timeout on CAPI/ISDN2#02/1234559-5b, continuing...
 -- Executing [9@from-pstn:3] Set("CAPI/ISDN2#02/1234559-5b", "CALLER=00712771577") in new stack
 -- Executing [9@from-pstn:4] SetCallerID("CAPI/ISDN2#02/1234559-5b", "00712771577") in new stack
 == Auto fallthrough, channel 'CAPI/ISDN2#02/1234559-5b' status is 'UNKNOWN'
 -- Executing [h@from-pstn:1] SetPI/ISDN2#02/1234559-5b", "TIMEOUT(digit)=2") in new stack
 -- Digit timeout set to 2
 -- Executing [h@from-pstn:2] WaitExten("CAPI/ISDN2#02/1234559-5b", "5") in new stack
 == Spawn extension (from-pstn, h, 2) exited non-zero on 'CAPI/ISDN2#02/1234559-5b'
 == ISDN2#02: CAPI Hangingup for PLCI=0x802 in state 7
        > ISDN2#02: CAPI INFO 0x3490: Normal call clearing

Meine capi.conf sieht so aus:

Code:
;
; CAPI config
;
;

; general section

[general]
nationalprefix=0
internationalprefix=00
rxgain=0.8
txgain=0.8
language=de      ;set default language
;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=DID     ;'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=*     ;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 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=from-pstn  ;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   ;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
                 ;(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
;bridge=yes      ;native bridging (CAPI line interconnect) if available
;callgroup=1     ;Asterisk call group
;language=de     ;set language for this device (overwrites default language)
devices=2        ;number of concurrent calls on this controller
                 ;(2 makes sense for single BRI, 30 for PRI)


[ISDN2]          ;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=DID     ;'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=*  ;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=2    ;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=from-pstn  ;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   ;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
                 ;(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
;bridge=yes      ;native bridging (CAPI line interconnect) if available
;callgroup=1     ;Asterisk call group
;language=de     ;set language for this device (overwrites default language)
devices=2        ;number of concurrent calls on this controller
                 ;(2 makes sense for single BRI, 30 for PRI)


[ISDN3]          ;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=DID     ;'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=*  ;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=3     ;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=from-pstn  ;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   ;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
                 ;(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
;bridge=yes      ;native bridging (CAPI line interconnect) if available
;callgroup=1     ;Asterisk call group
;language=de     ;set language for this device (overwrites default language)
devices=2        ;number of concurrent calls on this controller
                 ;(2 makes sense for single BRI, 30 for PRI)


[ISDN4]          ;this example interface gets name 'ISDN1' and may be any
                 ;name not starting with 'g' or 'contr'.
ntmode=no       ;if isdn card operates in nt mode, set this to yes
isdnmode=DID
                 ;when using NT-mode, 'DID' should be set in any case
incomingmsn=*    ;allow incoming calls to this list of MSNs/DIDs, * = any
;defaultcid=*  ;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=4     ;capi controller number to use
group=2          ;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
;accountcode=     ;Asterisk accountcode to use in CDRs
context=from-pstn  ;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   ;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
                 ;(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
;bridge=yes      ;native bridging (CAPI line interconnect) if available
;callgroup=1     ;Asterisk call group
;language=de     ;set language for this device (overwrites default language)
devices=2        ;number of concurrent calls on this controlle
                 ;(2 makes sense for single BRI, 30 for PRI)

Und hier der entsprechende Eintag in der extension_custom.conf:

Code:
[from-pstn-custom]
exten => _.,1,Set(TIMEOUT(digit)=2)
exten => _.,2,WaitExten(5)
exten => _.,3,Set(CALLER=0${CALLERID(num)})
exten => _.,4,SetCallerID(${CALLER})

Hat jemand eine Idee, wie ich den CAPI dazu bringe die Nummern einfach durch zu reichen und die Asterisk davon abhalte den Call gleich anzunehmen?

Gruß
Flo
 
Du solltest dein Dialplan auch so schreiben, dass nur die entsprechenden Nummernlängen akzeptiert werden. CAPI schickt die Ziffern, so wie sie ankommen, zu Asterisk. Wenn du nun '_.' benutzt, heisst das ja, dass alles mit jeder Länge akzeptiert werden soll. In deinem Fall solltest du
exten => 123450,1,....
und
exten => _12345XX,1,...
machen, wobei '12345' deine Kopfnummer ist.

Armin
 
Ja, so weit war ich auch schon. Nur dann habe ich das Problem, daß mein Dialplan nicht greift, weil ja eine siebenstellige Nummer erwartet wird, die Asterisk die Nummer aber nach sechs Stellen schon annimmt. Das läuft dann in den Context "ext-did-catchall" in der extension_additional.conf und der Anrufer erhält eine Ansage, daß die Nummer nicht vergeben ist.

Kann es sein, daß das Problem auch ein wenig an der Trixbox und ihrer vorgegebenen Struktur liegt?
Wie kriege ich das Ding dazu, auf die letzte Ziffer zu warten und diese dann auch zu verwenden?

Gruß
Flo
 
Wenn Trixbox hier noch weitere Regeln hat um direkt den Anruf anzunehmen, ist das Fatal. Im ISDN Eingangscontext sollte schon klar sein, was/wie angenommen wird. Hier einfach 'alles' direkt zu akzeptieren ist von Trixbox ganz klar falsch. Da ich Trixbox aber nicht wirklich kenne, kann ich nicht mehr dazu sagen.

Armin
 
Hallo,

hab das Problem jetzt gelöst!

Es ist wirklich ein hausgemachtes Problem der Trixbox. Wenn man die Standard Konfig lässt, hat man in der capi.conf für eingehende Anrufe "context=from-pstn" stehen. Damit klappt das ganze ja auch. Bis eben das Blockwahl Thema...

In der extension.conf ist im Context "from-pstn" unterandern folgendes eingetragen:

include => ext-did-catchall

Dieser Include greift sich alles, was nicht irgendwo anders matcht. D.h. da es keine einstellige Druchwahl - außer der 0 - gibt, landet der Anruf sofort in diesem Context. Die nachgelieferte Ziffer interessiert die Asterisk dann nicht mehr.

Ich habe jetzt in der capi.conf den Context auf "from-pstn-custom" geändert und obigen Include in der extensions_custom.conf einfach weggelassen.

Gruß
Flo
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,109
Beiträge
2,246,275
Mitglieder
373,591
Neuestes Mitglied
Andii11
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.