Dialplan para grabación de voces vía llamada telefónica

Introducción

En ocasiones puede ser suficiente el grabar las voces del menú menú IVR de nuestro Asterisk a través de una llamada telefónica. Esta opción se hace aún más interesante cuando el locutor no está con nosotros o cuando sencillamente no desponemos de equipamiento más profesional para grabación de voces.

A continuación se muestra un dialplan para Asterisk que constituye un cómodo y sencillo menú de grabación de voces.

Funcionamiento

La mecánica del dialplan es sencilla, todo se puede realizar con una única llamada. Tras la grabación de cada voz podremos escucharla y regrabarla, o bien elegir otra voz:

Esquema:

  • El usuario llama y se le introduce en el contexto grabacion_voces.
  • Se le solicita introduzca una contraseña para autenticarle.
  • Se le pide que marque un número (de n cifras) que se corresponde con una determinada voz a grabar (XX).
  • Se le manda al contexto grabacion_voces_opciones donde primeramente escucha la grabación actual del sonido.
  • Se le presenta un menú con las opciones:
    • 0 -> Grabar su voz para este sonido.
    • 1 -> Escuchar su grabación.
    • 2 -> Ir a otros sonidos.

De esta forma, mediante una única llamada podemos gestionar todas las voces, o las que nos interesen en cada ocasion.

Dialplan

Este sería el dialplan asociado a la grabación de voces. Consta de dos contextos: grabacion_voces y grabacion_voces_opciones.


[grabacion_voces]
; Contexto inicial para la grabación de voces.
;
; Solicitamos un password de entrada para restringir el acceso:
exten => s,1,Playback(vm-password)
exten => s,n,Authenticate(1234)
;
exten => s,1,NoOp(---- Entrando en el menú de Grabacion de Voces ----)
;
; Punto de inicio y reinicio:
exten => s,n(reiniciar),Background(grabacion_voces/_PEDIR_NUMERO_DE_SONIDO)
exten => s,n,WaitExten(10)
;
; Opción inválida:
exten => i,1,PlayBack(invalid)
exten => i,n,GoTo(s,reiniciar)
;
; Tiempo agotado:
exten => t,1,Goto(s,reiniciar)
;
; Pulsa un número del 00 al 99, el fichero se llamará como dicho número (XX.wav):
exten => _XX,1,Set(FICHERO=${EXTEN})
exten => _XX,n,Goto(grabacion_voces_opciones,s,1)
;
;
;
[grabacion_voces_opciones]
; Opciones para escuchar y grabar el sonido seleccionado anteriormente.
;
; Primeramente reproducimos el fichero (si es que estaba grabado):
exten => s,1,Background(grabacion_voces/${FICHERO})
;
; Damos las opciones de "escuchar" o "grabar" esta voz.
exten => s,n(menu),Background(grabacion_voces/_MENU_OPCIONES)
exten => s,n,WaitExten(4)
;
; Opción inválida o tiempo agotado, repetimos:
exten => i,1,Goto(s,menu)
exten => t,1,Goto(s,menu)
;
; Pulsa 0: "Grabar su voz para este sonido":
; Se guarda el fichero XX.wav en la carpeta "grabacion_voces" de máximo 20 segundos y cortando la grabación a los 2 segundos de silencio.
exten => 0,1,Record(grabacion_voces/${FICHERO}.wav|2|20)
; Volvemos al menú para esta voz:
exten => 0,n,Goto(s,menu)
;
; Pulsa 1: "Escuchar su grabación":
; Reproducimos el fichero:
exten => 1,1,PlayBack(grabacion_voces/${FICHERO})
; Volvemos al menú para esta voz:
exten => 1,n,Goto(s,menu)
;
; Ir a otros sonidos:
exten => 2,1,Goto(grabacion_voces,s,reiniciar)

Notas

  • Hay que crear de antemano el directorio grabacion_voces en /var/lib/asterisk/sounds.
  • Existen 2 ficheros de voz adicionales que deberían contener los siguientes mensajes:
    • _PEDIR_NUMERO_DE_SONIDO.wav -> Seleccione número de sonido.
    • _MENU_OPCIONES.wav -> 0: Grabar su voz para este sonido, 1: Escuchar su grabación, 2: Ir a otros sonidos.
  • La codificación de las voces podría hacerse en G711-A en vez de en PCM sin más que sustituir “.wav” por “.al” en la aplicación Record del dialplan. Otra opción típica sería usar G729.

Acabando

Sería aconsejable realizar la grabación a través de una llamada RDSI o bien una llamada SIP con suficiente ancho de banda y empleando el coced G711-A (también conocido como A-LAW) para no degradar ya de inicio la calidad de audio.

Por otra parte, quedaría pendiente enviar al locutor un listado de los texto a grabar junto con su número asociado.

Be Sociable, Share!
Leave a comment

1 Comments.

Leave a Reply


[ Ctrl + Enter ]

*

Trackbacks and Pingbacks: