220 lines
7.9 KiB
Raw Normal View History

2005-06-02 18:47:35 +00:00
(CAPI*) chan_capi a Common ISDN API 2.0 implementation for Asterisk
Copyright (C) 2005 Cytronics & Melware
Armin Schindler <>
Reworked, but based on the work of
Copyright (C) 2002-2005 Junghanns.NET GmbH
Klaus-Peter Junghanns <>
This program is free software and may be modified and distributed under
the terms of the GNU Public License. There is _NO_ warranty for this!
Thanks go to the debuggers and bugfixers (listed in chronological order) :)
Lele Forzani <>
Florian Overkamp <>
Gareth Watts <>
Jeff Noxon <>
Petr Michalek <>
Jan Stocker
Frank Sautter, levigo group
2005-06-02 18:47:35 +00:00
(...and all the others that i forgot..) :-)
This chan_capi version includes:
2005-06-07 04:26:12 +00:00
- Multiple controller support
2005-06-02 18:47:35 +00:00
- CID,DNID (callling party, called party)
2005-06-07 04:26:12 +00:00
- Supplementary services, CD,HOLD,RETRIEVE,ECT
2005-06-02 18:47:35 +00:00
- DTMF (dependend on card) + software DTMF support
2005-06-07 04:26:12 +00:00
- Early B3 connects (always,success,never)
- Digital audio (what did you think?)
- Incoming/outgoing calls
- Overlap sending (dialtone and additional digits)
2005-06-07 04:26:12 +00:00
- E(xplicit) C(all) T(ransfer) (...although it's done implicit-but don't tell!)
- Tuneable latency: you can configure the size of B3 blocks at compile time
2005-06-02 18:47:35 +00:00
(in chan_capi_pvt.h, AST_CAPI_MAX_B3_BLOCK_SIZE)
2005-06-07 04:26:12 +00:00
The default is 160 samples, for non-VoIP use you can tune it down to 130
- Use asterisks internal DSP functions for DTMF
- Alaw support
- Ulaw support!
2005-06-02 18:47:35 +00:00
- Eicon CAPI echo cancelation (echocancel=1)
2005-06-07 04:26:12 +00:00
- Reject call waiting (ACO)
2005-06-02 18:47:35 +00:00
- DID for Point to Point mode (a.k.a overlap receiving)
2005-06-07 04:26:12 +00:00
- Rx/Tx gains (rxgain=1.0)
- Call deflection on circuit busy (deflect=12345678)
- (Inter)national dialing prefix (for callerid) configurable in capi.conf
- CLI command "capi info" shows B channel status of chan_capi
- CapiECT will announce the callerID since it gets lost on most isdn pbxes
The called party can press # to drop the call
- Catch all MSN (incomingmsn=*)
- Some configuration enhancements (msn=123,124,125 and controller=1,2,3,4)
- Added accountcode=
- Echo squelching (echosquelch=1)
- Callgroup support
- report correct DIALSTATUS and HANGUPCAUSE.
2005-06-07 04:26:12 +00:00
- Updated to support the new frame->delivery field
- Compiles with different Asterisk versions (automatic build configuration)
- Added app_capiNoES for disabling the primitive echo suppressor, use this
before you start recording voicemail or your files may get choppy
- receive faxes over CAPI (see below)
- Fixes for BSD (Jan Stocker)
- Support 'type of number'.
2005-06-02 18:47:35 +00:00
The Dial string
Example: Dial(CAPI/g<group>/<destination>[/<params>])
Or: Dial(CAPI/contr<controller>/<destination>[/<params>])
2005-07-27 18:17:41 +00:00
Or: Dial(CAPI/<interface-name>/<destination>[/<params>])
'group' can be a value, comma separated list of values or a range
using '-'. The according interface is found by searching a match with
the 'group' specified in the capi.conf for each interface.
'params' is an optional part to set special settings for this call.
The string consists of a list of characters with the following meaning:
'b' : early B3 always.
'B' : early B3 on successful calls only.
'o' : use overlap sending of number if number is longer than 2 digits
(This is useful, when further digits shall be send to complete the
destination address).
2005-07-27 18:17:41 +00:00
If the <interface-name> is used in dialstring, be sure the name (specified
in capi.conf) does not start with 'contr' or 'g'.
CLIP/CLIR uses the calling presentation of the calling channel, which can
be modified using the SetCallerPres() application. Use
SetCallerPres(prohib_not_screened) for CLIR. That is why the msn= param in
capi.conf has been removed. The callerID is also taken from the calling channel.
2005-06-02 18:47:35 +00:00
CAPI command application
chan_capi provides an additional Asterisk application
With this application, special capi commands and features can be used.
Call Deflection:
Forwards an unanswered call to another number.
exten => s,1,capicommand(deflect|12345678)
Fax receive:
Receive a fax using CAPI.
exten => s,1,capicommand(receivefax|/tmp/${UNIQUEID}|+49 6137 555123|Asterisk)
(more see below)
2005-06-02 18:47:35 +00:00
Helper applications
2005-06-07 04:26:12 +00:00
Puts an answered call on hold, this has nothing to do with asterisk's onhold
thingie (music et al)
After putting a call onhold, never use the Wait application!
2005-06-02 18:47:35 +00:00
2005-06-07 04:26:12 +00:00
Gets the holded call back
2005-06-02 18:47:35 +00:00
2005-06-07 04:26:12 +00:00
Explicit call transfer of the call on hold (must put call on hold first!)
exten => s,1,Answer
exten => s,2,capiHOLD
exten => s,3,capiECT,55:50
Will ECT the call to 50 using 55 as the callerid/outgoing MSN
2005-06-02 18:47:35 +00:00
Using CLIR
Use the SetCallerPres() application before you dial:
exten => _X.,1,SetCallerPres(prohib_not_screened)
exten => _X.,2,Dial(CAPI/contr1/${EXTEN})
2005-06-02 18:47:35 +00:00
Enjoying early B3 connects (inband call progress, tones and announcements)
Early B3 is configurable in the dialstring parameters.
If you set a 'b', early B3 will always be used, also if the call fails,
because the number is unprovisioned, etc ...
If you set a 'B', early B3 will only be used on successful calls,
2005-06-07 04:26:12 +00:00
giving you ring indication,etc...
Don't use indications in the Dial command, your local exchange will do that for
exten => _X.,1,Dial(CAPI/contr1/${EXTEN}/B,30)
2005-06-07 04:26:12 +00:00
(early B3 on success)
exten => _X.,1,Dial(CAPI/contr1/${EXTEN}/b,30)
2005-06-07 04:26:12 +00:00
(always early B3)
exten => _X.,1,Dial(CAPI/contr1/${EXTEN},30,r)
(no early B3, fake ring indication)
exten => _X.,1,Dial(CAPI/contr1/${EXTEN}/b,30,r)
2005-06-07 04:26:12 +00:00
(always early B3, fake indicatons if the exchange does not give us
exten => _X.,1,Dial(CAPI/contr1/${EXTEN}/B,30,r)
2005-06-07 04:26:12 +00:00
(early B3 on success, fake indicatons if the exchange does not give us
2005-06-02 18:47:35 +00:00
For normal PBX usage you would use the "b" option, always early B3.
Overlap sending (a.k.a. real dialtone)
2005-06-07 04:26:12 +00:00
When you dial an empty number, and have early B3 enabled, with:
2005-06-07 04:26:12 +00:00
The channel will come up at once and give you the dialtone it gets from the
local exchange.
At this point the channel is like a legacy phone, now you can send DTMF digits
to dial.
2005-06-02 18:47:35 +00:00
Example context for incoming calls on MSN 12345678:
exten => 12345678,1,Dial(SIP/phone1)
exten => 12345678,2,Hangup
Short HOWTO of capicommand(receivefax|<filename>[|<stationid>|<headline>]):
2005-06-07 04:26:12 +00:00
For those of you who have a CAPI card with an on-board DSP (like some Eicon and
DIVA Server), this patch allows you to receive faxes.
If you want to answer a channel in fax mode, use capicommand(receivefax|...)
instead of Answer()
2005-06-07 04:26:12 +00:00
If you use Answer(), you will be in voice mode. If the hardware DSP detects
fax tone, you can switch from voice to fax mode by calling capicommand(receivefax|...).
The parameter <filename> is mandatory and the parameters <stationid> and
<headline> are optional.
Example of use :
line number 123, play something, if a fax tone is detected, handle it
line number 124, answer directly in fax mode
exten => 123,1,Answer()
exten => 123,2,BackGround(jpop)
exten => 124,1,Goto(handle_fax,s,1)
exten => fax,1,Goto(handle_fax,s,1)
exten => s,1,capicommand(receivefax|/tmp/${UNIQUEID}[|<stationid>|<headline>])
exten => s,2,Hangup()
exten => h,1,deadagi,fax.php // Run sfftobmp and mail it.
The output of capicommand(receivefax|...) is a SFF file.
Use sfftobmp to convert it.
2005-06-07 04:26:12 +00:00
With a DIVA Server, following features are provided:
- fax up to 33600
- high resolution
- Color Fax
- JPEG Compression is disabled (not tested yet)
2005-06-02 18:47:35 +00:00