Asterisk

Acerca de Asterisk.

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.

Instalación de servidor Asterisk - FreePBX

Instalación

#!/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

Asterisk - FreePBX - Festival TTS (Text to speech)

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

Tips

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
 
servidores/asterisk/asterisk_configuracion.txt · Última modificación: 2009/12/31 15:48 por fpereira
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki