Skip to main content

Ressolve

Implementación: Grabaciones Estéreo y Renombrar con Metadata

1. Objetivo del Proceso 🎯

El propósito de esta guía es documentar los pasos necesarios para configurar un servidor de telefonía (UContact/Asterisk) para generar grabaciones de llamadas en estéreo, procesarlas automáticamente para convertirlas a formato MP3 con una nomenclatura específica, y finalmente, exponerlas de forma segura a través de un usuario SFTP de solo lectura.


2. Paso 1: Preparación del Servidor de Telefonía ⚙️

Para capturar el audio en dos canales separados (estéreo), es necesario agregar un segundo módulo MixMonitor al flujo de llamadas. Este nuevo módulo no reemplaza al MixMonitor original que graba el audio en formato .gsm, sino que se añade como un paso adicional.

1.1 Añadir un Segundo MixMonitor

  1. Ubica el Flujo: En la plataforma UContact, navega a la configuración del flujo de llamada que deseas modificar.modificar, por lo regular siempre se usará el flujo de la sección agents o agentes llamado _XXXX..
  2. Localiza el MixMonitor Existente: Identifica el primer módulo MixMonitor que ya está grabando la llamada.
  3. Inserta el Nuevo Módulo: Agrega un nuevo módulo MixMonitor inmediatamente después del ya existente.
  4. Configura el Nuevo Módulo de la siguiente manera para generar los archivos estéreo:
    • En el campo "Description" (o similar), configura la mezcla de los canales de audio. Esto creará un archivo .wav para el audio entrante (-in.wav) y otro para el saliente (-out.wav).
      Sbr(${guid}-in.wav)t(${guid}-out.wav)
      
    • En el campo de nombre de archivo (Filename), especifica el archivo de control que usará el script de procesamiento.
      ${guid}-all.gsm
      

1.2 Verificación

Una vez aplicada la configuración, realiza una llamada de prueba. Al finalizar, verifica que en la ruta /var/spool/asterisk/monitor/ se hayan generado los siguientes 3 archivos para esa llamada (además del .gsm tradicional):

  • {guid}-in.wav
  • {guid}-out.wav
  • {guid}-all.gsm

3. Paso 2: Instalación y Configuración de Scripts 📁

Con el servidor ya generando los archivos correctos, procedemos a preparar el entorno e instalar los scripts.

2.1 Creación de Directorios Necesarios

Antes de instalar los scripts, asegúrate de que la estructura de carpetas requerida exista. Los siguientes comandos crearán toda la ruta necesaria.

# Directorio para los scripts y el procesamiento de grabaciones
sudo mkdir -p /usr/local/cleverideas/recordings/MP3

# Directorio final para la exposición vía SFTP
sudo mkdir -p /usr/local/ressolve/sftpressolve

Nota: El parámetro -p se asegura de crear los directorios padres si no existen y no arroja error si la carpeta ya fue creada.

2.2 Transferencia y Permisos

  1. Transfiere los tres scripts que encuentras en la sección de attachemnts de esta página (generate_pending.sh, rename_recordings.sh, cleanup_folders.sh) a la ruta /usr/local/cleverideas/.
  2. Otorga permisos de ejecución a todos los scripts:
    sudo chmod +x /usr/local/cleverideas/*.sh
    

2.3 Personalización por Cliente (Crítico)

Antes de automatizar, es indispensable personalizar el script rename_recordings_edilar.rename_recordings.sh para cada cliente:

  • Variable HOST: Debe ser modificada con el nombre del cliente (ej. HOST="edilar").
  • Variable tablero: La lógica para asignar el tablero (servicio_al_cliente, mesa_de_ayuda, etc.) debe ser ajustada según las campañas o reglas del cliente.
  • Filtros Adicionales: Si se requieren filtros aparte del tamaño de la grabación (actualmente en 200 KB), este es el momento de agregarlos.agregarlos, de preferencia solicitar estos ajustes al equipo de soporte.

4. Paso 3: Automatización con Cron 🤖

Para que los scripts se ejecuten de forma automática, se configurarán tareas en cron.

  1. Abre el editor de crontab del usuario root:
    sudo crontab -e
    
  2. Agrega las entradas para los scripts. Se recomienda una ejecución frecuente con un desfase para asegurar que el renombrado ocurra después de la generación de MP3.
    # [Cada 10 min] Genera los MP3 a partir de los WAV
    */10 * * * * /bin/bash /usr/local/cleverideas/generate_pending.sh >> /var/log/generate_recordings.log 2>&1
    
    # [Cada 10 min, con 5 min de desfase] Renombra los MP3 generados
    5-59/10 * * * * /bin/bash /usr/local/cleverideas/rename_recordings.sh >> /var/log/rename_recordings.log 2>&1
    
    # [Diario a las 3 AM] Limpia carpetas antiguas
    0 3 * * * /bin/bash /usr/local/cleverideas/cleanup_folders.sh
    

