El Martes, 5 de Mayo de 2009, Laura10 escribió:
Hola,
estoy realizando la consulta de una base de datos desde opensips, con las
siguientes líneas de configuración en el fichero opensips.cfg:
route[3]
{
avp_db_query("SELECT estado FROM ejemplo2",
"$avp(s:estado)");
if (!avp_check("$avp(s:estado)","re/(0|1)/g"))
{
sl_send_reply("606", "Not Acceptable");
exit;
}
else if ($avp(s:estado)=="0")
{
sl_send_reply("480","Temporarily Unavailable");
exit;
}
}
A esta ruta se accede cada vez que llega un INVITE. El campo estado en la
base de datos de mysql ejemplo2 esta declarado como TINYINT(1).
El problema que tengo es que siempre se queda en el primer if, aunque el
valor que este en la base de datos sea 0 o 1, entonces no sé si estoy
realizando la lectura mal o si el tipo TINYINT se lee de alguna otra
manera.
"Creo" que al almacenar el resultado de la query en un AVP de tipo "s"
el
valor se almacena como string (que no estoy muy seguro), y entonces no sé si
tu expresión regular funciona.
Prueba primero a imprimir el resultado de dicho AVP:
avp_db_query("SELECT estado FROM ejemplo2", "$avp(s:estado)");
xlog("L_INFO", "avp(s:estado) = $avp(s:estado)\n");
Además me gustaría saber si hay alguna forma de saber
cuál es el
valor que se almacena en $avp(s:estado).
Sí, lo de antes :)
--
Iñaki Baz Castillo <ibc(a)aliax.net>