Etiqueta: Programacion

  • Cómo crear tus propias aplicaciones SIP fácilmente con Javascript

    Cómo crear tus propias aplicaciones SIP fácilmente con Javascript

    Drachtio es una librería para NodeJS que nos permite crear aplicaciones SIP de una forma rápida y sencilla.

    Ya conocíamos que NodeJS es un sistema que nos permite crear aplicaciones de alto nivel de una forma rápida y bastante sencilla. Crear aplicaciones web, APIs y herramientas con unas pocas líneas de código y además, si lo que queremos hacer no requiere demasiada dificultad, seguramente existan librerías y documentación que nos ayudará a crear lo que necesitemos muy rápidamente.

    Ahora conocemos una librería que nos permite crear aplicaciones SIP utilizando NodeJS muy útiles para hacer herramientas rápidas, ejemplos de uso y por lo que parece en la documentación (bastante buena por cierto), de una forma muy sencilla, rápida y sin requerir de demasiados conceptos especiales.

    const Srf = require('drachtio-srf'); 
    const srf = new Srf(); 
    srf.connect({ 
        host: '127.0.0.1', 
        port: 9021, 
        secret: 'cymru' 
    }); 
    srf.on('connect', (err, hostport) => { 
        console.log(`connected to a drachtio server listening on: ${hostport}`); 
    }); 
    srf.invite((req, res) => { 
        res.send(486, 'So sorry, busy right now', { 
             headers: { 'X-Custom-Header': 'because why not?' } 
        }); 
    });

    Con estas pocas líneas tendremos un sistema que se conectará a un servidor NodeJS-SIP (https://drachtio.org/docs/drachtio-server) que hará de conector entre la librería DRACHTIO y SIP.Si queréis echarle un vistazo a esta interesantísima librería, la tenéis disponible aquí: https://drachtio.org/

  • Cómo hacer programas con Node.JS y Asterisk

    Cómo hacer programas con Node.JS y Asterisk

    PHP-vs-Node.jsSi hay algo que podemos decir con total rotundidad, es que Asterisk permite integrarse prácticamente cualquier aplicación gracias a los diversos interfaces que incluye desde sus primeras versiones: AGI, AMI y desde Asterisk 13, también con ARI. No obstante, no todos los avances se hacen desde el lado de Asterisk, también hay novedades en el lado de los lenguajes de programación: nuevos lenguajes, nuevas metodologías, nuevos paradigmas que permiten desarrollar soluciones mucho más eficientes, más rápidas y más fácilmente.

    Quizá puede sonar extraño, pero el 90% de las aplicaciones creadas para Asterisk están desarrolladas en PHP, quizá por su sencillez, quizá por que es uno de los lenguajes más utilizados, o bien por su extensa documentación. No obstante, existen muchos otros lenguajes mucho más orientados a crear aplicaciones de comunicaciones, tiempo real, multi-hebra, etc… que PHP.

    Una de estas novedades (que ya tiene casi 6 años) es Node.js, un sistema que nos permite desarrollar aplicaciones (generalmente orientadas a comunicaciones) de una forma rápida y fácil. Lo curioso es que utilizamos un lenguaje bastante conocido como Javascript, para crear aplicaciones que se ejecutan «en el lado del servidor» en lugar de «en el lado del cliente«, pero que las aplicaciones resultantes son bastante sencillas y resultonas.

    (más…)

  • Programa tus propias aplicaciones de Asterisk en PHP

    phpari_logo_transparent

    Tal y como explicamos cuando hablamos de ARI (Asterisk REST Interface) en la conferencia de Las 12 pruebas de Asterisk, una de las novedades de Asterisk 12, Asterisk 13 y posteriores, es la posibilidad de crear aplicaciones en casi cualquier lenguaje y que sean ejecutadas por Asterisk utilizando el «engine» Stasis que utiliza conexiones HTTP y websocket para enviar y recibir información de la aplicación y del propio Asterisk (similar a como lo hace AGI) pero manteniendo la conexión vía websocket (similar a como lo hace el AMI).

    Esa comunicación HTTP/Websocket requiere de algunas librerías para poder conectar con Stasis y poder interactuar con Asterisk, de ahí que no todos los lenguajes sean válidos, por lo que actualmente los lenguajes que disponen de librerías para conectar con Stasis son:

    Este último lenguaje (PHP) acaba de ser incorporado gracias a Nir Simionovich al que podremos ver en el VoIP2DAY 2014 y a Leonid Notik.

    Este nuevo sistema (ARI) es el camino que va a seguir Asterisk para poder interactuar con otras aplicaciones. Si bien no está claro que sea un sustituto de AGI y del AMI, podemos ver que todos los desarrolladores de Asterisk están volcados en este proyecto por lo que, tiene bastantes papeletas para ser el interfaz Asterisk-Aplicación definitivo de Asterisk y por lo tanto, va siendo hora de ir conociendo este sistema.

    Si tienes más dudas sobre ARI y cómo programar aplicaciones en Asterisk 12, Asterisk 13 y posteriores, puedes empezar leyendo esto: https://wiki.asterisk.org/wiki/display/AST/Getting+Started+with+ARI

    Más información y ejemplos sobre PHPARI: http://www.phpari.org/

  • Taller de desarrollo de Kamailio en Alicante

    kamailio

    La empresa Asipto junto a la Universidad de Alicante, organizan un taller de programación de Kamailio los próximos días 14 y 15 de Febrero (2 días de duración).

    Es importante destacar que este taller de dos días no es para aprender a configurar y administrar un Kamailio, si no para desarrollar nuevos módulos, parches, características sobre este sip proxy.

    • internal architecture
    • SIP parser
    • memory manager
    • locking manager
    • database API
    • config file language interpreter
    • RPC interface
    • pseudo-variables and transformations framework
    • internal libraries
    • module interface – write your own extensions in C as modules
    • documentation docbook format

    El coste por persona es de 140€ y aquellos que vayan a asistir también al Kamailio World (el 16  y 17 de abril), obtendrán 30€ de descuento.

    Para más información:
    http://www.kamailio.org/w/2013/01/kamailio-development-workshop-feb-14-15-2013-alicante-spain/

     

  • Profundizando en el Manager de Asterisk (presentación VoIP2DAY)

    Tras mucho tiempo pensando sobre qué iba a hablar en el Día de la Comunidad del VoIP2DAY, finalmente me decanté por un tema difícil: El Manager de Asterisk.

    Difícil porque es un tema puramente técnico, orientado no únicamente a usuarios de Asterisk si no, más concretamente, a programadores que estuvieran interesados en aprender cómo poder desarrollar una aplicación utilizando Asterisk como una herramienta de comunicaciones en lugar de como una centralita.

    Difícil porque es un tema bastante sencillo (en un principio) y que no da para hablar de él durante la hora asignada a la conferencia, por lo que el resto del tiempo tuve que aplicarme y poner algunos ejemplos que se habían ocurrido y que están por desarrollar.

    Difícil porque, acostumbrado a trabajar con Asterisk, ahora me encuentro con mi primer tema sobre desarrollo, y ciertamente, no es el más idóneo para asombrar a un público profesional que busca lo mejor de cada tema, y aunque la conferencia fue estupendamente, ciertamente me sorprendió que la sala se llenara y permaneciera así hasta el final.

    Si no pudistes venir al VoIP2DAY, bueno en unos días la organización publicará los vídeos de las conferencias, aunque eso sí, tendrás que esperar.

    No obstante, aquí están las transparencias:

    (más…)

  • Cómo programar un AGI en PHP sin librerías raras

    Cómo programar un AGI en PHP sin librerías raras

    Muchas personas que están aprendiendo Asterisk y que ya conocen las posibilidades de esta aplicación, quieren empezar a desarrollar sus propias soluciones para que Asterisk pueda interactuar con bases de datos, archivos del sistema de ficheros y en función de algún valor, conseguir que Asterisk haga una llamada, reproduzca una locución, o mil cosas más.

    Esto se realiza gracias a un concepto en Asterisk llamado AGI (Asterisk Gateway Interface) y que viene a ser un programa desarrollado por nosotros (o por otro usuario) que Asterisk ejecuta (importante esto último) y que sirve para que interactúe Asterisk con el sistema Linux, pudiendo acceder a archivos locales, puertos físicos (usb, puertos series, paralelos, etc.), bases de datos, páginas webs, y prácticamente cualquier otra cosa que pueda manejar nuestro sistema Linux.

    No voy a entrar en la «profundidad» en la que se entra en el curso Asterisk Advanced, pero sí ofrecer un esqueleto básico de un AGI programado en PHP sin necesidad de librerías externas y utilizando una programación muy sencilla (ideal para empezar a familiarizarse con este tipo de sistemas de integración Asterisk-*) (más…)

  • VoicePHP: Programando la VoIP con PHP

    PHP? es un lenguaje de programación interpretado mayoritariamente utilizado para la creación de páginas webs dinámicas, también se puede utilizar para realizar scripts de consola e incluso con alguna librería como GTK o nCurses se puede llegar incluso a programar aplicaciones de escritorio, pero dispone de ciertas limitaciones con respecto a otros lenguajes como puede ser el acceso a dispositivos hardware útiles para la VoIP (micrófonos, altavoces, etc.)

    No obstante TringMe, una empresa que tiene como objetivo conectar la VoIP con la web, acaba de desarrollar VoicePHP, un paquete que dota a PHP de todo lo necesario para integrar PHP en un servidor de aplicaciones de voz y poder conectarlo con otras tecnologías.

    Realmente la función que realiza VoicePHP es similar a la conocida como VoiceXML únicamente que utilizando PHP en lugar de XML por lo que para aquellos que programan en PHP seguro que les ofrece un abanico bastante interesante para realizar proyectos donde este tipo de herramientas sea de uso obligatorio.

    Más información: http://voicephp.com/

  • Actualizaciones del one-button-pickup de Thomson

    Mi colega Sergio Serrano me ha comentado hoy que acaba de publicar el último parche para el one-button-pickup para el Thomson ST2030 en Asterisk.

    Los terminales Thomsons disponen de serie de 10 teclas de función que sirven tanto para recibir llamadas simultaneas y mantenerlas a la espera como para monitorizar otras extensiones mediante la función BLF (Blink Light Function). Estas teclas se enciende cuando una extensión está hablando o parpadeando cuando están sonando.

    Cuando una extensión remota recibe una llamada, la tecla de función parpadea y gracias al último parche de Sergio, pulsando esa tecla se puede capturar la llamada que está sonando en esa extensión.

    Podeis encontrar el parche y el howto de cómo funciona en su página:
    http://www.asterisktron.org/…/parche-captura-llamadas-en-…-st2030/

    Vía: http://www.asterisktron.org/

  • Skype oficial para Asterisk

    Puede que la noticia no sea nueva para muchos seguidores de las noticias sobre Asterisk y VoIP, pero ando poniéndome al día y hay noticias por las que hay que pasar.

    En el Astricon que acaba de terminar Digium ha anunciado un nuevo proyecto de colaboración con una empresa que todos conocemos bastante bien: Skype.

    Este proyecto consiste en un nuevo canal compatible con Skype para conectar esta red a Asterisk de forma similar a la que ya hace Asterisk con servicios como GoogleTalk, y de hecho las reacciones no han tardado en llegar.

    Skype es un mal protocolo a nivel de red (aprovecha el ancho de banda del cliente para transportar audio a terceros) pero muy bueno para traspasar firewalls (lo cual puede hacer que en empresas el administrador de red lo vuelvan loco), podría abrirse un debate sobre las ventajas y desventajas de utilizar este sistema partiendo de la máxima que es un protocolo cerrado y propietario de una empresa, y esta dependencia nunca es buena.

    El funcionamiento es similar al del canal chan_gtalk únicamente cambiaría el ‘gtalk’ por ‘skype’ por lo que para hacer una llamada únicamente habría que enviarla así:

    exten=>1001,1,Dial(Skype/1001.dominio)

    La verdad, a mi no me termina de convencer, aunque entiendo el motivo por el que lo han hecho (hay muchos productos bastante chapuceros de conexión de Asterisk con Skype, por lo que es notable que hay interés en algo así) – comento lo de chapucero, porque el hecho de que un «chan_skype» requiera de un sistema con Windows para utilizar la API de Skype, es una chapuza -.

    No obstante, y manteniendo la objetividad de un producto que no conozco por el momento, me gustaría conocer alguna opinión al respecto… y obtener alguna respuesta a estas preguntas:

    – ¿Piensas que este producto tendrá el éxito esperado?
    – ¿Cuánto serías capaz de pagar por utilizar un canal como este?
    – ¿Crees que SIP podría llegar a convertirse en un protocolo de Comunicaciones unificiadas potente y abierto antes que otras empresas invadan este terreno?

  • Digium homenajea al principal desarrollador del chan_unicall

    Cualquiera que vea el ranking de usuarios de Asterisk puede darse cuenta que tras EEUU y España, los países con más usuarios de Asterisk pertenecen a un conjunto de países donde existe una señalización de primarios llamada MFC/R2 y que, a pesar de ser muy conocida en estos países, en EEUU y en Europa no lo es tanto por lo que, en teoría los desarrolladores existentes en los países implicados se encuentran a menudo solos, ante una señalización especial y no contemplada desde un principio por el desarrollo original de Asterisk.

    El creador del SpanDSP (Steve Underwood) es incluso más conocido por desarrollar un canal que ofreciera el soporte necesario para permitir la compatibilidad con esta señalización. Steve se encontró inmerso en muchos proyectos y no tenía capacidad para continuar con este soporte por lo que lo terminó dejando de lado y eso hizo que muchos usuarios y empresas se encontrasen con grandes dificultades para soportar esta señalización.

    Hace algún tiempo, buscando información sobre señalización MFC/R2 para primarios en Angola (como ex-colonia de Portugal, mucha tecnología proviene de Portugal y esta a su vez de Brasil) me encontré con un blog de un mejicano llamado Moises Silva (moythreads.com) que además de ser usuario y desarrollador de Asterisk, es el principal desarrollador del proyecto chan_unicall que dota de soporte para la señalización MFC/R2 continuando el trabajo que comenzó en su día Steve Underwood, y más tarde reescribiendo un stack de R2 nuevo e integrándolo en chan_zap, asi no es necesario usar chan_unicall ni unicall, libmfcr2, spandsp y demás librerias.

    Ahora leo en el blog de Digium un breve homenaje a Moises a modo de agradecimiento por su tiempo y esfuerzo y sobre todo, por ofrecerlo con libre para la comunidad de Asterisk, algo que es digno de admiración y de agradecimiento por parte de todos.

    A propósito, comentar que Moises Silva estará en la Astricon 2008 para dar una charla sobre el soporte de MFC/R2 en Asterisk. 🙂