0% found this document useful (0 votes)
142 views14 pages

Lab1 3-Instalacion A2billing

This document provides instructions to install and configure A2Billing, an open source billing system for Asterisk. It includes steps to install Asterisk, DAHDI, MariaDB, configure CDR storage in the database, and install A2Billing. Key components are configured like web interfaces, logging, cron jobs, and Asterisk manager integration.

Uploaded by

RSP INFOCOMPU
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
142 views14 pages

Lab1 3-Instalacion A2billing

This document provides instructions to install and configure A2Billing, an open source billing system for Asterisk. It includes steps to install Asterisk, DAHDI, MariaDB, configure CDR storage in the database, and install A2Billing. Key components are configured like web interfaces, logging, cron jobs, and Asterisk manager integration.

Uploaded by

RSP INFOCOMPU
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

CURSO DE VICIDIAL

LABORATORIO 1.3 – INSTALACIÓN DE A2BILLING

1.- Instalación de ASTERISK

yum groupinstall -y Development Tools

yum install -y epel-release dmidecode gcc-c++ ncurses-devel libxml2-devel make wget


openssl-devel newt-devel kernel-devel sqlite-devel libuuid-devel uuid-devel gtk2-devel
jansson-devel binutils-devel libvorbis libvorbis-devel vorbis-tools libogg libogg-devel gcc
ncurses-devel make gcc-c++ mingw64-termcap-static zlib-devel libtool bison-devel bison
openssl-devel bzip2-devel wget newt-devel subversion flex gtk2-devel net-tools vim

Instalacion de Maria DB
yum install mariadb mariadb-server mariadb-devel -y

ODBC
yum install unixODBC unixODBC-devel mysql-connector-odbc libtool-ltdl-devel -y

1.1.- Instalación de DAHDI LINUX

yum update kernel


cd /usr/src/
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-
complete-2.10.0+2.10.0.tar.gz
tar -xf dahdi-linux-complete-2.10.0+2.10.0.tar.gz
cd dahdi-linux-complete-2.10.0+2.10.0
make
make install
make config
systemctl enable dahdi
systemctl start dahdi

Finalmente reiniciar
reboot
1.2.- Instalación de ASTERISK

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar -zxvf asterisk-13-current.tar.gz
cd asterisk-13.*
./configure --libdir=/usr/lib64
make menuselect

Agregar:

Add-ons
res_config_mysql

Luego de guardar menuselect

make
make install
make samples
make config

Configurar el servicio

systemctl enable asterisk


systemctl start asterisk
systemctl status asterisk

1.3.- Configuración del servidor de base de datos

systemctl enable mariadb


systemctl start mariadb
mysql_secure_installation

Enter current password for root (enter for none):


Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
1.4.- Instalación de base de datos de CDR

mysql -u root -p
create user 'asterisk'@'localhost' identified by '123456';
create database asterisk;
create database asteriskcdr;
GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY
'123456';
GRANT ALL PRIVILEGES ON asteriskcdr.* TO asterisk@localhost IDENTIFIED BY
'123456';
flush privileges;

vim cdr.sql

CREATE TABLE cdr (


calldate datetime NOT NULL default '0000-00-00 00:00:00',
clid varchar(80) NOT NULL default '',
src varchar(80) NOT NULL default '',
dst varchar(80) NOT NULL default '',
dcontext varchar(80) NOT NULL default '',
channel varchar(80) NOT NULL default '',
dstchannel varchar(80) NOT NULL default '',
lastapp varchar(80) NOT NULL default '',
lastdata varchar(80) NOT NULL default '',
duration int(11) NOT NULL default '0',
billsec int(11) NOT NULL default '0',
disposition varchar(45) NOT NULL default '',
amaflags int(11) NOT NULL default '0',
accountcode varchar(20) NOT NULL default '',
uniqueid varchar(32) NOT NULL default '',
userfield varchar(255) NOT NULL default ''
);

ALTER TABLE `cdr` ADD INDEX ( `calldate` );


ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );

Cargar la tabla de CDR

mysql -u root -p asteriskcdr < cdr.sql


1.5.- Configuración del CDR en Asterisk con fuente de datos ODBC

vim /etc/odbc.ini

[asteriskcdr]
Driver = MySQL
Description = MySQL Connector for Asterisk
Server = localhost
Port = 3306
Database = asteriskcdr
username = asterisk
password = 123456
Option =3
Socket = /var/lib/mysql/mysql.sock

vim /etc/asterisk/res_odbc.conf

[asteriskcdr]
enabled=yes
dsn=asteriskcdr
username=asterisk
password=123456
pooling=no
limit=1
pre-connect=yes
share_connections=yes
sanitysql=select 1
isolation=repeatable_read

vim /etc/asterisk/cdr_odbc.conf

