Asterisk es una implementación de código abierto para central telefónica (PBX, Private Branch eXchange o Private Business eXchange). Cuenta con un doble licenciamiento, GNU/GPL y licencia propietaria. Esta última es con el objeto de poder incluir soporte para el protocolo G.729, el cual está sujeto a las limitaciones de una patente, aunque el codificador correspondiente funciona indistintamente con una u otra versión.
Asterisk está diseñado para servir como PBX. Como cualquier PBX, se puede conectar un número determinado de teléfonos para hacer llamadas entre sí, e incluso conectar a un proveedor de VoIP o bien a una , tanto básicos como primarios.
La versión libre de Asterisk incluye todas las funcionalidades de las más costosas alternativas de código cerrado, como son correo de voz, llamada en conferencia, respuesta interactiva de voz (a través de menús del teléfono) y distribución automática de llamadas.
#!/bin/bash
#######################################################
# Asterisk-FreePBX-A2billing Auto-Instalador-Script #
# Author: Federico Pereira <info@opentecnologic.com> #
# Copyright 2009 Federico Pereira. #
#######################################################
VER_ASTERISK="1.4.22";
VER_LIBPRI="1.4.7";
VER_ADDONS="1.4.7";
VER_DAHDI="2.1.0.4+2.1.0.2";
VER_FREEPBX="2.5.1";
VER_A2BILLING="1.3.4";
KERNEL_VERSION=`uname -r`
KERNEL_VERSION=`echo ${KERNEL_VERSION} | sed -e "s/\-\(.*\)//"`
KERNEL_UP_VERSION=`echo ${KERNEL_VERSION} | sed -e "s/\(2\.[4,6]\)\(.*\)/\1/"`
clear
echo "##################################################################"
echo "# PARTE 1 - Instalando Asterisk #"
echo "### ---------------------------------------------------------- ###"
mkdir /tmp/asterisk/
# ASTERISK
wget http://downloads.digium.com/pub/asterisk/releases/asterisk-${VER_ASTERISK}.tar.gz -O /tmp/asterisk/asterisk-${VER_ASTERISK}.tar.gz
# DAHDI
wget http://downloads.digium.com/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-${VER_DAHDI}.tar.gz -O /tmp/asterisk/dahdi-linux-complete-${VER_DAHDI}.tar.gz
# LIBPRI
wget http://downloads.digium.com/pub/libpri/releases/libpri-${VER_LIBPRI}.tar.gz -O /tmp/asterisk/libpri-${VER_LIBPRI}.tar.gz
# ASTERISK ADDONS
wget http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-${VER_ADDONS}.tar.gz -O /tmp/asterisk/asterisk-addons-${VER_ADDONS}.tar.gz
#personalizacion
#mkdir -p /boot/grub/images/
wget http://www.opentecnologic.com/descargas/debpbx/.bash_login -O /root/.bash_login
wget http://www.opentecnologic.com/descargas/debpbx/dpsecurity -O /usr/local/sbin/dpsecurity
chmod +x /usr/local/sbin/dpsecurity
wget http://www.opentecnologic.com/descargas/debpbx/debpbx -O /etc/debpbx
echo "Banner /etc/debpbx" >> /etc/ssh/sshd_config
wget http://www.opentecnologic.com/descargas/debpbx/.bashrc -O /root/.bashrc
echo "+----------------------------------------------------------------+"
echo "| Paquetes necesarios para la compilacion |"
echo "+----------------------------------------------------------------+"
aptitude update
aptitude -y install linux-source-$KERNEL_VERSION kernel-package g++ libncurses5-dev linux-kernel-headers sqlite libnewt-dev libusb-dev zlib1g-dev libmysqlclient15-dev libsqlite0-dev loco mc
echo "+----------------------------------------------------------------+"
echo "| Descargando sources kernel |"
echo "+----------------------------------------------------------------+"
cd /usr/src/
tar xvjf linux-source-${KERNEL_VERSION}.tar.bz2
ln -s /usr/src/linux-source-${KERNEL_VERSION} /usr/src/linux
cd /usr/src/linux/
make oldconfig
make prepare
make prepare scripts
echo "+----------------------------------------------------------------+"
echo "| Descomprimiendo archivos temporales /usr/src/ |"
echo "+----------------------------------------------------------------+"
cd /usr/src/
tar zxvf /tmp/asterisk/asterisk-${VER_ASTERISK}.tar.gz
tar zxvf /tmp/asterisk/asterisk-addons-${VER_ADDONS}.tar.gz
tar zxvf /tmp/asterisk/libpri-${VER_LIBPRI}.tar.gz
tar zxvf /tmp/asterisk/dahdi-linux-complete-${VER_DAHDI}.tar.gz
echo "+----------------------------------------------------------------+"
echo "| Compilando Dahdi Linux |"
echo "+----------------------------------------------------------------+"
# http://www.debian-resources.org/node/129
cd /usr/src/dahdi-linux-complete-${VER_DAHDI}
make all
make install
make config
echo "+----------------------------------------------------------------+"
echo "| Compilando libpri |"
echo "+----------------------------------------------------------------+"
cd /usr/src/libpri-${VER_LIBPRI}
make install
echo "+----------------------------------------------------------------+"
echo "| Compilando Asterisk linux |"
echo "+----------------------------------------------------------------+"
cd /usr/src/asterisk-${VER_ASTERISK}
sed -i "s/\(chmod(template*\)\(.*\)/\/* \1\2 *\//" /usr/src/asterisk-${VER_ASTERISK}/apps/app_voicemail.c
sed -i "s/\(chmod(newtmp*\)\(.*\)/\/* \1\2 *\//" /usr/src/asterisk-${VER_ASTERISK}/apps/app_voicemail.c
sed -i "s/\(chmod(tmptxtfile*\)\(.*\)/\/* \1\2 *\//" /usr/src/asterisk-${VER_ASTERISK}/apps/app_voicemail.c
sed -i "s/\(res = ast_play_and_wait(chan, \"vm-no\");\)/res = say_and_wait(chan, 0 , chan->language);/" /usr/src/asterisk-${VER_ASTERISK}/apps/app_voicemail.c
./configure
MAKEOPTS="/usr/src/asterisk-${VER_ASTERISK}/menuselect.makeopts"
echo 'MENUSELECT_APPS=app_ivrdemo app_osplookup app_rpt app_skel' >> ${MAKEOPTS}
echo 'MENUSELECT_CDR=cdr_odbc cdr_pgsql cdr_radius cdr_tds' >> ${MAKEOPTS}
echo 'MENUSELECT_CHANNELS=chan_alsa chan_gtalk chan_h323 chan_misdn chan_nbs chan_vpb' >> ${MAKEOPTS}
echo 'MENUSELECT_CODECS=codec_ilbc codec_speex codec_zap' >> ${MAKEOPTS}
echo 'MENUSELECT_FORMATS=format_ogg_vorbis' >> ${MAKEOPTS}
echo 'MENUSELECT_FUNCS=func_curl func_odbc' >> ${MAKEOPTS}
echo 'MENUSELECT_PBX=pbx_gtkconsole' >> ${MAKEOPTS}
echo 'MENUSELECT_RES=res_config_odbc res_config_pgsql res_crypto res_jabber res_odbc res_snmp' >> ${MAKEOPTS}
echo 'MENUSELECT_OPTS_app_voicemail=' >> ${MAKEOPTS}
echo 'MENUSELECT_CFLAGS=LOADABLE_MODULES' >> ${MAKEOPTS}
echo 'MENUSELECT_EMBED=apps cdr channels codecs formats funcs pbx res' >> ${MAKEOPTS}
echo 'MENUSELECT_CORE_SOUNDS=CORE-SOUNDS-EN-WAV CORE-SOUNDS-EN-ULAW CORE-SOUNDS-EN-ALAW CORE-SOUNDS-EN-GSM CORE-SOUNDS-EN-G729 CORE-SOUNDS-EN-G722' >> ${MAKEOPTS}
echo 'MENUSELECT_MOH=MOH-FREEPLAY-WAV MOH-FREEPLAY-ULAW MOH-FREEPLAY-ALAW MOH-FREEPLAY-GSM MOH-FREEPLAY-G729 MOH-FREEPLAY-G722' >> ${MAKEOPTS}
echo 'MENUSELECT_EXTRA_SOUNDS=EXTRA-SOUNDS-EN-WAV EXTRA-SOUNDS-EN-ULAW EXTRA-SOUNDS-EN-ALAW EXTRA-SOUNDS-EN-GSM EXTRA-SOUNDS-EN-G729 EXTRA-SOUNDS-EN-G722' >> ${MAKEOPTS}
echo 'MENUSELECT_BUILD_DEPS=res_adsi chan_local res_indications app_meetme res_monitor res_smdi res_features' >> ${MAKEOPTS}
make install
make samples
echo "+----------------------------------------------------------------+"
echo "| Compilando Addons Asterisk |"
echo "+----------------------------------------------------------------+"
cd /usr/src/asterisk-addons-${VER_ADDONS}
./configure
make install
echo "+----------------------------------------------------------------+"
echo "| Cargando link simbolico para (Modules) |"
echo "+----------------------------------------------------------------+"
ln -s /lib/modules/${KERNEL_VERSION}/ /lib/modules/`uname -r`/asterisk
depmod
echo dahdi_dummy >> /etc/modules
###################################################################################################
###################################################################################################
###################################################################################################
clear
echo "##################################################################"
echo "# PARTE 2 - Instalando FreePBX #"
echo "### ---------------------------------------------------------- ###"
aptitude update
aptitude install -y apache2 php5 php5-cli mysql-server-5.0 php-pear php5-mysql php-db libapache2-mod-php5 php5-gd php5-curl
mkdir /tmp/freepbx/
wget http://www.opentecnologic.com/descargas/debpbx/freepbx-${VER_FREEPBX}.tar.gz -O /tmp/freepbx/freepbx-${VER_FREEPBX}.tar.gz
cd /usr/src
tar zxvf /tmp/freepbx/freepbx-${VER_FREEPBX}.tar.gz
cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini-orig
sed -e 's/upload_max_filesize = .*/upload_max_filesize = 128M/' /etc/php5/apache2/php.ini > /tmp/php.ini
cat /tmp/php.ini > /etc/php5/apache2/php.ini
sed -e 's/memory_limit = .*/memory_limit = 1100M/' /etc/php5/apache2/php.ini > /tmp/php.ini
cat /tmp/php.ini > /etc/php5/apache2/php.ini
sed -i "s/\(magic_quotes_gpc *= *\)\(.*\)/\1Off/" /etc/php5/apache2/php.ini
ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3
adduser asterisk --quiet --no-create-home --disabled-password --gecos "asterisk PBX" --home /var/lib/asterisk
adduser www-data asterisk
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf-orig
sed -i "s/\(^User *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf
sed -i "s/\(^Group *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf
SQL_RESULT=`echo "show databases;" | mysql -u root 2>&1`
SQL_RESULT=`echo "${SQL_RESULT}" | sed "s/\(.*\)\(Access denied\)\(.*\)/\2/"`
SQL_ROOT_PASSWORD=""
if [ "${SQL_RESULT}" = "Access denied" ]; then
echo "Parece que usted ha especificado una contraseña de root para MySQL"
fi
key=""
while [ "${SQL_RESULT}" = "Access denied" ];do
read -p "Por favor, introduzca la contraseña de root de MySQL? " SQL_ROOT_PASSWORD
if [ "${SQL-ROOT_PASSWORD}" != "" ]; then
SQL_ROOT_PASSWORD="-p${SQL_ROOT_PASSWORD}"
fi
SQL_RESULT=`echo "show databases;" | mysql -u root ${SQL_ROOT_PASSWORD} 2>&1`
SQL_RESULT=`echo "${SQL_RESULT}" | sed "s/\(.*\)\(Access denied\)\(.*\)/\2/"`
if [ "${SQL_RESULT}" = "Access denied" ]; then
echo "ERROR: La contraseña introducida no parece ser correcta."
fi
done
echo "CREATE DATABASE IF NOT EXISTS asteriskcdrdb;" | mysql -u root ${SQL_ROOT_PASSWORD}
echo "CREATE DATABASE IF NOT EXISTS asterisk;" | mysql -u root ${SQL_ROOT_PASSWORD}
echo "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';" | mysql -u root ${SQL_ROOT_PASSWORD}
echo "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';" | mysql -u root ${SQL_ROOT_PASSWORD}
sed -i "s/\(CREATE TABLE cdr\)/DROP TABLE IF EXISTS \`cdr\`;\n\1/" /usr/src/freepbx-${VER_FREEPBX}/SQL/cdr_mysql_table.sql
mysql -u asteriskuser -pamp109 asteriskcdrdb < /usr/src/freepbx-${VER_FREEPBX}/SQL/cdr_mysql_table.sql
mysql -u asteriskuser -pamp109 asterisk < /usr/src/freepbx-${VER_FREEPBX}/SQL/newinstall.sql
cp /etc/asterisk/asterisk.conf /etc/asterisk/asterisk.conf.orig
sed -i "s/\(astrundir *=> *\)\(.*\)/\1\/var\/run\/asterisk/" /etc/asterisk/asterisk.conf
mkdir /var/run/asterisk
chown -R asterisk:asterisk /var/run/asterisk
/usr/sbin/asterisk
cp /usr/src/freepbx-${VER_FREEPBX}/install_amp /usr/src/freepbx-${VER_FREEPBX}/install_amp-orig
sed -i "s/\(^\$webroot*\)\(.*\)/\1 = \"\/var\/www\/sites\/plataforma\";/" /usr/src/freepbx-${VER_FREEPBX}/install_amp
chmod 755 /usr/src/freepbx-${VER_FREEPBX}/install_amp
LOCAL_IP=`ifconfig eth0 | egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}' | egrep -v '255|(127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})'`
sed -i "s/xx.xx.xx.xx/${LOCAL_IP}/g" "/usr/src/freepbx-${VER_FREEPBX}/install_amp"
chmod 755 /usr/src/freepbx-${VER_FREEPBX}/install_amp
cd /usr/src/freepbx-${VER_FREEPBX}/
./install_amp
/usr/src/freepbx-${VER_FREEPBX}/apply_conf.sh
asteriskPID=$(cat /var/run/asterisk/asterisk.pid)
kill -9 $(cat /var/run/asterisk/asterisk.pid)
echo "un momento ..."
sleep 8;
sed -i "s/\(RedirectMatch*\)\(.*\)//" /etc/apache2/sites-enabled/000-default
sed -i "s/\(DocumentRoot *\)\(.*\)/\1\/var\/www\/sites\/plataforma\//" /etc/apache2/sites-enabled/000-default
/etc/init.d/apache2 restart
chown -R asterisk:asterisk /etc/asterisk
chmod 770 /etc/asterisk/
chown -R asterisk:asterisk /var/lib/asterisk/
chmod 770 /var/lib/asterisk/
mkdir -p /var/www/{sites,www-virtuales,www-virtualesssl}
chown -R asterisk:asterisk /var/www/
chown -R asterisk:asterisk /var/www/sites/
cp /var/www/sites/plataforma/admin/modules/dashboard/images/notify_* /var/www/sites/plataforma/admin/images/
echo "+----------------------------------------------------------------+"
echo "| Startup script (Asterisk+FrePBX) |"
echo "| /etc/init.d/freepbx [start|stop|restart] |"
echo "+----------------------------------------------------------------+"
STARTUP_SCRIPT="/etc/init.d/freepbx";
echo "Creating file ${STARTUP_SCRIPT} ...";
echo '#!/bin/bash' > ${STARTUP_SCRIPT}
echo '' >> ${STARTUP_SCRIPT}
echo 'AMPORTAL_BIN=/usr/local/sbin/amportal' >> ${STARTUP_SCRIPT}
echo '' >> ${STARTUP_SCRIPT}
echo 'if [ ! -x ${AMPORTAL_BIN} ]; then' >> ${STARTUP_SCRIPT}
echo ' echo "error : amportal binary can not be found (${AMPORTAL_BIN})"' >> ${STARTUP_SCRIPT}
echo ' exit 0' >> ${STARTUP_SCRIPT}
echo 'fi' >> ${STARTUP_SCRIPT}
echo '' >> ${STARTUP_SCRIPT}
echo '' >> ${STARTUP_SCRIPT}
echo 'start() {' >> ${STARTUP_SCRIPT}
echo ' echo "Starting FreePBX ..."' >> ${STARTUP_SCRIPT}
echo ' ${AMPORTAL_BIN} start' >> ${STARTUP_SCRIPT}
echo '}' >> ${STARTUP_SCRIPT}
echo '' >> ${STARTUP_SCRIPT}
echo 'stop() {' >> ${STARTUP_SCRIPT}
echo ' echo "Stopping FreePBX ..."' >> ${STARTUP_SCRIPT}
echo ' ${AMPORTAL_BIN} stop' >> ${STARTUP_SCRIPT}
echo '}' >> ${STARTUP_SCRIPT}
echo '' >> ${STARTUP_SCRIPT}
echo 'case "$1" in' >> ${STARTUP_SCRIPT}
echo ' start)' >> ${STARTUP_SCRIPT}
echo ' start' >> ${STARTUP_SCRIPT}
echo ' ;;' >> ${STARTUP_SCRIPT}
echo '' >> ${STARTUP_SCRIPT}
echo ' stop)' >> ${STARTUP_SCRIPT}
echo ' stop' >> ${STARTUP_SCRIPT}
echo ' ;;' >> ${STARTUP_SCRIPT}
echo '' >> ${STARTUP_SCRIPT}
echo ' restart)' >> ${STARTUP_SCRIPT}
echo ' stop' >> ${STARTUP_SCRIPT}
echo ' start' >> ${STARTUP_SCRIPT}
echo ' ;;' >> ${STARTUP_SCRIPT}
echo '' >> ${STARTUP_SCRIPT}
echo ' *)' >> ${STARTUP_SCRIPT}
echo ' echo $"Usage: $0 {start|stop|restart}"' >> ${STARTUP_SCRIPT}
echo ' exit 1' >> ${STARTUP_SCRIPT}
echo 'esac' >> ${STARTUP_SCRIPT}
echo '' >> ${STARTUP_SCRIPT}
echo 'exit 0' >> ${STARTUP_SCRIPT}
chmod 755 ${STARTUP_SCRIPT}
echo "Update services loading at boot time..."
update-rc.d freepbx defaults
sed -i "s/\(AUTHTYPE *= *\)\(.*\)/\1database/" /etc/amportal.conf
amportal restart
echo "+----------------------------------------------------------------+"
echo "| Instalando Sonidos |"
echo "+----------------------------------------------------------------+"
cd /var/lib/asterisk/sounds/
wget http://asterio.com.ar/resources/downloads/ThaisaC-core-sounds-sln-1.4.12.1.tar.gz
wget http://asterio.com.ar/resources/downloads/ThaisaC-core-sounds-wav-1.4.12.1.tar.gz
wget http://asterio.com.ar/resources/downloads/ThaisaC-core-sounds-gsm-1.4.12.1.tar.gz
wget http://asterio.com.ar/resources/downloads/ThaisaC-core-sounds-g729-1.4.12.1.tar.gz
wget http://asterio.com.ar/resources/downloads/ThaisaC-extra-sounds-sln-1.4.12.tar.gz
wget http://asterio.com.ar/resources/downloads/ThaisaC-extra-sounds-wav-1.4.12.tar.gz
wget http://asterio.com.ar/resources/downloads/ThaisaC-extra-sounds-gsm-1.4.12.tar.gz
wget http://asterio.com.ar/resources/downloads/ThaisaC-extra-sounds-g729-1.4.12.tar.gz
tar xzvf ThaisaC-core-sounds-sln-1.4.12.1.tar.gz
tar xzvf ThaisaC-core-sounds-wav-1.4.12.1.tar.gz
tar xzvf ThaisaC-core-sounds-gsm-1.4.12.1.tar.gz
tar xzvf ThaisaC-core-sounds-g729-1.4.12.1.tar.gz
tar xzvf ThaisaC-extra-sounds-sln-1.4.12.tar.gz
tar xzvf ThaisaC-extra-sounds-wav-1.4.12.tar.gz
tar xzvf ThaisaC-extra-sounds-gsm-1.4.12.tar.gz
tar xzvf ThaisaC-extra-sounds-g729-1.4.12.tar.gz
chown -R asterisk:asterisk /var/lib/asterisk/sounds/
echo "+----------------------------------------------------------------+"
echo "| Instalando Modulos |"
echo "+----------------------------------------------------------------+"
cd /var/www/sites/plataforma/admin/modules
wget http://www.opentecnologic.com/descargas/debpbx/configeditor-1.0.3.tgz
tar -xzvf configeditor-1.0.3.tgz
rm -f configeditor-1.0.3.tgz
wget http://www.opentecnologic.com/descargas/debpbx/phpmyadmin-2.11.9.4.1.tgz
tar -xzvf phpmyadmin-2.11.9.4.1.tgz
rm -f phpmyadmin-2.11.9.4.1.tgz
wget http://www.opentecnologic.com/descargas/debpbx/sysinfo-2.5.5.tgz
tar -xzvf sysinfo-2.5.5.tgz
rm -f sysinfo-2.5.5.tgz
wget http://www.opentecnologic.com/descargas/debpbx/vmailadmin-2.5.7.tgz
tar -xzvf vmailadmin-2.5.7.tgz
rm -f vmailadmin-2.5.7.tgz
###################################################################################################
###################################################################################################
###################################################################################################
clear
echo "##################################################################"
echo "# PARTE 3 - Instalando A2Billing #"
echo "### ---------------------------------------------------------- ###"
mkdir -p /usr/src/a2billing/
cd /usr/src/a2billing/
wget http://www.asterisk2billing.org/downloads/A2Billing_${VER_A2BILLING}.tar.gz -O /usr/src/a2billing/A2Billing_${VER_A2BILLING}.tar.gz
tar xzvf A2Billing_${VER_A2BILLING}.tar.gz
echo "create database mya2billing;" | mysql -u root ${SQL_ROOT_PASSWORD}
echo "GRANT ALL PRIVILEGES ON mya2billing.* TO a2billinguser@localhost IDENTIFIED BY 'a2billing';" | mysql -u root ${SQL_ROOT_PASSWORD}
mysql -u a2billinguser -pa2billing mya2billing </usr/src/a2billing/DataBase/mysql/Mysql-5.x/a2billing-mysql-schema-MYSQL.5.X-v1.3.0.sql
echo "+----------------------------------------------------------------+"
echo "| Configurando archivo a2billing.conf |"
echo "+----------------------------------------------------------------+"
cp /usr/src/a2billing/a2billing.conf /etc/asterisk
chown asterisk:asterisk /etc/asterisk/a2billing.conf
sed -i "s/\(dbtype *= *\)\(.*\)/\1mysql/" /etc/asterisk/a2billing.conf
#Create manager_custom.conf
echo "
[myasterisk]
secret = mycode
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
" >> /etc/asterisk/manager_custom.conf
echo "+----------------------------------------------------------------+"
echo "| copiando archivos |"
echo "+----------------------------------------------------------------+"
chmod 777 /etc/asterisk
cp -rf /usr/src/a2billing/A2BCustomer_UI /var/www/sites/plataforma/cliente
cd /var/www/sites/plataforma/cliente
chmod 777 templates_c
cp -rf /usr/src/a2billing/A2Billing_UI /var/www/sites/plataforma/tarifador
cd /var/www/sites/plataforma/tarifador
chmod 777 templates_c
echo "+----------------------------------------------------------------+"
echo "| creando archivos y directorios varios |"
echo "+----------------------------------------------------------------+"
cd /etc/asterisk/
touch additional_a2billing_iax.conf
touch additional_a2billing_sip.conf
touch extensions_a2billing.conf
chown asterisk:asterisk additional_a2billing_iax.conf
chown asterisk:asterisk additional_a2billing_sip.conf
echo "#include additional_a2billing_sip.conf" >> /etc/asterisk/sip_custom.conf
echo "#include additional_a2billing_iax.conf" >> /etc/asterisk/iax_custom.conf
echo "#include extensions_a2billing.conf" >> /etc/asterisk/extensions_custom.conf
echo "
[a2billing]
exten => _X.,1,Answer
exten => _X.,n,Wait(1)
exten => _X.,n,deadAGI(a2billing.php|1)
exten => _X.,n,Hangup
[a2billing-callback]
exten => _X.,1,deadAGI(a2billing.php|1|callback)
exten => _X.,n,Hangup
[a2billing-cid-callback]
exten => _X.,1,deadAGI(a2billing.php|1|cid-callback|34) ;last parameter is the callback area code 34
exten => _X.,n,Hangup
[a2billing-all-callback]
exten => _X.,1,deadAGI(a2billing.php|1|all-callback|34) ;last parameter is the callback area code 34
exten => _X.,n,Hangup
[a2billing-did]
exten => _X.,1,deadAGI(a2billing.php|1|did)
exten => _X.,2,Hangup
[a2billing-voucher]
exten => _X.,1,deadAGI(a2billing.php|1|voucher)
exten => _X.,n,Hangup
[a2users]
include => local
include => a2billing
" >> /etc/asterisk/extensions_a2billing.conf
chown asterisk:asterisk extensions_a2billing.conf
mkdir -p /var/lib/asterisk/mohmp3/acc_1
mkdir -p /var/lib/asterisk/mohmp3/acc_2
mkdir -p /var/lib/asterisk/mohmp3/acc_3
mkdir -p /var/lib/asterisk/mohmp3/acc_4
mkdir -p /var/lib/asterisk/mohmp3/acc_5
mkdir -p /var/lib/asterisk/mohmp3/acc_6
mkdir -p /var/lib/asterisk/mohmp3/acc_7
mkdir -p /var/lib/asterisk/mohmp3/acc_8
mkdir -p /var/lib/asterisk/mohmp3/acc_9
mkdir -p /var/lib/asterisk/mohmp3/acc_10
chmod -p 777 /var/lib/asterisk/mohmp3/acc_*
chown -R asterisk:asterisk /var/lib/asterisk/mohmp3/
echo "
; class definitions for a2billing
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
acc_10 => mp3:/var/lib/asterisk/mohmp3/acc_10
" >> /etc/asterisk/musiconhold_custom.conf
mkdir /var/lib/asterisk/sounds/a2billing
chmod 777 /var/lib/asterisk/sounds/a2billing
chown -R asterisk:asterisk /var/lib/asterisk/sounds/a2billing/
cp -r /usr/src/a2billing/addons/sounds/ /var/lib/asterisk/sounds/
chown -R asterisk:asterisk /var/lib/asterisk/sounds/
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 +x /var/lib/asterisk/agi-bin/a2billing.php
chown -R asterisk:asterisk /var/lib/asterisk/agi-bin
clear
echo "+----------------------------------------------------------------+"
echo "| Asterisk with FreePBX installation is finish. |"
echo "| For running asterisk+freepbx you must be use this command : |"
echo "| # /etc/init.d/freepbx start |"
echo "| |"
echo "| !! NEVER LOAD ASTERISK DIRECTLY !! |"
echo "+----------------------------------------------------------------+"
echo "+----------------------------------------------------------------+"
echo "| - Instalacion Finalizada - |"
echo "| visite http://www.opentecnologic.com/debpbx |"
echo "+----------------------------------------------------------------+"
/etc/init.d/ssh restart
exit 0
Festival es un sistema de síntesis de voz de propósito general para múltiples lenguajes desarrollado originalmente por el Centro de Investigación de Tecnologías del Lenguaje de la Universidad de Edinburgo, la Universidad Carnegie Mellon así como otros centros de enseñanza han realizado contribuciones substanciales al proyecto.
apt-get install festival festival-dev
Voz de Pedro_voz_español
wget http://forja.guadalinex.org/repositorio/frs/download.php/141/festvox-palpc16k_0.96.1_all.deb dpkg -i festvox-palpc16k_0.96.1_all.deb
Para chequear que festival esta bien instalado probemos esto.
festival festival> (intro) testival> (quit)
Nota: por la intro esta en ingles.
Poner la voz de Pedro por defecto en español neutro.
Editamos el archivo y en la line 180 agregamos: Indisys_MP_es_pa_diphone
nano /usr/share/festival/voices.scm linea:180 (Indisys_MP_es_pa_diphone .. ... ....
Reiniciamos el demonio y probamos
/etc/init.d/festival restart echo "hola colega" | festival --tts **Nota:** Para que no tenga problemas con los caracteres, ñ y los acentos: echo "cabaña, español, moño, caña, camión, tobogán, computación, limón" |iconv -f utf-8 -t iso-8859-1| festival --tts
Ejemplo de archivo sintetizado de bienvenida
echo "Bienvenido. Para hablar con operador, pulse uno; para hablar con ventas, pulse 2; sino, aguarde y sera atendido a la brevedad." | /usr/bin/text2wave -scale 1.5 -F 8000 -o /tmp/bienvenida.wav
echo "Usted, sea comunicado con DEB PBX. Si conoce el número de interno, márquelo." | iconv -f utf-8 -t iso-8859-1 | festival --tts echo "Usted, sea comunicado con DEB PBX. Si conoce el número de interno, márquelo." | iconv -f utf-8 -t iso-8859-1 | /usr/bin/text2wave -scale 1.5 -F 8000 -o /tmp/debpbx_bienvenida.wav
#INSTALANDO
#Verificar que se tiene instalado la versión de festival
dkpg -s festival
#si no está instalado instalarlo con Apt-Get
sudo apt-get install festival festival-dev
#CONFIGURANDO FESTIVAL
#Editar el archivo siguiente:
sudo emacs /etc/init.d/festival
#Buscar lo siguiente:
#! /bin/sh
# /etc/init.d/festival
#
# Init script for starting Festival as a system-wide server process.
#
# Written by David Huggins-Daines <dhd@cepstral.com>
# Comment out the next line to start a Festival server at boot time.
exit 0
# NOTE: Not just anybody can connect to your server; the list of allowed
# hostnames is a regexp. Check /usr/share/festival/festival.scm for more
y comentar
#exit 0
#Guardar el archivo con CTRL+S CTRL+G
#Editar el siguiente Archivo
sudo emacs /etc/festival.scm
#Y agregar lo siguiente:
;;; Command for Asterisk begin
(define (tts_textasterisk string mode)
"(tts_textasterisk STRING MODE)
Apply tts to STRING. This function is specifically designed for
use in server mode so a single function call may synthesize the string.
This function name may be added to the server safe functions."
(utt.send.wave.client (utt.wave.resample (utt.wave.rescale (utt.synth
(eval (list 'Utterance 'Text string))) 5) 8000)))
;;; Command for Asterisk end
#Guardar el archivo
#Editar el archivo de configuración de festival para asterisk
sudo emacs /etc/asterisk/festival.conf
#y dentro del archivo poner lo siguiente:
[general]
host=localhost
port=1314
festivalcommand=(tts_textasterisk "%s" 'file)(quit)\n
#Guardar el archivo
#Editar el archivo siguiente
sudo emacs /etc/asterisk/extensions.conf #y agregar lo siguiente
#include extensions_manual.conf
#Guardar el archivo extensions.cof
#crear el archivo extensions_manual.conf y agregar lo siguiente
exten => 111,1,Answer
exten => 111,2,Festival(Enter your Text without double quote if you want to use quote use simple quote)
exten => 111,3,Hangup
#Guardar el archivo
#EJECUTANDO
#Parar Asterisk, en este caso como se está usando freepbx pararlo con el siguiente comando
sudo amportal stop
#Reiniciar Festival
sudo /etc/init.d/festival start
#verificar que festival se haya iniciado como servidor
ps aux | grep festival
#debería regresar algo como esto
nobody 16339 0.0 1.1 56576 22920 ? Ss 00:26 0:00 /usr/bin/festival --server
#Iniciar Asterisk
sudo amportal start
#PROBANDO
#Desde una extensión del conmutador de VoIP marcar la extensión 111
#Al llamar a la extensión deberían de escuchar una voz robotizada del texto que escribieron, solo es cuestión de ajustar un poco la velocidad de lectura, y lo agudo de la voz en festival, así como cambiar el idioma de lectura.
#Si pueden abrir la consola de asterisk podrían ver algo como esto al llamar a la extensión
en voz
Accepting AUTHENTICATED call from XXX.XXX.XXX.XXX:
> requested format = ulaw,
> requested prefs = (),
> actual format = ulaw,
> host prefs = (ulaw|alaw),
> priority = mine
-- Executing [111@from-internal:1] Answer("IAX2/204-3", "") in new stack
-- Executing [111@from-internal:2] Festival("IAX2/204-3", "Enter your Text without double quote if you want to use quote use simple quote") in new stack
== Parsing '/etc/asterisk/festival.conf': Found
-- Executing [111@from-internal:3] Hangup("IAX2/204-3", "") in new stack
== Spawn extension (from-internal, 111, 3) exited non-zero on 'IAX2/204-3'
-- Executing [h@from-internal:1] Macro("IAX2/204-3", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] ResetCDR("IAX2/204-3", "w") in new stack
-- Executing [s@macro-hangupcall:2] NoCDR("IAX2/204-3", "") in new stack
-- Executing [s@macro-hangupcall:3] GotoIf("IAX2/204-3", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,6)
-- Executing [s@macro-hangupcall:6] GotoIf("IAX2/204-3", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] GotoIf("IAX2/204-3", "1?theend") in new stack
-- Goto (macro-hangupcall,s,11)
-- Executing [s@macro-hangupcall:11] Hangup("IAX2/204-3", "") in new stack
== Spawn extension (macro-hangupcall, s, 11) exited non-zero on 'IAX2/204-3' in macro 'hangupcall'
== Spawn extension (macro-hangupcall, s, 11) exited non-zero on 'IAX2/204-3'
-- Hungup 'IAX2/204-3'
#Si no les funciona o tienen algun otro error repitan el procedimiento.
#Con esto ya están casi listos para empezar a desarrollar AGIs con PHP, Perl Java o el lenguaje que más les acomode.
mas voces: http://forja.guadalinex.org/repositorio/frs/?group_id=21&release_id=110
La interfaz de mis usuarios sale en ingles, cuando doy cliente en la bandera de Espana el lenguaje no cambia. Estoy usando Debian. Lo solucionamos de la siguiente manera:
aptitude install php-gettext dpkg-reconfigure locales
Seleccionamos:
[X] es_ES ISO-8859-1 │ [X] es_ES.UTF-8 UTF-8
Y luego:
/etc/init.d/apache2 restart