KEPLIN Docs

Notifiche

Come un'app avvisa chi la usa — il canale sulla schermata, il canale via email, e la campanella della barra di navigazione.

Un'applicazione aziendale ha bisogno di avvisare le persone: un'opportunità ha cambiato fase, una richiesta è arrivata per l'approvazione, un report è pronto. In Keplin questo si fa con due canali, che esistono in tutte le app e non si creano né si eliminano: uno consegna sulla schermata, a chi sta usando l'app in quel momento; l'altro consegna via email, a chi non c'è.

Si accendono o si spengono nelle Impostazioni dell'app, sezione Notifiche:

  1. Apri l'app.
  2. Clicca sull'icona Impostazioni dell'app, in cima all'albero laterale.
  3. Nell'albero delle impostazioni, dentro il gruppo Applicazione, scegli Notifiche.

La sezione Notifiche delle impostazioni dell'app: i due canali fissi — in-app e via email — e l'SMTP di invio.
La sezione Notifiche delle impostazioni dell'app: i due canali fissi — in-app e via email — e l'SMTP di invio.

Notifiche in-app

Il primo canale consegna dentro l'applicazione. Ha un unico interruttore, Canale attivo, e il comportamento è questo:

  • chi ha l'app aperta riceve l'avviso sul momento, senza ricaricare niente;
  • chi non c'è lo riceve al successivo accesso — il messaggio resta salvato e non si perde;
  • i messaggi da leggere compaiono nella campanella della barra di navigazione dell'app.

Nota

La consegna immediata dipende dall'interruttore Notifiche in tempo reale delle Impostazioni della piattaforma. Con quello spento non si perde nulla: le notifiche continuano a essere salvate e compaiono alla visita successiva, solo senza l'"adesso".

Notifiche via email

Il secondo canale manda email, e serve a due cose: le notifiche che la logica dell'app invia per email, e il recupero della password degli utenti dell'app. Entrambe escono dal server di invio configurato subito sotto, nella stessa sezione.

Compila il blocco SMTP:

Campo Che cos'è
Host L'indirizzo del server email.
Porta 465 con connessione sicura, 587 per STARTTLS.
Connessione sicura (TLS) Attivala per SMTPS (porta 465); spegnila per STARTTLS (porta 587).
Utente e Password Le credenziali di invio. La password è conservata cifrata e non torna mai sulla schermata — lasciarla vuota vuol dire "mantenere quella attuale".
Indirizzo mittente (from) Il mittente che appare a chi riceve.

Il blocco SMTP del canale email: server, porta, connessione sicura, credenziali e indirizzo mittente.
Il blocco SMTP del canale email: server, porta, connessione sicura, credenziali e indirizzo mittente.

Atenção

Senza il canale email attivo e con l'SMTP compilato, il recupero della password degli utenti dell'app non funziona — la richiesta viene accettata ma l'email non esce mai.

Nota

Questo server email è dell'app, ed è distinto dall'email degli avvisi della piattaforma (quello si configura in Impostazioni e serve per gli allarmi di infrastruttura). Ogni app può inviare dal server del proprio cliente senza che questo cambi nulla nell'installazione.

Inviare una notifica

Le notifiche partono dalla logica dell'app — da uno script o da un passaggio di workflow. Negli script ci sono due strumenti, uno per canale (vedi SDK degli script).

Sulla schermata, con notify.send. I destinatari sono utenti dell'app: users riceve nomi utente, e roles si espande a tutti i membri di un ruolo.

r = notify.send(
    "Opportunità vinta",
    subtitle="Câmara Municipal de Aveiro — 18.400 €",
    body="La proposta è stata accettata. Il contratto passa alla firma.",
    users=["ana.rocha"],
    roles=["direcao"],
    data={"url": "/oportunidades/42"},
)
# r = {"recipients": 4, "delivered": 2}

Il delivered conta chi era collegato e ha ricevuto sul momento; gli altri ricevono quando entrano. Il data viaggia con il messaggio — è ciò che permette che cliccare sull'avviso porti la persona al punto giusto dell'app.

Via email, con notify.email. Qui il to accetta indirizzi liberi, e users/roles si risolvono nell'email degli utenti dell'app.

r = notify.email(
    "Riepilogo del pipeline",
    to=None,
    users=None,
    roles=["direcao"],
    text="Ci sono 12 opportunità aperte, 3 si chiudono questa settimana.",
    html=None,
)
# r = {"accepted": ["ana.rocha@exemplo.pt"], "skipped": []}

Lo skipped dice chi è rimasto fuori per non avere l'email compilata nella scheda — vale la pena guardare quell'elenco quando qualcuno si lamenta di non ricevere.

La campanella nella barra dell'app

La campanella che mostra i messaggi da leggere non compare da sola: è un tipo di menu che si aggiunge nell'editor di navigazione dell'app, con il conteggio automatico dei non letti. È descritto in Navigazione dell'app.

Il menu Notifiche nell'editor di navigazione — è lui a mettere la campanella del centro notifiche nella barra dell'app.
Il menu Notifiche nell'editor di navigazione — è lui a mettere la campanella del centro notifiche nella barra dell'app.

Per quanto tempo si conservano

I messaggi si accumulano. Ogni app decide per quanto tempo conserva la cronologia nella sezione Rotazione dei record delle impostazioni dell'app — la stessa dove si definisce la conservazione dei record di attività. Zero giorni vuol dire "conservare per sempre".

Domande frequenti

La persona non ha ricevuto niente sulla schermata. Controlla tre cose, in quest'ordine: il canale Notifiche in-app è attivo nelle impostazioni dell'app; l'interruttore Notifiche in tempo reale è acceso nelle Impostazioni della piattaforma; e la persona ha la sessione aperta nell'app. Senza tempo reale il messaggio non si perde — arriva solo più tardi.

Posso avvisare tutti in una volta? Sì: invece dei nomi, passa roles con il ruolo che vuoi. Chi si trova in quel ruolo al momento dell'invio riceve.

Le notifiche di un'app compaiono in un'altra? No. I messaggi e la cronologia appartengono all'app dove sono stati creati, e i destinatari sono utenti di quell'app.

Posso creare altri canali oltre a questi due? No. I canali sono fissi, ed è deliberato: quello che cambia da avviso ad avviso è il destinatario e il testo, non la canalizzazione. Per separare gli argomenti, usa i ruoli dei destinatari.