Diferencia entre revisiones de «RecordOmni»

De VIVAitwiki
Ir a la navegaciónIr a la búsqueda
 
(No se muestran 33 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
=== Introducción ===
 
=== Introducción ===
  
Recordomni proporciona una gestión estructurada de los ficheros de grabaciones de Omnisuite, permitiendo:
+
recordOmni (actualmente versión 0.0.4) proporciona una gestión estructurada de los ficheros de grabaciones de Omnisuite, permitiendo:
 
* Reorganizar las grabaciones en una estrucutura de directorios en arbol basada en año/mes/dia/hora/minuto
 
* Reorganizar las grabaciones en una estrucutura de directorios en arbol basada en año/mes/dia/hora/minuto
 
* Almacenar las grabaciones en esa estructura de directorios y en formato mp3 (para reducir espacio)
 
* Almacenar las grabaciones en esa estructura de directorios y en formato mp3 (para reducir espacio)
Línea 16: Línea 16:
 
* Escribe el dato en el campo "value" de la tabla "voice_recordings"
 
* Escribe el dato en el campo "value" de la tabla "voice_recordings"
 
* En el campo "type" de la tabla "voice_recordings" las llamadas pueden ser "inbound", "outbound", "dialer" (hay más tipos pero solo estamos usando esos de momento)
 
* En el campo "type" de la tabla "voice_recordings" las llamadas pueden ser "inbound", "outbound", "dialer" (hay más tipos pero solo estamos usando esos de momento)
 +
<br>
 +
<br>
  
 +
=== Instalación y puesta en marcha ===
  
=== Instalación ===
+
'''Para instalar:'''
 
 
Para instalar:
 
 
* Instalar paquetes
 
* Instalar paquetes
 
         sudo apt install libdbi-perl
 
         sudo apt install libdbi-perl
Línea 29: Línea 30:
 
* Copiar el archivo <code>recordOmni.pconf</code> a la carpeta <code>/etc/MDtel</code> con los permisos <code>644</code> y usuario <code>root:root</code>
 
* Copiar el archivo <code>recordOmni.pconf</code> a la carpeta <code>/etc/MDtel</code> con los permisos <code>644</code> y usuario <code>root:root</code>
 
* Copiar el archivo <code>recordOmni.sh</code> a la carpeta <code>/etc/init.d</code> y renombrarlo a <code>recordOmni</code> con los permisos <code>755</code> y el usuario <code>root:root</code>
 
* Copiar el archivo <code>recordOmni.sh</code> a la carpeta <code>/etc/init.d</code> y renombrarlo a <code>recordOmni</code> con los permisos <code>755</code> y el usuario <code>root:root</code>
* Si se quiere habilitar el arranque automatico
 
* Configurar el archivo <code>/etc/MDtel/recordOmni.pconf</code>.
 
 
<br>
 
<br>
  
'''Parametros importantes para configuración de <code>recordOmni.pconf</code>:'''
+
<code>recorOmni</code> queda instalado de esta manera como un demonio en el sistema
 +
<br><br>
 +
 
 +
'''Para puesta en marcha'''
 +
* Habilitar el arranque automatico con el comando <code>systemctl enable recordOmni </code>
 +
* Configurar el archivo <code>/etc/MDtel/recordOmni.pconf</code>; ver sección [[#Configuración]]
 +
<br>
 +
<br>
 +
 
 +
=== Configuración ===
 +
==== Parametros importantes para configuración ====
  
 
'''La conexion con la BD'''
 
'''La conexion con la BD'''
Línea 42: Línea 51:
 
         $dbUsuario = 'root';
 
         $dbUsuario = 'root';
 
         $dbClave = 'aaaaaqaaaaaa';
 
         $dbClave = 'aaaaaqaaaaaa';
<br>
 
 
<br>
 
<br>
 
'''Directorios donde se van a copiar los archivos'''
 
'''Directorios donde se van a copiar los archivos'''
Línea 50: Línea 58:
 
<br>
 
<br>
 
El parametro grabRutaUsaTimestamp si vale 1 se crean los directorios con AAAA/MM/DD/HH/MM/SS
 
El parametro grabRutaUsaTimestamp si vale 1 se crean los directorios con AAAA/MM/DD/HH/MM/SS
<br>
 
 
<br>
 
<br>
 
         # Directorio donde van el lado cliente de las grabaciones si '' no se obtiene
 
         # Directorio donde van el lado cliente de las grabaciones si '' no se obtiene
 
         $grabRutaDestCli = '/tmp/grabacionesCli';
 
         $grabRutaDestCli = '/tmp/grabacionesCli';
 
         $grabRutaCliUsaTimestamp = 0;
 
         $grabRutaCliUsaTimestamp = 0;
<br>
 
 
<br>
 
<br>
 
'''Compresion de los archivos MP3'''
 
'''Compresion de los archivos MP3'''
 
         #Compresion del mp3 (valores permidos: 8k 16k 32k 128k)
 
         #Compresion del mp3 (valores permidos: 8k 16k 32k 128k)
 
         $grabCompresionMP3 = 32k
 
         $grabCompresionMP3 = 32k
<br>
 
 
<br>
 
<br>
 
'''Dias que deben transcurrir para dar alarma al arrancar y subir el contador "Antiguas" en la monitorizacion'''
 
'''Dias que deben transcurrir para dar alarma al arrancar y subir el contador "Antiguas" en la monitorizacion'''
 
         # Dias transcurridos de la llamada a procesar para dar alarma
 
         # Dias transcurridos de la llamada a procesar para dar alarma
 
         $diasDesdeLlamada = 5;
 
         $diasDesdeLlamada = 5;
 +
<br>
  
 +
==== Ejemplo de fichero <code>recordOmni.pconf</code> completo y operativo ====
  
'''Nueva versión de recordOmni v0.0.3'''
+
#
 
+
# Configuracion de recordOmni.pl
La nueva versión incorpora las siguientes modificaciones:
+
#
 
+
# 0: Solo alarmas en archivo log - 1: alarmas y trazas
1)Corrección de un error que no hacia caso del nombre de la base de datos.
+
$depurar = 1;
 
+
2)Nuevo parámetro de configuración (opcional)
+
# 0: Arranca como proceso - 1: arranca como demonio
 
+
$soyDemonio = 1;
Este parámetro fija el id por el que va a empezar la búsqueda de grabaciones, con este parámetro podemos saltarnos todos los registros de grabaciones realizados en las pruebas de carga y que no tarde tanto tiempo en buscar la primera grabación válida y el tiempo de comienzo de procesado tras un reinicio
+
 
+
# Archivo de log ('': salida estandar)
$dbUsuario = 'root';
+
$logArch = '/var/log/record/recordOmni.log';
$dbClave = '**********';
+
#logArch = '';
indice inicial para empezar la busqueda de grabaciones (0 desde el principio)
+
$dbIndInicial = 0;
+
# Archivo para el pid (eliminando el .pid final)
3)Fichero marca para comprobar que los directorios están montados
+
$pidArch = '/var/run/record/recordOmni';
 
