Marcar Extension Personalizada desde IVR

Discussion in 'Elastix 2.x' started by joeljag19, Jan 17, 2011.

  1. joeljag19

    Joined:
    Jan 13, 2011
    Messages:
    12
    Likes Received:
    0
    Soy nuevo en el mundo de Elastix(Asterisk), tengo un problema, estoy montando un IVR que tendrá interacción con un base de datos MySQL mediante AGI-PHP, pero eso ya creo que puede conseguirlo.

    En el archivo extensions_custom.conf creo la extension para poder acceder a ella
    exten => 101,1,Answer
    exten => 101,2,agi(consulbal.php)
    exten => 101,3,Hangup

    Hasta aqui todo excelente marco desde cualquier extension sip y el script corre perfecto, el problema es que quiero que poder acceder a esa extension desde el IVR, por ejemplo tener en el IVR (Si quiere serificar su saldo marque "2") y esto me direccione a esa extension.

    El IVR lo configure mediante la GUI de elastix el problema es que no hay ningun espacio donde pueda poner una extension como esta, si voy a extension y creo una extension tipo custom cuando la llamo desde el IVR no funciona pero como dije anteriormente desde las extensiones SIP se puede acceder correctamente.
     
  2. hgeorge123

    Joined:
    Jul 25, 2010
    Messages:
    193
    Likes Received:
    0
  3. joeljag19

    Joined:
    Jan 13, 2011
    Messages:
    12
    Likes Received:
    0
    Gracias, por la ayuda pero encontre una forma mendiante el usao de freepbx

    Open up extensions_custom.conf and you should find a section called
    [from-internal-custom] - add your code to it:
    exten => 500,1,Answer()
    exten => 500,2,Authenticate(0000)
    exten => 500,3,Background(welcome)
    exten => 500,4,System(/usr/local/bin/zbron.sh)
    exten => 500,5,Wait(1)
    exten => 500,6,Playback(vm-goodbye)
    exten => 500,7,Hangup()
    Then go to the maint section of the web interface (freepbx) and switch to the tools tab. Add a custom destination to "from-internal-custom,500,1" with a description of your choice. You should then see that destination (with the name you gave it) when you go to IVRs, follow me's etc.

    Esto era lo que necesitaba, primero creo mi extesion personal en extensions_custom.conf en la seccion [from-internal-custom]...

    Luego con freepbx creo una extension y ya puedo llamarla directamente desde el IVR.
     
  4. yjtrujillo

    Joined:
    Nov 3, 2009
    Messages:
    8
    Likes Received:
    0
    Hola.

    tengo la siguiente situación: Necesito que una opción del IVR me deje marcar una extención que conosco que existe y me comunique!!


    Gracias...


    Saludos.
     
  5. edmart777

    Joined:
    Oct 21, 2011
    Messages:
    24
    Likes Received:
    0
    Amigo soy nuevo en asterisk y me gustaria que me ayudaras por que hace mucho que no puedo hacer una consulta mediante un AGI para poder que con la funcion SayDigits me confirme la cantidad de un producto y segun tu post se que ya lo tienes. yo tengo algo como esto:

    #!/usr/bin/php -q
    <?php
    ob_implicit_flush(true);
    set_time_limit(6);
    error_reporting(0);

    // Se abren los diferentes archivos (STDIN, STDOUT y un archivo de log del AGI)
    $in = fopen("php://stdin","r");
    $out = fopen("php://stdout","w");
    $stdlog = fopen("/var/log/asterisk/agi.log", "w");

    // Habilita modo debugging (mas verbose)en el archivo de log definido
    $debug = true;


    // Define la funcion read antes de empezar el bucle principal
    function read() {
    global $in, $debug, $stdlog;
    $input = str_replace("\n", "", fgets($in, 4096));
    if ($debug) fputs($stdlog, "read: $input\n");
    return $input;
    }

    // Define la funcion write que escribe el output en el STDOUT
    function write($line) {
    global $debug, $stdlog, $out;
    if ($debug) fputs($stdlog, "write: $line\n");
    fputs($out,$line."\n");
    fflush($out);
    echo $line."\n";
    }


    // Colocamos headers AGI dentro de un array
    while ($env=read(){
    $s = split(": ",$env);
    $agi[str_replace("agi_","",$s[0])] = trim($s[1]);
    if (($env == "") || ($env == "\n")) {
    break;
    }
    }

    // Funcion que conecta al banco de datos
    function connect_db() {
    $db_connection = mysql_connect('localhost','root','tectel2011') or die (mysql_error());
    $db_select = mysql_select_db('stock') or die (mysql_error());
    }

    // Programa Principal
    connect_db();
    // Almacena valor de la variable COD en
    write("GET VARIABLE COD");

    //lee variable in
    $c = fgets($in, 4096);
    // reemplaza retorno de carro por espacios
    $c = str_replace("\n","",$c);
    // quita 14 caracteres a la izquiera y 1 a la derecha
    $c = substr($c,14);
    $c = substr($c,0,-1);
    $query = "SELECT cantidad FROM productos WHERE producto='$c'";
    $query_result = @mysql_query($query);
    $result = mysql_fetch_row($query_result);
    $valor = "$result[0]";
    write("EXEC SayDigits \" $valor \"\n");
    read();
    fclose($in);
    fclose($stdlog);
    exit;
    ?>

    si aun lo tienes porfavor me lo envias a mi email edmart777@gmail.com desde ya muchas gracias amigo.
     

Share This Page