[global]
dsn=asteriskcdr
loguniqueid=yes
table=cdr
dispositionstring=yes
usegmtime=no
hrtime=yes
vim /etc/asterisk/cdr_adaptive_odbc.conf

[asteriskcdr]
connection=asteriskcdr
table=cdr
alias start=calldate

service asterisk restart


asterisk -rvvvvv
cdr show status
odbc show all

2.- Instalación de A2BILLING

Instalación de dependencias

yum install php php-gd php-mysql php-process httpd mod_ssl php-cli php-soap php-xml
php-mcrypt -y

Configurar el servicio

systemctl enable httpd


systemctl start httpd
systemctl status httpd

Configuración de versiones de SSL

vim /etc/httpd/conf.d/ssl.conf

SSLProtocol all -SSLv2 -SSLv3

Configuración de PHP.ini

vim /etc/php.ini

Cambiar los valores:

date.timezone = America/Bogota
upload_max_filesize = 8M
error_reporting = E_ALL & ~E_NOTICE
Descarga de a2billing

cd /usr/local/src
wget https://github.com/Star2Billing/a2billing/archive/v2.2.0.tar.gz
tar -xf v2.2.0.tar.gz
mv a2billing-2.2.0 a2billing
cd a2billing

Configuración de Composer

yum install git -y


vim composer.json

Cambiar la linea : "adodb/adodb-php": "dev-master",

Por : "adodb/adodb-php": "v5.20.0",

vim composer.lock

Cambiar la línea: "version": "dev-master",

Por : "version": "v5.20.0",

curl -sS https://getcomposer.org/installer | php


php composer.phar update
php composer.phar install

Instalación de base de datos

mysql -p
create database a2billing;
GRANT ALL PRIVILEGES ON a2billing.* TO 'a2user'@'localhost' IDENTIFIED BY
'654321';
flush privileges;
quit;
Ejecutar el script de creación de tablas

cd DataBase/mysql-5.x/
./install-db.sh
Enter Database Name :
a2billing

Enter Hostname :
localhost

Enter UserName :
root

Enter Password :
123456

Ejecutar el script de creación de sonidos

cd /usr/local/src/a2billing/addons/sounds/
./install_a2b_sounds.sh

Configuración del archivo de conexión a la base de datos

cp /usr/local/src/a2billing/a2billing.conf /etc/
vim /etc/a2billing.conf

[database]
hostname = localhost
port = 3306
user = a2user
password = 654321
dbname = a2billing
dbtype = mysql

Configuración de archivos que guardan extensiones en A2BILLING

touch /etc/asterisk/additional_a2billing_iax.conf
touch /etc/asterisk/additional_a2billing_sip.conf
chown apache:apache /etc/asterisk/additional_a2billing_iax.conf
chown apache:apache /etc/asterisk/additional_a2billing_sip.conf
Configuración de MANAGER de Asterisk

vim /etc/asterisk/manager.conf

enabled=yes
allowmultiplelogin = yes
dislplayconnects=yes

[myasterisk]
secret=mycode
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255
read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
write = system,call,agent,user,config,command,reporting,originate

Configuración de AGI para A2BILLING

cd /usr/local/src/a2billing/AGI
ln -s /usr/local/src/a2billing/AGI/a2billing.php /var/lib/asterisk/agi-bin/a2billing.php
ln -s /usr/local/src/a2billing/AGI/a2billing_monitoring.php /var/lib/asterisk/agi-
bin/a2billing_monitoring.php
ln -s /usr/local/src/a2billing/AGI/lib /var/lib/asterisk/agi-bin/lib
chmod +x /var/lib/asterisk/agi-bin/a2billing.php
chmod +x /var/lib/asterisk/agi-bin/a2billing_monitoring.php

Configuración de la interfase Web

mkdir /var/www/html/a2billing
mkdir -p /var/lib/a2billing/script
mkdir -p /var/run/a2billing
ln -s /usr/local/src/a2billing/admin/ /var/www/html/a2billing/admin
ln -s /usr/local/src/a2billing/agent/ /var/www/html/a2billing/agent
ln -s /usr/local/src/a2billing/customer/ /var/www/html/a2billing/customer
ln -s /usr/local/src/a2billing/common/ /var/www/html/a2billing/common
chmod 775 /usr/local/src/a2billing/admin/templates_c
chmod 775 /usr/local/src/a2billing/customer/templates_c
chmod 775 /usr/local/src/a2billing/agent/templates_c
chown -Rf apache:apache /var/www/html
chown -Rf apache:apache /var/www/html/a2billing/admin/
chown -Rf apache:apache /var/www/html/a2billing/agent/
chown -Rf apache:apache /var/www/html/a2billing/customer/
chown -Rf apache:apache /var/www/html/a2billing/common/
Configuración de LOGS

