Etiqueta: Asterisk

  • Asterisk 21 Released

    Asterisk 21 Released

    La semana pasada se anunció la nueva versión de Asterisk 21, una versión que aunque no es LTS (Long Term Support) promete algunos cambios que sentarán las bases de las futuras nuevas versiones y por lo tanto es muy interesante tenerla presente y ver los distintos cambios que traen.

    A diferencia de otras versiones, más que analizar las características nuevas que trae, casi es mejor analizar las características que NO trae… me explico:

    Eliminación de módulos obsoletos como:

    • chan_sip
    • app_macro
    • chan_skinny
    • app_osplookup
    • chan_mgcp
    • chan_alsa
    • pbx_builtins
    • app_cdr
    • res_monitor

    Desaparece el users.conf (por si alguien aún lo usaba)

    También mejora la negociación de códecs, ya la habían arreglado en Asterisk 17, pero se ve que aún tenía margen de mejora ante algunos casos muy concretos.

    Cambios en muchos de las aplicaciones de dialplan que utilizaban parámetros que ejecutaban macros como el parámetro M de la aplicación Dial, que ya deja de existir, la opción de ejecutar una Macro al finalizar el MixMonitor, al dejar un mensaje en el VoiceMail, etc.

    Toda la información sobre la nueva versión: https://www.asterisk.org/asterisk-news/asterisk-21-0-0-now-available/

    Descargar: https://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-21.0.0.tar.gz

    No os voy a engañar, llevo un par de años lejos del mundo Asterisk y mucho más cerca del mundo Kamailio, con lo que ando un poco más al día de los módulos y versiones de Kamailio que con las últimas versiones de Asterisk, no obstante, posibles cambios y nuevos proyectos pueden hacer que retome nuevamente este magnífico software y toque ponerme al día en las novedades de las versiones más actualizadas. Eso no significa que deje Kamailio de lado, todo lo contrario… los nuevos proyectos pueden incluso añadir nuevas herramientas que, aunque ampliamente conocidas, nunca había tenido la oportunidad de ponerla en práctica hasta ahora, así que, espero que hayan novedades muy pronto.

  • Asterisk no estará disponible en Debian Bookworm

    Asterisk no estará disponible en Debian Bookworm

    La versión de Debian Bookworm no incluirá los paquetes de Asterisk por falta de personas que se encarguen de crear los paquetes necesarios para ser incluidos.

    La falta de mantenedores y los problemas con la biblioteca PJSIP parecen ser el problema. Los paquetes de Debian Asterisk ya se han quedado obsoletos con los parches de seguridad, por lo que hacen falta más personas que ayuden a compilar y empaquetarlo para esta versión de Debian.

    Asterisk sigue siendo un software muy necesario en muchos ecosistemas de comunicaciones y aunque la mayoría de nosotros solemos compilar a mano las versiones que instalamos, hay muchas personas que prefieren utilizar el sistema de paquetes de Debian por facilidad a la hora de actualizar, configurar y buscar algo más de estabilidad con versiones bastante probadas.

    Más información: Oej!

  • Asterisk se traslada oficialmente a GitHub

    Asterisk se traslada oficialmente a GitHub

    Para reducir la cantidad de sistemas implicados en el mantenimiento y administración que el desarrollo de Asterisk necesita para seguir siendo uno de los sistemas de comunicaciones VoIP más utilizados del mundo, el equipo de desarrolladores ha decidido trasladar todas las herramientas (gestión de incidencias, gestión y revisión del código, documentación, etc.) a una solución en la nube en lugar de alojada en los propios sistemas de la empresa que lo mantiene.

    Han estado evaluando las dos principales herramientas para este tipo de proyectos: GitHub y GitLab y al final el ganador ha sido GitHub ya que ofrece una mejor alternativa para la revisión del código.

    Es cierto que Asterisk ya contaba con un mirror en GitHub de lo que se generaba en los sistemas propios del proyecto, pero en esta ocasión se trata de oficializar que el repositorio de Asterisk se encuentre alojado en GitHub.

    Personalmente hubiera preferido GitLab por el hecho de que GitLab es software libre mientras que GitHub es un gestor privado (y en manos de Microsoft que no es poca cosa…), pero realmente lo importante es que los desarrolladores y usuarios encuentren un lugar cómodo donde poder avanzar en el desarrollo y documentación.

    Menos Fork de Asterisk, más colaboración…

    Uno de los últimos ruegos de los desarrolladores de Asterisk es animar a los usuarios y desarrolladores de Asterisk que necesitan modificaciones personales para sus proyectos, es colaborar con el código oficial de Asterisk en lugar de crear repositorios propios modificados (forks) lo que contribuye principalmente al crear software variado en lugar de aunar fuerzas para conseguir un software mucho más completo.

    En parte, una de las ventajas del software libre es la capacidad de crear modificaciones de cualquier aplicación y ser capaz de distribuirlas y que otros se basen en tus modificaciones para crear sus propias versiones, aunque es cierto que si ese esfuerzo se hiciera sobre el código fuente del proyecto principal, éste saldría reforzado y tendría mucha más fuerza al disponer de más personas que aportan su grano de arena con sus modificaciones.

  • Cómo arreglar el error de Asterisk: FRACK!, Failed assertion bad magic number …

    Cómo arreglar el error de Asterisk: FRACK!, Failed assertion bad magic number …

    Durante muchos años un error que aparecía pocas veces pero que trae bastante cola aparece de forma misteriosa y por más que buscamos a qué se debe, no hay forma de eliminarlo. Este mensaje además aparece cuando el sistema tiene un número considerablemente alto de llamadas lo que provoca que se rechacen paquetes UDP que, viniendo de un sistema Asterisk, tiene bastantes posibilidades que sean SIP o UDP, así que lo notaremos tanto por que hay llamadas que no finalizan y el error de FRACK! aparece con bastante frecuencia, entonces también afecta al audio provocando cortes bastante importantes y un gran dolor de cabeza.

    Este error se produce en Asterisk y generalmente indica un problema con la integridad de la memoria en tiempo de ejecución. La frase «bad magic number» se refiere a un valor esperado en la memoria que no coincide con el valor real, lo que sugiere que algo ha cambiado la memoria de manera inesperada. En cambio, el mensaje «FRACK!» es una convención de código en Asterisk para indicar un fallo en tiempo de ejecución.

    Por más que buscamos en los foros y documentación el origen de este error, parece que se trata de algún problema con alguna versión de Asterisk que parece que se soluciona actualizando la versión de Asterisk, pero llega un momento que actualizas la versión y sigue apareciendo, y como únicamente aparece cuando hay bastante carga, es difícil de detectar y de comprobar si funciona o no la solución.

    El error que aparece en el /var/log/asterisk/messages es como este:

    [Jan 25 09:01:51] ERROR[8601] modulo.c: FRACK!, Failed assertion bad magic number 0x0 for object 0x7f4e9f11c440 (0)
    [Jan 25 09:01:51] ERROR[8601] : Got 13 backtrace records
    # 0: /usr/sbin/asterisk() [0x45c977]
    # 1: /usr/sbin/asterisk() [0x45ff1b]
    # 2: /usr/sbin/asterisk(__ao2_find+0x28) [0x460108]
    # 3: /usr/lib/asterisk/modules/modulo.so(ast_session_get_datastore+0x31) [0x7f50accaf491]
    # 4: /usr/lib/asterisk/modules/modulo.so(+0x1f56) [0x7f50ab65ff56]
    # 5: /usr/lib/asterisk/modules/modulo.so(+0x11730) [0x7f50af12c730]
    # 6: /usr/sbin/asterisk(ast_taskprocessor_execute+0xce) [0x59b61e]
    # 7: /usr/sbin/asterisk() [0x5a2d10]
    # 8: /usr/sbin/asterisk(ast_taskprocessor_execute+0xce) [0x59b61e]
    # 9: /usr/sbin/asterisk() [0x5a34b0]
    #10: /usr/sbin/asterisk() [0x5ab34c]
    #11: /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f512530c6ba]
    #12: /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f51248e641d]

    El error aparece tanto en chan_SIP como en PJSIP y con otros módulos, pero es un error tan crítico que provoca cortes y grandes problemas de todo tipo.

    Descartando un error hardware

    Lo primero que tenemos que hacer para solucionar el error FRACK!, Failed assertion bad magic number, es comprobar que el hardware es correcto. El hecho de utilizar un sistema virtualizado no está exento de algún problema físico con la memoria RAM. Para ello, lo suyo es comprobar mediante un test de memoria (memtest86 o similar) que la memoria RAM está bien.

    El error FRACK! se soluciona actualizando

    En los foros de todo tipo (y he leído foros hasta en ruso o en japonés) hablan de que se soluciona actualizando, por lo que en un primer momento pensé que que el error FRACK!, Failed assertion bad magic number, era un fallo de esa versión en particular y que actualizando a la versión que decía, también se solucionaría.

    Error… el FRACK! no se soluciona actualizando a una versión en particular… toca seguir buscando.

    No obstante y como vamos a ver ahora, llega un momento en que actualización tras actualización llega un momento en que se soluciona. pero ¿y eso por qué?

    Este error ha aparecido desde tiempos inmemorables y como decía antes, siempre en el peor momento: cuando más llamabas había en un Asterisk. Las soluciones, incluso con acceso directo a Digium para intentar solucionarlo siempre se basaban en el mismo sistema: 1) enviar traza, 2) enviar gdb con el error, 3) actualizar la versión de Asterisk, 4) si no se soluciona: Goto(1).

    El error FRACK! se debe a la diferencia de versiones entre el sistema operativo y Asterisk

    Hay que entender que cada versión de Asterisk se desarrolla en una fecha y en esa fecha existen librerías con versiones más o menos similares.

    Puedes instalar Asterisk 20 en una Debian 7, y no dará fallos, pero Asterisk hace uso de funciones en librerías libc, glibc, libssl, etc. estándar de Linux y esperan respuestas que funcionen, pero cuando hablamos de gestión de memoria, las librerías evolucionan y cambian su forma de trabajar y las nuevas versiones de Asterisk esperan una respuesta compatible que en algún momento deja de serlo y entonces se encuentra que una información que debería estar en una posición de memoria, no se encuentra ahí y de ahí el error.

    Normalmente con una versión determinada de la distribución que utilices, le acompañan varias versiones de Asterisk, pero si intentas instalar un Asterisk demasiado nuevo o demasiado antiguo, a la hora de compilarlo fallará y no te permitirá hacerlo hasta que no actualices mínimamente.

    Si tienes una versión de Linux muy nueva y utilizas una versión de Asterisk antigua, posiblemente te deje instalarlo, pero entonces ocurren los errores de FRACK!, Failed assertion bad magic number… lo mismo si instalas una versión de Linux antigua y Asterisk muy nueva, aunque en este caso, los errores son diferentes (Segmentation Fault, reinicios del Asterisk sin explicación, etc.) por eso es importante que si instalas una versión de tu distribución favorita y esa versión es muy nueva, tendrás que instalar una versión de Asterisk también bastante nueva o tendrás problemas de FRACK!.

    De ahí que el error de FRACK! se solucione actualizando la versión de Asterisk.

    Cada versión de Asterisk está pensada para una época determinada

    En función de la versión de la distribución de Linux, deberás utilizar una versión de Asterisk de ese momento. Todo tiene su momento y aunque siempre se programa para lograr la máxima compatibilidad con todo, haciendo uso de las librerías más modernas pero también las más antiguas, son tantos los factores que intervienen en una aplicación de software, que no queda otra que actualizarse o morir.

    Durante muchos años he encontrado de todo, desde versiones de CentOS 5 con Asterisk 1.4 hasta Debian 11 con Debian 1.8., y funcionan… lo que marca la diferencia es cuando realmente pasamos a tener cierto volumen de llamadas y toca hacer un uso intenso de ciertas librerías que manejan software de sistema operativo en capas bajas (reserva de memoria, almacenamiento de datos, procesamiento de números…)

    Desde Sinologic siempre hemos defendido que hay que estar constantemente actualizando para evitar fallos de seguridad y recibir las ventajas y mejoras de las actualizaciones que van surgiendo, pero hoy más que nunca, esta recomendación se hace evidente y es que el error FRACK! es para muchos, un gran dolor de cabeza y al menos por mi parte, parece que tiene una solución que, si bien no es fácil, al menos sí es posible y pasa por actualizar Asterisk a una versión «más compatible» con la versión de la distribución de Linux que estemos utilizando.

    Entonces la única solución si aparece el error de FRACK! , Failed assertion bad magic number es, o bien reinstalar con una versión de Linux más antigua, o actualizar la versión de Asterisk a una versión compatible con tu distribución, aunque eso implique modificar la configuración para adaptarla a la nueva versión de Asterisk.

  • Los EXEC y los SYSTEM los carga el diablo

    Los EXEC y los SYSTEM los carga el diablo

    Hace unos meses, jugando con Kamailio, descubrí que un operador enviaba llamadas con un Call-ID (un campo interno de SIP que sirve para identificar a qué diálogo pertenece ese mensaje) erróneo que incluía comillas («), barras invertidas (\), comillas simples (‘), y arrobas (@) entre otros caracteres, de forma que, en principio todo funciona correctamente hasta que me dio por guardar ese parámetro dentro de una base de datos y descubrí que no se guardaban por ejecutar una cadena SQL incorrecta.

    Me costó bastante descubrir el motivo de por qué esas llamadas no se guardaban, pero cuando por fín me di cuenta, aprendí la importancia de «sanitizar» cualquier información con la que vayamos a trabajar ya que, en cualquier momento podemos recibir una cadena malformada adrede para causar quién sabe qué.

    Tras pasar todos los parámetros por una función que eliminaba caracteres extraños y verificaba que todo era correcto, empecé a pensar ¿y si un call-id, un dnid, un CallerID o un destino erróneo y malformado como el que yo recibí, apareciera como parámetro de un comando de ejecución? Las consecuencias podrían ser terribles.

    Entonces apareció un mensaje en la lista de usuarios de Kamailio que coincidía justamente con lo que estaba evitando y es que un parámetro externo incluido dentro de una función de ejecución puede ser un grave problema de seguridad.

    En Asterisk no son pocas las configuraciones que incluyen comandos de este tipo: Ejecuciones al finalizar una conversación para comprimir, mover o copiar la grabación de dicha conversación utilizando el caller id como parámetro, …. ¿y si el callerid fuese una cadena de inyección de código del tipo: «\nrm -rf /\n»? Es cierto que esa cadena nunca sería válida en el RFC y seguro que IEEE aparecería en sueños, pero la jugarreta se la haría bien.

    Ya hablamos hace 13 años de cómo programar el dialplan de Asterisk para evitar este tipo de ataques malintencionados utilizando las funciones y aplicaciones de Asterisk en el artículo: Una nueva versión de Asterisk corrige el dialplan injection. En este caso el ataque permitía llamar a cualquier destino aunque el dialplan nos hubiera limitado el número al que llamar.

  • Adios chan_sip, la próxima versión de Asterisk obligará a utilizar PJSIP

    Adios chan_sip, la próxima versión de Asterisk obligará a utilizar PJSIP

    Aún recuerdo en uno de los primeros VoIP2DAY celebrados en Madrid, aprovechando que venía el jefe de desarrollo de Asterisk en aquel momento (Kevin P. Flemming), se hizo una mesa redonda donde usuarios de Asterisk pudieran plantear sus preguntas sobre Asterisk y debatir sobre cualquier tema de VoIP, prácticamente TODAS las preguntas que se hicieron fueron sobre lo mal que funcionaba el módulo chan_sip y lo necesario que era que mejorase urgentemente para todos los que estábamos allí presentes.

    Ahí se plantearon soluciones como utilizar sistemas de test propios de Asterisk que permitiera verificar el código en lugar de subir nuevas versiones con fallos que ya se habían corregido, se vieron características muy importantes en España que apenas se utilizan en otros países, y se planteó que podría ser muy interesante utilizar un stack propio separado de Asterisk para llevar el SIP y que pudiera evolucionar y cambiar sin que tuviera que actualizar todo Asterisk.

    Quizá fuera algo planteado previamente o que sirvió para apoyar una necesidad común, pero sea como fuere, a partir de ahí se empezó a mover el tema de que Asterisk necesitaba cambiar de stack SIP de chan_sip a otro que pudiera crecer y corregir los problemas básicos de Asterisk.

    Puede que desde ese día, la preocupación por el sistema que gestiona las peticiones SIP se tuvieron bastante más en consideración y se preocuparon por solucionar grandes problemas que aparecieron y que afectaban a la estabilidad de un gran número de Asterisk 1.4. Razón por la cual, la gente de Irontec empezó a congelar una versión de Asterisk que se conoció como Asterisk-ES-RSP (Rock Solid Patchset).

    Desde entonces se han hecho muchos cambios en chan_SIP y quizá desde entonces este stack ha ido mejorando todo lo posible, donde «todo lo posible» ha sido pese a sus limitaciones.

    Tales han sido las limitaciones que Asterisk 12 ya empezó a incluir un nuevo stack basado en PJSIP, un stack SIP bastante robusto, que funciona por sí solo en multitud de aplicaciones (softphones, servidores, etc.) y que sería incorporado a Asterisk como un componente externo gracias a una colaboración entre los desarrolladores de PJProject (el proyecto del que sale PJSIP) y Asterisk.

    Cada nueva versión de Asterisk ha aumentado la integración de PJSIP y disminuida la de chan_sip, hasta que Asterisk 16 ya incluía chan_pjsip como nuevo stack SIP por defecto y chan_sip pasaba a estar obsoleto («deprecated»), y no será hasta el próximo Asterisk 21 cuando realmente desaparezca chan_sip y sólo quede chan_pjsip.

    PJSIP es sólo un poco más complejo que chan_sip, básicamente porque permite más cosas, es más flexible, más completo y elimina las restricciones nativas que traía chan_sip y que, para muchos, es algo intrínseco a SIP como por ejemplo, como me dijo hace poco un usuario:

    «SIP no permite más de un registro simultaneo»

    A lo que rápidamente tuve que saltar y corregirle indicándole que es chan_sip quien no permite más de un registro simultaneo… cualquier otra aplicación SIP soporta tantos registros como deseemos. Y es que la gente está tan acostumbrada a los sistemas Asterisk y a lo que se permite o no en Asterisk que no repara en lo que se permite o no en SIP y que Asterisk con chan_sip limita algunas cosas.

    Aún así, la facilidad de chan_sip ha hecho que Asterisk llegue a prácticamente cualquier usuario y que pueda instalar, configurar y modificar una centralita de telefonía sin necesidad de saber de SIP, ni de dialplans, ni de telefonía. 😉

  • Asterisk 20 Released! Descubrimos las novedades que trae

    Asterisk 20 Released! Descubrimos las novedades que trae

    Hace un par de días el equipo de desarrolladores de Asterisk dio a conocer las dos últimas nuevas versiones que acaban de liberar: Asterisk 19 y la por fin y más esperada nueva versión de Asterisk 20 (Long Time Support) o lo que viene siendo la versión estable para sistemas en producción.

    Como suele ser costumbre recordar, Asterisk 20 es una versión LTS (Long Time Support) lo que significa que recibirá correcciones y soporte durante al menos 4 años + 1 año con mejoras de seguridad (en total 5 años recibiendo mejoras), por lo que si instalamos un sistema LTS tendremos 5 años de tranquilidad antes de pensar en actualizar a otra versión LTS.

    En esta página de Asterisk (Asterisk – Versions) podemos ver las versiones y los años que fueron publicadas y hasta cuando tendrán actualizaciones.

    Novedades del nuevo Asterisk 20

    Dentro de las novedades de la versión de Asterisk 20, la mayoría no son exclusivas, muchas de ellas ya vienen oficialmente en versiones anteriores:

    Soporte de Geolocalización de usuarios SIP (res_geolocation)

    Esto indica que Asterisk acaba de empezar a dar sus primeros pasos para cumplir con el RFC4119 que permite reconocer la geolocalización incluida dentro de un paquete SIP, ¿y esto para qué? Para poder enrutar llamadas en función de la posición geográfica en la que se encuentren. Por ejemplo, si tenemos dos usuarios SIP (user101 y user102) y ambos hacen una llamada al teléfono de emergencias 112, nos interesará saber que la geolocalización del user101 está en España y la geolocalización del user102 está en Francia, podremos llamar a diferentes destinos en función.

    La recarga del Queues ya no reseteará las estadísticas de las colas. (por fin!)

    Llevas varios días recopilando estadísticas de las colas, de repente haces un: queue reload y cuando vuelves a mirar las estadísticas de las llamadas contestadas por cada agente, llamadas abandonadas, etc… están todas a cero!!!. Pues esto parece que ya no volverá a ocurrir a partir de la versión Asterisk 20. (que ya iba siendo hora!) (Sólo por esta funcionalidad ya merece la pena actualizar todos los Asterisk que tengamos) 😀

    Mejora en el encaminamiento de SIP MESSAGES entre usuarios.

    Parece que han mejorado la funcionalidad de las aplicaciones «ReceiveText» junto con el «SendText» lo que permite recibir un mensaje SIP y enviarlo a otro peer, lo que nos servirá para que los usuarios SIP puedan enviarse mensajes a través de Asterisk.
    Actualmente esto había que hacerlo mediante un poco de código de Dialplan, pero parece que con estas mejoras, se reduce este código y se le dará más estabilidad con los mensajes SIP.

    Otras muchas mejoras más

    La lista de cambios que incorpora Asterisk 20 la podéis ver en su archivo CHANGES, aunque después de verlas, la mayoría son estabilizaciones de mejoras de versiones anteriores (Asterisk 13, Asterisk 16, Asterisk 18,…) y cambios menores: nuevos parámetros, nuevas funciones para manejar variables con cadenas de texto, mejoras en el canal PJSIP, alguna corrección de chan_SIP y cambios interesantes como curiosos, aunque oficialmente ya fueron incluidos en versiones anteriores, por lo que si queréis verlos, tenéis la lista oficial aquí:

    https://raw.githubusercontent.com/asterisk/asterisk/20/CHANGES

    Descargar Asterisk 20

    Por si queréis descargar Asterisk 20.0.0, podéis hacerlo donde siempre:

    https://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-20.0.0.tar.gz

  • Joshua C. Colp nuevo leader del proyecto Asterisk

    Joshua C. Colp nuevo leader del proyecto Asterisk

    Joshua C. Colp es uno de los desarrolladores de siempre que han estado desde siempre en Asterisk y que participa activamente desde hace muchos años, tanto ayudando a los usuarios en el foro y en las listas de correos, como resolviendo bugs y aportando nuevas características a las nuevas versiones de Asterisk.

    Hay que diferenciar entre los leaders del proyecto y los leaders de la comunidad que tienen otras funciones.

    Hace poco anunciaron que es el nuevo leader del proyecto Asterisk, lugar que estaba ocupada por Matthew Frederickson que hace poco que anunció que se iba de Sangoma a probar nuevos retos.

    La lista de leaders de Asterisk ha cambiado mucho desde que comenzó el proyecto pero seguro que si habéis seguido el día a día de Asterisk, os sonarán algunos:

    • Joshua C. Colp
    • Matthew Fredrickson
    • Matt Jordan
    • Kevin P. Fleming
    • Russell Bryant
    • Malcolm Davenport
    • Mark Spencer.

    Anuncio oficial: https://www.asterisk.org/a-few-announcements/

     

  • Vuelven los eventos presenciales a la VoIP

    Vuelven los eventos presenciales a la VoIP

    Durante la pandemia fuimos muchos los que celebramos que se continuaran haciendo ciertos eventos, aunque fuera de forma telemática, era el momento de dar a conocer al gran público las nuevas tecnologías y evolución que llevábamos años preparando (videoconferencias, teletrabajo, dejar de calentar la silla de la oficina y promover proyectos en los que realmente se valorasen los objetivos cumplidos en lugar de medir el tiempo que se está en la oficina, etc.). En un principio fue bien… a la vista de que la alternativa era dejar de trabajar, el teletrabajo y las reuniones online vinieron para quedarse, pero por otro lado, los eventos presenciales fueron los grandes perjudicados.

    Prácticamente todos los organizadores de eventos tuvieron que reconocer que no hay nada como los eventos presenciales, no obstante, la tecnología ha vuelto a salvar los muebles y los eventos se han podido hacer en un momento en que tuvimos que quedarnos en casa obligatoriamente y que hubiera dado al traste con muchos lanzamientos, charlas y en un momento en el que la comunicación entre empresas y usuarios era más necesaria que nunca.

    Por suerte, está volviendo todo a la normalidad y los eventos vuelven a ser protagonistas, y tal y como está ocurriendo con los conciertos de música, también pasen por una época dorada en la que se están celebrando más conciertos que nunca y posiblemente se espera que los eventos presenciales vuelvan con más fuerza que nunca y con más apoyo por parte de los usuarios.

    No obstante, y aunque nos hace especial ilusión volver a vernos cara a cara, si algo hemos aprendido es que no todo el mundo tiene la posibilidad de asistir presencialmente y sigue siendo igualmente importante la presencia online, tanto para retransmitir los eventos, como colaborar con participaciones telemáticas mediante videoconferencia que permitan tanto a asistentes como a ponentes, participar de eventos aunque se encuentren lejos.

    Es más importante la calidad de la ponencia, de los participantes, transmitir la información y el conocimiento, que el medio que se utilice: presencial o telemáticamente, por esta razón, la necesidad de incorporar un sistema de videoconferencia y retransmisión online a cualquier evento, debería ser algo obligatorio en los eventos que sucedan de ahora en adelante.

    La Astricon vuelve a anunciar que se celebra de forma presencial del 13 al 17 de Febrero de 2023 junto con la ITExpo en Fort Lauderdale, Florida. En el momento de escribir estas líneas, aún no está actualizada la web de la Astricon, pero la noticia está muy confirmada. Hay que recordar que ITExpo es un evento puramente comercial sobre telecomunicaciones y VoIP y aunque otros años ha aprovechado el tirón de la ITExpo, este año parece que será algo diferente a otros años… en fin, veremos qué ocurre a medida que se acerque en el tiempo. http://astricon.net

    ClueCon, otro de los clásicos de los eventos, se celebrará también presencialmente del 17 al 20 de Octubre de 2022, en Swissotel Chicago, Illinois , un evento de VoIP, WebRTC y telefonía donde se darán cita tanto desarrolladores como administradores y usuarios de esta tecnología. https://www.cluecon.com/

    En España, el pasado mes de Mayo se celebraron eventos como AOTEC, ASLAN y empresas de telecomunicaciones vienen celebrando eventos privados también presenciales, por lo que está claro que, si todo sigue como hasta ahora, los eventos presenciales vuelven a la carga.

    En espera estamos de otros eventos europeos con contenido VoIP y RTC como Fosdem, la KamailioWorld.

  • AEAP: El protocolo de aplicaciones externas de Asterisk

    AEAP: El protocolo de aplicaciones externas de Asterisk

    El equipo de desarrollo de Asterisk acaba de anunciar que ya está listo el AEAP (Asterisk External Application Protocol), un protocolo que llevaba más de un año siendo desarrollado y que por fin ha visto la luz a partir de las versiones de Asterisk 18.12.0 y Asterisk 19.4.0 y que nos permitirá conectar con aplicaciones externas para enviarles audio y datos y obtener resultados sobre estos.

    Un ejemplo básico que están utilizando como demostración para entender cómo funciona el AEAP es un módulo para convertir VOZ a TEXTO (speech-to-text) y que utiliza la API de Google para hacer la conversión, pero que podríamos utilizar otros motores y crear nuestro propio conector gracias a este protocolo.

    El protocolo AEAP nos permite crear un «subsistema» para dar de alta aplicaciones nativas de Asterisk que recibirán datos de entrada y generarán datos de respuesta. Para hacer estos «subsistemas» hay que conocer cómo funciona la arquitectura de Asterisk y utilizar los módulos res_aeap.h y res_aeap_message.h desde donde generaremos un nuevo «motor» al que podremos enviar los datos y que devolverá el resultado que éste nos devuelva.

    Como ejemplo de uso, han creado un «subsistema para hacer el reconocimiento de voz a texto» y lo han incorporado a Asterisk en el módulo res_speech_aeap.c lo que generará un nuevo motor de reconocimiento que podremos utilizar con los comandos estándar de Asterisk SpeechCreate, SpeechStart y SpeechDestroy para enviarle el audio y que el motor nos devuelva el resultado:

    exten => 550,1,NoOp()
    	same => n,Answer()
    	same => n,SpeechCreate(my-speech-to-text)
    	same => n,SpeechStart()
    	same => n,SpeechBackground(hello-world)
    	same => n,Verbose(0,${SPEECH_TEXT(0)})
    	same => n,SpeechDestroy()
    	same => n,Hangup()

    Ese «my-speech-to-text» es un motor «custom» que hemos creado gracias a un servidor websocket que recibe el audio y lo envía a la API de reconocimiento de Google para que nos devuelva en la variable ${SPEECH_TEXT} el resultado del reconocimiento, pero que con algo de maña, se puede adaptar para que, en lugar de Google, utilicemos otros sistemas diferentes, e incluso que el resultado, en lugar de devolvernos el texto, nos devuelva otra información (identificación de la persona que habla, estado de humor, edad aproximada de la persona, etc. por poner un ejemplo)

    Ese «my-speech-to-text» se configura en el archivo de configuración ‘aeap.conf‘ que tendría algo como esto:

    [my-speech-to-text]
    type=client
    codecs=!all,ulaw
    url=ws://127.0.0.1:9099
    protocol=speech_to_text

    y en el puerto 9099, tendríamos un servidor websocket que sería quien recibiría el audio y generaría las variables de resultado.

    En esta URL podéis encontrar el servidor websocket que usan como ejemplo:
    https://github.com/asterisk/aeap-speech-to-text

    Este sistema no es algo orientado al usuario final de Asterisk, quizá requiere de conocimientos algo más avanzados, pero los resultados son verdaderamente interesantes y prometedores.

    Mas información:
    Introducción al AEAP (protocolo)
    Introducción al uso del AEAP orientado a Reconocimiento de voz
    Interfaz API de Asterisk para el reconocimiento de voz
    Ejemplo de servidor y configuración básica para el reconocimiento de voz