+
Parámetro para comprobar que el directorio donde se van a mover las grabaciones es el correcto, si el parámetro está vacío la comprobación no se realiza, si el parámetro esta configurado y el fichero no se encuentra las grabaciones no se procesan y se genera una alarma.
+
# 0: El programa se ejecuta indefinidamente - 1: solo una vez (util en depuracion)
 
+
$unaVezSolo = 0;
Directorio donde van las grabaciones
+
$grabRutaDest = '/tmp/grabaciones';
+
# Tiempo de espera en segundos cuando no hay conexion o cuando no hay llamadas
#Fichero que tiene que estar en la ruta destino para comprobar que si es una nas este montada. Si es '' no se comprueba
+
$toBucle = 15;
$grabDestFileMarca = '';
+
 
+
# Tipos de llamada analizados
 
+
$tiposLlamada = "'inbound','outbound','dialer','internal'";
=== Invocación ===
+
 +
# Conexion de base de datos
 +
$db = 'motion2';
 +
$dbHost = 'omsui-bdtr';
 +
$dbPort = '3306';
 +
$dbUsuario = 'xcall';
 +
$dbClave = '';
 +
# indice inicial para empezar la busqueda de grabaciones (0 desde el principio)
 +
$dbIndInicial = 113920;
 +
# segundos de retardo en la fecha de la BD para empezar a procesar grabaciones (0 sin retardo)
 +
# 3600 (1 hora)
 +
# 86400 (1 dia)
 +
$dbSegRetardo = 3600;
 +
 +
# Configuracion de la supervision
 +
$supPort = '2111';
 +
 +
# Directorio donde se localizan las grabaciones
 +
$grabRutaOrig = '/var/spool/asterisk/monitor';
 +
 +
# Directorio donde van las grabaciones
 +
$grabRutaDest = '/mnt/almacen/grabaciones';
 +
 +
