chan_capi vs. chan_capi_cm

Hupe

Aktives Mitglied
Mitglied seit
8 Apr 2004
Beiträge
2,586
Punkte für Reaktionen
0
Punkte
0
Im Moment sind zwei Versionen von chan_capi im Umlauf:
chan_capi von Junghanns.net (das ist in vielen fertigen Linux-Paketen der Capi-Channel-Driver) und
chan_capi_cm, das man bei SourceForge erhält, und das eine Weiterentwicklung von chan_capi von Junghanns ist.
Obwohl das (neue) chan_capi_cm auf dem alten von Junghanns aufbaut, hat sich schon so einiges geändert. So werden z.B. mittlerweile CAPI-Karten mit onboard DSP unterstützt.

Wenn Ihr das chan_capi von Junghanns.net nutzt:

So könnte eine capi.conf aussehen (Beispiel von Junghanns.net):
Code:
;
; CAPI config
;
;
[general]
nationalprefix=0
internationalprefix=00
rxgain=0.8
txgain=0.8

[interfaces]

msn=50
incomingmsn=*
controller=1
softdtmf=1
accountcode=
context=demo
;echosquelch=1
;echocancel=yes
;echotail=64
;callgroup=1
;deflect=12345678
devices=2


;PointToPoint (55512-0)
;for outgoing calls use example 5551212
;and in dialplan you can use callerid like
;exten => _0XXX.,1,StripMSD,1
;exten => _XXX.,2,Dial,CAPI/55512${CALLERIDNUM}:bBYEXTENSION
;============================================================
;mode=immediate
;isdnmode=ptp
;msn=55512
;controller=2
;devices=30

Zu beachten ist, dass Ihr in der capi.conf alles MSNs, die Ihr für ausgehende gespräche nutzen wollt, angeben müsst (durch Kommans getrennt).

Wenn Ihr nun einen Nummer wählen wollt, so sieht der Dial-Befehl (z.B.) so aus:

exten => s,1,Dial(CAPI/50:${EXTEN},30,r)

50 ist die (wie im obigen Beispiel der capi.conf) MSN der ISDN-Karte im Asterisk-Server. Diese MSN wird durch einen Doppelpunkt von der zu wählenden Nummer getrennt. Wollt Ihr die MSN der ISDN-Karte nicht mit übertragen, so setzt man vor die MSN ein "@":

exten => s,1,Dial(CAPI/@50:${EXTEN},30,r)

Wollt Ihr EarlyB3 nutzen, so setzt Ihr vor die zu wählende Nummer ein b ("b" immer, "B" on success):

exten => s,1,Dial(CAPI/50:b${EXTEN},30,r)

Wenn Ihr chan_capi_cm nutzt (stand 0.5.4):

So sieht die capi.conf so aus (Beispiel aus dem chan_capi_cm-Paket):

Code:
;
; CAPI config
;
;
[general]
nationalprefix=0
internationalprefix=00
rxgain=0.8
txgain=0.8

[interfaces]

; mode: ptmp (point-to-multipoint) or ptp (point-to-point)
isdnmode=ptmp
; allow incoming calls to this list of MSNs, * == any
incomingmsn=*
; capi controller number
controller=1
; dialout group
group=1
; enable/disable software dtmf detection, recommended for AVM cards
softdtmf=1
; accountcode to use in CDRs
accountcode=
; context for incoming calls
context=capi-in
; _VERY_PRIMITIVE_ echo suppression
;echosquelch=1
; EICON DIVA SERVER echo cancelation
;echocancel=yes
;echotail=64
; call group
;callgroup=1
; deflect incoming calls to 12345678 if all B channels are busy
;deflect=12345678
; number of concurrent calls on this controller (2 makes sense for single BRI)
devices => 2


;PointToPoint (55512-0)
;isdnmode=ptp
;msn=55512
;controller=2
;devices => 30
Zu beachten ist, dass hier nurnoch die MSNs angegeben werden, auf die die ISDN-Karte bei eingehenden Anrufen reagieren soll (* für alle). Die MSN der ISDN-Karte für das ausgehende Gespräch wird nun vor dem Wählen in der extensions.conf definiert:

