Monitorización de Llamadas

De Asterisk Wiki
Ir a la navegación Ir a la búsqueda

En Asterisk, existen múltiples mecanismos para la grabación de llamadas (pasar un canal de audio, a un fichero en un formato concreto), y monitorización de las mismas, es decir, capacidad de acceder a canales de audio en curso a voluntad.

Introducción

En primer lugar, no hay que confundir el hecho de monitorizar una máquina Asterisk (saber su estado), con la Monitorización de Llamadas:

Tanto la monitorización como la grabación de llamadas, suelen ir agrupados, porque subyacentemente, se basan en el mismo concepto: Acceder al medio un canal de audio en tiempo real y gestionarlo.

Cuando recordamos el caso del protocolo SIP en relación al transporte del medio, había que considerar, que en sí, este protocolo no podía canalizarlo, y debía servirse de otro procolo, Real-Time Transport Protocol (RTP), encargado de "transportar" el medio en general, incluso podría ser tanto de audio como de video.

Sabemos que los paquetes de información que viajan a través de este protocolo, en su versión insegura, eran fácilmente capturables, en caso que interpusiéramos un monitor de tráfico en la red [1], y en consecuencia, decodificando la pista, acceder por ejemplo, al audio de la misma y grabarla, o escucharla por un altavoz. Pues justamente es esto lo que hacen las herramientas de Monitorización de llamadas, sin la necesidad de terceros medios, y con la capacidad de acceder al audio de todas las llamadas, siempre y cuando pasen a través de nuestra máquina Asterisk, e independientemente de su nivel de encriptación y codificación.

Podríamos decir que la Grabación de Llamadas = Monitorízación + Formato de Audio

Monitorización de Llamadas

The Eavesdropper by Eugen von Blaas

Podría decirse que el hecho de monitorizar una llamada es equivalente al conocido termino de "Intervención de Llamada" o más vulgarmente, "Pinchar una Llamada", en esencia una escucha directa, de un canal activo en curso. Este termino popularizado en inglés es conocido como "Eavesdropping"

Existen dos Aplicaciones principales, que se encargan de ofrecer este mecanismo, ExtenSpy y ChanSpy

Aplicación ExtenSpy

Sirve para escuchar una llamada saliente a traves de una extensión especifica. En este caso, lo que especificaríamos sería la extensión por la cual queremos escuchar.

