En este documento veremos qué pasos hay que seguir para conseguir que los teléfonos CISCO 7911G se comuniquen y registren en una PBX Asterisk, mediante el protocolo SIP.
Para ello seguiremos los siguientes pasos que después veremos en detalle:
- Actualización del firmware.
- Archivos de configuración.
- Creando las cuentas SIP en Asterisk.
Actualización del firmware:
Para llevar a cabo este proceso necesitaremos varios elementos presentes en nuestra red. El primero es un servidor de DHCP para asignar direcciones IP en nuestra red y el segundo es un servidor TFTP que será el encargado de transferir los archivos al teléfono.
Es importante especificar en el archivo de configuración del servidor de DHCP que apunte correctamente la dirección IP del servidor TFTP de nuestra red con una opción similar a la siguiente:
Importante conservar las comillas.
El siguiente punto será obtener el firmware correspondiente de la página web de CISCO. Todos los firmwares disponibles pueden ser descargados de la siguiente URL:
http://www.cisco.com/pcgi-bin/tablebuild.pl/ip-7900ser
En el momento de escribir este documento la versión del firmware más actualizada disponible es la 8-2-2SR1, así que nos descargamos el siguiente archivo:
cmterm-7911_7906-sip.8-2-2SR1.zip
Una vez descargado el firmware lo descomprimimos en el directorio raíz de nuestro servidor de TFTP (en nuestro caso /tftpboot ).
Lo siguiente que vamos a hacer va ser arrancar nuestro teléfono CISCO 7911G mientras mantenemos la tecla "#" pulsada durante 5 segundos. Esto hará que el teléfono entre en modo administrador y esperará que le indiquemos algún comando (podremos observar que la luz roja del auricular se queda encendida permanentemente). A continuación insertaremos la siguiente secuencia en el teclado del teléfono: "123456789*0#". Esto hará que el teléfono se reinicia en modo actualización de firmware. Lo siguiente que hará será pedir una dirección IP a nuestro servidor DHCP. Una vez obtenida irá a buscar al servidor TFTP los archivos de actualización del firmware. Es de mucha utilidad poder consultar los logs del servidor TFTP ya que el teléfono va pidiendo los archivos en un órden concreto y además diferencia entre mayúsculas y minúsculas en los nombres de los mismos.
En nuestro caso, por ejemplo tuvimos que hacer el siguiente cambio:
jar11sccp.8-2-2ES1.sbn �??> Jar11sccp.8-2-2ES1.sbn
Notar el cambio de "j" a "J" el principio del nombre del archivo.
El proceso durará varios minutos, una vez finalizado nuestro teléfono ya tendrá el firmware SIP cargado. Ahora pasamos a la siguiente sección: generar los archivos de configuración del teléfono.
Archivos de configuración.
En este capítulo veremos qué formato y qué parametros le deben ser proporcionados al teléfono para que se registre correctamente con nuestra PBX Asterisk. Para transferirle esta información al teléfono nos será imprescindible la disponibilidad del servidor TFTP que utilizamos ya en el apartado anterior.
Si observamos los logs del servidor TFTP, podremos notar que cada vez que el teléfono arranca accede al servidor para intentar obtener un archivo con un nombre similar al siguiente: SEP001B2AB8232E.cnf.xml
La estructura del nombre es sencilla: SEP<MAC>.cnf.xml
Formato del archivo SEP
Veremos ahora mediante un ejemplo el formato de estos archivos, señalando donde sea necesario una breve explicación de cada uno de los parámetros. Salvo que se indique lo contrario, dejar el resto de parámetros con el valor por defecto.
UPDATE: Como sóis mucos los que lo pedíis os dejo y tener un archivo tan grande incrustado en el post dificulta la comprensión aquí os dejo un link, para que podáis descargarlo y estdiarlo detenidamente.
SEP-MAC-.cnf.xml
Llegados a este punto, nos falta indicarle el dialplan (tiempos de espera de digitos y demás). En el punto anterior ya le señalamos al teléfono de qué archivo debe obtener esta información:
Ahora veremos el formato de este archivo (que también deberemos proveer vía TFTP).
<dialtemplate>
<template match="..." timeout="1" user="Phone"><!-- Llamadas de servicios -->
</template>
</template>
</template>
</template>
</dialtemplate>
El contenido es bastante descriptivo ya de por sí, pero comentaremos brevemente para aclarar algunos conecptos:
Por cada "TEMPLATE" indicaremos en el atributo "MATCH" a qué número/números se aplica esa regla.
Así, por ejemplo, el primer TEMPLATE de nuestro dialplan de ejemplo señala que cualquier número de 3 cifras que reciba espere 1 segundo y lo mande al servidor.
La segunda norma es para las llamadas internas (teniendo en cuenta números de externsión de 4 cifras). En este caso las manda inmediatamente.
Si el número introducido empieza por 0 será siempre para mandar llamadas al exterior (nacionales) por lo que deberemos esperar, por lo general, otros 9 digitos (señalados por ".").
En cambio si los primeros tres carácteres recibidos son "000" significa que queremos hacer una llamada internacional: "0" para salir al exterior + "00" de código de acceso internacional. Acto seguido podemos recibir un número indeterminado de números, ya que la cantidad de números puede variar entre si se trata de un país asociado a la NANPA (North American Numbering Plan Administration) o no, etc.
Creando las cuentas SIP en Asterisk.
Por último veremos algunas consideraciones a tener en cuenta cuando creemos las cuentas SIP de nuestros telefonos en la PBX Asterisk.
Existen varias formas de crear cuentas de usuarios (extensiones) en Asterisk, pero podemos reducirlas a 2:
1.Método tradicional: Edición de sip.conf
2.Método cómodo: Interfaz web (freePBX y demás).
Si lo hacemos a la antigua (edición de sip.conf) tendremos unas lineas similares a las siguientes:
[200]
type=friend
username=200
secret=aqui_va_tu_password
host=dynamic
callerid="Mi nombre" <200>
mailbox=200
context=internal
canreinvite=no
reinvite=no
transfer=yes
callgroup=1
pickupgroup=1
nat=no
Es importante que salvo que nuestro servidor de ASTERISK y nuestros teléfonos esten en diferentes redes el parámetro nat esté pueso a "no". Asi que si por lo contrario utilizamos un interfaz web del estilo de freePBX que por defecto pone el parámetro "nat=yes" debemos acordarnos de cambiarlo ya que si no el teléfono CISCO no se registrará correctamente con nuestro servidor. Si una vez registrados al asterisk tenéis problemas para realizar llamadas (os da un Hangup antes de tiempo) probad a poner la opcion "qualify=no" en la configuración de la cuenta SIP en el Asterisk.
Creo que no me dejo nada, en cualquier caso, se aceptan críticas, sugerencias y sobretodo, si tenéis dudas, dejadme un comentario...
Estreno tema en el blog con este anuncio. Estos últimos días me los he pasado trasteando con asterisk. Para los no entendidos, asterisk es un software de centralita de telefonos, que nos permite hacer todo lo que hacen las centralitas telefónics comunes y alguna cosa más. Podéis ver un interesantísimo vídeo explicativo aquí.
El tema de la configuración lo he pillado de mi amigo pof, quien ya hace un tiempo publicó un pequeño howto.
Por desgracia a mi con eso no me fue suficiente. El asterisk no arrancaba debido a algunos fallos más o menos tontos. Ahí van las incidencias, por si a alguien algun día le pasa:
Asterisk por defecto utiliza el repoductor mpg123 para reproducir los mensajes de contestador etc. Pues bien, el reproductor en cuestión no soporta alsa, solo funciona con el viejo OSS, para que funcione tenemos que activar en el kernel la emulación de OSS a través de ALSA. Otra opción es cambiar el reproductor por defecto, esto puede hacerse en el archivo: /etc/asterisk/musiconhold.conf
Por otra parte, encontre en mi sistema discrepancias de versiones en algunas librerías (pwlib, concretamente). Asterisk intentaba cargar una versión anterior a la que yo disponía. Al final lo arreglé creando un link a la versión nueva de la siguiente forma:
ln -s libpt_linux_x86_r.so.1.10.1 libpt_linux_x86_r.so.1.8.7
Mención a parte merecen los distintos clientes que he utilizado para realizar pruebas. Para windows he utilizado 2:
- SJPhone. Que según pof es el mejor (aunque yo sigo sin verle la gracia, sorry! :P)
- Express Talk. Que de momento es el que utilizo por que es liviano como una pluma y tiene todas las opciones que por el momento necesito.
En linux también he utilizado varios:
- kphone. Es corrrecto aunque el interfaz de usuario deja bastante que desear.
- Twinkle. Está mucho mejor, no es demasiado comlicado de utilizar y/o configurar.
- Ekiga. Qué decir... "es lo seu" :) Muy buen software que se integra perfectamente con evolution.
Señalar un tema más. Cuando uno ejecuta asterisk junto a ekiga en la misma máquina se puede encontrar con el problema de que ambos ocupan el puerto 5860 para la comunicación SIP. Para solventar este problemita lo que hice fue abrir el gconf-editor (por cierto, no os recuerda esta aplicación al regedit de windows??) y dentro de apps/ekiga/protcols/sip cambie el puerto de 5860 a 15860 (podéis elegir cualquier otro que esté libre hasta el 64000). De esta manera podemos tener estas dos aplicaciones (asterisk y ekiga) ejecutándose a la vez sin problemas.


