Enviado por admin el
Aunque pueda parecer un poco prematuro hablar de la próxima versión 1.10 de Asterisk (la primera beta será liberada a final de junio de este año), en este caso se debe a la nueva aplicación ConfBridge ya presente desde la versión 1.6.X. Esta aplicación ha sido totalmente rediseñada y trae unas cuantas novedades que pueden ser de utilidad a quienes están buscando una sistema de conferencias audio con sonido de alta calidad y con bastante escalabilidad.
Como muchos de ustedes ya saben, la aplicación Meetme tiene algunas limitaciones:
-
se apoya a DAHDI para la creación de los canales audio
-
la frecuencia de muestreo es de 8 Khz
-
el numero máximo de canales utilizables son 512
ConfBridge de la versión 1.10 de Asterisk trae estas interesantes novedades:
-
se pueden mezclar canales audio con diferentes frecuencias de muestreo
-
soporta audio HD
-
viene con un archivo de configuración dedicado
-
proporciona toda una serie de comandos disponibles en la consola de Asterisk (no presentes en la versión 1.6.X)
-
permite crear menú personalizados
-
permite lanzar aplicaciones externas asociándolas a un determinada opción del menú
-
generas eventos en el AMI de Asterisk
-
funciona sin la necesidad de instalar el paquete DAHDI
-
apoyándose al codec Speex, reduce el ruido de fondo del usuario que está hablando manteniendo la calidad del habla; esto antes de mezclar el canal audio en la conferencia
En este articulo veremos como instalar la versión 1.10 de Astersik orientada a su utilizo como sistema de conferencias audio.
En un sistema CentOS 5.6 32bit, versión servidor, antes que nada actualizaremos el sistema:
yum update
Si se ha actualizado el Kernel del sistema, reiniciaremos el servidor:
reboot
luego instalaremos unos cuantos paquetes para compilar las fuentes de los distintos programas:
yum install gcc ncurses ncurses-devel make gcc-c++ libtermcap libtermcap-devel zlib zlib-devel libtool bison bison-devel openssl-devel bzip2 bzip2-devel wget newt newt-devel subversion libxml2 libxml2-devel
Instalamos Speex desde las fuentes.
Unas dependencias:
yum install libogg libogg-devel
cd /usr/src
wget http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz
Para descomprimirlo:
tar -xf speex-1.2rc1.tar.gz
Se entra en la carpeta creada y se compila:
cd speex-1.2rc1
./configure --prefix=/usr
make
make install
Luego SOX:
cd /usr/src
wget http://ufpr.dl.sourceforge.net/sourceforge/sox/sox-14.3.2.tar.gz
se descomprime:
tar -xf sox-14.3.1.tar.gz
Se Entra en la carpeta:
cd sox-14.3.1
y se compila:
./configure --prefix=/usr
make
make install
Descargamos la versión 1.10 de Asterisk:
cd /usr/src
svn checkout http://svn.digium.com/svn/asterisk/trunk asterisk
entramos en la carpeta:
cd asterisk
empezamos la compilación:
./configure
make menuselect
En la ventana que aparece, bajo el menú Applications encontraremos la aplicación app_confbridge:
En el menú Codec Trabslators, averiguamos que esté presente el codex Speex:
En los menus “Core Sound Packages”, “Music on Hold File Packages” y “Extras Sound Packages” seleccionamos todos los paquetes disponibles. Guardamos los cambios y seguimos con la compilación:
make
make install
make samples
make config
Terminada la compilación, podemos iniciar Asterisk:
/etc/init.d/asterisk start
averiguamos que la aplicación ConfBridge este disponible:
asterisk -rvvvvvvvvvvvvvv
CLI> module unload app_confbridge.so
Unloaded app_confbridge.so
== Unregistered application 'ConfBridge'
== Unregistered custom function CONFBRIDGE
== Unregistered channel type 'ConfBridgeRec'
== Manager unregistered action ConfbridgeList
== Manager unregistered action ConfbridgeListRooms
== Manager unregistered action ConfbridgeMute
== Manager unregistered action ConfbridgeUnmute
== Manager unregistered action ConfbridgeKick
== Manager unregistered action ConfbridgeUnlock
== Manager unregistered action ConfbridgeLock
== Manager unregistered action ConfbridgeStartRecord
== Manager unregistered action ConfbridgeStopRecord
CLI> module load app_confbridge.so
Loaded app_confbridge.so
== Registered custom function 'CONFBRIDGE'
== Registered channel type 'ConfBridgeRec' (Conference Bridge Recording Channel)
== Registered application 'ConfBridge'
== Manager registered action ConfbridgeList
== Manager registered action ConfbridgeListRooms
== Manager registered action ConfbridgeMute
== Manager registered action ConfbridgeUnmute
== Manager registered action ConfbridgeKick
== Manager registered action ConfbridgeUnlock
== Manager registered action ConfbridgeLock
== Manager registered action ConfbridgeStartRecord
== Manager registered action ConfbridgeStopRecord
== Parsing '/etc/asterisk/confbridge.conf': == Found
Loaded app_confbridge.so => (Conference Bridge Application)
La sintaxis de la aplicación es:
ConfBridge([confno][,bridge_profile[,user_profile[,menu]]])
- confno: el numero que se asigna a la sala de conferencia
- bridge_profile: el perfil que queremos utilizar para esta conferencia. Si no se especifica un valor, se utilizará el perfil [default_bridge] presente en el archivo de configuración predefinido
- user_profile: el perfil de los usuarios que accederán a la conferencia. Si no se especifica un valor, se utilizará el perfil [default_user] presente en el archivo de configuración predefinido
- menu: el menú que los usuarios podrán utilizar cuando estén conectados a la conferencia
Para el test que vamos a hacer, crearemos un nuevo archivo de configuración para la aplicación ConfBridge que luego utilizaremos para una conferencia. Todos los parámetros configurables en el archivo de configuración de la aplicación confbridge, los encuentran en el archivo anexo a este articulo o el la Wiki oficial de Asterisk
mv /etc/asterisk/confbridge.conf /etc/asterisk/confbridge.conf.old
nano /etc/asterisk/confbridge.conf
[general] ; empieza la parte general que todavía no se utiliza
[conf_test] ; se define la conferencia
type=bridge ; type indica que tipo de perfil vamos a configurar. Con bridge una conferencia, con user un usuario y con menu un nuevo menú
max_members=20 ; numero máximo de usuario que pueden participar en la conferencia
record_conference=no ; no grabamos la conferencia
internal_sample_rate=auto ; podemos definir la frecuencia de muestreo de la conferencia. Con auto Asterisk adusta la frecuencia en modo de brindar la mejor calidad audio posible
mixing_interval=20 ; define el intervalo (en milisegundos) del mixing del audio de la conferencia. Valores más bajos aumentan la calidad pero consuma más recursos, valores altos bajan la calidad audio y el consumo de recursos. Posibles valores son: 10,20,40,80
sound_join= beep ; la locución que se escuchará cuando un nuevo usuario entra en la conferencia
sound=leave= beeperr; la locución que se escuchará cuando un usuario abandona la conferencia
Terminada esta parte, configuramos un perfil de usuario:
[user_test] ; se define el nombre del perfil de usuario
type=user ; perfil de usuario
admin=no ; este perfil es para usuarios normales
marked=no ; definimos si el usuario es marcado o no
startmuted=no ; definimos si el usuario entrará a la conferencia en modo mudo o no
music_on_hold_when_empty=yes ; si es el único usuario de la conferencia escuchará la música de espera
denoise=yes ; se define que se aplicará un filtro para eliminar el ruido de fondo del usuario que está hablando. Como ya hemos dicho está funcionalidad de apoya al codec Speex
Por ultimo definimos un perfil para un menú:
[menu_test]
type= menu ; el tipo de perfil es menú
*=playback_and_continue(press&digits/1&press&digits/2&press&digits/3&press&digits/4&press&digits/5&press&digits/6&press&digits/7&press&digits/8press&digits/9&press&digits/0)
1=toggle_mute
2=leave_conference
3=dialplan_exec(invitar,1,1)
4=decrease_listening_volume
5=reset_listening_volume
6=increase_listening_volume
7=decrease_talking_volume
8=reset_talking_volume
9=increase_talking_volume
0=no_op
Una vez dentro de la conferencia, si un usuario hunde la tecla * escuchará todos los comandos disponibles. A cada tecla se le asigna un comando.
Como veremos más adelante, hundiendo la tecla 3 el usuario tendrá la posibilidad de invitar otro usuario a la conferencia.
Desafortunadamente las locuciones de utilizar con la aplicación ConfBridgeno están disponibles todavía. En cuanto sea liberada
la versión las tendremos. Mientras, para poder entender el funcionamiento de los menú solo se han puestos unos ejemplos.
Ahora creamos tres nuevos usuarios en el sip.conf:
nano /etc/asterisk/sip.conf
al final del archivo añadimos:
[1000]
type=friend
secret=password
host=dynamic
nat=yes
disallow=all
allow=alaw
context=test
allow=alaw
[1001]
type=friend
secret=password
host=dynamic
nat=yes
disallow=all
allow=alaw
context=test
allow=alaw
[1002]
type=friend
secret=password
host=dynamic
nat=yes
disallow=all
allow=g722
context=test
allow=alaw
Dos usuarios utilizarán el codec alaw (8 Khz) y uno el codec G722 (16 Khz). Todos los usuario tendrán acceso al contexto test
Guardamos los cambios y modificamos el dialplan
nano /etc/asterisk/extensions.conf
Al final del archivo definimos el contexto test:
[test]
exten => 100,1,Answer
same => n,Confbridge(100,conf_test,user_test,menu_test)
same => n,Hangup
Definimos el contexto invitar para invitar un usuario a la conferencia:
[invitar]
exten => 1,1,Originate(SIP/1002,exten,conferencia,100,1)
same => n,Hangup
[conferencia]
exten => 100,1,Confbridge(100,conf_test,user_test,menu_test)
same => n,Hangup
Guardamos los cambios y recargamos la configuración de Asterisk:
/etc/init.d/asterisk reload
Ahora conectamos los teléfonos IP al servidor Asterisk:
asterisk –rvvvvvvvvvvvvvvvvvvvvvv
CLI> sip show peers
Name/username Host Dyn Forcerport ACL Port Status Description
1000/1000 87.12.101.25 D N 13019 Unmonitored
1001/1001 87.12.101.25 D N 13034 Unmonitored
1002/nemygrpj 87.12.101.25 D N 13100 Unmonitored
Los tres teléfonos están conectados.
Ahora desde la extensiones 1000 y 1001 marcamos la extensión 100. Desde la consola veremos los dos teléfonos presentes en la conferencia:
CLI> confbridge list
Conference Bridge Name Users Marked Locked?
================================ ====== ====== ========
100 2 0 unlocked
confbridge*CLI> confbridge list 100
Channel User Profile Bridge Profile Menu
============================= ================ ================ ================
SIP/1000-00000000 user_test conf_test menu_test
SIP/1001-00000001 user_test conf_test menu_test
Ahora desde la extensión 1000 marcamos el tecla 3. Asterisk ejecutará el contexto [invitar] y llamará el usuario 1002 (con el comando Originate). Cuando el usuario conteste, será enviado a la conferencia:
Y efectivamente la extensión 1002 estará usando el codec G722:
CLI> confbridge list 100
Channel User Profile Bridge Profile Menu
============================= ================ ================ ================
SIP/1000-0000000a user_test conf_test menu_test
SIP/1001-0000000c user_test conf_test menu_test
SIP/1002-0000000e user_test conf_test menu_test
Si tenemos un proveedor VoIP configurado, modificando el dialplan, podremos llamar números fijos y/o celulares e invitarlos a la conferencia.
Eso es todo
Adjunto | Tamaño |
---|---|
AST-ConfBridge1.10-250411-0853-11250.pdf | 52.13 KB |
Comentarios recientes