Chatbot para clínicas dentales con n8n y WhatsApp
Cómo construir un chatbot completo para clínicas dentales con n8n y WhatsApp: arquitectura, transcripción de audio, análisis de imagen, integración con Google Calendar, emails de confirmación y recordatorios.
Chatbot para clínicas dentales con n8n y WhatsApp
Atender a pacientes por WhatsApp con respuestas claras, solicitar información clínica mínima, proponer huecos reales en agenda y confirmar la cita con email sin intervención del equipo. El chatbot para clínicas dentales utiliza n8n y Evolution API para escuchar texto, audio e imagen; guardar leads en CRM/BD; sugerir fechas disponibles en Google Calendar; crear y confirmar citas; enviar emails de confirmación; y recordar la cita el mismo día.
Caso de uso y experiencia del paciente
- El paciente escribe “Hola” o envía audio o foto (por ejemplo, de una lesión)
- El bot saluda por su nombre (si está disponible), ofrece información de servicios o agenda
- Si hay síntomas (dolor, sangrado, traumatismo, fiebre), muestra mensajes de prioridad clínica y propone cita urgente
- Solicita consentimiento para guardar imágenes en el historial y hace preguntas estructuradas (desde cuándo, dolor 0–10, zona, sangrado…)
- Propone huecos reales (consulta el calendario), crea la cita y envía email con todos los detalles
- Activa un recordatorio el mismo día por WhatsApp y correo
Arquitectura técnica
- Canal: WhatsApp (Evolution API) → Webhook a n8n
- Orquestación: n8n (workflows: principal + buscar cita + crear cita + confirmación email + recordatorio día D)
- IA:
- Transcripción de audio (Whisper/ChatGPT)
- Análisis de imagen (visión) → descripción objetiva para el agente
- Agente clínico con tools: buscar cita, crear cita, conocimiento, lead upsert, think (intención)
- Datos: BD/CRM (p. ej., Airtable o Postgres) para leads, servicios y trazabilidad
- Agenda: Google Calendar (consulta y creación de evento)
- Email: SMTP o proveedor transaccional (HTML personalizado)
Requisitos previos
- Cuenta e instancia de Evolution API (WhatsApp) con webhook hacia n8n
- n8n operativo (local/VPS/Docker)
- Google Calendar accesible desde n8n (credenciales)
- Proveedor de email (SMTP/SendGrid/Mailersend…) y plantilla HTML
- BD/CRM (Airtable/SQL) con tablas: Leads, Servicios, Interacciones
- Claves de OpenAI (transcripción y visión) u otro proveedor compatible
Flujo completo en n8n (visión general)
- Webhook (Evolution API) → llega JSON con mensaje, tipo (texto/audio/imagen), chat_id, nombre, teléfono, timestamps
- Normalización → datos mínimos unificados
- Buffer (push/get) → agrupa mensajes consecutivos (5 s) y evita respuestas cruzadas
- Split & switch → deriva a texto, audio (→ transcripción) o imagen (→ descripción)
- Merge & ordenar → asegura que el agente reciba todo en el orden real
- Agente clínico → decide: informar, pedir datos, buscar cita, crear cita, actualizar lead
- Confirmación → email HTML + registro en BD/CRM
- Recordatorio día D → WhatsApp + email
Paso a paso de la implementación
1) Entrada por Webhook (Evolution API)
Recibe JSON con: serverUrl, instancia, apiKey, chatId, messageId, type, content, timestamp, name/phone.
- Parsea y guarda solo lo necesario para el flujo
- Enmascara datos sensibles en logs (teléfono, API key)
2) Buffer de mensajes
- Push en BD: colección
chatId/buffercon {messageId, type, content, timestamp} - Get y comparación: si llega un segundo mensaje a <5 s, el bot espera y agrupa
- Regla: si
messageIdnuevo ≠messageIdesperado → wait 5 s y reintentar; si >5 s desde el último → continuar - Borrado del buffer al responder, para no concatenar mensajes antiguos con nuevos
3) Ramas por tipo de contenido
- Texto: extrae
contentytimestamp - Audio: descarga archivo, convierte (base64 → data), transcribe con Whisper/ChatGPT →
content - Imagen: descarga, convierte (base64 → data), describe con visión → texto objetivo (sujetos, zona, estado)
4) Unificación y orden
- Merge (máx. 3 inputs: texto, audio→texto, imagen→descripción)
- Ordenación por
timestamppara contexto coherente (“Hola” → “¿qué tal?” → “tengo dolor…“)
5) Agente clínico con herramientas
- Rol: atención al paciente en clínica dental (objetivo: informar + agendar)
- Tools:
- Conocimiento (tabla Servicios)
- Think (intención, validación de datos)
- Buscar cita (workflow aparte)
- Crear cita (workflow aparte)
- Crear/actualizar lead (BD/CRM)
- Reglas clínicas: priorizar dolor intenso, sangrado persistente, traumatismo, fiebre → proponer cita urgente
- Consentimiento: pedir permiso explícito para guardar imágenes en historial
- Datos mínimos para cita: nombre y apellidos, teléfono/email, motivo breve, fecha/hora preferida
Agenda: buscar huecos y crear la cita
Buscar cita (workflow)
- Entrada:
fecha,hora - Consulta: comprueba evento en [fecha, fecha+1h]
- Si libre →
status=available - Si ocupado → obtiene todas las horas ocupadas del día (8–20h) y pide a la IA sugerir 3 huecos libres dentro del horario y posteriores a la hora solicitada
- Respuesta al agente: “disponible” o “propuestas”
Crear cita (workflow)
- Entrada:
fecha,hora,nombre,email,motivo - Evento Calendar: inicio
hora, finhora+1h, títuloPaciente: nombre, descripciónmotivo, invitados (email paciente / recepción), ubicación clínica - Salida: detalles de la cita (fecha legible, enlace a Calendar)
- Upsert lead: registra/actualiza paciente en BD/CRM
Confirmación por email y recordatorios
Confirmación (workflow independiente)
- Trigger: cada minuto revisa eventos creados recientemente
- Acción: email HTML al paciente con: paciente, fecha y hora legibles, ubicación/mapa, motivo, instrucciones (DNI, llegar 10’ antes, alergias…)
- Formateo: normaliza fecha “lunes, 9 de septiembre de 2025, 11:00”
Recordatorio día D (workflow independiente)
- Trigger: a primera hora del mismo día, lee eventos del día
- Acciones:
- WhatsApp: “Hola, [Nombre]. Te recordamos tu cita hoy a las [hora]. Responde CONFIRMAR o CAMBIAR.”
- Email: mensaje breve con botón/enlace a la cita
Buffer de mensajes y orden cronológico
- Problema común: bots que responden a “Hola” y después a “¿qué tal?” por separado
- Solución: persistir mensajes 5 s, agrupar y ordenar; si llega un segundo mensaje fuera de ventana, abrir nueva interacción
- Beneficio: agente recibe contexto completo y responde una sola vez de forma coherente
Procesamiento de audio, texto e imagen
- Audio → transcripción robusta (mejor audios cortos y claros)
- Imagen → visión describe de forma objetiva (zona afectada, signos visibles) para que el agente no fabule
- Texto → normalización y enriquecimiento con hora para ordenar
Cumplimiento y buenas prácticas clínicas
- Consentimiento informado para almacenar imágenes y datos en historial/CRM
- Privacidad: minimizar datos, cifrar en tránsito, no loguear teléfonos ni API keys en claro
- Mensajes de seguridad: ante dolor intenso, sangrado que no cede, traumatismo o fiebre → cita prioritaria
- Tono: empático y claro; evitar diagnósticos definitivos sin exploración
- Trazabilidad: guardar interacciones con marca temporal y responsable (agente/automatismo)
Costes, rendimiento y escalado
- n8n: puede correr en VPS económico
- Evolution API: coste según proveedor/instancia
- OpenAI: pago por uso (audios/imágenes/LLM)
- Email: coste marginal por envío
- Escalado: separar staging y producción; colas por chat_id; límites y backoff en llamadas a Calendar/LLM
Errores típicos y cómo resolverlos
- Respuestas desordenadas: falta de buffer o de ordenación por timestamp → implementarlo sí o sí
- Cita no creada: credenciales de Calendar o formato de fecha incorrecto → normalizar
datetimey revisar zona horaria - Email en SPAM: autentica dominio (SPF/DKIM/DMARC) y usa plantillas limpias
- IA “parlanchina” fuera de protocolo: endurece el rol, tools y ejemplos; limita el dominio de respuestas
- Imagen sin consentimiento: el bot debe preguntar antes de guardar en historial
Preguntas frecuentes
¿Puedo usarlo sin imagen o sin audio?
Sí. Las ramas son modulares: texto, audio→texto e imagen→descripción.
¿Se adapta a otras clínicas (fisioterapia, estética, óptica)?
Totalmente. Cambia Conocimiento, copy clínico y motivos de cita.
¿Puedo proponer varios profesionales/sillones?
Sí. Usa calendarios por profesional o etiquetas por recurso.
¿Qué pasa si dos pacientes piden la misma hora a la vez?
El buscar cita valida disponibilidad en tiempo real y el crear cita es atómico; si falla, ofrece alternativas.
¿Cómo cancelo o muevo citas?
Añade tool de buscar evento por paciente y update/delete en Calendar + aviso.
Conclusión y siguientes pasos
Se presenta un chatbot clínico completo que capta leads, analiza audio/imagen, prioriza según síntomas, propone y crea citas reales, envía email de confirmación y recordatorios. La clave está en la lógica determinista (workflows separados para buscar/crear), el buffer que ordena la conversación y los prompts con herramientas bien acotadas.
Siguiente paso: desplegar en tu entorno, conectar servicios, calendarios y plantillas de email, y publicar el número de WhatsApp de la clínica.
Imágenes
Automatizamos cualquier proceso de tu empresa
Elegimos el stack que mejor se adapta a tu caso real: n8n, Make, Zapier, Python, serverless… Sin atarte a una sola herramienta.