El análisis de completitud cruzando roles contra módulos y tablas contra documentos encontró dos huecos reales. Manual de domicilios: recepcionista, lab_recepcion y lab_readonly tienen acceso a la pantalla administrativa de domicilios, y la única página sobre el tema era la del portal del enfermero, restringida a enfermeros. Son pantallas distintas —una ve todo, la otra solo lo propio— y ahora cada una tiene su guía. Los enfermeros pasan también a ver el manual de formularios, que su rol habilita. Menús y respuestas automáticas del bot: había cuatro tablas en uso que ninguna página explicaba. El bot responde solo las preguntas frecuentes mediante autoresponses (7 configuradas) y ofrece un menú interactivo de 21 opciones en dos niveles, todo configurable desde la base sin desplegar código. También quedan documentados el estado de conversación, los envíos masivos y las encuestas. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.3 KiB
Menús y respuestas automáticas del bot
Buena parte de lo que responde el bot no está en el código: es contenido configurable en la base. Cambiar lo que contesta no requiere tocar PHP ni desplegar.
Respuestas automáticas
autoresponses — dispara una respuesta según lo que escriba el paciente.
| Columna | Para qué |
|---|---|
trigger_type |
Cómo se dispara: welcome, keyword, contains |
trigger_value |
Las palabras que la activan, separadas por coma |
response_text |
Lo que responde |
response_type |
text o plantilla |
template_name |
Plantilla de Meta, si aplica |
menu_id |
Si en vez de texto debe mostrar un menú |
priority |
Cuál gana si varias coinciden |
is_active |
Permite desactivar sin borrar |
Tipos de disparo
| Tipo | Cuándo actúa |
|---|---|
welcome |
Primer contacto |
keyword |
El mensaje es una de las palabras listadas |
contains |
El mensaje contiene el texto |
keyword es más estricto que contains. Para «hola» conviene keyword — si fuera contains se dispararía dentro de cualquier frase que la incluya.
Las que están activas
Cubren saludo, precios, horarios, indicaciones previas, cotización y preparación para frotis. Son las preguntas que más se repiten, resueltas sin intervención humana.
Menús interactivos
menu_options — el árbol de opciones numeradas que el paciente recorre respondiendo con un número.
| Columna | Para qué |
|---|---|
menu_id |
A qué menú pertenece la opción |
option_number |
El número que marca el paciente |
text |
Lo que se muestra |
action_type |
Qué pasa al elegirla |
action_value |
El destino o el texto de respuesta |
is_active |
Permite ocultar sin borrar |
Acciones
action_type |
Efecto |
|---|---|
menu |
Abre otro menú — action_value es su identificador |
end |
Responde con action_value y cierra |
message |
Envía el texto y sigue en el mismo menú |
La estructura actual
main_menu (1)
├─ 1 Agendar toma a domicilio end
├─ 2 Consultar resultados end
├─ 3 Información sobre exámenes ─────► menu informacion_examenes (10)
│ ├─ 1 Pruebas de embarazo end
│ ├─ 2 Prueba de paternidad message
│ ├─ 3 Pruebas de aliento end
│ ├─ 4 Orina de 24 horas end
│ ├─ 5 Solicitar cotización end
│ └─ 6 Volver ──────────────────► main_menu
├─ 4 Ubicación y horarios end
├─ 5 Ver portafolio end
├─ 6 Convenios end
└─ 7 Salir end
Un menú se apunta por su identificador (
main_menu,informacion_examenes), no por su número de fila. Cambiar el orden no rompe los enlaces.
Estado de la conversación
user_states recuerda en qué punto quedó cada paciente: en qué menú está, si espera un dato, o si lo tomó un operador. Es lo que permite que responder «3» signifique algo.
Es la tabla más voluminosa del bot — una fila por contacto activo.
Envíos masivos
broadcast_history registra los envíos a varios destinatarios a la vez.
Fuera de la ventana de 24 horas hay que usar plantilla aprobada. Un envío masivo a contactos que no escribieron recientemente solo puede hacerse con plantilla.
Encuestas
survey_responses guarda las respuestas de satisfacción. La encuesta se envía desde el historial del turnero con la plantilla encuesta_turnero.
Al modificar el bot
- Primero mire si alcanza con la base. Muchos cambios de comportamiento son una fila en
autoresponsesomenu_options, sin desplegar nada. - Use
is_activeen vez de borrar. Permite volver atrás y conserva el historial. - Cuide
priority. Si dos respuestas coinciden, gana la de mayor prioridad; sin ella el resultado depende del orden de la consulta. - Verifique el árbol completo después de tocar un menú: una opción que apunta a un menú inexistente deja al paciente sin salida.