KEPLIN Docs

Notificaciones

Cómo una app avisa a quien la usa — el canal en la pantalla, el canal por correo, y la campana de la barra de navegación.

Una aplicación de negocio necesita avisar a personas: una oportunidad cambió de fase, una solicitud llegó para aprobación, un informe quedó listo. En Keplin eso se hace por dos canales, que existen en todas las apps y no se crean ni se borran: uno entrega en la pantalla, a quien está usando la app en ese momento; el otro entrega por correo, a quien no está.

Se activan o desactivan en los Ajustes de la app, sección Notificaciones:

  1. Abre la app.
  2. Haz clic en el icono Ajustes de la app, en la parte superior del árbol lateral.
  3. En el árbol de ajustes, dentro del grupo Aplicación, elige Notificaciones.

La sección Notificaciones de los ajustes de la app: los dos canales fijos — in-app y por correo — y el SMTP de envío.
La sección Notificaciones de los ajustes de la app: los dos canales fijos — in-app y por correo — y el SMTP de envío.

Notificaciones in-app

El primer canal entrega dentro de la aplicación. Tiene un único interruptor, Canal activo, y el comportamiento es este:

  • quien tiene la app abierta recibe el aviso al momento, sin recargar nada;
  • quien no está lo recibe en el próximo inicio de sesión — el mensaje queda guardado y no se pierde;
  • los mensajes por leer aparecen en la campana de la barra de navegación de la app.

Nota

La entrega inmediata depende del interruptor Notificaciones en tiempo real de los Ajustes de la plataforma. Con él desactivado nada se pierde: las notificaciones se siguen guardando y aparecen en la visita siguiente, solo sin el «ahora».

Notificaciones por correo

El segundo canal manda correo, y sirve para dos cosas: las notificaciones que la lógica de la app envía por correo, y la recuperación de contraseña de los usuarios de la app. Ambas salen por el servidor de envío configurado justo debajo, en la misma sección.

Rellena el bloque SMTP:

Campo Qué es
Host La dirección del servidor de correo.
Puerto 465 con conexión segura, 587 para STARTTLS.
Conexión segura (TLS) Actívala para SMTPS (puerto 465); desactívala para STARTTLS (puerto 587).
Usuario y Contraseña Las credenciales de envío. La contraseña se guarda cifrada y nunca vuelve a la pantalla — dejarla vacía quiere decir «mantener la que está».
Dirección de envío (from) El remitente que ve quien recibe.

El bloque SMTP del canal de correo: servidor, puerto, conexión segura, credenciales y dirección de envío.
El bloque SMTP del canal de correo: servidor, puerto, conexión segura, credenciales y dirección de envío.

Atención

Sin el canal de correo activo y con SMTP relleno, la recuperación de contraseña de los usuarios de la app no funciona — la solicitud se acepta pero el correo nunca sale.

Nota

Este servidor de correo es de la app, y es distinto del correo de los avisos de la plataforma (ese se configura en Ajustes y sirve para alarmas de infraestructura). Cada app puede enviar por el servidor de su cliente sin que eso cambie nada en la instalación.

Enviar una notificación

Las notificaciones parten de la lógica de la app — de un script o de un paso de workflow. En los scripts hay dos herramientas, una por canal (ver SDK de los scripts).

En la pantalla, con notify.send. Los destinatarios son usuarios de la app: users recibe nombres de usuario, y roles se expande a todos los miembros de un role.

r = notify.send(
    "Oportunidad ganada",
    subtitle="Câmara Municipal de Aveiro — 18.400 €",
    body="La propuesta fue aceptada. El contrato sigue para firma.",
    users=["ana.rocha"],
    roles=["direcao"],
    data={"url": "/oportunidades/42"},
)
# r = {"recipients": 4, "delivered": 2}

El delivered cuenta a quien estaba conectado y recibió al momento; los demás reciben cuando entren. El data viaja con el mensaje — es lo que permite que hacer clic en el aviso lleve a la persona al sitio correcto de la app.

Por correo, con notify.email. Aquí el to acepta direcciones libres, y users/roles se resuelven al correo de los usuarios de la app.

r = notify.email(
    "Resumen del pipeline",
    to=None,
    users=None,
    roles=["direcao"],
    text="Hay 12 oportunidades abiertas, 3 cierran esta semana.",
    html=None,
)
# r = {"accepted": ["ana.rocha@exemplo.pt"], "skipped": []}

El skipped dice quién quedó fuera por no tener correo relleno en la ficha — vale la pena mirar esa lista cuando alguien se queja de no recibir.

La campana en la barra de la app

La campana que muestra los mensajes por leer no aparece sola: es un tipo de menú que se añade en el editor de navegación de la app, con el recuento automático de los no leídos. Está descrita en Navegación de la app.

El menú Notificaciones en el editor de navegación — es el que pone la campana del centro de notificaciones en la barra de la app.
El menú Notificaciones en el editor de navegación — es el que pone la campana del centro de notificaciones en la barra de la app.

Cuánto tiempo se guardan

Los mensajes se acumulan. Cada app decide cuánto tiempo guarda el historial en la sección Rotación de registros de los ajustes de la app — la misma donde se define la retención de los registros de actividad. Cero días quiere decir «guardar siempre».

Preguntas frecuentes

La persona no recibió nada en la pantalla. Confirma tres cosas, por este orden: el canal Notificaciones in-app está activo en los ajustes de la app; el interruptor Notificaciones en tiempo real está activado en los Ajustes de la plataforma; y la persona tiene sesión abierta en la app. Sin tiempo real el mensaje no se pierde — solo llega más tarde.

¿Puedo avisar a todo el mundo de una vez? Sí: en vez de nombres, pasa roles con el role que quieres. Quien esté en ese role en el momento del envío recibe.

¿Las notificaciones de una app aparecen en otra? No. Los mensajes y el historial pertenecen a la app donde fueron creados, y los destinatarios son usuarios de esa app.

¿Puedo crear más canales además de estos dos? No. Los canales son fijos, y es deliberado: lo que cambia de aviso a aviso es el destinatario y el texto, no la canalización. Para separar asuntos, usa los roles de los destinatarios.