5. Paso 4: Creación del Usuario SFTP (Comando por Comando) 🔐

Una vez verificado que las grabaciones se generan y renombran, crea un usuario SFTP seguro y de solo lectura.

5.1 Crear Grupo y Usuario

# 1. Crear un grupo dedicado para usuarios SFTP
sudo groupadd sftp_users

# 2. Crear el usuario, asignarlo al grupo y deshabilitar el acceso a la terminal
sudo useradd -m -g sftp_users -s /sbin/nologin sftp_ressolve

# 3. Establecer una contraseña segura para el nuevo usuario
sudo passwd sftp_ressolve

5.2 Configurar el Servidor SSH

  1. Abre el archivo de configuración de SSH:
    sudo nano /etc/ssh/sshd_config
    
  2. Busca la línea Subsystem sftp y modifícala para usar el servidor SFTP interno de SSH:
    #Subsystem      sftp    /usr/lib/openssh/sftp-server
    Subsystem       sftp    internal-sftp
    
  3. Agrega el siguiente bloque de configuración al final del archivo para "enjaular" a los usuarios del grupo sftp_users:
    Match Group sftp_users
        ChrootDirectory %h
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
    
  4. Guarda y cierra el archivo.

5.3 Preparar la "Jaula" (Chroot Jail)

La "jaula" (el directorio personal del usuario) debe pertenecer a root por seguridad.

# Cambiar el propietario del directorio home del usuario a root
sudo chown root:root /home/sftp_ressolve

5.4 Montar el Directorio de Grabaciones

Para que el usuario vea las grabaciones dentro de su jaula, usamos un montaje de tipo "bind".

  1. Montaje en modo solo lectura: Este comando hace que el contenido de la carpeta de destino sea visible dentro de la jaula del usuario.
    sudo mount --bind -o ro /usr/local/ressolve/sftpressolve /home/sftp_ressolve
    
  2. Hacer el montaje permanente: Añade la configuración a /etc/fstab para que el montaje sobreviva a los reinicios del servidor.
    echo "/usr/local/ressolve/sftpressolve /home/sftp_ressolve none bind,ro 0 0" | sudo tee -a /etc/fstab
    

5.5 Reiniciar y Probar

  1. Aplica todos los cambios reiniciando el servicio SSH:
    sudo systemctl restart sshd
    
  2. Conéctate con un cliente SFTP usando las credenciales del usuario sftp_ressolve y verifica que el acceso es correcto y restringido.

6. Paso 5: Verificación del Flujo Completo

Realiza una prueba end-to-end para confirmar que todo el proceso funciona como se espera:

  1. Realiza una llamada de prueba.
  2. Verifica la creación de los archivos .wav y -all.gsm.
  3. Confirma la creación del .mp3 en la carpeta del día.
  4. Confirma que el .mp3 fue renombrado correctamente.
  5. Conéctate con el cliente SFTP y verifica que puedes ver y descargar la grabación.
  6. Revisa los logs en /var/log/ para asegurar que no hay errores.
  7. Una vez todo esté listo contacta al equipo de Ressolve para compartirles el acceso al servidor para que ellos puedan iniciar sus pruebas y configuraciones.