Con esta guia he llevado a cabo una gran cantidad de instalaciones, con solo copiar y pegar tendrás en poco tiempo un PBX completo, con interfaz de administración, panel, voicemail, reporte de llamadas, tarificación de llamadas salientes, etc.
Para este efecto vamos a utilizar las siguientes aplicaciones:
- Apache2
- PHP 5
- MySQL 5
- Asterisk 1.4
- FreePBX 2.4
- A2billing 1.3.3
Aunque el manual esta dirigido a instalaciones en la distribución Debian GNU/Linux y/o derivados, se puede adaptar fácilmente a otras distribuciones.
El manual asume que el usuario root de MySQL no tiene contraseña asignada, en caso de tenerla bastará con agregar la opción -p en la parte que se creen usuarios y bases de datos.
[b]ASTERISK[/b]
Instalamos dependencias:
aptitude install g++ make libnewt-dev libncurses5-dev openssl libssl1-dev zlib1g-dev bison flex libmysqlclient15-dev \
libopenh323-dev libpt-dev libiksemel1-dev subversion build-essential linux-headers-`uname -r`
Descargamos los paquetes necesarios:
cd /usr/src
wget http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz
wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-current.tar.gz
Instalamos cada uno:
Libpri:
cd /usr/src
tar zvxf libpri-1.4-current.tar.gz
cd libpri-1.4.3
make && make install
Zaptel:
cd /usr/src
tar zvxf zaptel-1.4-current.tar.gz
cd zaptel-1.4.10.1
./configure
make && make install && make config
Asterisk:
cd /usr/src
tar zvxf asterisk-1.4-current.tar.gz
cd asterisk-1.4.20
./configure
make && make install && make samples && make config
Asterisk Addons:
cd /usr/src
tar zvxf asterisk-addons-1.4-current.tar.gz
cd asterisk-addons-1.4.7
./configure
make && make install && make samples
Creamos un usuario para asterisk:
mkdir /var/run/asterisk
groupadd asterisk
useradd -c "asterisk PBX" -d /var/lib/asterisk -g asterisk asterisk
chown asterisk /var/run/asterisk
chgrp asterisk /var/run/asterisk
chmod 770 /var/run/asterisk
[b]FREEPBX[/b]
Descargamos FreePBX:
cd /usr/src
wget http://mirror.freepbx.org/freepbx-2.4.0.tar.gz
tar zvxf freepbx-2.4.0.tar.gz
Instalamos dependencias:
aptitude install libxml2 libxml2-dev libtiff4 libtiff4-dev apache2 \
apache2-dev mysql-client mysql-server php5 php-pear php5-mysql php5-gd \
perl libaudiofile-dev curl sox apache2 apache2-dev unzip lynx ncftp \
mime-construct libphp-jpgraph
pear install DB
perl -MCPAN -e "install Net::Telnet"
perl -MCPAN -e "install IPC::Signal"
perl -MCPAN -e "install Proc::WaitStat"
Configuramos la base de datos (MySQL):
mysqladmin create asterisk
mysqladmin create asteriskcdrdb
mysql -u root asteriskcdrdb < /usr/src/freepbx-2.4.0/SQL/cdr_mysql_table.sql
mysql -u root asterisk < /usr/src/freepbx-2.4.0/SQL/newinstall.sql
echo "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';" | mysql -u root
echo "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';" | mysql -u root
echo "flush privileges;" | mysql -u root
Configuramos Apache2:
vi /etc/apache2/envvars
export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk
Reiniciamos apache2:
/etc/init.d/apache2 reload
Modificamos los permisos:
chown -R asterisk:asterisk /var/www/
chomd -R 777 /var/www
chown -R asterisk:asterisk /var/log/asterisk
chmod -R 777 /var/log/asterisk
chown -R asterisk:asterisk /var/lib/asterisk
chmod -R 777 /var/lib/asterisk
chown -R asterisk:asterisk /usr/lib/asterisk
chmod -R 777 /usr/lib/asterisk
chown -R asterisk:asterisk /etc/asterisk
chmod -R 777 /etc/asterisk
Instalamos Freepbx:
cd /usr/src/freepbx-2.4.0
./install_amp --username=asteriskuser --password=amp109
La insterfaz de FreePBX estara accesible en http://ip.de.asterisk/admin y no se requiere usuario y contraseña. Para habilitar el usuario y contraseña debemos modificar el archivo /etc/amportal.conf
en la sección AUTHTYPE:
# AUTHTYPE: authentication type to use for web admin
# If type set to 'database', the primary AMP admin credentials will be the AMPDBUSER/AMPDBPASS above
# valid: none, database
AUTHTYPE=database
El usuario es admin y la contraseña es admin , estos parámetros pueden ser luego modificados desde la interfaz de administración de FreePBX.
Finalmente modificamos los permisos de /etc/amportal.conf :
chown -R asterisk:asterisk /etc/amportal.conf
chmod 775 /etc/amportal.conf
[b]A2BILLING[/b]
Instalamos dependencias:
aptitude install libphp-jpgraph
Descargamos a2billing:
mkdir /usr/src/a2billing
cd /usr/src/a2billing
wget http://www.asterisk2billing.org/downloads/A2Billing_1.3.3.tar.gz
tar zvxf A2Billing_1.3.3.tar.gz
Configuramos la base de datos (MySQL):
mysqladmin create mya2billing -p
echo "GRANT ALL PRIVILEGES ON mya2billing.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';" | mysql -u root
echo "flush privileges;" | mysql -u root
mysql -u asteriskuser -pamp109 mya2billing < /usr/src/a2billing/DataBase/mysql/Mysql-5.x/a2billing-mysql-schema-MYSQL.5.X-v1.3.0.sql
Copiamos el archivo de configuración al directorio de asterisk, este archivo lo modificaremos mas adelante de acuerdo a nuestras necesidades:
cp /usr/src/a2billing/a2billing.conf /etc/asterisk/
Reflejamos en /etc/asterisk/a2billing.conf los parámentros de la base de datos:
[database]
hostname = localhost
port = 3306
user = asteriskuser
password = amp109
dbname = mya2billing
dbtype = mysql
Instalamos la interfaz de administración y del usuario:
cp -Rf /usr/src/a2billing/A2Billing_UI/ /var/www/a2billing-admin
chmod -R 777 /var/www/a2billing-admin/templates_c/
cp -Rf /usr/src/a2billing/A2BCustomer_UI/ /var/www/customer
chmod -R 777 /var/www/customer/templates_c/
Configuramos la música en espera:
mkdir /var/lib/asterisk/mohmp3/
mkdir /var/lib/asterisk/mohmp3/acc_1
mkdir /var/lib/asterisk/mohmp3/acc_2
mkdir /var/lib/asterisk/mohmp3/acc_3
mkdir /var/lib/asterisk/mohmp3/acc_4
mkdir /var/lib/asterisk/mohmp3/acc_5
mkdir /var/lib/asterisk/mohmp3/acc_6
mkdir /var/lib/asterisk/mohmp3/acc_7
mkdir /var/lib/asterisk/mohmp3/acc_8
mkdir /var/lib/asterisk/mohmp3/acc_9
chmod 777 /var/lib/asterisk/mohmp3/acc_*
chown asterisk:asterisk /var/lib/asterisk/mohmp3/acc_*
mkdir /var/log/asterisk/a2billing
chown asterisk:asterisk /var/log/asterisk/a2billing
mkdir /var/lib/asterisk/sounds/a2billing
chmod 777 /var/lib/asterisk/sounds/a2billing
vi /etc/asterisk/musiconhold_custom.conf
acc_1 => mp3:/var/lib/asterisk/mohmp3/acc_1
acc_2 => mp3:/var/lib/asterisk/mohmp3/acc_2
acc_3 => mp3:/var/lib/asterisk/mohmp3/acc_3
acc_4 => mp3:/var/lib/asterisk/mohmp3/acc_4
acc_5 => mp3:/var/lib/asterisk/mohmp3/acc_5
acc_6 => mp3:/var/lib/asterisk/mohmp3/acc_6
acc_7 => mp3:/var/lib/asterisk/mohmp3/acc_7
acc_8 => mp3:/var/lib/asterisk/mohmp3/acc_8
acc_9 => mp3:/var/lib/asterisk/mohmp3/acc_9
Instalamos los scripts AGI de a2billing:
cp /usr/src/a2billing/A2Billing_AGI/a2billing.php /var/lib/asterisk/agi-bin/
cp -Rf /usr/src/a2billing/A2Billing_AGI/libs_a2billing/ /var/lib/asterisk/agi-bin/
chmod a+x /var/lib/asterisk/agi-bin/a2billing.php
Copiamos los archivos de sonido:
cp /usr/src/a2billing/addons/sounds/* /var/lib/asterisk/sounds/
cp /usr/src/a2billing/addons/sounds/en/* /var/lib/asterisk/sounds/
cp /usr/src/a2billing/addons/sounds/es/* /var/lib/asterisk/sounds/es/
Configuramos la rotación de los archivos de log:
cp /usr/src/a2billing/addons/logrotate/a2billing /etc/logrotate.d/
Referenciamos la configuración de a2billing para SIP e IAX2:
vi /etc/asterisk/sip_general_customs.conf
language=es
disallow=all
allow=ilbc
allow=g729
allow=g723
allow=gsm
allow=h261
allow=h263
allow=h263p
allow=h264
allow=alaw
allow=ulaw
videosupport=yes
maxcallbitrate=384
t38pt_udptl = yes
#include sip_a2billing.conf
vi /etc/asterisk/iax_general_customs.conf
language=es
disallow=all
allow=ilbc
allow=g729
allow=g723
allow=gsm
allow=h261
allow=h263
allow=h263p
allow=h264
#include iax_a2billing.conf
vi /etc/asterisk/a2billing.conf
[webui]
buddy_sip_file = /etc/asterisk/sip_a2billing.conf
buddy_iax_file = /etc/asterisk/iax_a2billing.conf
Mi archivo a2billing luce así:
cat /etc/asterisk/a2billing.conf
:
; Configuracion de la base de datos
[database]
hostname = localhost
port = 3306
user = asteriskuser
password = amp109
dbname = mya2billing
dbtype = mysql
; Configuracion global
[global]
interval_len_cardnumber = 4-15
len_aliasnumber = 10
len_voucher = 15
base_currency = usd
invoice_image = asterisk01.jpg
didbilling_daytopay = 5
admin_email = bofh@midominio.com
manager_host = localhost
manager_username = admin
manager_secret = admin
[callback]
context_callback = a2billing-callback
extension = 1000
sec_wait_before_callback = 10
sec_avoid_repeate = 30
timeout = 20
answer_call = yes
nb_predictive_call = 10
nb_day_wait_before_retry = 1
context_preditctivedialer = a2billing-predictivedialer
predictivedialer_maxtime_tocall = 5400
callerid = 123456
all_callback_tariff = 1
id_server_group = 1
callback_audio_intro = prepaid-callback_intro
; Parametros de la interfaz del usuario
[webcustomerui]
signup_page_url = http://midominio.com/a2billing-admin/signup/index.php
paymentmethod = no
personalinfo = yes
customerinfo = yes
sipiaxinfo = yes
cdr = yes
invoice = yes
voucher = no
paypal = no
speeddial = yes
did = yes
ratecard = yes
simulator = yes
callback = yes
predictivedialer = no
webphone = yes
webphoneserver = localhost
callerid = yes
password = yes
limit_callerid = 5
error_email = bofh@midominio.com
return_url_distant_login =
return_url_distant_forgetpassword =
;SIP & IAX
[sip-iax-info]
sip_iax_info_trunkname = a2billing
sip_iax_info_allowcodec = ilbc,gsm,g723,g729,ulaw,alaw
sip_iax_info_host = midominio.com
iax_additional_parameters = "canreinvite = no"
sip_additional_parameters = "trustrpid = yes | sendrpid = yes | canreinvite = no"
[epayment_method]
enable = no
http_server = "http://www.midominio.com"
https_server = "http://www.midominio.com"
http_cookie_domain = 26.63.165.200
https_cookie_domain = 26.63.165.200
http_cookie_path = "/customer/"
https_cookie_path = "/customer/"
dir_ws_http_catalog = "/customer/"
dir_ws_https_catalog = "/customer/"
enable_ssl = yes
http_domain = 26.63.165.200
dir_ws_http = "/var/www/customer/"
purchase_amount = 1:2:5:10:20
item_name = "Compra de Credito"
currency_code = USD
paypal_payment_url = "https://secure.paypal.com/cgi-bin/webscr"
paypal_verify_url = "ssl://www.paypal.com"
authorize_payment_url = "https://secure.authorize.net/gateway/transact.dll"
store_name = Asterisk2Billing
transaction_key = asdf1212fasd121554sd4f5s45sdf
moneybookers_secretword = a2billing
; Modulo Signup
[signup]
enable_signup = 0
enable_captcha = YES
credit = 0
callplan_id_list = 1, 2
activated = no
simultaccess = 0
typepaid = 0
creditlimit = 0
runservice = 0
enableexpire = 0
expirationdate =
expiredays = 0
sip_account = yes
iax_account = yes
activatedbyuser = no
urlcustomerinterface = http://midominio.com/customer/
reload_asterisk_if_sipiax_created = yes
; Backup
[backup]
backup_path = /tmp
gzip_exe = /bin/gzip
gunzip_exe = /bin/gunzip
mysqldump = /usr/bin/mysqldump
pg_dump = /usr/bin/pg_dump
mysql = /usr/bin/mysql
psql = /usr/bin/psql
[webui]
buddy_sip_file = /etc/asterisk/sip_a2billing.conf
buddy_iax_file = /etc/asterisk/iax_a2billing.conf
api_security_key = Ae87v56zzl34v
api_ip_auth = 127.0.0.1
email_admin = hofh@midominio.com
dir_store_mohmp3 = /var/lib/asterisk/mohmp3
num_musiconhold_class = 10
show_help = NO
my_max_file_size_import = 1024000 ; 1 MG
dir_store_audio = /var/lib/asterisk/sounds/a2billing
my_max_file_size_audio=3072000 ; in bytes
file_ext_allow = gsm, mp3, wav
file_ext_allow_musiconhold = mp3
link_audio_file = NO
monitor_path = /var/spool/asterisk/monitor
monitor_formatfile = gsm
show_icon_invoice = YES
show_top_frame = NO
currency_choose = usd, eur, cad, hkd
card_export_field_list = id, username, useralias, lastname, credit, tariff, activated, language, inuse, currency, sip_buddy, iax_buddy, nbused, mac_addr
voucher_export_field_list = id, voucher, credit, tag, activated, usedcardnumber,
usedate, currency
advanced_mode = NO
delete_fk_card = yes
type = friend
allow = ilbc,gsm,g723,g729,h263,h264,h261,ulaw,alaw,
context = a2billing
nat = "yes"
amaflag = billing
qualify = "yes"
host = dynamic
dtmfmode = RFC2833
[log-files]
cront_alarm = /var/log/asterisk/a2billingcront_a2b_alarm.log
cront_autorefill = /var/log/asterisk/a2billingcront_a2b_autorefill.log
cront_batch_process = /var/log/asterisk/a2billingcront_a2b_batch_process.log
cront_bill_diduse = /var/log/asterisk/a2billingcront_a2b_bill_diduse.log
cront_subscriptionfee = /var/log/asterisk/a2billingcront_a2b_subscription_fee.log
cront_currency_update = /var/log/asterisk/a2billingcront_a2b_currency_update.log
cront_invoice = /var/log/asterisk/a2billingcront_a2b_invoice.log
cront_check_account = /var/log/asterisk/a2billingcront_a2b_check_account.log
paypal = /var/log/asterisk/a2billinga2billing_paypal.log
epayment = /var/log/asterisk/a2billinga2billing_epayment.log
api_ecommerce = /var/log/asterisk/a2billingapi_ecommerce_request.log
api_callback = /var/log/asterisk/a2billingapi_callback_request.log
api_callback = /var/log/asterisk/a2billingapi_callback_request.log
agi = /var/log/asterisk/a2billinga2billing_agi.log
; Configuracion de AGI
[agi-conf1]
debug = 1
asterisk_version = 1_4
answer_call = NO
play_audio = YES
say_goodbye = NO
play_menulanguage = NO
force_language =
intro_prompt =
min_credit_2call = 0
min_duration_2bill = 0
notenoughcredit_cardnumber = YES
notenoughcredit_assign_newcardnumber_cid = YES
use_dnid = YES
no_auth_dnid = 2400,2300
number_try = 1
force_callplan_id =
say_balance_after_auth = NO
say_balance_after_call = NO
say_rateinitial = NO
say_timetocall = NO
auto_setcallerid = YES
force_callerid =
cid_sanitize = NO
cid_enable = NO
cid_askpincode_ifnot_callerid = NO
cid_auto_assign_card_to_cid = YES
cid_auto_create_card = NO
cid_auto_create_card_len = 10
cid_auto_create_card_typepaid = POSTPAY
cid_auto_create_card_credit = 0
cid_auto_create_card_credit_limit = 1000
cid_auto_create_card_tariffgroup = 6
callerid_authentication_over_cardnumber = NO
sip_iax_friends = NO
sip_iax_pstn_direct_call_prefix = 9191
sip_iax_pstn_direct_call = YES
ivr_voucher = NO
ivr_voucher_prefix = 8181
jump_voucher_if_min_credit = NO
extracharge_did =
extracharge_fee =
extracharge_buyfee =
international_prefixes = 011,00,09
dialcommand_param = "|60|iCHgLiwWTt(%timeout%:61000:30000)"
dialcommand_param_sipiax_friend = "|60|HRgirL(3600000:61000:30000)"
switchdialcommand = NO
failover_recursive_limit = 2
maxtime_tocall_negatif_free_route = 5400
send_reminder = NO
record_call = NO
monitor_formatfile = gsm
agi_force_currency =
currency_association = usd:dollars,mxn:pesos,eur:euros,all:credit
file_conf_enter_destination = prepaid-enter-dest
file_conf_enter_menulang = prepaid-menulang2
callback_bill_1stleg_ifcall_notconnected = YES
La interfaz de administración de a2billing estará disponible en http://ip.de.asterisk/a2billing-admin los datos para el acceso son:
username : admin
password : mypassword
username : root
password : myroot
La interfaz de usuario de a2billing estará disponible en http://ip.de.asterisk/customer
[b]INTEGRAR FREEPBX CON A2BILLING PARA FACTURAR LAS LLAMADAS SALIENTES DE CADA EXTENSIÓN[/b]
Bastante útil para conocer el gasto monetario realizado por cada extensión creada en FreePBX.
Para poder habilitar esta funcionalidad seguiremos el siguiente procedimiento en A2billing:
1.- Creamos un provider, luego un trunk que lleve el nombre del troncal que usaremos para la salida de las llamadas;
2.- Creamos un Call Plan y agregamos ratecards en el;
3.- Agregamos las tarifas en el ratecard;
4.- Creamos un customer, le asignamos el Call Plan que hicimos antes y le acreditamos saldo.
En FreePBX:
1.- Crear un "Custom Trunk" en Setup > Trunks > Add Custom Trunk y configurarlo con la siguiente información:
Outbound Caller ID:
Never Override CallerID :
Maximun Channels :
Disable Trunk:
Monitor Trunk Failures:
Dial Rules : Agregamos las reglas de marcado para este troncal, por ejemplo:
2XXXXXX
3XXXXXX
0NXXXXXXX
Dial Rules Wizards:
Outboud Dial Prefix:
Custom Dial String: A2B/1
2.- En Outboud Routes especificamos como troncal de salida a A2B/1 para cada ruta que deseamos conocer el gasto;
3.- En cada extensión debemos llenar el campo accountcode con el número de tarjeta creado en a2billing.
4.- Agregamos en /etc/asterisk/extensions_custom.conf lo siguiente:
vi /etc/asterisk/extensions_custom.conf
[macro-dialout-trunk-predial-hook]
exten => s,1,GotoIf($["${OUT_${DIAL_TRUNK}:4:4}" = "A2B/"]?custom-freepbx-a2billing,${OUTNUM},1:2)
exten => s,2,MacroExit
[custom-freepbx-a2billing]
exten => _X.,1,DeadAGI(a2billing.php|${OUT_${DIAL_TRUNK}:8})
exten => _X.,n,Hangup()
5.- Hacemos un reload de asterisk con el comando:
/etc/init.d/asterisk restart
6.- Hacemos una llamada, esta aparecerá en la interfaz de usuario de a2billing con el valor correspondiente al tiempo hablado.
Para verificar la facturación usaremos la dirección http://ip.de.asterisk/customer e ingresamos con los datos del customer creado en los pasos anteriores.
Si queremos escuchar el saldo de la cuenta utilizada por una extensión de a2billing procederemos de la siguiente manera:
cd /var/lib/asterisk/agi-bin
cp a2billing.php balance.php
cp -r libs_a2billing balance
Editamos balance.php y cambiamos todas las referencias con el texto [b]libs_a2billing[/b] por [b]balance[/b], de igual manera hacemos en [b]/var/lib/asterisk/agi-bin/balance/Class.A2Billing.php[/b] y reemplazamos [b]a2billing.conf[/b] por [b]balance.conf[/b]
cd /etc/asterisk/
cp a2billing.conf balance.conf
Editamos las siguientes opciones en balance.conf
say_balance_after_auth=YES
use_dnid=NO
answer_call=YES
Editamos /etc/asteris/extensions_custom.conf para que quede de esta manera:
[macro-dialout-trunk-predial-hook]
exten => s,1,GotoIf($["${OUT_${DIAL_TRUNK}:4:4}" = "A2B/"]?custom-freepbx-a2billing,${OUTNUM},1:3)
exten => s,2,GotoIf($["${OUT_${DIAL_TRUNK}:4:8}" = "BALANCE/"]?custom-balance,${OUTNUM},1:3)
exten => s,3,MacroExit
[custom-freepbx-a2billing]
exten => _X.,1,DeadAGI(a2billing.php|${OUT_${DIAL_TRUNK}:8})
exten => _X.,n,Hangup()
[custom-balance]
exten => _X.,1,DeadAGI(balance.php)
exten => _X.,n,Hangup()
En freebpx creamos un Custom trunk con la siguiente información:
Outbound Caller ID:
Never Override CallerID :
Maximun Channels :
Disable Trunk:
Monitor Trunk Failures:
Dial Rules : Agregamos el codigo para consultar el saldo, por ejemplo 123:
123
Dial Rules Wizards:
Outboud Dial Prefix:
Custom Dial String: BALANCE/1
Creamos un Outbound Route llamada balance:
Route name : balance
Dial Patterns : 123
Trunk Sequence: BALANCE/1
Aplicamos los cambios, y cuando marquemos 123 una operadora nos dirá el saldo de la cuenta de a2billing que estemos utilizando. Así podemos tener varias cuentas en a2billing y asignarle a cada usuario de freepbx un saldo o cuenta para conocer su gasto telefónico individual.
Comentarios
Ahhh. .. bueno, es
Ahhh. .. bueno, es sencillo.
Vas a la opción TRUNKS de FreePBX, creas un nuevo SIP TRUNK y agregas lo siguiente:
En el campo TRUNK NAME:
grandstream
En el campo PEER DETAILS:
type=friend
host=dynamic
username=un-usuario
secret=un-password
context=from-internal
Lo demás lo dejas en blanco.
En el grandstream configuras un profile que tenga los datos de tu servidor, esto es PROFILE NAME y SIP SERVER. En channels escribes para cada canal el usuario y contraseña que especificastes cuando creastes el trunk.
-----
Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:
[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]
(adsbygoogle = window.adsbygoogle || []).push({});
gracias
Gracias amigos por compartir y no ser mezquinos. Voy a probar a ver que tal me sale.......................
Posiblemente te sirvan estas
Posiblemente te sirvan estas dos páginas que hice hace un tiempo:
http://wiki.nutum.es/linux/asterisk/dispositivos_adicionales
http://wiki.nutum.es/linux/asterisk/servicios_adicionales
Aunque no están completas, te pueden servir.
Páginas