exten => _X.,1,SetCIDNum(50)
exten => _X.,2,Dial(CAPI/contr1/${EXTEN})

oder bei neuerne Asterisk-Versionen

exten => _X.,1,Set(CALLERID(number)=50)
exten => _X.,2,Dial(CAPI/contr1/${EXTEN})

"contr1" ist die in der capi.conf definierte Nummer des Capi-Controllers. Es kann aber auch die Nummer der dialout-Gruppe verwendet werden:

exten => _X.,1,Set(CALLERID(number)=50)
exten => _X.,2,Dial(CAPI/g1/${EXTEN})

Wenn Ihr Eure Rufnummer unterdrücken wollt, so müsst Ihr vor dem Wählen den Befehl: SetCallerPres(prohib_not_screened) benutzen:

exten => _X.,1,Set(CALLERID(number)=50)
exten => _X.,2,SetCallerPres(prohib_not_screened)
exten => _X.,3,Dial(CAPI/contr1/${EXTEN})


Wollt Ihr EarlyB3 nutzen, so wird es durch ein B vor der zu wählenden Nummer erreicht ("b" immer, "B" on success):


exten => _X.,1,Set(CALLERID(number)=50)
exten => _X.,2,Dial(CAPI/contr1/b${EXTEN})


Wenn Ihr also Probleme beim Wählen mit chan_capi habt, vergewissert Euch erst einmal, dass Ihr zu Eurer Version von chan_capi die richtige Syntax für den Dial-Befehl benutzt, bevor Ihr hier etwas postet!!!
 
Wenn Ihr chan_capi_cm nutzt (Version 0.6 oder CVS):

So sieht die capi.conf so aus (Beispiel aus Version 0.6 bzw. dem CVS):
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)
;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)

Zu beachten ist, dass hier nurnoch die MSNs angegeben werden, auf die die ISDN-Karte bei eingehenden Anrufen reagieren soll (* für alle). Die MSN der ISDN-Karte für das ausgehende Gespräch wird nun vor dem Wählen in der extensions.conf definiert:

exten => _X.,1,SetCallerID(50)
exten => _X.,2,Dial(CAPI/contr1/${EXTEN})

oder bei neueren Asterisk-Versionen

exten => _X.,1,Set(CallerID(number)=50)
exten => _X.,2,Dial(CAPI/contr1/${EXTEN})

"contr1" ist die in der capi.conf definierte Nummer des Capi-Controllers.
Es kann aber auch die Nummer der dialout-Gruppe verwendet werden:

exten => _X.,1,Set(CallerID(number)=50)
exten => _X.,2,Dial(CAPI/g1/${EXTEN})

3. Möglichkeit ist der Name des Interfaces, z.B. ISDN1 (siehe capi.conf Beispiel):

exten => _X.,1,Set(CallerID(number)=50)
exten => _X.,2,Dial(CAPI/ISDN1/${EXTEN})

Wenn Ihr Eure Rufnummer unterdrücken wollt, so müsst Ihr vor dem Wählen den Befehl: SetCallerPres(prohib_not_screened) benutzen:

exten => _X.,1,Set(CallerID(number)=50)
exten => _X.,2,SetCallerPres(prohib_not_screened)
exten => _X.,3,Dial(CAPI/contr1/${EXTEN})


Wollt Ihr EarlyB3 nutzen, so wird es durch ein B nach der zu wählenden Nummer erreicht, getrennt durch einen Slash ("b" immer, "B" on success):

exten => _X.,1,Set(CallerID(number)=50)
exten => _X.,2,Dial(CAPI/contr1/${EXTEN}/b)


Ist mehr ein Copy&Paste von Hupe's Anleitung, aber es hat sich halt ein wenig in der Version 0.6 und der CVS-Version geändert.

Bis denn,
Whoopie
 
