Chatbot IA para clínicas dentales con n8n y WhatsApp
Atender a pacientes por WhatsApp con respuestas claras, pedir la información clínica mínima, proponer huecos reales en agenda y confirmar la cita con email… sin que nadie del equipo tenga que intervenir. Ese es el objetivo del chatbot para clínicas dentales que vas a montar con n8n y Evolution API: escucha texto, audio e imagen, guarda el lead en tu CRM/BD, sugiere fechas disponibles en tu Google Calendar, crea y confirma la cita, envía el email de confirmación formateado y además recuerda la cita el mismo día. Todo con lógica de negocio determinista, prompts controlados y un buffer de mensajes que evita respuestas cruzadas.
Caso de uso y experiencia del paciente
- El paciente escribe “Hola” o envía un 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 y 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 → implántalo 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
Has visto un chatbot clínico completo: 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: desplegarlo en tu entorno, conectar tus servicios, calendarios y plantillas de email, y publicar el número de WhatsApp de la clínica.
