Professional Documents
Culture Documents
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`
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
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"
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
Reiniciamos apache2:
/etc/init.d/apache2 reload
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
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
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/
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
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
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
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()
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
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()
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.