Hallo,
definiert doch mal bitte "alte" und "neuere Asterisk-Versionen".
Ein "bis 1.0.x" und ab "1.0.y" währe hier sicherlich hilfreicher....

(bei mir wird nämlich derzeit die falsche MSN übermittelt und ich find nicht warum..).

Gruß
[email protected]
 
Auf Sourceforge.net ist ab sofort chan_capi_cm-0.6.1 erhältlich. Funktioniert und MSN werden bei mir korrekt übermittelt.

Code:
chan_capi-cm-0.6.1
------------------
- fixed setting of redirecting number rdnis instead of cid.
- allow setting a callerid in the dial() command without changing
  the original channel callerid.
- added channel locks
- fixed capi init order (thanks to Hans Petter Selasky)
- fixed did handling
- set RDNIS if redirecting number was received.
- simplified call to ast_exists_extension()
- when check for valid extension, check the callerid as well
- changed call-waiting and deflect handling in CONNECT_IND
- use 'immediate' config in MSN mode, if pbx shall be started on
  CONNECT_IND and shall not wait until SETUP/SENDING-COMPLETE was received.
  Since info like REDIRECTINGNUMBER will come after CONNECT_IND, this may
  be lost then. But for some drivers/telcos/pbx, this setting is needed.
- fix start of line interconnect in old mode.
- start early-b3 on PROCEEDING too.
- don't send audio data, if in fax receive mode
- disconnect on finished fax immediately
- don't run through gain list, if gain is 1.0.
- use correct A-law idle value.
- removed old example from capi.conf
 
Wenn Ihr chan_capi_cm nutzt (Version 0.6.1 oder CVS):

So sieht die capi.conf so aus (Beispiel aus Version 0.6.1 bzw. dem CVS):
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, '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 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   ;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
devices=2        ;number of concurrent calls on this controller
                 ;(2 makes sense for single BRI, 30 for PRI)