#Fichero que tiene que estar en la ruta destino para comprobar que si es una nas este montada. Si es '' no se comprueba
 +
$grabDestFileMarca = 'NASmontada';
 +
 +
# grabRutaUsaTimestamp valores        0 $grabRutaDest
 +
#                                    1 $grabRutaDest/AAAA/MM/DD
 +
#                                    2 $grabRutaDest/AAAA/MM/DD/HH/MM
 +
$grabRutaUsaTimestamp = 1;
 +
 +
#Compresion del mp3 (valores permidos: 8k 16k 32k 128k)
 +
$grabCompresionMP3 = 32k
 +
#Hay compresion
 +
#grabCompresion  valores    0 sin compresion
 +
#                          1 wav estereo -> mp3  (defecto)
 +
$grabCompresion = 1;
 +
 +
# Directorio donde van el lado cliente de las grabaciones si '' no se obtiene
 +
$grabRutaDestCli = '/mnt/almacenCIL/grabacionesCli';
 +
 +
# grabRutaCliUsaTimestamp valores    0 $grabRutaDest
 +
#                                    1 $grabRutaDest/AAAA/MM/DD
 +
#                                    2 $grabRutaDest/AAAA/MM/DD/HH/MM
 +
$grabRutaCliUsaTimestamp = 0;
 +
 +
# Dias transcurridos de la llamada a procesar para dar alarma
 +
$diasDesdeLlamada = 5;
 +
<br>
  
 
=== Diagnósticos ===
 
=== Diagnósticos ===
 +
Los eventos de recorOmni quedan registrados en <code>/var/log/record/recordOmni.log</code>
 +
<br>
  
Los eventos de recorOmni quedan registrados en <code>/var/log/record/recordOmni.log</code>
+
Para ver el estado del proceso, y reiniciarlo en caso necesario
 +
/etc/init.d/recordOmni status
 +
/etc/init.d/recordOmni stop
 +
/etc/init.d/recordOmni start
 
<br>
 
<br>
 
<br>
 
<br>
 +
 +
 +
[[Category:tecnico]]
 +
[[Category:Omnisuite]]

Revisión actual del 08:22 23 feb 2026

1 Introducción

recordOmni (actualmente versión 0.0.4) proporciona una gestión estructurada de los ficheros de grabaciones de Omnisuite, permitiendo:

  • Reorganizar las grabaciones en una estrucutura de directorios en arbol basada en año/mes/dia/hora/minuto
  • Almacenar las grabaciones en esa estructura de directorios y en formato mp3 (para reducir espacio)
  • Extraer uno de los canales de la comunicación (el del lado del cliente) para dejarlo además en otra carpeta


Para ello, en Omnisuite:

  • Se modifica en la tabla "voice_recordings" el campo "value" para reflejar el nuevo destino de la grabación (en vez de "/var/spool/asterisk/monitor" será por ejemplo "/mnt/grabaciones/2025/01/17/11/25")
  • Podemos escuchar la grabación (que ha quedado en formato mp3) desde el administrador voice/voice recordings y seleccionando en una grabación la opción "edit voice recording" en la pestaña "player"


El proceso que hemos realizado se basa en que actualmente Motion

  • Deja las grabaciones en /var/spool/asterisk/monitor
  • Escribe el dato en el campo "value" de la tabla "voice_recordings"
  • En el campo "type" de la tabla "voice_recordings" las llamadas pueden ser "inbound", "outbound", "dialer" (hay más tipos pero solo estamos usando esos de momento)



2 Instalación y puesta en marcha

Para instalar:

  • Instalar paquetes
       sudo apt install libdbi-perl
       sudo apt install libdbd-mysql-perl
  • Copiar el archivo recordOmni.pl a la carpeta /usr/local/sbin y darle los permisos 744 y usuario root:root
  • Copiar el archivo recordOmni.logrotate a la carpeta /etc/logrotate.d renombrarlo a recordOmni con los permisos 744 y usuario root:root
  • Crear la carpeta /etc/MDtel
  • Copiar el archivo recordOmni.pconf a la carpeta /etc/MDtel con los permisos 644 y usuario root:root
  • Copiar el archivo recordOmni.sh a la carpeta /etc/init.d y renombrarlo a recordOmni con los permisos 755 y el usuario root:root


recorOmni queda instalado de esta manera como un demonio en el sistema

