Pequeño macro para realizar grabación de llamadas con Asterisk.
[macro-grabarfile] exten => s,1,Set(calltime=${STRFTIME(${EPOCH},,%C%y%m%d-%H%M%S)}) exten => s,n,Set(calldir=/var/spool/asterisk/monitor/${CALLERID(num)}) exten => s,n,System(/bin/mkdir -p ${calldir}) exten => s,n,MixMonitor(${calldir}/${calltime}-${CALLERID(num)}-${MACRO_EXTEN}.wav|av(0)V(0)) exten => s,n,Dial(${ARG1},40) exten => s,n,Hangup()
Para grabar las llamadas hacia una extensión dada.
exten => 9261,1,Macro(grabarfile,SIP/trantor)
El macro en ejecución.
-- Executing [9261@default:1] Macro("SIP/10.9.201.252-b6909650", "grabarfile|SIP/trantor") in new stack -- Executing [s@macro-grabarfile:1] Set("SIP/10.9.201.252-b6909650", "calltime=20090511-163021") in new stack -- Executing [s@macro-grabarfile:2] Set("SIP/10.9.201.252-b6909650", "calldir=/var/spool/asterisk/monitor/8237") in new stack -- Executing [s@macro-grabarfile:3] System("SIP/10.9.201.252-b6909650", "/bin/mkdir -p /var/spool/asterisk/monitor/8237") in new stack -- Executing [s@macro-grabarfile:4] MixMonitor("SIP/10.9.201.252-b6909650", "/var/spool/asterisk/monitor/8237/20090511-163021-8237-9261.wav|av(0)V(0)") in new stack == Begin MixMonitor Recording SIP/10.9.201.252-b6909650 -- Executing [s@macro-grabarfile:5] Dial("SIP/10.9.201.252-b6909650", "SIP/trantor|40") in new stack -- Called trantor -- SIP/trantor-08242458 is ringing -- SIP/trantor-08242458 answered SIP/10.9.201.252-b6909650 == Spawn extension (macro-grabarfile, s, 5) exited non-zero on 'SIP/10.9.201.252-b6909650' in macro 'grabarfile' == Spawn extension (macro-grabarfile, s, 5) exited non-zero on 'SIP/10.9.201.252-b6909650' == End MixMonitor Recording SIP/10.9.201.252-b6909650
El archivo en cuestión.
asteriskpbx:/home/gabriel# ls /var/spool/asterisk/monitor/8237/*61.wav /var/spool/asterisk/monitor/8237/20090511-163021-8237-9261.wav
Buenas tardes,
Estoy aprendiendo con Asterisk 1.8 y en el tema de grabaciones de llamadas tengo una duda y es si se pueden programar grabaciones aleatorias a los agentes de una cola. Es decir, poder programar que al día se graben de cada agente de una cola dos llamadas recibidas de forma aleatoria.
No se si me podrías dar algo de luz en este tema.
Muchas gracias por tu ayuda.
LikeLike
Estimado,
No queda mas que felicitar esta increible solucion para quienes siempre buscamos como sacar el maximo de rendimiento a asterisk…
Te consulto si bien puedo grabar las llamadas salientes, ¿como puedo aplicarlo con las entrantes?
muchas gracias
Marcelo Jara.
LikeLike
Hola.
De igual manera usando el macro pero aplicándolo a tu contexto de entrantes, por ejemplo así:
Este es parte de un contexto de llamadas entrantes para un enlace digital, 4 DID que envía la telefónica y lo demás lo recibe la operadora.
[entrantes]
include => ivr
include => internal
exten => _X.,1,NoOP(${EXTEN})
exten => _X.,n,NoOP(${CALLERID})
exten => _X.,n,Set(CALLERID(all)=”Llamada”)
exten => _X.,n,Background(custom/ivrcentro)
exten => _X.,n,WaitExten(8)
exten => _X.,n,Macro(grabarfile,SIP/3100)
exten => i,1,Macro(grabarfile,SIP/3100)
exten => t,1,Macro(grabarfile,SIP/3100)
exten => 3102,1,Macro(grabarfile,SIP/${EXTEN})
exten => 3105,1,Macro(grabarfile,SIP/${EXTEN})
exten => 3106,1,Macro(grabarfile,SIP/${EXTEN})
exten => 3107,1,Macro(grabarfile,SIP/${EXTEN})
Aquí en ejecución:
[Jun 4 09:32:58] NOTICE[22579]: chan_unicall.c:2518 handle_uc_event: Unicall/1 event Detected
[Jun 4 09:33:00] NOTICE[22579]: chan_unicall.c:2518 handle_uc_event: Unicall/1 event Offered
[Jun 4 09:33:00] NOTICE[22579]: chan_unicall.c:2642 handle_uc_event: CRN 39183 – Offered on channel 0 (ANI: , DNIS: 3107, Cat: 1)
[Jun 4 09:33:00] NOTICE[22579]: chan_unicall.c:2518 handle_uc_event: Unicall/1 event Accepted
— Executing [2107@entrantescentro:1] Macro(“UniCall/1-1”, “grabarfile|SIP/3107”) in new stack
— Executing [s@macro-grabarfile:1] Set(“UniCall/1-1”, “calltime=20130604-093300”) in new stack
— Executing [s@macro-grabarfile:2] Set(“UniCall/1-1”, “calldir=/var/spool/asterisk/monitor/”) in new stack
— Executing [s@macro-grabarfile:3] System(“UniCall/1-1”, “/bin/mkdir -p /var/spool/asterisk/monitor/”) in new stack
— Executing [s@macro-grabarfile:4] MixMonitor(“UniCall/1-1”, “/var/spool/asterisk/monitor//20130604-093300–3107.wav|av(0)V(0)”) in new stack
— Executing [s@macro-grabarfile:5] Dial(“UniCall/1-1”, “SIP/3107|40”) in new stack
— Called 3107>
== Begin MixMonitor Recording UniCall/1-1
— SIP/3107-092f61b8 is ringing
Saludos.
LikeLike
Las entrantes las tengo en el contexto Features
Muchas Gracias …
LikeLike
mmmm no funca….
mira esto es lo que tengo
[grabar]
exten => _XX..,1,Macro(grabarfile,${EXTEN})
[macro-grabarfile]
exten => s,1,Answer
exten => s,n,Set(calltime=${STRFTIME(${},,%d%m%Y-%Hh%Mm%Ss)})
exten => s,n,MixMonitor(${calltime}-${MACRO_EXTEN}.wav,W(3))
exten => s,n,Goto(users,${ARG1},1)
exten => s,n,Hangup()
;—————————————————————————
exten => _X.,1,Answer
exten => _X.,n,Set(calltime=${STRFTIME(${},,%d%m%Y-%Hh%Mm%Ss)})
exten => _X.,n,MixMonitor(${calltime}-${MACRO_EXTEN}.wav,W(3))
exten => _X.,n,Goto(users,${ARG1},1)
exten => _X.,n,Hangup()
esto lo coloco despues de features
y antes del include => features coloco esto
;Grabacion de LLamados
exten => _XXXXXXXX,1,Macro(grabarfile,${EXTEN})
exten => _XXXXXXXX,n,Dial(${EXTEN})
y con eso a la extension la coloco en el contexto = grabar y me graba las salientes
Si me das otra manito muchas gracias.
LikeLike
Hola,
Alcanzo a ver lo siguiente:
En la parte donde pones la “Grabación de llamados” no veo que adiciones el tipo de canal que se utilizar (SIP/IAX2 o DAHDI), solo pones la variable para la extensión.
Al macro le debes no solo pasar la extensión sino a que tipo de canal esta asociada esa extensión, puedes poner por ejemplo que es lo que te muestra en la consola de Asterisk.
Saludos.
LikeLike
Estimado;
Muchas Gracias por tu ayuda..
te comento que actualmente lo tengo asi y solo grabo las llamadas salientes..
las entrante al parecer es algo más dificil …
una ayudita más jejeje
gracias amigo.
LikeLike
Tengo un asterisk version 11.14 y tengo dificultades para grabar mis extensiones y he copiado la linea que sugieres en el extension.conf y no me funciona se debe modificar otro archivo?
LikeLike
Hola,
Es un ejemplo sencillo el que pongo pero debe funcionar, ¿que mensaje te arroja en el CLI de Asterisk?, ¿si se genera un archivo o no?
Gracias por visitar el blog.
LikeLike
Hola lo hice y si se genera el archivo, pero lo genera afuera de la carpeta de la extensión y lo pone con un nombre generico. 1439312629.1.wav, no se que estoy haciendo mal, este es mi codigo.
[macro-grabarfile]
exten => s,1,Set(calltime=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)})
exten => s,n,Set(calldir=/var/spool/asterisk/monitor/1917)
exten => s,n,System(/bin/mkdir -p 1917)
exten => s,n,MixMonitor(1917/${calltime}-${CALLERID(num)}-1903.wav|av(0)V(0))
exten => s,n,Dial(${ARG1},40)
exten => s,n,Queue(0900)
exten => s,n,Hangup()
LikeLike
Hola herwin.
Puse el codigo que mencionas a probar y se ejecuta correctamente, salvo por la linea cuando entras a una cola que quite este es el comportamiento que tengo al aplicarlo al realizar una llamada.
— Executing [9271@MCM-Out:1] Macro(“SIP/mitel-00009512”, “grabarfileblog,SIP/9999”) in new stack
— Executing [s@macro-grabarfileblog:1] Set(“SIP/mitel-00009512”, “calltime=2015-08-14 12:26:08”) in new stack
— Executing [s@macro-grabarfileblog:2] Set(“SIP/mitel-00009512”, “calldir=/var/spool/asterisk/monitor/1917”) in new stack
— Executing [s@macro-grabarfileblog:3] System(“SIP/mitel-00009512”, “/bin/mkdir -p 1917”) in new stack
— Executing [s@macro-grabarfileblog:4] MixMonitor(“SIP/mitel-00009512”, “1917/2015-08-14 12:26:08-8237-1903.wav,av(0)V(0)”) in new stack
— Executing [s@macro-grabarfileblog:5] Dial(“SIP/mitel-00009512”, “SIP/9999,40”) in new stack
Y lo esta guardando en la carpeta de /var/spool/asterisk/monitor/1971
root@asteriskvm:/var/spool/asterisk/monitor/1917# pwd
/var/spool/asterisk/monitor/1917
root@asteriskvm:/var/spool/asterisk/monitor/1917# ls -l
total 72
-rw-r–r– 1 root root 45804 Aug 14 12:20 2015-08-14 12:20:19-8237-1903.wav
-rw-r–r– 1 root root 22444 Aug 14 12:26 2015-08-14 12:26:08-8237-1903.wav
Puedes poner lo que sucede en el CLI de Asterisk cuando realizas la llamada.
Saludos y gracias por visitar el blog.
LikeLike
Esta solución la aplique anteriormente y medio resultados claro sin hacer la macro directo al dial, pero dime ahora me surge una nueva cosa como grabar solo algunas extensiones en especifico ??
Me podrias ayudar..
LikeLike
Hola, normalmente aplico la macro en las extensiones que quiero grabar, si tengo un grupo de extensiones puedes aplicar la macro y aplicando en la sintaxis algún comodín para englobar todas las extensiones que empiecen con 98xx por ejemplo, si no es lo que buscas puedes ampliar un poco mas el ejemplo que pones.
Saludos.
LikeLike
tengo una duda con esta macro, podria aplicarla a una base de datos con las extenciones a las cuales yo quiero grabar?
saludos
LikeLike
Hola, supongo que sí, al final toda llamada pasara por el plan de marcado y grabara, habría que adecuar la variable de la extensión para tu base de datos.
Saludos.
LikeLike
Como grabar llamadas tranferidas, necesito una solucion urgente.
LikeLike
Hola,
Normalmente esta macro te puede servir si lo incluyes en todo el plan de marcado, sobre todo si haces transferencias de llamadas desde una troncal SIP, un E1 o lineas analógicas, incluso en soluciones profesionales de otras marcas he oído el problema que mencionas.
Te pongo un link de un blog muy bueno: https://www.sinologic.net/blog/2011-07/soluciones-de-grabacion-profesional-para-callcenters-silencio-se-graba.html
Igual te puede servir para que te des una idea.
Saludos, gracias por visitar y comentar.
LikeLike
una consulta, como podria hacer que esta macro lea las extensiones desde un archivo quedo atento, Saludos y muchas gracias por la información.
LikeLike
Hola!
Aquí les dejo una solución para la grabación de llamadas en las centralitas Asterisk que está muy buena… Saludos!
JLP
LikeLike
Hola!
Aquí les dejo una solución para la grabación de llamadas en las centralitas Asterisk que está muy buena… Saludos!
https://www.comunycarse.com/es/grabacion-llamadas-centralitas-asterisk/
JLP
LikeLike
Hola Gabriel, tengo un Asterix 13. Mi intención no sería grabar todas las llamadas, si no que el operador pudiera grabar alguna cuando lo desee, por ejemplo presionando una tecla o una cominación de ellas.
Se podrá hacer?
Gracias de antemano
LikeLike