Zu beachten ist, dass hier nurnoch die MSNs angegeben werden, auf die die ISDN-Karte bei eingehenden Anrufen reagieren soll (* für alle). Die MSN der ISDN-Karte für das ausgehende Gespräch wird nun vor dem Wählen in der extensions.conf definiert (falls nicht, wird der Wert "defaultcid2 aus der capi.conf genommen).

exten => _X.,1,SetCallerID(50)
exten => _X.,2,Dial(CAPI/contr1/${EXTEN})

oder bei neueren Asterisk-Versionen

exten => _X.,1,Set(CallerID(number)=50)
exten => _X.,2,Dial(CAPI/contr1/${EXTEN})

Man kann seine MSN für ausgehende Gespräche jetzt auch wieder im Dial-Befehl setzen. Das kann Sinnvoll sein, wenn man z.B. gleichzeitig einen Anruf an CAPI und SIP signalisieren möchte, ohne die originale CallerID zu überschreiben.

exten => _X.,1,Dial(CAPI/contr1/50:${EXTEN})

"contr1" ist die in der capi.conf definierte Nummer des Capi-Controllers.
Es kann aber auch die Nummer der dialout-Gruppe verwendet werden:

exten => _X.,1,Set(CallerID(number)=50)
exten => _X.,2,Dial(CAPI/g1/${EXTEN})

3. Möglichkeit ist der Name des Interfaces, z.B. ISDN1 (siehe capi.conf Beispiel):

exten => _X.,1,Set(CALLERID(number)=50)
exten => _X.,2,Dial(CAPI/ISDN1/${EXTEN})

Wenn Ihr Eure Rufnummer unterdrücken wollt, so müsst Ihr vor dem Wählen den Befehl: SetCallerPres(prohib_not_screened) benutzen:

exten => _X.,1,Set(CALLERID(number)=50)
exten => _X.,2,SetCallerPres(prohib_not_screened)
exten => _X.,3,Dial(CAPI/contr1/${EXTEN})


Wollt Ihr EarlyB3 nutzen, so wird es durch ein B nach der zu wählenden Nummer erreicht, getrennt durch einen Slash ("b" immer, "B" on success):

exten => _X.,1,Set(CALLERID(number)=50)
exten => _X.,2,Dial(CAPI/contr1/${EXTEN}/b)
 
exten => _X.,1,Set(CallerID(number)=50)

bringt bei mir einen ERROR: Funktion CallerID not registered

Asterisk 1.2.1 mit chan_capi 0.6.1
 
Oh, das kann sein. Hatte den Obigen Beitrag kopiert und erweitert. Darum war es mir nicht aufgefalen. Das ist wohl case-sensitiv. Also:

Set(CALLERID(number)=50)
 
Hi,

ich benutze chan_capi-cm-0.6.1 und bei mir funktioniert Set(CALLERID(number)=msn nicht! Ich muss wie "früher" die zu verwendende MSN mit in den Dialstring packen.

Kann das jemand bestätigen?!
 
ab asterisk 1.2.0 Set(CALLERID(number)=msn)
davor (asterisk 1.0.x) SetCallerID(msn)
 
Das habe ich ja verstanden, aber das chan-capi_cm Modul erwartet die ausgehende MSN wohl wie früher auch das chan-capi Modul im Dial String.

Es funktioniert nämlich weder Set(CALLERID(number)=msn) noch SetCallerID(msn)
 
In der neusten bristuff-0.3.0-PRE-1d wird chan_capi 0.4.0-PRE1 mitinstalliert.
(es wird kein extra Verzeichnis angelegt, sondern direkt ins Asteriskverzeichnis installiert + gepacht)

Wer trotzdem chan_capi_cm benutzen will, muss wie bei dem altbekannten Problem einer alten chan_capi Version, die app_capi* Module löschen.
(nicht probiert).
Oder aber in den Makefiles
asterisk-1.2.1/channels/Makefile
asterisk-1.2.1/apps/Makefile
die capi Sektionen auskommentieren.
Eine weitere Lösung wäre den Bristuff patch zu bearbeiten, aber dazu hatte ich keine Lust ;)
=> vielleicht sollte man aber auf Probleme achten, da u.a. die capi header in asterisk-1.2.1/include kopiert werden und bei make install dann auch nach /usr/include/asterisk installiert werden.


BTW: chan_capi_cm 0.6.5 ist verfügbar
------------
BTW2:
Set(CALLERID(number)=msn)
funktioniert bei mir ohne Probleme. Vielleicht dazu mal ein neues Thema aufmachen mit deinen Configs/Debuglog
 
Zuletzt bearbeitet:
Die aktuelle Version von chan_capi ist Version 1.0.1.
http://www.melware.org/ChanCapi
Laut README sind chan_capi und chan_capi-cm wieder zusammengeführt worden.
Verbessert mich, wenn ich mich irre!
 
"Zusammengeführt" ist nicht das richtige Wort.
Als ich (melware) das original chan-capi damals weiterentwickelt habe, wollte ich einen gleichen Namen vermeiden (die ursprüngliche Version hätte ja auch weiterentwickelt worden können).
Deshalb habe ich dem Namen damals -cm hinzugefügt um es eindeutig zu machen. Da aber die ursprüngliche Version nicht weiterentwickelt wurde (hätte meiner Ansicht nach auch keinen Sinn gemacht ;-), habe ich den Namen wieder geändert und somit auch chan-capi.org ins Leben gerufen.

Armin
 
Im Wiki ist unter http://wiki.ip-phone-forum.de/softw..._isdn_--_kann_ich_asterisk_daran_anschliessen
nur Junghanns.net verlinkt. Da sollte chan-capi.org hin. (Meiner Meinung nach könnte man auch den Link auf Junghanns.net entfernen oder zumindest hinschreiben, dass es ursprünglich von dort kam, aber seit Jahren, ?2006?, nicht mehr betreut wird.)
Leider ist editieren im Wiki mir (momentan?) nicht gestattet. (Für Anfänger wäre ein Hinweis sinnvoll, dass manche Distributionen wie Debian, z.T. chan_capi(-cm) direkt mitliefern, wenn Asterisk aus deren Repositories installiert wird.)

Genbian
 
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.