150 lines
6.0 KiB
Plaintext
150 lines
6.0 KiB
Plaintext
![]() |
(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
|
||
|
(...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)
|
||
|
- E(xplicit) C(all) T(ransfer) (...although it's done implicit .. but dont 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 asterisk's 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)
|
||
|
- experimental echo squelching (echosquelch=1)
|
||
|
- call progress, no need to add ||r to your dialstring anymore
|
||
|
- rx/tx gains (rxgain=1.0)
|
||
|
- call deflection on circuitbusy (makefile option) (deflect=12345678)
|
||
|
- (inter)national dialing prefix (for callerid) configurable in capi.conf
|
||
|
- CLI command "capi info" shows B channel status
|
||
|
- capiECT will announce the callerID since it gets lost on most isdn pbxes
|
||
|
the called party can press # to drop the call
|
||
|
- audio syncing (timing outgoing dataB3 on incoming dataB3), supposed to fix
|
||
|
the DATA_B3_REQ (error = 0x1103) problem
|
||
|
- catch all MSN (incomingmsn=*)
|
||
|
- some configuration enhancements (msn=123,124,125 and controller=1,2,3,4)
|
||
|
- accountcode= added.
|
||
|
- finally the echo squelching works!
|
||
|
- callgroup support
|
||
|
- fixed pipe leak
|
||
|
- updated to support the new frame->delivery field
|
||
|
- compiles with latest cvs with a makefile option (LOOK AT THE MAKEFILE)
|
||
|
- fixed channel name bug in p2p mode
|
||
|
- added app_capiNoES for disabling the primitive echo suppressor, use this before
|
||
|
you start recording voicemail or your files may get choppy
|
||
|
- fixed for latest cvs (AST_MUTEX_DEFINE_STATIC)
|
||
|
- fixed for latest cvs (asterisk/parking.h -> asterisk/features.h)
|
||
|
- fixed for latest cvs ast_pthread_create
|
||
|
|
||
|
- ATTENTION! the dialstring syntax now uses the zaptel dialstring syntax
|
||
|
it used to be: Dial(CAPI/[@]<outgoingMSN>:[b|B]<destination>)
|
||
|
|
||
|
now it is: Dial(CAPI/g<group>/[b|B]<destination>)
|
||
|
or: Dial(CAPI/contr<controller>/[b|B]<destination>)
|
||
|
|
||
|
CLIP/CLIR is now uses the calling presentation of the calling channel, this can
|
||
|
be modified using the CallingPres() application. Use CallinPres(32) for CLIR.
|
||
|
That is why the msn= param in capi.conf is now obsolete. The callerID is also
|
||
|
taken from the calling channel.
|
||
|
|
||
|
- fixes for BSD (Jan Stocker)
|
||
|
|
||
|
Helper applications
|
||
|
===================
|
||
|
kapejod says: "No No No, dont 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 holded call (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 CallingPres() application before you dial:
|
||
|
exten => _X.,1,CallingPres(32)
|
||
|
exten => _X.,2,Dial(CAPI/contr1/${EXTEN})
|
||
|
|
||
|
Enjoying early B3 connects (inband call progress, tones and announcements)
|
||
|
==========================================================================
|
||
|
early B3 is now configurable in the dialstring :)
|
||
|
if you prefix the destination number with a 'b' early B3 will always be used, also if the call fails
|
||
|
because the number is unprovisioned, etc ...
|
||
|
if you prefix it with a 'B' early B3 will only be used on successful calls, giving you ring indication,etc...
|
||
|
|
||
|
dont use indications in the Dial command, your local exchange will do that for you:
|
||
|
exten => _X.,1,Dial(CAPI/contr1/B${EXTEN},30) (early B3 on success)
|
||
|
exten => _X.,1,Dial(CAPI/contr1/b${EXTEN},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/b${EXTEN},30,r) (always early B3, fake indicatons if the exchange
|
||
|
does not give us indications)
|
||
|
exten => _X.,1,Dial(CAPI/contr1/B${EXTEN},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
|
||
|
|
||
|
|
||
|
More information/documentation and commercial support can be found at:
|
||
|
http://www.junghanns.net/asterisk/
|
||
|
|
||
|
|
||
|
|