Can't find address for host... (pero yo si se donde esta!)

Después de actualizar el firmware de unos teléfonos Aastra 9133i (a la versión 1.4.2.1081) me dí cuenta que dicho teléfono ya no podía recibir llamadas correctamente, después de establecida la comunicación después de 5 segundos se cortaba la llamada. En el CLI de Asterisk aparecía lo siguiente:


-- Called 1105
-- SIP/1105-08eb8a60 is ringing
Oct 30 18:59:40 WARNING[2405]: chan_sip.c:4083 set_destination: Can't find address for host '1105'
-- SIP/1105-08eb8a60 answered SIP/1102-08eb0238
Oct 30 18:59:41 WARNING[2405]: chan_sip.c:4083 set_destination: Can't find address for host '1105'
Oct 30 18:59:42 WARNING[2405]: chan_sip.c:4083 set_destination: Can't find address for host '1105'
Oct 30 18:59:44 WARNING[2405]: chan_sip.c:4083 set_destination: Can't find address for host '1105'

Asterisk trataba de encontrar la dirección IP del teléfono, pero al no encontrarla después de algunos segundos decidía cortar la comunicación. Habilité el debug de SIP en Asterisk para ver que estaba pasando, y oh sorpresa!!! dentro del string que usa como Caller ID y así saber quién y qué extensión usa ( Usuario <1105> ) no lo parseaba correctamente, ya que no podía separar dichos campos, lo tomaba como uno solo, es decir:

To: "Nombre <1105>" en vez de To: "Nombre"

Al parecer el teléfono Aastra con esta versión de firmware no estaba pasando correctamente la cadena del CallerID, de tal manera que Asterisk no la podía procesar correctamente la negociación SIP. ¿Cuál fue la solución? Simple, dejar en blanco el campo de Caller ID en la configuración del teléfono, y dejar que Asterisk use el Caller ID que esta puesto en el archivo sip.conf.

Espero que les sirva!!!

Alguien dijo que los fans de Asterisk son nerds??

Chequen y diganlo ustedes mismos! :D

Tomada en el Asterisk Bootcamp. Atlanta, GA.

Howto: Voceo a teléfonos Aastra y Asterisk

Pues uno de nuestros clientes tiene una instalación de Asterisk típica con teléfonos Aastra 9133i, y nos pidió habilitar una funcionalidad para que los teléfonos funcionen como intercomunicador, también conocido como voceo, anunciador o pager. Básicamente el requerimiento consiste en que desde cualquier teléfono se marque una extensión (o una tecla rápida) y que en algún otro teléfono se abra el speaker automáticamente, y así el que llama pueda dar un anuncio, solicitar a la secretaria que entre a la oficina del jefe, etc.

Para poder lograr el objetivo es necesario contar con teléfonos que tengan la funcionalidad de "autocontestar", es decir, que en el momento de entrar una llamada, el teléfono automáticamente abra el speaker (o diadema en su caso) sin necesidad de que el receptor levante el auricular o apriete algún botón. Este tipo de cosas se utilizan comúnmente para centros de llamadas donde se cuentan con sistemas de marcación progresiva, predictiva, etc. Con los teléfonos IP que he trabajado y que cuentan con esta funcionalidad son los Aastra, Grandstream y Polycom.

Después de buscar en varios foros y algunos experimentos de prueba y error para teléfonos Aastra el código para lograr el voceo a una extensión en específico es el siguiente:

; Pager general
exten => _*25*XXXX,1,SIPAddHeader(Call Info: Answer-After=0)
exten => _*25*XXXX,n,SIPAddHeader(Call-Info: \;answer-after=0)
exten => _*25*XXXX,n,Set(TIMEOUT(absolute)=60)
exten => _*25*XXXX,n,Page(SIP/${EXTEN:4})
exten => _*25*XXXX,n,Hangup


La aplicación se puede mandar llamar marcando en una sola línea * + 25 + * + Extensión de cuatro dígitos a quien desea llamar. Las dos primeras líneas agregan encabezados SIP para indicarle al teléfono destino que tiene que autocontestarse (tengo entendido que esto no es igual para cada marca marca de teléfonos, esto esta probado con Aastra).

La cuarta línea es la más interesante, ya que manda llamar la aplicación Page(). Ya que Asterisk no cuenta con una aplicación específica para hacer voceo, lo que hace la aplicación Page es crear en un instante un cuarto de conferencia, y meter en él todos a los participantes de la llamada, así como darle permisos de hablar sólo a quien genera la llamada.

