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.
Posted by Iñaki Baz Castillo in Asterisk, Howto
