Para comenzar voy a dar una breve descripción de lo que es Asterisk por si alguien no lo sabe.
- Asterisk es un software libre creado por Mark Spencer fundador de la empresa Digium la principal desarrolladora, que realiza funciones de PBX. Una PBX resumiendo mucho es una central teléfonica.
- Asterisk permite gestionar llamadas, buzones de correo, crear una IVR (Interactive Voice Response) entre muchas otras cosas.
- Reconoce un montón de protocolos de VoIP (Voice over IP) entre los que se encuentran SIP e IAX que son de los más importantes.
Ahora que ya sabemos sobre Asterisk vamos a instalarlo y configurarlo para un servidor CentOS 6.6
La parte de la instalación es diferente según la distro que usemos pero la configuración es la misma tanto para Ubuntu, CentOS, Debian, etc.
Instalación
Lo primero que vamos a hacer es agregar el repositorio dentro de /etc/yum.repos.d/ :
- El primer repositorio que vamos a introducir será: centos-asterisk.repo
[asterisk-tested]
name=CentOS-$releasever - Asterisk - Tested
baseurl=http://packages.asterisk.org/centos/$releasever/tested/$basearch/
enabled=0
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium
[asterisk-current]
name=CentOS-$releasever - Asterisk - Current
baseurl=http://packages.asterisk.org/centos/$releasever/current/$basearch/
enabled=1
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium
- El segundo repositorio será : centos-digium.repo
[digium-tested]
name=CentOS-$releasever - Digium - Tested
baseurl=http://packages.digium.com/centos/$releasever/tested/$basearch/
enabled=0
gpgcheck=0
#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium
[digium-current]
name=CentOS-$releasever - Digium - Current
baseurl=http://packages.digium.com/centos/$releasever/current/$basearch/
enabled=1
gpgcheck=0
#gpgkey=http://packages.digium.com/RPM-GPG-KEY-Digium
Una vez terminado esto hacemos un
yum update
Ahora instalaremos el paquete asterisknow-version.noarch
yum install asterisknow-version
Instalando este paquete añadimos el resto de repositorios de Asterisk, con todas sus versiones disponibles. Ahora veremos que dentro de la carpeta /etc/yum.repos.d se han creado nuevos ficheros. Nosotros vamos ha instalar la versión 13 de Asterisk.
Para elegir una versión en concreto (por defecto utiliza el repositorio de la versión 11) utilizamos el parámetro –enablerepo (habilita el repositorio que le indicamos) en la instalación con yum, es decir, podemos instalar cualquier versión indicándole el repositorio adecuado
yum install asterisk asterisk-configs asterisk-sounds-core-es-gsm --enablerepo=asterisk-13
Como vamos a instalar la última versión de Asterisk, habilitaremos que el repositorio por defecto para actualizar Asterisk sea centos-asterisk-13.repo.
Para ello modificamos el parámetro enabled del repositorio centos-asterisk-11.repo a 0, para que éste esté deshabilitado. Y de la misma forma, modificamos el parámetro enabled del repositorio centos-asterisk-13.repo a 1, por lo que pasará a ser el repositorio utilizado para las actualizaciones de Asterisk. Dependiendo de la versión que hayamos instalado habilitaremos el repositorio de nuestra versión.
Configuración
Vamos a la carpeta de configuración que esta en /etc/asterisk
cd /etc/asterisk/
Encontraremos muchos archivos de los cuales ahora mismo utilizaremos tres:
- sip.conf → En él se registran los usuarios SIP que vamos a utilizar
- extensions.conf → En él registramos las extensiones
- voicemail.conf → En él registramos los buzones de correo
Empezamos con el archivo sip.conf
Bajamos al final del fichero o donde queramos, elegimos el final por comodidad de saber dónde están siempre. Y seguimos la siguiente estructura para cada usuario:
[ejemplo]
type=friend
secret=pass
qualify=yes
nat=no
host=dynamic
canreinvite=no
context= contexto
mailbox= buzon
- Deberemos poner entre corchetes el nombre del usuario, en este caso ejemplo
- La contraseña del usuario se pone en secret
- En host hemos decidido poner dynamic para que el usuario se pueda conectar desde cualquier IP de la red
- Context es el contexto, le ponemos el contexto en el que va a estar
- Mailbox es el buzón de voz
Ahora os voy a dejar un ejemplo del que yo he hecho
[rack]
type=friend
secret=1234
qualify=yes
nat=no
host=dynamic
canreinvite=no
context=iesjg
mailbox=00@buzon
Sobre la línea 343 del sip.conf establecemos language=es, con esto hacemos que todos los usuarios que creemos tengan como lenguaje por defecto español.
Ahora vamos a configurar el voicemail.conf
Para configurar los buzones bajamos hasta el fondo y creamos un contexto, por ejemplo [buzon] y configuramos así los buzones con la siguiente estructura:
número => pass,nombre,correo
Y ahora el ejemplo que yo he hecho:
00 => 1234,rack,rack@iesjorgeguillen.es
Ya por último vamos a configurar el extensions.conf
En el fondo del documento, en mi caso, voy a añadir la configuración
Crearemos un contexto en mi caso [iesjg], recordad que los contextos van entre corchetes.
Y ahora dentro de ese contexto crearemos extensiones como por ejemplo:
exten => 00,1,Dial(SIP/rack,15,Ttm)
same => n,VoiceMail(00@buzon)
same => n,Hangup()
- Lo que hace es cada vez que llamen a la extensión 00 en primer lugar llama al SIP/rack (que está creado en sip.conf) durante 15 segundos con una música de fondo y la llamada se puede reenviar a otro teléfono
- Utilizamos “same” para no tener que estar poniendo por cada línea “exten => 00”
- Si no se contesta, en siguiente lugar “n” salta el correo con la función VoiceMail (00@buzón) configurado anteriormente en voicemail.conf
- Y por último hacemos un Hangup() para colgar
Ahora voy a poner algunas funciones útiles de Asterisk.
-
Dial()
-
Con esta función realiza una llamada a donde le pasemos en este caso SIP/rack
-
VoiceMail()
-
Con esta función se llama al buzón de voz de ese usuario para dejar un mensaje (número_buzón@contexto_en_voicemail.conf)
-
Hangup()
-
Con esta función colgamos.
-
Wait()
-
Con esta función se realiza una espera, el tiempo que queramos pasarle Wait(1), espera 1 segundo.
-
VoiceMailMain()
-
Llama al menú del buzón de voz, te preguntará la extensión y su contraseña para escuchar los mensajes.
-
Answer()
-
Con esta función la PBX Asterisk responde la llamada.
-
Record()
-
Con esta función se graba un audio. Por ejemplo para crear un menú.
-
Background()
-
Reproduce un audio en background.
Ahora reiniciamos el servicio.
service asterisk restart
Y ahora ejecutamos la consola de asterisk para llevar una monitorización.
asterisk -rvvvvvvvvvvv
Cuando conectemos teléfonos con los usuarios SIP creados podremos verlos en la consola ejecutando:
sip show peers
16 comentarios, deja el tuyo
Fantástica explicación. Lo probaré con mis alumnos de ciclo,a ver si son capaces de configurarlo…
Muchas gracias por el comentario, yo soy alumno de ciclo medio así que ellos también deberían de poder 🙂
:clap
siempre es necesaria esta aplicación, y quienes la quieren instalar muchas veces naufragan
:clap
Sí, aunque podría haber entrado más en temas de tipos de codecs que se pueden utilizar, los tipos de archivos de audio y alguna extensión más. Pero quería hacerla fácil, directa y que funcione.
Genial pero por lo que veo esta aplicación sólo permite hacer llamadas de un equipo a otro dentro de una red local.
Al decir que se trataba de una centralita pensé que, mediante la instalación de algún tipo de harware, permitía hacer llamadas a números de teléfonos fijos o móviles y al mismo tiempo poder recibirlas.
No sé, algo que permitiera tener una base de datos de clientes y poder llamarlos por teléfono desde el mísmo ordenador mientras vas anotando datos o pedidos, etc.
Algo en plan telemarketing.
Exactamente se puede hacer esto, y sí, necesitas de un hardware específico, que vende por ejemplo Digium (la misma empresa creada por quien creó Asterisk y que mantiene el proyecto) en su sitio web (o otras más al ser hardware libre), para poder utilizar la RTB (Red Telefónica Básica). Puedes hacer tanto llamadas en local como de un teléfono de una centralita a otro teléfono de otra centralita interconectadas entre sí o salir a la RTB. Puedes también utilizar teléfonos fijos normales (RJ11). Necesitas tener una línea telefónica contratada, ya que salir a la RTB tiene un coste, lo que te costaría llamar desde tu propio fijo y de pendiendo del plan que contrates y los números que tengas podrás hacer más o menos llamadas simultáneas, por el contrario si todo lo haces mediante internet el costo será 0 ya que no es necesario salir a la RTB y todo va sobre Internet! Un saludo
Ok, gracias por la información.
Ya lo miraré más tranquilo en cuanto tenga tiempo.
La verdad, es muy interesante.
Hola, segui el tutorial pero no aparece dahdi ni en los archivos de configuración ni como demonio en el sistema, podrias explicar si es que esta estructura de configuración cambia para asterisk 13? o decirme como puedo agregar dahdi?…tampoco encuentra los archivos para realizar una instalación con Asterisk 1.8
Estuve revisando mas y pude conseguirlo, para instalar dahdi se tienen que instalar los paquetes dahdi-tools y dahdi-linux-devel despues aparecen dahdi tanto como demonio y como archivo de configuración con el nombre dahdi-channels.conf
Hombre, el tutorial es básico como el sólo…
Como práctica tampoco vale mucho, se queda mucho en la superficie, el dialplan sólo recibe llamadas.
Demasiado básico.
El objetivo del tutorial no es armar DialPlan o mostrar las multiples fuincionalidades de Asterisk.
Al parecer estos son los repositorios de a distribución AsteriskNow pues cuenta con freepbx 2.11 en sus repositorios, Asterisk 1.8 no se encuentra, pero los paquetes de Asterisk 1.8 si se encuentran en los Repositorios de Epel, el tutorial esta muy bueno pues cumple de manera simple la instalacion de Asterisk sea la version 11,12, y 13,tambien hay que habilitar los repositorios de Digium de la version Asterisk que se instale, claro que hay que agregarle a la sentencia de instalación los paquetes dahdi-tools y dahdi-linux-devel para que se instale Dahdi, tener en cuenta que las versiones de dahdi y libpri son las versiones estables actualmente pues instalando lo ultimo desde los códigos fuentes son versiones mas recientes
Muy chevere y simple, siendo el primero de asterisk me parece bien empezar asi.
Para la siguiente, obvio, la vaya más alta.
seguí la guiá pero tengo un conflicto con unas librerías alguna ayuda gracias saludos
—> Package libopenr2.x86_64 0:1.2.0-1_centos6 will be instalado
—> Package libpri.x86_64 0:1.4.14-1_centos6 will be instalado
—> Package libss7.x86_64 0:1.0.2-1_centos6 will be instalado
–> Resolución de dependencias finalizada
Error: Paquete: asterisk-core-13.3.0-1_centos6.x86_64 (asterisk-13)
Necesita: libg7221codec.so.2()(64bit)
Disponible: pjproject-2.1-0.digium2.1_centos6.x86_64 (asterisk-current)
libg7221codec.so.2()(64bit)
Disponible: pjproject-2.3-0.digium2.1_centos6.x86_64 (asterisk-current)
libg7221codec.so.2()(64bit)
Disponible: pjproject-2.3-0.digium3.1_centos6.x86_64 (asterisk-current)
libg7221codec.so.2()(64bit)
Instalado: pjproject-2.3-5.el6.x86_64 (@epel)
No encontrado
Disponible: pjproject-2.1-0.digium1.1_centos6.x86_64 (asterisk-current)
No encontrado
Disponible: pjproject-2.1-0.digium1.2_centos6.x86_64 (asterisk-current)
No encontrado
Error: Paquete: asterisk-core-13.3.0-1_centos6.x86_64 (asterisk-13)
Necesita: libilbccodec.so.2()(64bit)
Disponible: pjproject-2.1-0.digium2.1_centos6.x86_64 (asterisk-current)
libilbccodec.so.2()(64bit)
Disponible: pjproject-2.3-0.digium2.1_centos6.x86_64 (asterisk-current)
libilbccodec.so.2()(64bit)
Disponible: pjproject-2.3-0.digium3.1_centos6.x86_64 (asterisk-current)
libilbccodec.so.2()(64bit)
Instalado: pjproject-2.3-5.el6.x86_64 (@epel)
No encontrado
Disponible: pjproject-2.1-0.digium1.1_centos6.x86_64 (asterisk-current)
No encontrado
Disponible: pjproject-2.1-0.digium1.2_centos6.x86_64 (asterisk-current)
No encontrado
Podría intentar utilizar el comando –skip-broken para sortear el problema
Podría intentar ejecutar: rpm- Va –nofiles –nodigest
Perdona por no responder antes, lo había leído y lo iba a responder cuando usara el pc, yo creo que deberías desactivar los repos de epel o instalar el asterisk con el enablerepo=»repoqueuses» porque por lo menos epel te esta dando problemas aquí. También desintalaria las librerias que tienes y dan problemas y dejaría que asterisk las instale solas.
hola, mira tenemos un problema con esto, nosotros instalamos asterisk y todo el cuento, configuramos la centralita y los telefonos, los telefonos estan registrados, pero no podemos llamar entre ellos, sabes cual podria ser el problema?
pues no lo se, en teoría si están registrados deberían de poder llamarse entre sí, no te dice nada el log de la centralita? PD: perdón por responder tan tarde