Cursos Asterisk en México

ayuda con un agi!!!!!!!!

Colapsar

Anuncio

Colapsar
No hay anuncio todavía.
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • ayuda con un agi!!!!!!!!

    Hola chicos!!

    Me acabo de introducir en esto de los AGIs y me gustaría realizar una prueba sencilla con uno dado y ya después meterme a programar el mio propio. El caso es que no entiendo muy bien el funcionamiento. Otra cosa, me gustaría que fuera en JAVA.

    Os cuento, he encontrado un agi en java, es el siguiente:

    Contenido del archivo: prueba-java.agi

    #!/bin/bash
    AGI_DIR=/var/lib/asterisk/agi-bin

    #ejecutar la clase java
    $JAVA_HOME/bin/java -cp $AGI_DIR PruebaAGI

    Contenido del archivo: PruebaAGI.java

    import java.io.*;

    public class PruebaAGI {
    public static void main( String[] args ) {
    try {
    String linea;
    LineNumberReader in = new LineNumberReader( new InputStreamReader( System.in ) );
    do { //leer el ambiente AGI
    linea = in.readLine();
    } while ( linea.length() > 0 );
    System.out.println( "SAY NUMBER 123 \"*#\"" );
    linea = in.readLine();
    System.err.println("Recibido "+linea);
    System.exit( 0 );
    } catch( Exception ex ) {
    System.err.println("Error: "+ex.getMessage());
    }
    }
    }


    Pues bien, mi problema ahora es que no se dónde debo colocar el archivo prueba-java.agi. El archivo PruebaAGI lo he compilado y puesto en var/lib/asterisk/agi-bin. ¿Eso lo estoy haciendo bien?
    Mi otra pregunta es para saber cómo paso el agi al DialPlan. Supongo que es de la siguiente forma: exten => 1,2,AGI(Prueba-java.agi). ¿Es correcto?

    Agradezco vuestra atención y ayuda!!!

  • #2
    Pues con Java no te sabría comentar exactamente, pero me hago a la idea que la interfaz agi nos va a dar igual como esté programado el script que la forma de trabajar va a ser la misma.

    El prueba-java.agi ha de estar en el directorio donde se encuentren los AGIs, esto lo miras en /etc/asterisk/asterisk.conf. Y es que va a depender del paquete Asterisk que estes usando (A@H, Debian, AstLinux, ...), por ejemplo en mis máquinas suelen estar alojados en /var/lib/asterisk/agi-bin

    Luego el prueba-java.agi ha de tener permisos de ejecución para el mismo usuario que ejecuta el asterisk. Puede ser que tengas permisos de ejecución para root y el servicio Asterisk lo ejecute el usuario asterisk, entonces no va a funcionar.

    Lo que suelo hacer antes de probar el AGI desde el Dialplan, es ejecutarlo desde la consola. No hay problema ya que las salidas/entradas las hace por stdin/stdout y esto me sirve para ver si tiene algún error de sintaxis.

    Y ya por último desde el Dialplan, tal como dices
    exten => 1,1,Answer
    exten => 1,2,AGI(prueba-java.agi)
    exten => 1,3,Hangup

    Si quieres ver en el CLI (asterisk -vvvvvvr) mensajes de depuración, lo puedes hacer ejecutando dentro del prueba-java.agi el comando verbose con el string de depuración que quieras poner.

    Espero que sirva,

    PD: He buscado un poco por internet y he visto este link, http://asterisk-java.sourceforge.net/tutorial.html, está pensado para FastAGI que es parecido pero con ejecución vía TCP/IP.

    Comentario


    • #3
      Muchisimas gracias por responder!!! Voy a probarlo y ya os cuento a todos

      Comentario

      Principales Usuarios Activos

      Colapsar

      No hay usuarios activos superiores.
      Trabajando...
      X