Recordatorios en WhatsApp
El recordatorio es la capacidad estrella de Arkos Note. Le hablas como a una persona — “recuérdame pagar la renta el primero de cada mes” — y a esa hora exacta te llega un mensaje al chat. Sin apps, sin formularios, sin reglas raras de cron.
§ 2.1.1 Qué entiende #
Arkos Note maneja tres clases de recordatorio. Las tres se crean desde el chat con lenguaje natural; el agente decide cuál usar según cómo redactes la petición.
Recordatorios puntuales
Una sola vez, en una fecha y hora concreta. Es lo que la mayoría
necesita el 80% del tiempo: “mañana 9am”, “el viernes a
las 4”, “en 3 días”. El agente convierte la frase a
una fecha absoluta en tu zona horaria y la guarda como tipo
once.
Recordatorios recurrentes
Se repiten en una cadencia fija. Soporta cuatro frecuencias —
daily, weekly, monthly,
yearly — con intervalo opcional, días de la semana y
día del mes. Internamente se modelan como RRULE
(estándar iCalendar) sobre la zona horaria que tengas configurada.
Ejecuciones agendadas
Distinto a un recordatorio: aquí el agente vuelve a correr a la hora programada y te manda el resultado. Sirve para cosas tipo “cada lunes 8am dame mi agenda del día” o “cada viernes 6pm resúmeme mis gastos de la semana”. La instrucción se guarda como prompt y a esa hora el bot la ejecuta contra tus tools (calendario, gastos, listas) y te envía la respuesta.
§ 2.1.2 Crear desde el chat #
No hay sintaxis. Le hablas en español natural y el agente llama
internamente la tool crearEvento (puntuales y
recurrentes) o programarPrompt (ejecuciones agendadas).
Lo único que necesita es qué y cuándo.
Frases que disparan creación
- “recuérdame llamar al doctor mañana 10am” · puntual.
- “avísame de pagar la luz el día 15 de cada mes” · mensual.
- “todos los lunes y viernes a las 7am recuérdame ir al gym” · semanal con días concretos.
- “en 3 días recuérdame revisar el contrato” · relativa.
- “cada 2 semanas dame un check-in del proyecto” · ejecución agendada.
Hora por defecto
Si no especificas hora (“recuérdame el viernes”) el agente usa 9:00 de la mañana en tu zona horaria. Si quieres otra cadencia base, guárdalo como preferencia: “no me llames antes de las 8”, “recordatorios siempre a las 7am salvo que diga otra hora” — el agente lo respeta a partir de ese momento.
§ 2.1.3 Listar, modificar y cancelar #
Para ver lo que tienes activo: “¿qué recordatorios tengo?”, “muéstrame mis recordatorios”. El agente devuelve la lista con ID, mensaje, próxima fecha, tipo (puntual o recurrente) y estado.
Para cancelar: “elimina el recordatorio del doctor”,
“cancela el #42”, “ya no me recuerdes lo del gym”.
El agente identifica cuál es y te lo confirma antes de marcarlo
como cancelled.
§ 2.1.4 Cómo se entregan #
Hay un scheduler que corre cada minuto. En cada tick busca recordatorios cuya fecha ya pasó y los manda por WhatsApp. Si la ventana de 24h del usuario sigue abierta, llega como mensaje libre; si está cerrada, se envía como template aprobado de WhatsApp Business.
Para los recurrentes, en cuanto el mensaje sale, el sistema
calcula la próxima ocurrencia (con la regla RRULE
almacenada) y la deja agendada para el siguiente envío.
Reintentos automáticos
Si el envío falla (red caída, ventana de WhatsApp expirada sin
template, etc.), el scheduler reintenta hasta 3 veces
en ticks subsecuentes. Tras 3 fallas, el recordatorio queda marcado
como error y se notifica internamente — no se pierde.
§ 2.1.5 Recordatorios para contactos #
Si dices “recuérdale a Juan que mañana hay junta” o
“avisa a mi mamá”, el agente NO usa el flujo normal —
carga la skill contactos y dispara
crearRecordatorioParaContacto. La otra persona debe ser
un contacto aceptado: si todavía no, el bot ofrece invitarlo
primero (le manda un mensaje quick-reply de aceptación).
Tools de la skill
La skill contactos agrupa todo el flujo: invitación,
administración del contacto y recordatorios programados para terceros.
El agente las carga bajo demanda cuando hablas de invitar, listar o
avisarle a alguien.
| Tool | Para qué |
|---|---|
invitarContacto | Manda la solicitud quick-reply al teléfono del invitado. Necesita nombre y teléfono con código de país. |
listarContactos | Muestra tus contactos filtrando por estado (pending, accepted, rejected o todos). |
eliminarContacto | Borra el contacto y cancela los recordatorios pendientes que tú le tenías programados. |
crearRecordatorioParaContacto | Programa un recordatorio que se entregará al contacto (no a ti). Solo funciona con contactos accepted. |
listarRecordatoriosParaContacto | Lista los recordatorios pendientes que tú creaste para un contacto. Devuelve id, mensaje y fecha de cada uno. |
cancelarRecordatorioParaContacto | Cancela uno de esos recordatorios por id. Solo permite cancelar los que tú creaste. |
Listar y cancelar para un contacto
A diferencia de listarEventos (que solo muestra los
recordatorios de tu propio usuario), las herramientas de contactos
filtran por quién creó el recordatorio. Así puedes ver y
administrar lo que tienes programado para cada amigo sin mezclarlo
con tus propios recordatorios.
• #34 · "¡Hora de comer el pastel!" · viernes, 1 de mayo, 12:00 p.m.
• #35 · "Que se coma el pastel del horno." · viernes, 1 de mayo, 12:10 p.m. 12:08
✅ Recordatorio cancelado · #35 12:09
Si el id no corresponde a un recordatorio creado por ti, la tool devuelve un error claro y no toca nada — evita que alguien cancele recordatorios que no le pertenecen.
§ 2.1.6 Casos límite #
Zona horaria
Toda fecha se interpreta en tu zona horaria configurada. Si te
mudas (“ahora vivo en Madrid”) el agente actualiza tu zona
con establecerZonaHoraria. Importante:
los recordatorios YA programados no se mueven al cambiar
la zona — siguen disparándose en el momento absoluto en que se
guardaron. Si querías reprogramarlos, dilo y el bot los recrea.
Hora ya pasada
Si pides “mañana 9am” a las 9:30 de la mañana, el agente interpreta mañana como el día siguiente — no el mismo día a las 9 que ya pasó. Pero si dices “a las 9” sin más, y son las 9:30, el agente normalmente pregunta ¿hoy 21:00 o mañana 9:00? en vez de adivinar.
Para recurrentes que caen en fin de semana o feriado, el sistema dispara igual — no hay lógica de “si cae sábado, mover a lunes”. Si quieres ese comportamiento, dilo en lenguaje natural (“cada primer día hábil del mes”) y el agente intenta parametrizarlo, o crea una preferencia para que tus recurrentes salten fines de semana.