AGI PHP asterisk

AGI PHP asterisk

Posted Febrero 16th, 2010 by Munk3y

Hola amigos, nuevamente molestandolos.

Tengo una duda, con el AGI. Lo que pasa es que necesito hacer una aplicacion que acceda a una base de datos mysql obtenga un registro y diga los numeros. La información acerca de este ejemplo es muy variada en internet, pero lamentablemente tengo algunas dudas, que apesar de la info no logro clarificarlas:

- Cada vez que se inicia un AGI en PHP se tiene que poner unas cabecera parecida a esta #!/usr/local/bin/php -q, me imagino que depende de la instalacion de php en cada uno de los usuarios, como puedo saber cual es la ruta que maneja mi centos 5.

- Hay alguna forma de hacer algun tipo de debug al AGI.

-Para emplear las librerias se necesita esta linea de comando require('include/phpagi.php');, lo que hice fue bajarme la libreria phpagi 2.14 y copiar solo los archivos mkdocs.php, phpagi.php,phpagi-asmanager.php phpagi-fastagi.php en la carpeta agi-bin, como hago la referencia de require con que tipo de ruta

-Por ultimo, empece a poner echos "ok" despues de cada linea y descubri que solo llega a ejecutar la primera linea de mi script, cuando llega a la linea de $agi = new AGI(); no pinta ese echo.

La verdad que soy nuevo en este tema y necesito un poco de su apoyo para arreglar este tema.

Muchas gracias por su apoyo.

Adjunto script

#!/usr/bin/php -q
<?
require ('/var/lib/asterisk/agi-bin/phpagi.php');

$agi = new AGI();

$no=preg_replace("#[^0-9]#","",$agi->request[agi_callerid]);

$db = 'asterisk';
$dbuser = 'xxx';
$dbpass = 'xxx';
$dbhost = 'localhost';

mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db("$db"); //or die("could not open database");
$row=mysql_query("select title,firstname,lastname from clients where
telsearch like '%$no%' LIMIT 1");
if (mysql_num_rows($row)==1&&strlen($no)>4){//if found number and number greate$
$row=mysql_fetch_array($row);
if ($row[title]) $name .= $row[title]." ";
if ($row[firstname]) $name .= $row[firstname]." ";
if ($row[lastname]) $name .= $row[lastname];
}
else $name=$agi->request[agi_callerid];

$agi->set_variable("lookupcid", $name);
?>

Prueba con esto...

Puedes probar ejecutando el .php en la raíz de tu servidor apache, y verificar errores antes de llamarlo desde el dialplan, también que el archivo tenga permisos de ejecución.

#!/usr/bin/php5-cgi -q
<?php
{
// ruta a la libreri?a "PHP-AGI"::
require '/var/lib/asterisk/agi-bin/phpagi-2.14/phpagi.php';
$agi = new AGI();

$myServer = "localhost";
$myUser = "myuser";
$myPass = "mypass";
$myDB = "dbName";

//Conexion a la BD.
$dbhandle = mysql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");

//Seleccionar la BD con la que vamos a trabajar.
$selected = mysql_select_db($myDB, $dbhandle)
or die("Couldn't open database $myDB");

$agi->exec('PlayBack','hello-world');
$captura = $agi->get_data('beep',4000,4);
$idX = $captura['result'];

//Sentencia SQL.
$query = "SELECT * FROM cleintes WHERE idX= '$idX'";

//Ejecucion de la sentencia y almacenamiento del resultado.
$result = mysql_query($query);

//Y manipulas el resultado de la consulta.

//Cerrar la conexion.
mysql_close($dbhandle);
}
?>

*TFOT

Posted by oscarbello on Vie, 2010-02-19 15:18