Hola, quisiera saber si es posible leer con openser cualquier base de datos o únicamente se pueden leer las propias que crea openser. Además me gustaría saber si para leerlas tengo que usar avp_db_query o hay alguna otra forma.
Gracias.
El día 5 de mayo de 2009 13:56, Laura10 leboillos@hotmail.com escribió:
Hola, quisiera saber si es posible leer con openser cualquier base de datos o únicamente se pueden leer las propias que crea openser.
Con OpenSer/Kamailio sólo se puede hacer consultas *custom* a la BD especificada en el módulo AVPOPS: http://kamailio.org/docs/modules/1.5.x/avpops.html#id2478650
Con OpenSIPS en esa misma sección se pueden configurar varias conexiones a diferentes BD: http://www.opensips.org/html/docs/modules/1.5.x/avpops.html#id227261
Además me gustaría saber si para leerlas tengo que usar avp_db_query o hay alguna otra forma.
Las consultas custom se hacen con avp_db_query pertenciente al módulo AVPOPS.
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. Además me gustaría saber si hay alguna forma de saber cuál es el valor que se almacena en $avp(s:estado).
Gracias
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 :)
sr-users-es@lists.kamailio.org