Etiqueta: trucos

  • Cómo hacer tu Asterisk «más original»

    Descuelgo el teléfono, marco un número y de repente empiezo a escuchar una musica típica de Asterisk

    De entre las miles de millones de canciones que hay disponibles, y tengo que llamar a un número que tiene un Asterisk instalado con la configuración por defecto.
    De repente la música se corta y aparece una voz de una chica preguntándome sobre el motivo de mi llamada, momento en que informo que deseo hablar con una persona y ella procede a transferirme, pero algo hace mal y acabo en el limbo… un lugar oscuro, tenebroso en el que no escucho música, no hablo con nadie, y lo peor, nadie puede recuperarme. La única alternativa que tengo es colgar y volver a llamar.
    No obstante, aprovechando que he llamado a un Asterisk con soporte de «limbo» (así que calculo que sería una versión 1.2 como mucho), decidí hacer una prueba y marcar un número de móvil.
    Funciona… el móvil suena y el número que aparece es el de la empresa en cuestión. ¿que hubiera pasado si hubiera marcado un número de coste premium y hubiera mantenido la llamada en funcionamiento durante varias horas?

    Este tipo de situaciones son muy raras, la probabilidad que una persona conozca Asterisk para reconocer su música de espera, que utilicen una versión tan antigua que no tenga habilitado el parámetro autofallthrough y la llamada no cuelgue automáticamente si el destinatario no existe, y que al hacer la transferencia a una extensión del dialplan comentan el fallo garrafal de incluir patrones para salida a la red telefónica, puede pasar en un caso tan único que me extrañaría volver a encontrarlo de nuevo.

    No obstante, es común encontrar fallos garrafales en otras configuraciones de Asterisk, más aún desde que una configuración correcta es algo exclusivo «para expertos», mientras que una gran cantidad de usuarios utilizan sistemas cuya configuración se deja a cargo de cómodos y atractivos interfaces, más preocupados por el aspecto visual que por si el código que genera es seguro, rápido y fácil de depurar.

    Aprovechando que la mayoría de los lectores de Sinologic utilizan Asterisk y además lo configuran a su gusto, voy a dar una serie de ideas/consejos para mejorar la configuración de un Asterisk, tanto desde el punto de vista del usuario final, como desde el punto de vista de cualquiera que llame.

    (más…)

  • Como convertir audio con sox compatible con Asterisk

    En muchas ocasiones, necesitamos utilizar diferentes locuciones creadas por nosotros para nuestro Asterisk o bien un archivo creado por un locutor profesional que generalmente tiene una gran calidad de audio pero que no es compatible con Asterisk.

    Asterisk soporta muchos tipos de archivos de audio, tan solo tienes que echarle un vistazo a la cantidad de módulos de formatos y codecs que puedes encontrar en el directorio /usr/lib/asterisk/modules y te darás cuenta que tienes bastantes disponibles. No obstante, siempre se recomienda utilizar un formato y un códec que evite cargar al sistema cada vez que se reproduzca.

    Por ejemplo, si nuestro terminal IP utiliza códec Alaw, no es práctico que el archivo de audio se encuentre en GSM, ya que Asterisk tendrá que «traducir» el archivo codificado como ‘gsm’ a ‘alaw’ para que nuestro terminal pueda reproducirlo y nosotros escucharlo. Esto consume procesador y memoria que, multiplicado por el número de archivos que se pueden llegar a reproducir a la vez, pueden causar una carga excesiva y nada justificada.

    Para evitar esto, se suelen convertir los archivos de audio al códec que vamos a utilizar: si nuestro teléfono está configurado como ‘alaw’, nuestra locución puede estar codificada en ‘alaw’ también y así evitar la conversión. Lo mismo ocurre si nuestro terminal utiliza ‘G.729’ (cuya trascodificación requiere de licencias) por lo que si convertimos las locuciones a G.729, además de ahorrarnos procesamiento del sistema, también nos ahorraremos utilizar las licencias del códec G.729 que tengamos.

    Para convertir el audio de un formato a otro, la consola de Asterisk dispone de un comando que puede ayudarnos:

    *CLI> help file convert
    Usage: file convert <file_in> <file_out>
    Convert from file_in to file_out.
    If an absolute path is not given, the default Asterisk sounds directory will be used.
    Example:
    file convert tt-weasels.gsm tt-weasels.ulaw

    Esta herramienta puede ser útil en muchos casos, aunque lo cierto es que no es todo lo buena que debería ser, ya que para convertir archivos en formato ‘wav’ deben estar con los parámetros estándar de audio para telefonía:

    Signed 16 bits PCM
    Big Endian
    Mono
    8000 Hz

    Lo que puede llevarnos a necesitar alguna aplicación para convertir nuestro archivo ‘wav’ o ‘mp3’ a otro formato más compatible con Asterisk.

    No obstante, en Linux disponemos de una herramienta fundamental que debe estar incluido en cualquier servidor de Asterisk: sox (http://sox.sourceforge.net/)

    Esta herramienta (y más en sus últimas versiones) dispone de mejoras tanto de rendimiento como de calidad que la hacen una de las más útiles, fáciles y rápidas de todas las existentes y únicamente deberemos conocer qué parámetros debemos utilizar para convertir nuestro archivo a cualquier otro.
    Pese a que la utilidad sox puede compilarse, también admite módulos lo que nos facilitará su instalación mediante los paquetes que provee nuestra distribución, algo sencillamente ideal cuando necesitamos algo rápido y fácil.

    Una de las mayores ventajas, es que la extensión que utilicemos como ‘archivo de salida’ marcará la cabecera de esta, por lo que no tenemos que preocuparnos por indicar una gran parte de los detalles que incluyen los archivos de audio.

    Por este motivo y para poder recordarlo en un futuro, he recopilado una serie de comandos que nos permita convertir cualquier archivo de los formatos más básicos a otros más compatibles con Asterisk y que pueda reproducir de una forma nativa, así que aquí los tenéis:

    (más…)

  • Mantener la conexión ssh cuando no se utiliza

    sshSi sois de los usuarios/administradores que utilizais SSH para conectaros con otros sistemas, os ocurrirá a menudo que ciertos sistemas al no escribir durante algún tiempo (1, 2, 5, 10, … minutos) la conexión se cae y hay que volver a conectar habiendo perdido la información que ha ocurrido desde que se desconectó hasta que se vuelva a conectar.

    Este «truco» es ultra-conocido por cualquier administrador de sistemas, pero cuando llevo algún tiempo sin hacerlo, siempre se me olvida cómo era y me toca buscar de nuevo, así que escribiéndolo aquí, seguro que lo encuentro más fácilmente. 😉

    La idea consiste en que el servidor obligue al cliente a enviar un paquete para mantener la conexión abierta (lo que se conoce normalmente como keep-alive -mantén-vivo-) y se configura en el servidor SSH al que nos conectemos modificando el archivo /etc/ssh/sshd_config y añadiéndole estas dos líneas a la configuración del demonio ssh:

    KeepAlive yes
    ClientAliveInterval 60

    Con esto, tan solo nos queda reiniciar tranquilamente el demonio ssh y al conectar, ya podremos dejar la sessión abierta sin miedo a que nos desconecte.

    Nada, un post rápido y sencillo, para mantener en la memoria más que otra cosa.

  • Como ejecutar aplicaciones durante una llamada

    En la lista de Asterisk-ES a veces se comenta una utilidad que parece que no mucha gente conoce llamada «dynamic features». Oficialmente esta característica forma parte del conjunto de «recursos» que componen Asterisk y que, como su nombre indica, son añadidos dinámicos, lo que realmente significan, recursos que pueden ser accedidos dinámicamente durante una llamada.

    Estos añadidos son por ejemplo, las transferencias, el parking de llamadas y el mapa de aplicaciones (applicationmap), entre otros, y se definen en el archivo features.conf donde vamos a encontrar opciones y una serie de parámetros junto con un código de tecla que debemos pulsar para poder utilizarlos.

    Como ejemplo de estos añadidos encontramos los básicos como:

    • blindxfer (transferencia ciega)
    • atxfer (transferencia atendida)
    • automon (grabación bajo demanda)
    • pickupexten (captura de llamadas que suenan en los terminales del «grupo»)
    • automixmon (grabación bajo demanda y posterior mezcla de las locuciones)

    Hay una parte muy interesante llamada applicationmap que consiste en una serie de combinaciones que podemos modificar para ejecutar aplicaciones básicas de dialplan, durante una conversación.

    Por ejemplo: testfeature => #9,peer,Playback,tt-monkeys

    Este comando permitirá que cuando el llamante como el llamado durante una conversación, pulse las teclas # y 9, se reproduzca la locución tt-monkeys, algo muy gracioso, pero muy interesante en ciertos momentos.

    Existe una limitación para este tipo de comandos, y es que no es recomendable utilizarlo para ejecutar aplicaciones relacionadas con el dialplan directo, es decir: Macro, Goto, Background, WaitExten y algunas de este tipo, pero en cambio sí que se puede ejecutar un «AGI(aplicacion.agi)» 😛

    Para evitar el uso accidental de este tipo de comandos on-line, se hace necesario habilitar dicho comando mediante una variable llamada DYNAMIC_FEATURES justo antes de hacer la llamada: Set(DYNAMIC_FEATURES=testfeature)

    En Asterisk 1.6, nos encontramos algunas novedades bastante interesantes, como:

    • atxferdropcall (permite no perder la llamada en caso de que la transferencia no se realice corréctamente, en cuyo caso volvería a sonar en el usuario que inició la transferencia)
    • atxfernoanswertimeout (permite cambiar el timeout que una llamada transferida esté a la espera antes de volver a la extensión que inició la transferencia)
    • Grupos para habilitar varios applicationmaps sin necesidad de definirlos todos:
      Set(DYNAMIC_FEATURES=grupo)

      donde:
      [grupo]
      testfeature=>#9

    Grandes cosas se pueden llegar a hacer utilizando estas ventajas de Asterisk que son poco conocidas pero muy, muy útiles si se conocen.

    Que lo disfruteis. 😀

  • FreePBX le planta cara a Fonality y lo acusa de mentir

    Como si de una telenovela se tratase, los movimientos estratégicos de Fonality con respecto a FreePBX se está convirtiendo en una historia de amor, engaños, amantes y por último odio.

    Cualquiera que esté interesado en esta novela que llevamos contando desde hace algún tiempo, Fonality lleva bastante tiempo buscando un interfaz web para no depender de la aplicación que ha hecho famoso a su conocido TrixBox: FreePBX.

    Hace unas semanas Fonality hizo público que estaba cansado de pagar a la gente de FreePBX para que corrigiese bugs y para que siguieran mejorando el interfaz que hace que la gente instale Trixbox, por lo que habían tomado la decisión de hacer un ‘fork’ de FreePBX controlado únicamente por Fonality. No obstante la respuesta, aunque ha tardado en llegar, ha aparecido en forma de queja y presunta acusación de engaño a los usuarios del foro de FreePBX por parte de Kerry Garrison (CEO de Fonality) cuando el administrador de los foros de FreePBX ha detectado que «kgarrison» cambiaba de usuario para seguir comentando hilos bajo otro pseudónimo «GPLLaw» a lo que el administrador de los foros procedió baneando a este último usuario por lo que recibió una carta de queja por parte de GPLLaw:

    «I am quite disappointed in the fact that I have been blocked from posting on your site. I routinely call out other projects such as trixbox, Elastix, PBX-In-A-Flash, Asterisk, CentOS, Apache and other when either there is a violation of GPL rules or when someone is misinterpreting the GPL license or Free Software Foundation guidelines. Some of your users are completely misconstruing the spirit of the FSF and I have pointed out the links and quotes from the FSF that backup their position. I am sorely disappointed that when I returned today to again reiterate the stance of the FSF and of the GPL I find that opposing views to your community are met with accounts being blocked. Perhaps this is an overstepping of bounds from one of your moderators but I can assure you that I am very disappointed and will have no problem calling this out in a more public forum if this is the policy of the FreePBX team. As I am sure this cannot be the position of a leader of an open source project, I am letting you know about it before publicly accusing the project leaders of blocking users for disagreeing with a very small number of people from the community.

    GPLLaw»
    Cuando la gente de FreePBX recibieron este mensaje no daban crédito (kgarrison tiene su cuenta y puede utilizarla libremente para mostrar su opinión cuando lo desee) así que preguntan en el foro qué hacer con este lío y las respuestas no tardaron en llegar.

    Por lo visto, esta técnica se había repetido hasta 4 veces en la página de FreePBX con el mismo usuario.

    Kerry Garrison se defiende diciendo que no ha sido él, que habrá sido alguien que habrá utilizado una técnica de IP Spoofing para utilizar su IP, pero la gente no es tonta y las pruebas son bastante contundentes.

    Los comentarios no tienen desperdicios ya que se está abriendo un debate sobre lo ético que es montar una empresa para ganar dinero suministrando software que han hecho otros, la licencia GPL así lo permite pero no suele ser bien visto ya que, puestos a ganar dinero debería hacerlo la empresa que lo programa, no obstante, al ser aplicaciones libres ni FreePBX ni Asterisk ganan dinero directamente por hacer ni distribuir el software, algo que sí hacen empresas como Fonality con sus productos TrixBox Pro. Otros comentarios comentan ejemplos de empresas que hacen lo mismo con otros sistemas como Elastix.

    lo dicho… una telenovela. Seguro que pronto veremos el siguiente capítulo.