mkdir /var/log/a2billing
cd /var/log/a2billing
touch cront_a2b_alarm.log cront_a2b_autorefill.log cront_a2b_batch_process.log \
cront_a2b_archive_data.log cront_a2b_bill_diduse.log cront_a2b_subscription_fee.log \
cront_a2b_currency_update.log cront_a2b_invoice.log cront_a2b_check_account.log \
a2billing_paypal.log a2billing_epayment.log a2billing_api_ecommerce_request.log \
a2billing_api_callback_request.log a2billing_api_card.log a2billing_agi.log
chown apache:apache *

Configuración de CRON

crontab -e

# A2Billing
# Para actualizar la tasa de cambio de las monedas
0 6 * * * php /usr/local/src/a2billing/Cronjobs/currencies_update_yahoo.php
# Para el pago se servicios subscritos
0 6 1 * * php /usr/local/src/a2billing/Cronjobs/a2billing_subscription_fee.php
# Para notificaciones cuando el credito del cliente es más bajo de lo indicado
0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_notify_account.php
# Para el pago de los numeros geograficos asociados a los clientes
0 2 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_bill_diduse.php
# Para el pago de servicios periódicos
0 12 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_process.php
# Para la generación de las facturas de los clientes
0 6 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_billing.php
# Para la generación de llamadas automáticas utilizadas en las campañas
# */5 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_autodialer.php
# Para la gestión de las alarmas que se pueden configurar en A2Billing
0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_alarm.php
# Para archivar los datos de las llamadas más viejos de lo indicado en la configuración de
A2Billing
0 12 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_archive_data_cront.php
# Para recargar el crédito de un cliente en automático
0 6 1 * * php /usr/local/src/a2billing/Cronjobs/a2billing_autorefill.php
Configuración de archivos sip.conf e iax.conf en Asterisk

cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.bkp
cp /etc/asterisk/sip.conf /etc/asterisk/iax.conf.bkp
echo "" > /etc/asterisk/sip.conf
echo "" > /etc/asterisk/iax.conf

vi /etc/asterisk/sip.conf

[general]
language=es
allowguest=no ; denegar llamadas anónimas
allowoverlap=yes ; deshabilitar overlap
allowexternalinvites=no ; para evitar marrones, invites fakes o con cabecera incorrecta
allowexternaldomains=no ; seguimos para evitar marrones;
autodomain=no
alwaysauthreject = yes
context = ramales
bindport = 5060
bindaddr = 0.0.0.0
srvlookup=yes
videosupport=yes
allowguest=no
disallow=all
allow=ulaw
allow=gsm
allow=g729
allow=h263
allow=h264

vi /etc/asterisk/iax.conf

[general]
language=es
bindport=4569
bindaddr=0.0.0.0
bandwidth=high
disallow=all
Integración de a2billing para que colabore con Asterisk

echo \#include additional_a2billing_sip.conf >> /etc/asterisk/sip.conf


echo \#include additional_a2billing_iax.conf >> /etc/asterisk/iax.conf

Configuración del Dialplan

cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.bkp
echo "" > /etc/asterisk/extensions.conf
vi /etc/asterisk/extensions.conf

[general]
static = yes
writeprotect = no
autofallthrough = yes
extenpatternmatchnew = true
clearglobalvars = no
userscontext=default

[globals]
; Variables globales

[a2billing]
exten => _X.,1,NoOp(A2Billing Start)
same => n,Agi(a2billing.php,1)
same => n,Hangup
exten => h,1,Hangup

[did]
; CallingCard application
exten => _X.,1,DeadAGI(a2billing.php,1,did)
Configuración de customers a nivel de base de datos

vim /etc/asterisk/modules.conf

Des comentar

preload => res_odbc.so


preload => res_config_odbc.so

Agregar al final

noload => pbx_lua.so


noload => pbx_ael.so

Agregar la conexión a la base de datos

vim /etc/odbc.ini

[a2billing]
Description = MySQL a2billing
Driver = MySQL
Database = a2billing
Server = localhost
User = a2user
Password = sesamo
Port = 3306
Option = 3

Configuración de extensiones SIP e IAX con Realtime utilizando ODBC y la base de


datos a2billing

vim /etc/asterisk/extconfig.conf

Modificar las siguientes lineas de esta forma

iaxusers => odbc,a2b,cc_iax_buddies


iaxpeers => odbc,a2b,cc_iax_buddies
sippeers => odbc,a2b,cc_sip_buddies
Configuración de res odbc

vim /etc/asterisk/res_odbc.conf

[a2b]
enabled => yes
dsn => a2billing
username => a2user
password => sesamo
pre-connect => yes
sanitysql => select 1
idlecheck => 3600
connect_timeout => 10

Reiniciar Asterisk : service asterisk restart

asterisk -rvvvvvvvvvvvvvvvvv

CLI> odbc show

El resultado es :

Reiniciar el servidor : reboot


Ingresar a la interfase web
http://direccionip/a2billing/admin/
Usuario : root
Contraseña : changepassword

You might also like