La sintaxis de esta aplicación sería: ExtenSpy(<extension>@<contexto>,<opciones>

La extensión puede ser del mismo contexto donde se encuentra la aplicación ejecutada (entonces no haría falta especificar el contexto al que hace referencia).

Las opciones posibles son las siguientes:

  • b: Empieza la escucha en el momento que la comunicación haya sido establecida
  • B: es posible hablar en el canal que esta siendo escuchado a ambas partes
  • d: sirve para poder lanzar tonos DTMF para cambiar entre modos (4 modo solo escuchar, 5 modo hablar al canal intervenido, 6 modo hablar a ambas partes)
  • q: no emite un sonido en el momento que empieza a escucharse la llamada
  • s: no emite la pista de audio indicando el tipo de canal que va a ser escuchado
  • r(<fichero>): graba la escucha en un fichero de audio dentro del directorio spool, podría considerarse un tipo de grabación activa.
  • v(<valor>): podemos ajustar la ganancia del volumen, del -4 al +4.
  • s: Para la escucha del canal cuando no hay nada que escuchar
  • x(<digito>): seleccionamos un digito a modo tono DTMF equivalente a abandonar la aplicación.
  • c(<digito>): seleccionamos un digito a modo tono DTMF equivalente a cambiar al siguiente canal disponible.
  • o: Sirve para determinado tipo de privacidad, solo se escucharia el audio saliente del canal. Muy práctico para fines comerciales.

Aplicación ChanSpy

Similar a la aplicación ExtenSpy, pero con la diferencia que en este caso, escuchamos un procolo "completo", es decir, todas los canales que pasan a traves de un protocolo definido.

La sintaxis especifica para esta aplicación sería: ChanSpy(<protocolo>,<opciones>).

Cuando hablamos de protocolo, es posible por ejemplo, especificar todos los canales abiertos a traves de SIP, IAX, etc.

Podemos ir alternando entre canales una vez escuchando el primero, pulsando la tecla del teléfono *, por otro lado pulsando la tecla # aumentamos y reducimos el volumen de la escucha cíclicamente.

Las opciones que se pueden definir son las mismas que en con la aplicación ExtenSpy:

  • b: Empieza la escucha en el momento que la comunicación haya sido establecida
  • B: es posible hablar en el canal que esta siendo escuchado a ambas partes
  • d: sirve para poder lanzar tonos DTMF para cambiar entre modos (4 modo solo escuchar, 5 modo hablar al canal intervenido, 6 modo hablar a ambas partes)
  • q: no emite un sonido en el momento que empieza a escucharse la llamada
  • s: no emite la pista de audio indicando el tipo de canal que va a ser escuchado
  • r(<fichero>): graba la escucha en un fichero de audio dentro del directorio spool, podría considerarse un tipo de grabación activa.
  • v(<valor>): podemos ajustar la ganancia del volumen, del -4 al +4.
  • s: Para la escucha del canal cuando no hay nada que escuchar
  • x(<digito>): seleccionamos un digito a modo tono DTMF equivalente a abandonar la aplicación.
  • c(<digito>): seleccionamos un digito a modo tono DTMF equivalente a cambiar al siguiente canal disponible.
  • o: Sirve para determinado tipo de privacidad, solo se escucharia el audio saliente del canal. Muy práctico para fines comerciales.

Grabación de Llamadas

La grabación podría considerarse un tipo de Monitorización, pero que adicionalmente va transfiriendo el canal de escucha en forma de una pista de audio dentro de un fichero, de forma desatendida.

Es posible realizar una grabación en tres medios posibles: En el disco duro de la máquina Asterisk, en otra máquina, o directamente en la memoria RAM. Esto último es viable, dado que si tenemos muchas grabaciones simultáneas dentro de nuestra máquina Asterisk, es muy probable que las bajas tasas de transferencia que ofrecen los discos duros en general, puedan llegar a ser una limitación muy importante para nuestro sistema de grabación.

En cuanto a la grabación externa, la posibilidad es evidente, si utilizamos monitores de tráficos externos que sean capaces de registrar los paquetes, y a su vez convertirlos en un medio de audio contenido en un fichero reproducible.

Siempre que sea posible, lo idea es trabajar con formatos de audio que tengan el menor coste de conversión, dado que si ya nos encontramos con un inconveniente en la grabación directa en disco duro, esto podría agravar la situación.

Finalmente comentar que todas las grabaciones por defecto son registradas en el directorio /var/spool/asterisk/monitor/ para todas las siguientes aplicaciones que se involucren en el proceso.

Tipos de Grabación

Existen dos tipos de grabación:

  • Grabación de cada sentido de la llamada individualmente: Aplicación Monitor
  • Grabación "Full-Duplex": Aplicación MixMonitor

Hay que considerar que además es posible realizar una grabación "A Demanda" durante el transcurso de una conversación, si tenemos habilitadas las opciones de las aplicaciónes Dial y Queue w y W (si queremos permitir tanto al llamado como al llamante).

Aplicación Monitor

Hace referencia al modulo app_monitor.so, es capaz de grabar cada sentido de la conversación de forma individual (por un lado el audio del llamado y por otro el del llamante) y esto lo hace en dos ficheros independientes. La sintaxis especifica de esta aplicación es la siguiente: Monitor(<formato>,<nombre_fichero>,<opciones>)

  • Podriamos elegir cualquier formato disponible para la grabación
  • También podemos definir un nombre base sobre el cual se establecerán los nombres de ficheros generados
  • Las opciones disponibles:
    • m, que es capaz de lanzar un comando Unix externo para ejecutar una aplicación propia del sistema Linux, capaz de mezclar las dos pistas al terminar la grabación, crear un único fichero y borrar las dos anteriores. Por regla general suele usar la aplicación soxmix
    • b, no empieza la grabación hasta que la comunicación se haya establecido
    • i, no realiza la grabación del audio entrante
    • o, no realiza la grabación del audio saliente

Existe una variable de canal especifica MONITOR_EXEC en la que podemos definir otro programa mezclador para reemplazar a soxmix a voluntad

Simplemente con ejecutar esta aplicación justo antes de una aplicación que curse llamada (Dial o Queue) se iniciaría la grabación.

Aplicación MixMonitor

Graba las llamadas en modo de doble sentido, o "full-duplex", todo en un solo fichero sincronizando las dos partes de forma conveniente. Podría considerarse una evolución singular de Monitor, Mix viene de mezcla, dado que es capaz de mezclar las "dos" pistas de audio en tiempo real. La sintaxis sería como puede verse a continuación: MixMonitor(<nombre_fichero.extension>,<opciones>)

Podemos definir el nombre que van a recibir los ficheros de grabación, y por otro lado las siguientes opciones:

  • b, no empieza la grabación hasta que la comunicación se haya establecido
  • a, empieza a escribir el fichero si definido, a partir del final, no sobreeescribe
  • v(<ganancia>), ajusta el volumen de audio del canal del llamado (valores de -4 a +4)
  • V(<ganancia>), ajusta el volumen de audio del canal del llamante (valores de -4 a +4)
  • V(<ganancia>), ajusta el volumen de audio del canal del llamante y el llamado simultaneamente (valores de -4 a +4)

Aplicaciones para el control de la Grabación

Además existen tres aplicaciones adicionales:

  • StopMonitor(): Para la grabación de una aplicación Monitor
  • StopMixMonitor(): Para la grabación de una aplicación MixMonitor
  • PauseMonitor(): Pausa la grabación de una aplicación de grabación cualquiera
  • UnPauseMonitor(): Reanuda la grabación de una aplicación de grabación.

Referencias

  1. Monitor de Tráfico Wireshark Wireshark Foundation

Véase también

Enlaces Externos