... la BSO de tu vida ...
Buenas tardes, llevo un par de días probando configuraciones en Asterisk (el que tengo en el RaspberryPi) para poder música (o lo que sea) de fondo de una llamada que pase por la centralita. La idea es pulsar un código por DTMF durante una llamada, para que se escuche una música navideña, de miedo, pena o lo que se quiera y tener así tu propia BSO. Veamos como se hace ...Como ya sabéis, tengo un Asterisk y un SPA3102 para comunicarme con el mundo antiguo. Para el resto uso GTalk o lo que se tercie. IMPORTANTE: las instrucciones que voy a explicar, son muy específicas de mi instalación, cuando lo vayas a poner en tu casa/oficina, ten mucho cuidado con el nombre de los canales.
Primero es tener preparada la música, yo tengo estos dos mp3:
root@raspberrypi:~# ls /home/pi/mp3/ monkey.mp3 requiem.mp3 navidad.mp3lo que viene a ser el Monkey Island y la de Requiem que siempre suelen usar los de anonymous en sus vídeos. Ahora en el features.conf de Asterisk:
[applicationmap] bso1 => *3,self/both,System,/bin/bash /usr/local/bin/asterisk_bso.sh start monkey bso2 => *4,self/both,System,/bin/bash /usr/local/bin/asterisk_bso.sh start requiem bso3 => *5,self/both,System,/bin/bash /usr/local/bin/asterisk_bso.sh start navidad bsoend => *0,self/both,System,/bin/bash /usr/local/bin/asterisk_bso.sh stop testfeaturedefiinimos así que cuando se pulse *3 sonará el Monkey Island, con *4 Requiem y con *0 paramos la reproducción. Ahora el script en cuestión /usr/local/bin/asterisk_bso.sh :
#!/bin/bash # programado por Juanmol para http://rsppi.blogspot.com case $1 in start ) fullcanal=$(asterisk -rx "core show channels" | grep Up | grep -E 0[0-9]{8} | awk '{ print $1 }') peer=$(echo $fullcanal | cut -f1 -d\- | cut -f2 -d\/) cat << EOF > /tmp/$2.call Channel: Local/$peer@bso Application: Playback Data: /home/pi/mp3/$2 EOF mv /tmp/$2.call /var/spool/asterisk/outgoing/ cat << EOF > /tmp/$2gate.call Channel: Local/gateway@bso Application: Playback Data: /home/pi/mp3/$2 EOF mv /tmp/$2gate.call /var/spool/asterisk/outgoing/ ;; stop ) for n in $(asterisk -rx "core show channels concise" | grep ^Local | cut -f1 -d\!); do asterisk -rx "hangup request $n"; done ;; esacese hermoso script crea archivos .call para generar automáticamente las llamadas. La idea es usar la función ChanSpy en modo susurro para reproducirlo. En el extensions.conf definimos:
[salientes] exten => _0X.,1,NoOp(llamada al ${EXTEN:1} con BSO) same => n,Set(DYNAMIC_FEATURES=bso1#bso2#bso3#bsoend) same => n,Dial(${gtw}/${EXTEN:1},,tT)${GTW} en mi caso es el gateway SPA3102. Le pongo delante un 0, para dejar otro contexto igual, pero sin el DYNAMIC_FEATURES, por si queremos hacer una llamada seria, sin temor a ponerle BSO de fondo. Y ahora la parte interesante, en este contexto entran las llamadas automáticas y activan el modo espia + susurro:
[bso] exten => _.,1,Answer() same => n,ChanSpy(SIP/${EXTEN},qwEv(-4)) same => n,Hangup()breve pero perfecto. Y poco más, ahora le hacemos al Asterisk un module reload, llamamos a alguien (con un 0 delante) y pulsamos alguna de las features :) ¡Venga! usa la imaginación, ponle música a tus felicitaciones navideñas, ten preparado un mp3 con los llantos de un bebé para cuando no consigues terminar una llamada, un león rugiendo, música de feria ...
No hay comentarios:
Publicar un comentario