« Previous -
Version 7/19
(diff) -
Next » -
Current version
Adrian Georgescu, 01/02/2009 04:15 am
Binary packages are available for Debian or Ubuntu on i386 and amd64 architectures. To install add the following lines to /etc/apt/sources.list:
{{{
deb http://ag-projects.com/debian unstable main
deb-src http://ag-projects.com/debian unstable main
}}}
Install AG Projects debian repository signing key:
{{{
wget http://download.ag-projects.com/agp-debian-gpg.key
apt-key add agp-debian-gpg.key
}}}
To install the software:
{{{
apt-get update
apt-get install callcontrol
}}}
For non Debian installations you must perform the following steps:
The software can be downloaded as a tar archive from:
http://download.ag-projects.com/CallControl/
Extract it using tar xzvf callcontrol-version.tar.gz and change directory to
the newly created callcontrol directory.
The source code is managed using darcs version control tool. The darcs
repository can be fetched with:
{{{
darcs get http://devel.ag-projects.com/repositories/callcontrol
}}}
To obtain the incremental changes after the initial get:
{{{
cd callcontrol
darcs pull -a
}}}
Install the software:
{{{
cd callcontrol
python setup.py install
}}}
You need to setup the following components:
- OpenSIPS callcontrol module, version >=1.5
- Call Control application (this software)
- CDRTool rating engine, version >=6.7.0
=== OpenSIPS configuration ===
{{{
loadmodule "mi_fifo.so"
loadmodule "mi_datagram.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "dialog.so"
loadmodule "call_control.so"
modparam("call_control", "disable", 0)
route {
...
if ((method=="INVITE" && !has_totag())) {
# you need to call this function at the first INVITE
call_control();
switch ($retcode) {
case 2:
# Call with no limit
case 1:
# Call with a limit under callcontrol management (either prepaid or postpaid)
break;
case -1:
# Not enough credit (prepaid call)
xlog("L_INFO", "Call control: not enough credit for prepaid call\n");
acc_rad_request("402");
sl_send_reply("402", "Not enough credit");
exit;
break;
case -2:
# Locked by call in progress (prepaid call)
xlog("L_INFO", "Call control: prepaid call locked by another call in progress\n");
acc_rad_request("403");
sl_send_reply("403", "Call locked by another call in progress");
exit;
break;
default:
# Internal error (message parsing, communication, ...)
xlog("L_INFO", "Call control: internal server error\n");
acc_rad_request("500");
sl_send_reply("500", "Internal server error");
exit;
}
}
...
}
}}}
=== Call Control configuration ===
For all configuration options and their description see [source:config.ini.sample config.ini.sample]
Copy config.ini.sample to /etc/callcontrol/config.ini and edit the file to suit your environment:
{{{
[CallControl]
; how to detect sessions that have media timeout without BYE
timeout_detection=dialog
[CDRTool]
; connection to cdrtool rating engine for MaxSessionTime() and DebitBalance()
address = cdrtool.hostname
[OpenSIPS]
; connection to OpenSIPS call_control module
; socket_path = /var/run/opensips/socket
max_connections = 10
}}}
=== CDRTool rating engine configuration ===
{{{
$RatingEngine=array( "socketIP" => "0",
"socketPort" => "9024",
"cdr_source" => "opensips_radius"
);
}}}
See the documentation of CDRTool project for how to setup the rating tables.
Overview of ongoing sessions, generation of prepaid cards and prepaid
accounts can be managed from CDRTool rating tables web interface.
=== Monitoring active sessions ===
{{{
/etc/init.d/callcontrol sessions
}}}
=== Display details about an active sessions ===
{{{
/etc/init.d/callcontrol session id
}}}
=== Terminating a session ===
{{{
/etc/init.d/callcontrol terminate id
}}}