Si se desea realizar voceo a muchos teléfonos al mismo tiempo el proceso es similar, con algunos cambios:

AASTRA=SIP/1101&SIP/1102&SIP/1104&SIP/1105&SIP/1106&SIP/1120&SIP/1130

exten => _*25,1,SIPAddHeader(Call Info: Answer-After=0)
exten => _*25,n,SIPAddHeader(Call-Info: \;answer-after=0)
exten => _*25,n,Set(TIMEOUT(absolute)=60)
exten => _*25,n,Page(${AASTRA})
exten => _*25,n,Hangup


Donde en la variable AASTRA tenemos todos los teléfonos que deseamos alcanzar en el voceo. Es importante recalcar que se genera un cuarto de conferencias (Asterisk necesita un reloj, por lo que si no tienen una tarjeta instalada hay que habilitar el módulo ZTDUMMY en zaptel) y sólo se le da permisos de hablar en este caso al que marca, de otra manera el relajo que se armaría el escuchar por speaker a todos los teléfonos al mismo tiempo!!! Sin embargo la aplicación Page() puede recibir diferentes opciones (que no se tratan en este artículo) que permiten modificar el comportamiento.

Espero que les sea de utilidad. Saludos!

Zaptel 1.4.5.1 no crea el archivo /etc/zaptel.conf

Instalando Zaptel 1.4.5.1 en CentOS 5 y con todos los makes (install, config, menuselect, etc) no crea el archiv /etc/zaptel.conf

Después de investigar, y con ayuda de Tato, nos dimos cuenta que hay un bug en el Makefile, ya que para contar el archivo zaptel.conf con el contenido default de instalación (toda la bola de comentarios), es necesario que exista previamente un archivo /etc/zaptel.conf, no importa si no tiene nada, de otra manera no lo crea.

Basta con ejecutar:

# touch /etc/zaptel.conf

E instalar normalmente Zaptel, y veremos como reemplaza el archivo con el que viene en la instalación.

Saludos!

Missing /dev/zap!!! en CentOS

Otra de zaptel y CentOS 4. Instalando otra tarjeta TE120P y Zaptel 1.2 me aparece el siguiente mensaje cada que Zaptel trata de iniciar en el proceso de booteo del servidor:

Waiting for zap to come online...Error: missing /dev/zap!

Con algo de ayuda del soporte directo de Digium (recuerden que si compran alguna tarjeta Digium tienen derecho a que los apoyen en el proceso de instalación [en inglés]) y de varios minutos de pruebas nos dimos cuenta que el porblema recide básicamente en kudzu, así es que deshabiliten kudzu en los servicios del sistema!!!

# chkconfig kudzu off

Así como eliminar (si existe) la entrada de la tarjeta dentro del archivo /etc/sysconfig/hwconf

Después hay que reiniciar el sistema y Voila!!!, zaptel inicia correctamente :)

Saludos!

Zaptel no inicia correctamente en algunas distribuciones Redhat

Tratando de instalar un PBX Asterisk en un servidor HP Proliant, CentOS 4.4 y una tarjeta Digium TE120P me topé con el siguiente problema: Zaptel (branch 1.2) se instalaba sin mandar errores, pero no podía levantar correctamente. El proceso de instalación fue el típico:

# make
# make install
# make config

Terminando este proceso, y antes de intentar instalar Asterisk, Unicall o algo parecido es recomendable probar que Zaptel inicie correctamente y reconozca el hardware apropiadamente, pero con resultados inesperados:

# service zaptel start
#

El comando no regresaba la salida típica para cargar los módulos. Gracias al apoyo de Tato pudimos determinar que el archivo para distribuciones Redhat que se debería encontrar en /etc/sysconfig/zaptel no existía. Resulta que hay un pequeño bug en el Makefile de Zaptel para algunas distribuciones de Redhat, y no reconoce correctamente que se trata de Redhat, por lo que el archivo de selección de módulos de tarjetas a cargar lo genera como si fuera Debian, en /etc(default/zaptel. Lo único necesario para resolver este problema es mover el archivo zaptel creado en /etc/default a /etc/sysconfig.

Después de este movimiento zaptel manda la salida correcta mostrando los módulos a cargar.

Espero que esta información les sea de ayuda. Metfan

Después de hacer una investigación de las posibles causas