Para puesta en marcha

  • Habilitar el arranque automatico con el comando systemctl enable recordOmni
  • Configurar el archivo /etc/MDtel/recordOmni.pconf; ver sección #Configuración



3 Configuración

3.1 Parametros importantes para configuración

La conexion con la BD

       # Conexion de base de datos
       $db = 'motion2';
       $dbHost = 'localhost';
       $dbPort = '3306';
       $dbUsuario = 'root';
       $dbClave = 'aaaaaqaaaaaa';


Directorios donde se van a copiar los archivos

       # Directorio donde van las grabaciones
       $grabRutaDest = '/tmp/grabaciones';
       $grabRutaUsaTimestamp = 1;


El parametro grabRutaUsaTimestamp si vale 1 se crean los directorios con AAAA/MM/DD/HH/MM/SS

       # Directorio donde van el lado cliente de las grabaciones si  no se obtiene
       $grabRutaDestCli = '/tmp/grabacionesCli';
       $grabRutaCliUsaTimestamp = 0;


Compresion de los archivos MP3

       #Compresion del mp3 (valores permidos: 8k 16k 32k 128k)
       $grabCompresionMP3 = 32k


Dias que deben transcurrir para dar alarma al arrancar y subir el contador "Antiguas" en la monitorizacion

       # Dias transcurridos de la llamada a procesar para dar alarma
       $diasDesdeLlamada = 5;


3.2 Ejemplo de fichero recordOmni.pconf completo y operativo

#
# Configuracion de recordOmni.pl
#
# 0: Solo alarmas en archivo log - 1: alarmas y trazas
$depurar = 1;

# 0: Arranca como proceso - 1: arranca como demonio
$soyDemonio = 1;

# Archivo de log (: salida estandar)
$logArch = '/var/log/record/recordOmni.log';
#logArch = ;

# Archivo para el pid (eliminando el .pid final)
$pidArch = '/var/run/record/recordOmni';

# 0: El programa se ejecuta indefinidamente - 1: solo una vez (util en depuracion)
$unaVezSolo = 0;

# Tiempo de espera en segundos cuando no hay conexion o cuando no hay llamadas
$toBucle = 15;

# Tipos de llamada analizados
$tiposLlamada = "'inbound','outbound','dialer','internal'";

# Conexion de base de datos
$db = 'motion2';
$dbHost = 'omsui-bdtr';
$dbPort = '3306';
$dbUsuario = 'xcall';
$dbClave = ;
# indice inicial para empezar la busqueda de grabaciones (0 desde el principio)
$dbIndInicial = 113920;
# segundos de retardo en la fecha de la BD para empezar a procesar grabaciones (0 sin retardo)
# 3600 (1 hora)
# 86400 (1 dia)
$dbSegRetardo = 3600;

# Configuracion de la supervision
$supPort = '2111';

# Directorio donde se localizan las grabaciones
$grabRutaOrig = '/var/spool/asterisk/monitor';

# Directorio donde van las grabaciones
$grabRutaDest = '/mnt/almacen/grabaciones';

#Fichero que tiene que estar en la ruta destino para comprobar que si es una nas este montada. Si es  no se comprueba
$grabDestFileMarca = 'NASmontada';

# grabRutaUsaTimestamp valores        0 $grabRutaDest
#                                     1 $grabRutaDest/AAAA/MM/DD
#                                     2 $grabRutaDest/AAAA/MM/DD/HH/MM
$grabRutaUsaTimestamp = 1;

#Compresion del mp3 (valores permidos: 8k 16k 32k 128k)
$grabCompresionMP3 = 32k
#Hay compresion
#grabCompresion  valores    0 sin compresion
#                           1 wav estereo -> mp3  (defecto)
$grabCompresion = 1;

# Directorio donde van el lado cliente de las grabaciones si  no se obtiene
$grabRutaDestCli = '/mnt/almacenCIL/grabacionesCli';

# grabRutaCliUsaTimestamp valores     0 $grabRutaDest
#                                     1 $grabRutaDest/AAAA/MM/DD
#                                     2 $grabRutaDest/AAAA/MM/DD/HH/MM
$grabRutaCliUsaTimestamp = 0;

# Dias transcurridos de la llamada a procesar para dar alarma
$diasDesdeLlamada = 5;


4 Diagnósticos

Los eventos de recorOmni quedan registrados en /var/log/record/recordOmni.log

Para ver el estado del proceso, y reiniciarlo en caso necesario

/etc/init.d/recordOmni status
/etc/init.d/recordOmni stop
/etc/init.d/recordOmni start