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 :)