Go to file
MelwareDE 088f3a9c8e Support 'type of number' (numbering-plan). 2005-08-07 19:24:06 +00:00
INSTALL cleanup 2005-06-07 04:26:12 +00:00
LICENSE Initial import of new chan_capi. 2005-06-02 18:47:35 +00:00
Makefile U-Law setting is now done in capi.conf instead of Makefile define. 2005-08-07 11:40:07 +00:00
README Support 'type of number' (numbering-plan). 2005-08-07 19:24:06 +00:00
app_capiCD.c Initial import of new chan_capi. 2005-06-02 18:47:35 +00:00
app_capiECT.c Initial import of new chan_capi. 2005-06-02 18:47:35 +00:00
app_capiFax.c - capi.conf structure changes: one own section for each interface, 2005-07-17 19:01:14 +00:00
app_capiHOLD.c Initial import of new chan_capi. 2005-06-02 18:47:35 +00:00
app_capiMCID.c Initial import of new chan_capi. 2005-06-02 18:47:35 +00:00
app_capiNoES.c Initial import of new chan_capi. 2005-06-02 18:47:35 +00:00
app_capiRETRIEVE.c Initial import of new chan_capi. 2005-06-02 18:47:35 +00:00
capi.conf Added 'relaxdtmf'. 2005-08-07 12:21:36 +00:00
chan_capi.c Support 'type of number' (numbering-plan). 2005-08-07 19:24:06 +00:00
chan_capi_app.h Use a lock for debug messages to ensure non-currupted message-lines. 2005-07-16 12:04:48 +00:00
chan_capi_pvt.h Support 'type of number' (numbering-plan). 2005-08-07 19:24:06 +00:00
create_config.sh Added compat to new ast_config* API of current Asterisk CVS HEAD. 2005-06-15 07:31:28 +00:00
xlaw.h Initial import of new chan_capi. 2005-06-02 18:47:35 +00:00

README

(CAPI*) chan_capi a Common ISDN API 2.0 implementation for Asterisk

 Copyright (C) 2005 Cytronics & Melware
 Armin Schindler <armin@melware.de>
 
 Reworked, but based on the work of
 Copyright (C) 2002-2005 Junghanns.NET GmbH
 Klaus-Peter Junghanns <kpj@junghanns.net>

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 <lele@windmill.it>
Florian Overkamp <florian@obsimref.com>
Gareth Watts <gareth@omnipotent.net>
Jeff Noxon <jeff@planetfall.com>
Petr Michalek <petr.michalek@aca.cz>
Jan Stocker
Frank Sautter, levigo group

(...and all the others that i forgot..) :-)

This chan_capi version includes:
================================

- Multiple controller support
- CID,DNID (callling party, called party)
- CLIR/CLIP
- Supplementary services, CD,HOLD,RETRIEVE,ECT
- DTMF (dependend on card) + software DTMF support
- Early B3 connects (always,success,never)
- Digital audio (what did you think?)
- Incoming/outgoing calls
- Overlap sending (dialtone and additional digits)
- 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
  (in chan_capi_pvt.h, AST_CAPI_MAX_B3_BLOCK_SIZE)
  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! 
- Eicon CAPI echo cancelation (echocancel=1)
- Reject call waiting (ACO)
- DID for Point to Point mode (a.k.a overlap receiving)
- 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.
- 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
- Added app_capiFax to receive faxes over CAPI (see below)
- Fixes for BSD (Jan Stocker)
- Support 'type of number'.

The Dial string
===============

  Example:        Dial(CAPI/g<group>/<destination>[/<params>])
  Or:             Dial(CAPI/contr<controller>/<destination>[/<params>])
  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).

  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.


Helper applications
===================
Kapejod says: "No No No, don't use those yet....!" (except maybe HOLD,ECT...)

app_capiCD.c		
	Forwards an unanswered call to another phone (does not rely on sservice CD)
		Example:
		exten => s,1,Wait,1
		exten => s,2,capiCD,12345678
			
app_capiHOLD.c		
	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!

app_capiRETRIEVE.c	
	Gets the holded call back

app_capiECT.c		
	Explicit call transfer of the call on hold (must put call on hold first!)
		Example:
		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


Using CLIR
==========
Use the SetCallerPres() application before you dial:
	exten => _X.,1,SetCallerPres(prohib_not_screened)
	exten => _X.,2,Dial(CAPI/contr1/${EXTEN})


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, 
giving you ring indication,etc...

Don't use indications in the Dial command, your local exchange will do that for 
you:
	exten => _X.,1,Dial(CAPI/contr1/${EXTEN}/B,30)		
		(early B3 on success)
	
	exten => _X.,1,Dial(CAPI/contr1/${EXTEN}/b,30)	
		(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)		
		(always early B3, fake indicatons if the exchange does not give us 
		indications)
	
	exten => _X.,1,Dial(CAPI/contr1/${EXTEN}/B,30,r)		
		(early B3 on success, fake indicatons if the exchange does not give us 
		indications)
    
For normal PBX usage you would use the "b" option, always early B3.

Overlap sending (a.k.a. real dialtone)
======================================
When you dial an empty number, and have early B3 enabled, with:
    Dial(CAPI/g1//b)
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.    

Example context for incoming calls on MSN 12345678:
===================================================

[capi-in]
exten => 12345678,1,Dial(SIP/phone1)
exten => 12345678,2,Hangup

Short HOWTO of 'capiAnswerFax':
===============================
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 capiAnswerFax() instead of 
Answer()
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 capiAnswerFax().

Example of use :
line number 123, play something, if a fax tone is detected, handle it
line number 124, answer directly in fax mode

[incoming]
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)

[handle_fax]
exten => s,1,capiAnswerFax(/tmp/${UNIQUEID})
exten => s,2,Hangup()
exten => h,1,deadagi,fax.php // Run sfftobmp and mail it.

The output of capiAnswerFax is a SFF file. Use sfftobmp to convert it.
With a DIVA Server, following features are provided:
 - fax up to 33600
 - high resolution
 - Color Fax 
 - JPEG Compression is disabled (not tested yet)