You are on page 1of 13

Con esta guia he llevado a cabo una gran cantidad de instalaciones, con solo copiar y pegar tendrs en poco

tiempo un PBX completo, con interfaz de administracin, panel, voicemail, reporte de llamadas, tarificacin 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 distribucin Debian GNU/Linux y/o derivados, se puede adaptar fcilmente a otras distribuciones. El manual asume que el usuario root de MySQL no tiene contrasea asignada, en caso de tenerla bastar con agregar la opcin -p en la parte que se creen usuarios y bases de datos. ASTERISK 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 linuxheaders-`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.4current.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

FREEPBX 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 IDENTIFIED BY 'amp109';" | echo "GRANT ALL PRIVILEGES IDENTIFIED BY 'amp109';" | echo "flush privileges;" |

ON asteriskcdrdb.* TO asteriskuser@localhost mysql -u root ON asterisk.* TO asteriskuser@localhost mysql -u root 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 chomd chown chmod chown chmod chown chmod chown chmod -R -R -R -R -R -R -R -R -R -R asterisk:asterisk /var/www/ 777 /var/www asterisk:asterisk /var/log/asterisk 777 /var/log/asterisk asterisk:asterisk /var/lib/asterisk 777 /var/lib/asterisk asterisk:asterisk /usr/lib/asterisk 777 /usr/lib/asterisk asterisk:asterisk /etc/asterisk 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 contrasea. Para habilitar el usuario y contrasea debemos modificar el archivo /etc/amportal.conf en la seccin 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 contrasea es admin , estos parmetros pueden ser luego modificados desde la interfaz de administracin de FreePBX. Finalmente modificamos los permisos de /etc/amportal.conf :
chown -R asterisk:asterisk /etc/amportal.conf chmod 775 /etc/amportal.conf

A2BILLING 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.Xv1.3.0.sql

Copiamos el archivo de configuracin 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 parmentros de la base de datos:


[database] hostname = localhost port = 3306 user = asteriskuser password = amp109 dbname = mya2billing dbtype = mysql

Instalamos la interfaz de administracin 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 msica en espera:


mkdir mkdir mkdir mkdir mkdir mkdir /var/lib/asterisk/mohmp3/ /var/lib/asterisk/mohmp3/acc_1 /var/lib/asterisk/mohmp3/acc_2 /var/lib/asterisk/mohmp3/acc_3 /var/lib/asterisk/mohmp3/acc_4 /var/lib/asterisk/mohmp3/acc_5

mkdir mkdir mkdir mkdir chmod chown mkdir chown mkdir chmod

/var/lib/asterisk/mohmp3/acc_6 /var/lib/asterisk/mohmp3/acc_7 /var/lib/asterisk/mohmp3/acc_8 /var/lib/asterisk/mohmp3/acc_9 777 /var/lib/asterisk/mohmp3/acc_* asterisk:asterisk /var/lib/asterisk/mohmp3/acc_* /var/log/asterisk/a2billing asterisk:asterisk /var/log/asterisk/a2billing /var/lib/asterisk/sounds/a2billing 777 /var/lib/asterisk/sounds/a2billing

vi /etc/asterisk/musiconhold_custom.conf acc_1 acc_2 acc_3 acc_4 acc_5 acc_6 acc_7 acc_8 acc_9 => => => => => => => => => mp3:/var/lib/asterisk/mohmp3/acc_1 mp3:/var/lib/asterisk/mohmp3/acc_2 mp3:/var/lib/asterisk/mohmp3/acc_3 mp3:/var/lib/asterisk/mohmp3/acc_4 mp3:/var/lib/asterisk/mohmp3/acc_5 mp3:/var/lib/asterisk/mohmp3/acc_6 mp3:/var/lib/asterisk/mohmp3/acc_7 mp3:/var/lib/asterisk/mohmp3/acc_8 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 rotacin de los archivos de log:


cp /usr/src/a2billing/addons/logrotate/a2billing /etc/logrotate.d/

Referenciamos la configuracin 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 administracin de a2billing estar disponible en http://ip.de.asterisk/a2billingadmin 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 INTEGRAR FREEPBX CON A2BILLING PARA FACTURAR LAS LLAMADAS SALIENTES DE CADA EXTENSIN Bastante til para conocer el gasto monetario realizado por cada extensin 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 informacin:
Outbound Caller ID: <dejar vacio> Never Override CallerID : <dejar vacio> Maximun Channels : <dejar vacio> Disable Trunk: <dejar vacio> Monitor Trunk Failures: <dejar vacio> Dial Rules : Agregamos las reglas de marcado para este troncal, por ejemplo: 2XXXXXX 3XXXXXX 0NXXXXXXX Dial Rules Wizards: <dejar vacio> Outboud Dial Prefix: <dejar vacio> 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 extensin debemos llenar el campo accountcode con el nmero 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-freepbxa2billing,${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 facturacin usaremos la direccin 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 extensin 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 libs_a2billing por balance, de igual manera hacemos en /var/lib/asterisk/agi-bin/balance/Class.A2Billing.php y reemplazamos a2billing.conf por balance.conf
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-freepbxa2billing,${OUTNUM},1:3)

exten => s,2,GotoIf($["${OUT_${DIAL_TRUNK}:4:8}" = "BALANCE/"]?custombalance,${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 informacin:


Outbound Caller ID: <dejar vacio> Never Override CallerID : <dejar vacio> Maximun Channels : <dejar vacio> Disable Trunk: <dejar vacio> Monitor Trunk Failures: <dejar vacio> Dial Rules : Agregamos el codigo para consultar el saldo, por ejemplo 123: 123 Dial Rules Wizards: <dejar vacio> Outboud Dial Prefix: <dejar vacio> 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 telefnico individual.

You might also like