118 lines
5.1 KiB
Raw Normal View History

(CAPI*) chan_capi a Common ISDN API 2.0 implementation for Asterisk
2007-02-11 16:01:32 +00:00
QSIG Extension for chan_capi
Copyright (C) 2005-2007 Cytronics & Melware
Armin Schindler <>
Copyright (C) 2006-2007 Mario Goegel
Mario Goegel <>
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, bugfixers and contributors :)
None yet - you will be welcome here :-)
(...and all the others that have been forgotten...) :-)
No support for Asterisk 1.0.x any more, you need at least
Asterisk 1.2.x
What is Q.SIG
Q.SIG is an protocoll extension for ISDN.
It is mainly used on connecting PBXs of different PBX vendors, which allows
better interoperability.
As example there can be a name of an extension transferred between different
PBXs, which is with standard ISDN not possible.
These extensions will be transmitted as encoded facility information elements.
To use Q.SIG with asterisk, you'll need a card like Eicon DIVA Server
(BRI like PRI), which supports QSIG. Maybe others do also work, let me now.
The QSIG support includes:
2007-02-11 16:01:32 +00:00
- Name presentation on Call SETUP incoming like outgoing
- ISDN LEG INFO2 field - a message which delivers informations about call diversions on incoming call to asterisk
Data is stored in Asterisk variables:
QSIG_LI2_DIVREASON Reason of divertion: 0 - unknown, 1 - unconditional, 2 - user busy, 3 - user no reply
QSIG_LI2_ODIVREASON Reason of original divertion (like above)
QSIG_LI2_DIVCOUNT divertion counter - how many divertions
QSIG_LI2_DIVNUM diverting number
QSIG_LI2_ODIVNUM original diverting number
QSIG_LI2_DIVNAME diverting name
QSIG_LI2_ODIVNAME original diverting name
at the moment only incoming handling is supported
- Possibility to inform QSIG switch about call from public network
If you set variable QSIG_SETUP=X then the QSIG switch on the other side will know,
this call source is public network - you will get different ring tone, etc.
In dialplan use: Set(__QSIG_SETUP=X) command.
The leading "__" tells asterisk, to export this variable to the outgoing channel and
its subchannels
- Simple Call Transfer
With capicommand(qsig_ct|src-id|dst-id) you can transfer an inbound call back to the qsig switch.
The B-Channel of this call will be relased, so that the line is free for a next call.
Unfortunately the call will be completely released by the switch, if the target is busy.
If you want need to know, if your target is busy, you can use the call transfer feature below.
- Call Transfer (outgoing)
You can do an outbound call transfer.
First you need the PLCI (logical channel id) of your first channel. You'll get it with capicommand(getplci). This
command returns the channel id in the variable QSIG_PLCI. Now you can enable the call transfer feature.
Simply add "Ct<PLCI>" to QSIG_SETUP (i.e. QSIG_SETUP="X/Ct${QSIG_PLCI}" ). On the next dial command the call will
be automatically transferred. The transfer occurs after the CONNECT. If you want an transfer early on ringing you
can use "Ctr<PLCI>". Then the target user will get the infos about the originating user, while his phone is ringing.
If the external switch offers an path replacement propose, it will be taken automatically in account.
The B-Channels will be cleared by the switch after call connection. Your channels stay free.
- Automatic Call Transfer and Path Replacement (if allowed/possible) on bridge/line interconnect
If an line interconnect is set up from asterisk, chan_capi sends an Call Transfer facility out and waits for an
Path Replacement Propose message - if no Path Replacement is received, the line interconnect will proceed.
The Call Transfer allows your connected extensions in every case (if the switch supports the Call Transfer feature)
to see the name and number of his connected peer.
This should be configurable in the next release.
2007-02-11 16:01:32 +00:00
- decoding of incoming Call Transfer feature
Does nothing useful yet, only some debug output. It's now a small step to implement inbound Path Replacement.
2007-02-11 16:01:32 +00:00
Future Targets:
- check code for buffer overflows
- complete Call Transfer inbound
- Path Replacement inbound
- Allow/Disallow Path Replacement within capi.conf
- Call Rerouting feature [ECMA-174]
2007-02-11 16:01:32 +00:00
- Sent out LEG_INFO3 - maybe this would allow an sendtext (display instructions on the connected set)
2007-02-11 16:01:32 +00:00
- ...
How to use:
simply enable Q.SIG with following line in your capi.conf interface:
Here we go with new configuration
Set qsig to one of the following values, which corresponds to your configuration.
0 QSIG turned off
1 Alcatel (4400 & Enterprise - Maybe OXO/4200) ECMA (wrongly named ECMA - it is ETSI) variant
2 Siemens HiPath 4000 ECMAV2 & Alcatel 4400/Enterprise in ISO mode
2007-02-11 16:01:32 +00:00
ToDo List:
- Support for inbound routing
- Enhance ASN1-97 Addressing Data Elements support - will save much code