Hagamos que México crezca..

Prefiere el consumo de lo Hecho en México

Prefiere el consumo de lo Hecho en México
BúsquedaHagamos que México crezca..
![]() Prefiere el consumo de lo Hecho en México Posts Recientes
Conversación |
¿ Como guardar en el CDR los PINS usados por rutas salientes configuradas desde FreePBX ?Hace unos días un cliente me pidió poder visualizar los PINS que se configuraron para poder marcar a números móviles desde la extensión del conmutador de voz sobre IP que se le implementó.
Hint: Los PINS son claves o passwords únicos que se asignan a cada usuario, de tal forma que si se desea llevar un control de llamadas a números 044, 045 o larga distancia por ejemplo tiene que introducir su PIN asignado, de tal forma que ese PIN queda almacenado en los registros de llamadas y por medio del cuál se puede identificar que usuario hizo la llamada independientemente de que extensión haya llamado. Cómo en este caso se le instaló FreePBX como administrador gráfico ya que asi se le facilitan las opciones de configuración, por lo que se modificó en primera instancia el archivo /var/www/cloudvoox/admin/cdr/call-log.php que es el script en PHP que genera los reportes de las llamadas realizadas, ahí solo se agregó la columna de ACCOUNTCODE de la tabla del CDR dónde quedan almacenados los PINS, pero en este caso la columna no reflejaba nada, por lo que checando la base de datos en el campo ACCOUNTCODE no se estaba guardando el PIN que se utilizaba cuándo se marcaba a un número móvil. Revisando el código fuente en /usr/src/asterisk/asterisk-addons-1.4.10/cdr/cdr_addon_mysql.c todo estaba bien, pues Asterisk si tenía habilitada la opción de guardado del PIN en ACCOUNTCODE. Por lo que me puse a revisar cómo estaba la configuración del plan de marcación que genera FreePBX, para esto chequé el archivo /etc/asterisk/extensions_additional.conf y encontré que en la macro de PINSETS, tenía lo siguiente:
[macro-pinsets] include => macro-pinsets-custom exten => s,1,GotoIf(${ARG2} = 1?cdr,1) exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"],Authenticate,/etc/asterisk/pinset_${ARG1}) exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"],ResetCDR,) exten => cdr,1,ExecIf($["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"],Authenticate,/etc/asterisk/pinset_${ARG1},a) exten => cdr,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"],ResetCDR,) ; end of [macro-pinsets] Ahí pude ver que en esta parte le faltaba una ,'a' despues de {ARG1}
exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"],Authenticate,/etc/asterisk/pinset_${ARG1}) Por lo que lo obvio era solo modificar este archivo y ponerle la 'a' al final, pero este archivo se regenera cada vez que en FreePBX se aplican cambios, por lo que no tenía sentido hacer la modificación aquí ya que al momento de aplicar cambios borraría los cambios realizados manualmente. Para esto busqué el código de FreePBX dónde generaba esta parte de las Macros de los Pinsets y el archivo es /var/www/cloudvoox/admin/modules/pinsets/functions.inc.php Ahí solo bastaba modificar la siguiente línea que es la 49
$ext->add('macro-pinsets', 's', , new ext_execif('$["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]', 'Authenticate',$asterisk_conf['astetcdir'].'/pinset_${ARG1})); Y agregar a l final lo siguiente
$ext->add('macro-pinsets', 's', , new ext_execif('$["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]', 'Authenticate',$asterisk_conf['astetcdir'].'/pinset_${ARG1},a')); Ahora solo bastaría en la configuración del ruteo de salida de FreePBX quitar el PIN a la ruta, aplicar los cambios, volver asignar el PIN y aplicar los cambios, con esto al momento de marcar a un número móvil, la ruta pediría el PIN y esté sería ya almacenado en el campo ACCOUNTCODE de la tabla CDR y asi poder ser reflejado en el reporte de llamadas de FreePBX #2 Re:¿ Como guardar en el CDR los PINS usados por rutas salientes configuradas desde FreePBX ?
Conmutador IP, <E-Mail> / 15 June, 2:00pm
Ahí tienes que programar un AGI en tu conmutador IP y en vez de que lo almacenes en un CDR podrías almacenarlo en alguna otra tabla, también puedes usar la función CDR y mandarlo a algún campo de la base de datos, pero ahi requieres programar el dialplan para que haga esa funcionalidad en específico. [ Responder (0) ]
Dejar un comentario
Fuentes XML de comentario: RSS | Atom
Estadísticas de visitantes186579 |
Nube de EtiquetasEventosEncuestaComentarios Recientes
|
#1 Re:¿ Como guardar en el CDR los PINS usados por rutas salientes configuradas desde FreePBX ?
Muy buenas,
Se te ocurre como almacenar en el cdr un codigo marcado por la persona que llama a la centralita. Pongamos un ejemplo, Llamamos a la centralita y nos aparece un IVR que nos pide un código para que introduzca la persona que llama y que necesitamos que se almacene en una tabla.
Igual has tenido que hacer algo similar en algún momento.
Saludos.