Asterisk/Debian : Un PBX completo a punta de copiar y pegar

Imagen de RazaMetaL

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

Imagen de RazaMetaL

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

Imagen de lradames

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