Cómo conectar Asterisk al Calendario de Google para definir festivos y bloquear llamadas
Integrar Asterisk con Google Calendar permite automatizar la gestión de días festivos y horarios especiales, bloqueando o desviando llamadas en función de eventos definidos en el calendario. Esta solución es ideal para empresas que desean mantener una atención telefónica eficiente y acorde a sus necesidades operativas.
Requisitos previos
- Servidor Asterisk funcionando (versión 1.8 o superior recomendada).
- Módulo res_calendar_icalendar.so cargado en Asterisk.
- Cuenta de Google con acceso a Google Calendar.
- Librerías
libneon
y libical
instaladas en el sistema.
Paso 1: Preparar el calendario de Google
- Accede a Google Calendar con la cuenta que gestionará los festivos.
- Crea un calendario específico para festivos o usa uno existente.
- Haz público el calendario para que Asterisk pueda acceder:
- Entra en la configuración del calendario.
- Ve a la pestaña Compartir este calendario y marca la opción Hacer público este calendario.
- Obtén la dirección iCal pública:
- En la pestaña Detalles del calendario, busca el enlace que dice Dirección del calendario (formato iCal).
- Copia la URL que termina en
.ics
.
Paso 2: Configurar Asterisk para leer el calendario
Edita el archivo /etc/asterisk/calendar.conf
para añadir la configuración del calendario de Google. Ejemplo:
[festivos]
type = ical
url = https://calendar.google.com/calendar/ical/tu_calendario%40gmail.com/public/basic.ics
refresh = 15
timeframe = 1440
- type: Define el tipo de calendario (ical para Google Calendar).
- url: Pega la URL iCal pública copiada antes.
- refresh: Intervalo (en minutos) para refrescar los eventos.
- timeframe: Ventana de tiempo (en minutos) que Asterisk analizará hacia adelante.
Paso 3: Verificar la integración
Reinicia Asterisk o recarga los módulos de calendario:
asterisk -rx "module reload res_calendar.so"
Comprueba que el calendario se ha cargado correctamente:
asterisk -rx "calendar show calendars"
Si ves el nombre del calendario y el estado busy durante un evento, la integración es correcta.
Paso 4: Crear eventos de festivo en Google Calendar
- Crea eventos de tipo Ocupado en los días festivos o periodos donde no deseas recibir llamadas.
- El título o la descripción del evento pueden usarse posteriormente para personalizar mensajes o acciones en Asterisk.
Paso 5: Modificar el dialplan para respetar los festivos
Edita el extensions.conf
para que Asterisk consulte el estado del calendario antes de aceptar llamadas. Ejemplo básico:
[entrada-llamadas]
exten => _X.,1,NoOp(Verificando festivos en Google Calendar)
same => n,CalendarQuery(festivos,now,busy)
same => n,GotoIf($["${CALENDAR_BUSY}" = "1"]?festivo,norespuesta)
same => n,Answer()
same => n,Dial(SIP/100)
same => n,Hangup()
[festivo]
exten => norespuesta,1,Playback(custom/festivo)
same => n,Hangup()
- CalendarQuery consulta el calendario
festivos
para saber si hay algún evento busy en el momento actual.
- Si
CALENDAR_BUSY
es 1, se redirige a un mensaje de festivo y se cuelga la llamada.
- Si no hay evento, la llamada sigue su curso normal.
Personalización avanzada
- Puedes usar la descripción o el resumen del evento para reproducir mensajes personalizados según el festivo.
- Es posible definir varios calendarios (por ejemplo, uno para cada departamento).
- La integración permite también programar desvíos automáticos o activar buzones de voz según el calendario.
Consideraciones de seguridad
- Al hacer público el calendario, limita la información expuesta configurando que solo se muestre el estado Libre/Ocupado.
- No uses la dirección iCal privada salvo que sea estrictamente necesario y el entorno sea seguro.
Conclusión
Integrar Google Calendar con Asterisk es una solución robusta y flexible para gestionar automáticamente los días festivos y periodos no laborables en una centralita. Permite mantener la atención telefónica bajo control, reducir errores humanos y mejorar la experiencia del cliente, todo ello con una configuración sencilla y fácilmente escalable.