Guia para instalar y configurar Asterisk en CentOS 6.6

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.

  1. Dial()

  • Con esta función realiza una llamada a donde le pasemos en este caso SIP/rack

  1. 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)

  1. Hangup()

  • Con esta función colgamos.

  1. Wait()

  • Con esta función se realiza una espera, el tiempo que queramos pasarle Wait(1), espera 1 segundo.

  1. VoiceMailMain()

  • Llama al menú del buzón de voz, te preguntará la extensión y su contraseña para escuchar los mensajes.

  1. Answer()

  • Con esta función la PBX Asterisk responde la llamada.

  1. Record()

  • Con esta función se graba un audio. Por ejemplo para crear un menú.

  1. 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

  1.   Frank dijo

    Fantástica explicación. Lo probaré con mis alumnos de ciclo,a ver si son capaces de configurarlo…

    1.    bynikiyo dijo

      Muchas gracias por el comentario, yo soy alumno de ciclo medio así que ellos también deberían de poder 🙂

  2.   cristian dijo

    :clap

    siempre es necesaria esta aplicación, y quienes la quieren instalar muchas veces naufragan

    :clap

    1.    bynikiyo dijo

      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.

  3.   nano dijo

    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.

    1.    toni dijo

      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

      1.    nano dijo

        Ok, gracias por la información.

        Ya lo miraré más tranquilo en cuanto tenga tiempo.

        La verdad, es muy interesante.

  4.   Manuel dijo

    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

    1.    Manuel dijo

      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

  5.   Luis dijo

    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.

    1.    Manuel dijo

      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

  6.   fito dijo

    Muy chevere y simple, siendo el primero de asterisk me parece bien empezar asi.
    Para la siguiente, obvio, la vaya más alta.

  7.   edwin Vasquez dijo

    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

    1.    bynikiyo dijo

      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.

  8.   cade dijo

    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?

    1.    bynikiyo dijo

      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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.