Etiqueta: dialplan

  • Cómo ejecutar comandos de Asterisk desde la consola

    A veces es necesario ejecutar comandos de Asterisk y sacar el resultado por la consola para luego poder procesarlo con un script y poder obtener información útil.

    La manera sencilla es mediante la ejecución de Asterisk con la línea:

    asterisk -rx 'comando'

    Cuando ejecutamos esta línea, lo que realmente ocurre es que nos conectamos a Asterisk, ejecutamos el comando y nos salimos obteniendo por la consola de Linux el volcado de lo que queremos conocer.

    Esta es, sin duda una de las mejores maneras cuando queremos obtener el resultado de un comando de forma puntual, pero para «monitorizar» un Asterisk, hay quien crea scripts que utilizan esta forma varias veces cada pocos segundos, lo que provoca que cuando alguien se conecta a la consola de forma natural, se encuentre con estos mensajes molestos:

    -- Remote UNIX connection
    -- Remote UNIX connection disconnected
    -- Remote UNIX connection
    -- Remote UNIX connection disconnected
    -- Remote UNIX connection
    -- Remote UNIX connection disconnected
    -- Remote UNIX connection
    -- Remote UNIX connection disconnected

    En cada conexión podemos obtener los usuarios SIP registrados, el número de llamadas actuales, los canales ZAP utilizados, etc, pero claro, este método hace impracticable el hecho de utilizar la consola de Asterisk.

    La manera interesante, es realizarlo mediante el AMI (manager), es decir, hacer una aplicación que se conecte al puerto del Manager (5038 por defecto), se autentifique correctamente y envíe los comandos necesarios para obtener los resultados necesarios de una manera transparente para el Asterisk y sin que los usuarios conectados vean el molesto mensaje.

    Para evitar esto, Tzafrir Cohen de Xorcom acaba de publicar un parche para evitar estos mensajes y poder ejecutar comandos sin necesidad de que nadie llegue a molestarse.
    Este parche está en la versión Trunk y lo podeis descargar de aquí:
    http://svn.digium.com/view/asterisk/trunk/contrib/scripts/astcli

    Yo por mi parte, tengo un programita en perl muy sencillo que se conecta al manager y con el que obtengo todos los datos necesarios sin tener que molestar a nadie y bastante rápido.

    Pese a ser una tontería de script, aquí os lo pongo por si a alguien le interesa:
    http://www.sinologic.net/proyectos/asterisk-cmd

  • Cómo crear IVR complicados con Asterisk (y con vídeo 3G)

    En las empresas pequeñas no suele ser lo habitual tener un IVR, aunque en empresas medianas o grandes es recomendable e incluso muy necesario disponer de un sistema que permita al llamante seleccionar el departamento, la persona o incluso acceder a información personal a través de lo que se llama «IVR» aunque comúnmente también se denomina «menú». IVR (Interactive Voice Response) en español (Respuesta de voz interactiva).

    Asterisk, al disponer de una programación del dialplan totalmente personalizable gracias a la infinidad de métodos disponibles para gestionar una llamada, dispone de un potencial asombroso para crear menús tan sencillo o complicados como uno quiera.

    A medida que la empresa va creciendo o dispone de más servicios de cara al cliente, va aumentando el tamaño del menú de entrada de su sistema, así por ejemplo todos conocemos los IVR de las operadoras de telecomunicaciones que interactúan con la voz (ni siquiera es necesario pulsar un dígito) y nos llevan a diferentes menús según la opción elegida.

    Cuando programamos en el ‘extensions.conf’ un IVR por lo general suele ser sencillo, ya que más de tres submenús empieza a parecer bastante tedioso hacer modificaciones y si tenemos que añadir una opción al segundo submenú con otro menú incluida las locuciones correspondientes, puede llegar a convertirse en todo un desafío.

    A medida que el menú en el dialplan se va complicando, uno empieza a ver con buenos ojos algo que escuchó sobre el VoiceXML que permitía programar menús IVR de una forma bastante más sencilla y segura.

    El VoiceXML no únicamente sirve para gestionar menús, también sirve para conectar a un TextToSpeech y a un ASR de manera que pueda hablar y escuchar a la persona que está al otro lado de la línea y poder realizar acciones y comandos en base a lo que diga o haga, pero esto es otro tema del que ya hablaré en otro momento.

    Si además de permitirnos menús más serios, disponemos de un Asterisk con soporte de Videollamada 3G conectado a una línea RDSI (Básica o Primaria), entonces los resultados son altamente espectaculares.

    Podeis ver más demostraciones en:
    http://www.i6net.com/support/video-demos/

    y cómo instalarlo y configurarlo con Asterisk, en:
    http://www.i6net.com/support/install/

  • Visual Dialplan bajo Linux

    VisualDialplanUna de los inconvenientes que encontré cuando probé la aplicación Visual Dialplan era que, estando programado en Java, únicamente era compatible con Windows, una fea costumbre de utilizar un lenguaje multiplataforma para crear aplicaciones uniplataforma.

    Anoche me llegó un email anunciándome que la empresa Apstel acaba de desarrollar la versión para Linux de su aplicación Visual Dialplan. Esta versión aún se encuentra en fase beta, pero se puede probar y seguro que a más de uno le gusta el sistema para evitar utilizar el editor de textos o un sistema basado en web.

    Podeis solicitar ser betatester en su página web:
    http://www.apstel.com/products/vdp/

  • Cómo ejecutar AGI de forma asíncrona

    Lo primero que hay que saber es qué es un AGIqué es el AMI.
    Una vez sepamos la diferencia entre estas dos maneras de ejecutar aplicaciones de manera que interactúen con Asterisk, nos daremos cuenta que los AGI deben ejecutarse cuando se realiza una llamada (para consultar un número de teléfono en una base de datos, o similar), mientras que el AMI está contínuamente conectado a Asterisk y puede ejecutar comandos cuando quiera independientemente de cuando haya o no llamadas activas.

    El objetivo de esta técnica, consiste en ejecutar AGI cuando se produzca un evento, no cuando se ejecute desde el dialplan.

    Combinando las dos técnicas (AGI y AMI), se puede llegar a hacer esto:

    # telnet localhost 5038
    Action: Login
    Username: test
    Secret: test

    Action: AGI
    Channel: SIP/33-blah
    Command: EXEC Playback tt-monkeys
    CommandID: MyCommandID

    En este caso, habremos ejecutado un comando de AGI en el instante que hayamos decidido, no hace falta que lo ejecute el propio dialplan de Asterisk.

    Otra idea estupenda sería poder ejecutar comandos AGI incluso desde la consola de Asterisk:

    tcore*CLI> agi exec SIP/testing-09a5b960 “EXEC startmusiconhold”
    tcore*CLI> agi exec SIP/testing-09a5b960 “EXEC stopmusiconhold”
    tcore*CLI> agi exec SIP/testing-09a5b960 “EXEC Dial(Agent/23)”

    Para esto, hay un parche que permite utilizar los comandos AGI desde la consola:
    http://www.moythreads.com/asterisk-1.4.15-async-agi.patch

    Una técnica más para poder llegar a hacer aquello que tenemos en la cabeza. 🙂

    Vía: http://www.moythreads.com/wordpress/2007/12/24/asterisk-asynchronous-agi/
     

  • Presentando Visual Dialplan v.1.2

    Hace tiempo que desde APSTEL nos avisaron que disponían de una nueva versión compatible con Asterisk 1.4 y Asterisk 1.2 para diseñar dialplans de una forma gráfica y sobre todo bastante intuitiva.

    No es que sea muy amigo de los interfaces (los que me conoceis, creo que ya lo sabeis), pero siempre es bueno conocer las alternativas ya que hay casos en los que personalmente los aconsejo, bien porque la programación es muy sencilla o bien porque varía tantas veces que merece la pena que la persona pueda cambiarla a su placer.

    Tras ver el aviso en la web de Saúl y recibir un correo me acordé que quedé pendiente de echarle un vistazo y ver cómo funcionaba, algo que requería de un mínimo de tiempo, pero no es precisamente algo de lo que me sobre.

    Visual DialplanLa primera crítica constructiva es que únicamente funciona bajo Windows, eso considerando que instala una máquina virtual Java (JRE) creo que es un paso atrás. Creo que por el mismo esfuerzo se podría hacer compatible para más sistemas como Mac o Linux.

    El sistema es muy intuitivo, realmente no se hace necesario leer ningún manual para entender cómo funciona, aunque sigue siendo necesario conocer los comandos, algo que generalmente se le suele evitar al usuario final aunque siempre se peca de demasiado completo o demasiado simple.

    El diseño es realmente a base de «botonazo de razón» y salvo para escribir algún valor, realmente estamos programando el dialplan de una manera visual, algo que parece evidente llamándose «Visual Dialplan«, pero por lo menos esta aplicación cumple con lo que dice su nombre.

    Realmente recomiendo probarlo a todo aquel que tenga windows en alguna máquina para que compruebe lo sencillo que puede llegar a ser.

    Por otro lado, he echado de menos funciones para manejar colas y agentes, algo que viene en la versión profesional.

    El precio es bastante barato ($69) en la versión básica y $149 la versión profesional que incluye soporte de AGI, Colas, Agentes, soporte de Billing y algunas cosas más avanzadas.
    Quizá los que estamos acostumbrados a editar el archivo, esta aplicación nos parezca un poco engorrosa (las aplicaciones visuales suelen serlo) pero para alguien que está empezando, la descripción de cada aplicación y el poder ver todas las opciones de cada aplicación de Asterisk puede serle de gran ayuda.

    Enlace: http://www.apstel.com/products/products.jsp

  • Cómo configurar restricciones a usuarios SIP en Asterisk

    He recibido varios emails con esta pregunta y como es algo tan sumamente sencillo de hacer, que voy a contestarlo por aquí, ya que creo que no merece la pena liarse demasiado.

    Esta forma por supuesto, es modificable según la necesidad, he supuesto el caso en que tenemos una tarjeta Digium conectada a la PSTN (Zap/g1) para hacer llamadas nacionales gratis, otra tarjeta para llamadas internacionales (Zap/g2) y un proveedor SIP para llamadas a móviles (SIP/proveedor).

    También he recalcado tres parámetros que en mi opinión son muy importantes y poca gente que utiliza FreePBX lo tiene bien configurado lo que da bastantes y muy raros problemas con las extensiones: localnet, externip y realm. Esto DEBE estar configurado siempre.

    Aquí la explicación de cómo se puede hacer:

    Niveles Asterisk

    Para verlo, tan solo hay que hacer clic en la imagen.
    Espero que con este ejemplo, queden resueltas las dudas. 🙂