Diferencia entre revisiones de «RecordOmni»
| (No se muestran 42 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
| − | Para instalar: | + | === 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 | ||
| + | <br> | ||
| + | |||
| + | 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" | ||
| + | <br> | ||
| + | |||
| + | 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) | ||
| + | <br> | ||
| + | <br> | ||
| + | |||
| + | === Instalación y puesta en marcha === | ||
| + | |||
| + | '''Para instalar:''' | ||
* Instalar paquetes | * Instalar paquetes | ||
sudo apt install libdbi-perl | sudo apt install libdbi-perl | ||
| Línea 8: | 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> | ||
| − | * | + | <br> |
| − | * Configurar el archivo <code>/etc/MDtel/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> | |
| − | Directorio donde van las grabaciones | + | |
| + | === Configuración === | ||
| + | ==== 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'; | ||
| + | <br> | ||
| + | '''Directorios donde se van a copiar los archivos''' | ||
| + | # Directorio donde van las grabaciones | ||
$grabRutaDest = '/tmp/grabaciones'; | $grabRutaDest = '/tmp/grabaciones'; | ||
$grabRutaUsaTimestamp = 1; | $grabRutaUsaTimestamp = 1; | ||
| + | <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> | |
| + | # Directorio donde van el lado cliente de las grabaciones si '' no se obtiene | ||
$grabRutaDestCli = '/tmp/grabacionesCli'; | $grabRutaDestCli = '/tmp/grabacionesCli'; | ||
$grabRutaCliUsaTimestamp = 0; | $grabRutaCliUsaTimestamp = 0; | ||
| − | + | <br> | |
| + | '''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> | |
| − | + | '''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 ==== | ||
| − | ''' | + | # |
| − | + | # Configuracion de recordOmni.pl | |
| − | + | # | |
| − | + | # 0: Solo alarmas en archivo log - 1: alarmas y trazas | |
| − | 1) | + | $depurar = 1; |
| − | + | ||
| − | 2) | + | # 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; | ||
| + | <br> | ||
| − | + | === Diagnósticos === | |
| + | Los eventos de recorOmni quedan registrados en <code>/var/log/record/recordOmni.log</code> | ||
| + | <br> | ||
| − | + | 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> | ||
| − | |||
| − | + | [[Category:tecnico]] | |
| − | + | [[Category:Omnisuite]] | |
| − | |||
| − | |||
Revisión actual del 08:22 23 feb 2026
Sumario
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.pla la carpeta/usr/local/sbiny darle los permisos744y usuarioroot:root - Copiar el archivo
recordOmni.logrotatea la carpeta/etc/logrotate.drenombrarlo a recordOmni con los permisos744y usuarioroot:root - Crear la carpeta
/etc/MDtel - Copiar el archivo
recordOmni.pconfa la carpeta/etc/MDtelcon los permisos644y usuarioroot:root - Copiar el archivo
recordOmni.sha la carpeta/etc/init.dy renombrarlo arecordOmnicon los permisos755y el usuarioroot: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