Ficheros de Asterisk al lio.....
Como queda calendar.conf
De este modo.
[HEmpresa]
type = ical
url = http://calendar.localred.net/caldav.php/HEmpresa/calendar
user = HEmpresa
secret = HEmpresaPass
refresh = 3
timeframe = 60
[Fulanito]
type = ical
url = http://calendar.localred.net/caldav.php/Fulanito/calendar
user = Fulanito
secret = FulanitoPass
refresh = 3
timeframe = 60
Las Pruebas en la consola de Asterisk que nos dicen???
SOL*CLI> calendar show calendars
Calendar Type Status
-------- ---- ------
Fulanito ical free
calendar3 ical busy
calendar2 caldav busy
HEmpresa ical free
calendar2 y calendar3, los ignoramos que son de otra fiesta....
Definimos en nuestro calendario de empresa una serie de eventos cuando la empresa está ocupada, osea cuando está cerrada, que es lo contrario a estar abierta, bien, si decimos se estamos abiertos de Lunes a Viernes de 9 a 2pm y de 4pm a 8pm, y que los fines de semana permanecemos cerrados, es como decir a nuestro calendarios que estaremos ocupados, justamente las horas contrarias, ya que "free" es se trabaja y "busy" no se trabaja, los eventos de Busy serán los que se tengan que crear, Seguro que hay modo de usarlo al contrario, pero mejor tengamos los conceptos claros y luego jugamos con los conceptos.
Pues arrastramos esto al calendario.
Tendremos que definir 4 eventos.
1º El fin de semana, De 00:00 a 23:59 Sabados y Domingos, tenemos cerrados, definimos evento. Busy Ocupados
2º Días laborables de 00:00 a 9:00 de Lunes a Viernes, estamos cerrados, definimos evento.Busy Ocupados
3º Días laborables de 14:00 a 16:00 de Lunes a Viernes estamos comiendo, definimos evento. Busy Ocupados
4º Días laborables de 20:00 a 23:59 de Lunes a Viernes estamos cerrados, definimos evento. Busy Ocupados
Esto es realmente sencillo de hacer y súper rápido, solo hay que tener los conceptos claros. Ya para los otros días o Vacaciones es coger el calendario de la CCAA para las fiestas nacionales y locales y/o de la empresa para ajustar a la perfección todo.
Una vez hecho todo el año, no se tardara mas de 10min, tendremos a Asterisk listo para todo ese periodo sin requerir intervención por parte de nadie, pero si se requiere, dará lo mismo en menos de 1 min tendremos el cambio hecho.
Así se vería en ThuntherBird
Pero no solo tomaremos la variable Busy o Free, tomaremos otra variable, la que pongamos en nuestras entradas en el campo "description"
tomaremos esta variable para personalizar las respuestas, cuando se está cerrado, hay mas variables que podemos tomar, ¿Cual es el PLAN, para esta variable,? Poder reproducir el fichero de audio que mas nos interese, si llaman en fin de semana, es sencillo, un audio que diga que "Uds está llamando en fin de semana y nosotros estamos cerrados". Y si se llama en la hora de la comida, pues o bien se dice lo mismo que en horas nocturnas y tardes, "que nuestro horario es este," o "que estamos en el almuerzo llame Uds a partir de las 16:00 que le atenderemos." Y si se llama después de las 20:00, es mucho mejor decir, "lo lamentamos, nuestras oficinas ya han cerrado la atención al publico, llame Uds a partir de las 9:00, que estaremos encantados de atenderle"
Da una sensación mas personal y profesional, que no la locución monótona de "nuestro horario es este llame en el horario." y siempre igual, también nos da la opción de ser creativos en navidad o en fiestas especiales, que se quiera dar un toque de humor o cortesía especial.
Y siempre con el objetivo de la sencillez y rapidez del proceso.
Vamos al dialplan y planeamos el entorno que se definió anteriormente junto con las grabaciones personalizadas.
extension.con para horario de empresa.
Cuando se llama al 917654321....
;Pruebas Calendario
exten => 917654321,1,NoOp(llamada entrante de pruebas para ${EXTEN} desde,${CALLERID(number)})
same => n,GotoIf(${CALENDAR_BUSY(HEmpresa)}?cerrado:abierto) ;Si entrega 1 Bussy, cerrado, si entrega 0 NoBussy, Abierto saltamos a etiqueta.
same => n(cerrado),Set(id=${CALENDAR_QUERY(HEmpresa,${EPOCH})});Si esta Bussy, sacamos la variable del instante "id" de cuando está cerrado.
same => n,Set(Sumario=${CALENDAR_QUERY_RESULT(${id},summary)});Es el nombre con el que creamos las ventanas de los distintos ocupados usando la "id" previa.
same => n,Set(AudioOcupado=${CALENDAR_QUERY_RESULT(${id},description)});Traslación de la variable tomada para el Playback()
same => n,Playback(${AudioOcupado})
same => n,Hangup()
same => n(abierto),Playback(en/locucionPreIVR);La idea es continuar o saltar a una menú IVR.
same => n,Hangup
se averigua si está BUSY o no, si no lo está estamos en horario de trabajo, saltamos a "abierto" y un menú IVR para encaminar la llamada a su destino, PERO si está BUSY, con 1, tendremos que saber cual de los distintos Ocupados creados, es y para eso tenemos que sacar una llave que nos diga el instante, eso lo sacamos llamando a ${EPOCH} y arrastrando su valor a "id", que luego usamos para preguntar o fijar valores.
Sacamos el valor de summary, a efectos de depuración, y luego sacamos el que realmente usaremos, "description".
Necesitamos tomar el valor de la descripción de los distintos eventos, para reproducir los ficheros, pero para eso tienen que llamarse igual.
El siguiente paso es crear ficheros de audio con el mismo nombre que se les ha puesto en las descripciones de los distintos eventos, a saber. En este caso, las descripciones son 4.
Cerrado-0000-0900
Cerrado-1400-1600
Cerrado-2000-2359
Cerrado-0000-2359_Sabado-Domingo
Estos ficheros de audio pueden ponerse en el mismo directorio /en, o hacer uno especifico para estos menesteres.
Con esto ya tendremos listo el proceso automático y limpio.
Continua leyendo "Asterisk + Calendario Propio CalDav. (Google NO..." »