Tarequeando Asterisk

icon-toolsResulta que mandaron a nuestra fábrica algunos componentes (dos cajitas ATA, dos teléfonos IP, una tarjeta OpenVoice) y nos alertaron de que debíamos preparar condiciones para en un futuro comunicarnos

mediante VoIP con las oficinas centrales de TabaCuba.

No teniendo absolutamente ninguna experiencia en tales menesteres, empecé a estudiar documentación para ver, en primer lugar, la posibilidad de poner VoIP en las máquinas de la fábrica, y luego extender esto a la conexión

con las oficinas centrales.

Está claro que desde el Pidgin que usamos acá es posible tener VoIP de máquina a máquina: teniendo declarada la configuración del sonido allí, usamos en pruebas la opción del menú Conversaciones/Medios y conversamos de

máquina a máquina.También podríamos usar Ekiga y llamarnos mediante:

nombre-usuario@máquina:5060

pero sería de desear poder disponer de las comodidades de una centralita de teléfonos o algo parecido. así que empecé a valorar Asterisk y Elastix.

Elastix provee una interfaz web que al parecer hace todo más cómodo, pero no teniendo una máquina donde instalarlo en este momento, me forzaría a levantar otra máquina virtual; ya tengo dos funcionando con sistemas priorizados,

así que sería la última opción. Me decanté por instalar Asterisk, ya que tenía una máquina Linux con espacio y disponibilidad. Asterisk tiene un demo que permite hacerse una idea, pero sin documentación suficiente es muy difícil captar

lo esencial.

Después de leer montañas de documentación que no me aclaraban todo lo que necesitaba entender, encontré un buen ejemplo que me permitió declarar usuarios en la centralita. en el fichero /etc/asterisk/extensions.conf declararé

por el momento dos usuarios:

[miprimerejemplo]
;director
exten => 20011,1,Dial(SIP/20011,30,Ttm)
exten => 20011,2,Hangup
exten => 20011,102,Voicemail(20011)
exten => 20011,103,Hangup

;secre

exten => 20013,1,Dial(SIP/20013,30,Ttm)
exten => 20013,2,Hangup
exten => 20013,102,Voicemail(20013)
exten => 20013,103,Hangup

 

Estos son las extensiones del director y la secretaria. cuando estén conectados, y usando algún cliente SIP, se llamarán a los números 20011 y 20013 para comunicarse entre sí.

en el fichero sip.conf debo poner las autorizaciones de registro de ambos:

[20011]
type=friend
secret=contrasena1
qualify=yes
nat=no
host=dynamic
canreinvite=no
context=miprimerejemplo
mailbox=20011@miprimerbuzon

[20013]
type=friend
secret=contrasena2
qualify=yes
nat=no
host=dynamic
canreinvite=no
context=miprimerejemplo
mailbox=20100@miprimerbuzon 

Dejo fuera por el momento la declaración del buzón de voz; la veremos más adelante.

Levanto el asterisk desde una consola (para monitorear si todo va bien) mediante
asterisk -vvgc

y me fijo si aparecen mensajes de error. Hay advertencias, pero nada crítico, así que adelante. Paso a configurar los clientes SIP de ambos.
En Linux tengo unos cuantos clientes, entre los cuales puedo contar Ekiga, sflphone, Twinkle. Si usara Ekiga, me registraría en la centralita de la siguiente forma, en el menú 
Editar/Cuentas:

Nombre: Director
Servidor de registro: 
Usuario:20011
Usuario para identificación: 20011
Contraseña: contrasena1
Tiempo de expiración 3600

Al salvar los datos debe decirme que se registró correctamente. En caso contrario, revisemos qué pusimos mal.

Desde la máquina de la secretaria el registro sería igual, cambiando como es lógico el 20011 por el 20013. De forma similar procedería si usara sflphone,
 o en el caso de Windows, si usara 3CXPhone6, que se ve como un celular "de verdad".

Es importante que en cada caso comprobemos la configuración de sonido en el cliente.

En Ekiga configurar un contacto de voz exige que declare la línea SIP completa. Puedo declarar algo como: 

sip:20013@partagas.ettpartagas.co.cu:5060

Le doy un nombre adecuado, y lo clasifico como Amigo (o creo un grupo adecuado). Lo importante es que remitamos la llamada al servidor asterisk, que la redireccionará al 
equipo deseado.

Si todo va bien, ya podría marcar el número de la extensión del usuario deseado y estaría conversando.

Pasemos a otra tarea.

Acá nos han dejado unas cajitas ATA (Adaptador de Teléfono Analógico; convierte una señal de VoIP en señal para un teléfono, fax, contestador, etc. analógico) modelo 
Grandstream HT701. 
Mediante ella podemos conectar un aparato de teléfono analógico común y corriente con nuestra centralita Asterisk, de modo que al
discar un número de extensión prefijado nos responda el teléfono.

Este ATA viene "de caja" configurado para recibir una dirección dinámica, pero eso no me conviene. Para configurarlo monto por un momento un servidor DHCP en mi Debian 6 
instalando
isc-dhcpserver, y en /etc/dhcp/dhcpd.conf declaro lo siguiente, por ejemplo:

# This is a very basic subnet declaration.

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.239 192.168.0.240;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}

Esto es sumamente básico, solo para servir un par de direcciones IP, de modo que la cajita ATA agarre una, y luego apuntar mi navegador hacia ella para terminar de configurarlo. 
Inicio el 
servicio DHCP mediante

service isc-dhcpserver start

Conecto la cajita a la corriente, le pongo un cable de red que la conecte a un switch (tiene que estar en red, ¿no?) y por donde va el conector telefónico lo conecto a un teléfono
común y corriente. Esperamos un poco y apuntamos el navegador a 192.168.0.239 (cogió la primera dirección, como era de esperar).

La página que se abre me redirige a 

192.168.0.239/cgi-bin/index

En mi caso debo autorizar la ejecución de lo que va en ese cgi-bin, porque tengo activado NoScript en el Firefox. Me sale una ventana de autenticación donde tecleo la contraseña:

admin

Y ya estoy dentro.

Voy a darle la extensión 20100 a la cajita ATA.  Voy en el navegador al menú Basic Settings, le declaro el DNS interno de acá, la dirección IP fija que quiero darle (192.168.0.160)
 y cualquier otra cosa que haga falta. En el menú FXSPort le indico:

Primary SIP Server: IP o nombre del servidor SIP
SIP User ID: 20100
Authenticate ID: 20100
Authenticate Password: contrasena3
Name: Cajita
Tell URI: enabled

Salvé los datos declarados y mandé a resetear. Ojo, que se demora al menos 5 minutos chequeándose! No la desconecte ni apague. 

Ahora debo declararle una extensión a esa cajita dentro de la centralita Asterisk. Voy a /etc/asterisk/extensions.conf y añado lo siguiente:
;cajita ATA
e
Esta entrada fue publicada en Debian, Linux, Oficina, Software Libre. Guarda el enlace permanente.