# Create and manage Events

La gestione delle notifiche si basa sulla creazione di un **Evento** (per ricevere e interpretare i dati da fonti esterne) e sulla configurazione di **Output** (per inviare comunicazioni condizionali a destinatari specifici).

<p class="callout info">Disponibile solo per utenti con permesso `backoffice`. Per creare un evento è necessario che nel sistema siano **già presenti** le entità a cui l’evento deve essere collegato: progetto, oggetto, sensore o dispositivo.</p>

---

### Passaggi per creare un Evento

Un Evento consente alla piattaforma di **ricevere** e **interpretare** informazioni (tipicamente JSON) da provider esterni, collegandole a un'entità (Organizzazione, Progetto, Oggetto, Sensore, Dispositivo).

**1. Accedi al Backoffice** e clicca su **Eventi** nella *nav rail* di sinistra.  
La lista mostra nome, l'entità a cui l'evento è collegato, le direct list presenti, la data di creazione e **il bottone per copiare l'URL dell'evento**.

![1- Icon Events.png](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/scaled-1680-/1-icon-events.png)

**2.** Clicca sul bottone **Nuovo evento** in alto a destra.

![2 - Button New Event.png](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/scaled-1680-/TFM2-button-new-event.png)

**3.** Inserisci il **Nome evento e l'entità collegata** (obbligatori)**:**

[![3 - Linked To.png](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/scaled-1680-/X0h3-linked-to.png)](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/X0h3-linked-to.png)

- **Organizzazione:** per eventi generali.
- **Progetto:** per eventi specifici di un singolo progetto.
- **Oggetto:** per eventi legati a una classe e a una singola istanza.
- **Single sensor:** per eventi provenienti da un singolo sensore.
- **Device:** per eventi generati da un insieme di sensori.

**4. Sezione Mapping**: Questa sezione definisce come i dati in arrivo (payload JSON) devono essere interpretati.

- **Carica il payload di esempio**: Incolla o carica un file JSON di esempio nella textbox e clicca **Conferma** per generare le chiavi di mappatura.

[![4 - Payload Structure.png](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/scaled-1680-/tGl4-payload-structure.png)](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/tGl4-payload-structure.png)

- **Mappa le chiavi**: Associa le chiavi del provider ai livelli di informazione previsti:
    
    
    - **Nome**: obbligatorio; rappresenta il nome dell’evento.
        
        *Esempio:* nel codice del provider può comparire come `event_name` o `notification_name`.
    - **Event ID**: obbligatorio; identifica in modo univoco il tipo di evento.  
        *Esempio:* `event_id` o `type_code`.
    - **Tempo (Time)**: obbligatorio; indica il momento in cui l’evento si verifica.  
        *Esempio:* una chiave chiamata `timestamp` o `event_time`.
    - **Livelli (Levels)**: obbligatorio; definisce la tipologia o gravità dell’evento (`info`, `warning`, `success`, `error`).  
        Ogni livello può avere un **Displayed name**, il nome visibile quando si passa il cursore sull’icona del livello.  
        *Esempio:* una chiave del provider come `severity` o `status` può essere mappata su “warning”.
    - **Descrizione**: obbligatoria; spiega brevemente il contenuto o lo scopo dell’evento.
    - *Esempio:* una chiave come `message` o `details`.
    - **Additional info**: facoltativo; aggiunge informazioni aggiuntive.  
        Ogni informazione può avere un **Displayed name**, visibile all’utente.  
        *Esempio:* chiavi come `temperature`, `battery_status`, `signal_strength`.

[![5 - Mapping.png](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/scaled-1680-/l095-mapping.png)](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/l095-mapping.png)

#####   
In base al valore selezionato in *Linked to*, vengono visualizzate ulteriori card obbligatorie:  


- **Project ID**: collega l’evento a un progetto, in modo che venga categorizzato nel contesto del progetto associato.  
    *Esempio:* una chiave `project_id` nel JSON.
- **Object ID**: collega l’evento a un oggetto; è necessario selezionare prima la **classe oggetto**.  
    *Esempio:* `object_id` o `entity_ref`.
- **Single Sensor ID**: identifica il sensore da cui proviene l’evento.  
    *Esempio:* `sensor_id` o `sensor_name`.
- **Device ID**: identifica il dispositivo che raggruppa uno o più sensori.  
    *Esempio:* `device_id` o `controller_name`.

**5. Salva l'evento** cliccando **Salva** in alto a destra. Il bottone è disabilitato finché non sono inseriti nome e entità collegata e finché non sono state mappate tutte le chiavi obbligatorie.

<p class="callout warning">Una volta salvato, appare un **link URL** nella lista che deve essere fornito al provider esterno per l'invio dei dati.</p>

---

### Modificare e Visualizzare dalla Lista

- **Modifica un evento**: Clicca sul bottone blu con l'icona di una freccia, che appare al passaggio del mouse sull'elemento.
- **Duplica un evento**: Appare il bottone **<span class="hljs-strong">Duplica</span>** se è selezionato **un <span class="hljs-strong">singolo elemento</span>**.
- **Elimina un evento**: Appare il bottone **Elimina** se sono selezionati **uno o più <span class="hljs-strong">elementi</span>**<span class="hljs-strong">.</span>
- **Copia URL**: Bottone disponibile per copiare il link da fornire al provider.

---

### Passaggi per impostare un Output (Direct Lists)

L'output, gestito tramite **Direct Lists**, definisce configurazioni condizionali per l'invio di notifiche (*push* o *email*) a specifici destinatari. Se nessun output è configurato, l'evento viene registrato ma non invia comunicazioni.

**1.** Dopo aver salvato l'evento in alto a destra si abilita la pagina **Output**, aprila.

[![6 - Section Output.png](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/scaled-1680-/6-section-output.png)](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/6-section-output.png)

**2.** Clicca sul bottone **Nuova lista**.

[![7 - New list.png](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/scaled-1680-/7-new-list.png)](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/7-new-list.png)

**3. Configura la Direct List**:

- Inserisci un **Nome lista** descrittivo.
- Seleziona il **Tipo di comunicazione** (*Email* o *Push*).

[![8 - Direct List Name.png](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/scaled-1680-/qHB8-direct-list-name.png)](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/qHB8-direct-list-name.png)

**4. Imposta la Condizione (Opzionale)**:

- Se vuoi limitare l'invio solo a specifiche occorrenze, a**ggiungi delle condizioni** basate su occorrenze degli eventi o sui livelli (info, warning, success, error) .
- Definisci la **Chiave** (dell'evento) e il **Valore** che deve essere verificato per attivare l'invio (es. `priorità` = `alta`).

[![9 - Direct List Condition.jpg](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/scaled-1680-/eoL9-direct-list-condition.jpg)](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/eoL9-direct-list-condition.jpg)

**5. Aggiungi Destinatari**:

- Scegli gli utenti/gruppi che riceveranno la notifica per aggiungerli alla sezione **Destinatari**.
- Per *Email*, puoi aggiungere anche indirizzi email esterni.

[![10 - Recipients.png](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/scaled-1680-/10-recipients.png)](https://wiki.eaglearca.com/uploads/images/gallery/2025-12/10-recipients.png)

**6. Salva la Direct List** cliccando **Salva**.

💡 È possibile creare un **numero illimitato di Direct List** per lo stesso evento, differenziando i destinatari e/o le condizioni.

---

### Suggerimenti

💡 **Nomi descrittivi** Usa nomi descrittivi sia per gli Eventi che per le Direct List per facilitare l'identificazione.

💡 **Controlla il JSON** Prima di salvare l'Evento, assicurati che il JSON di esempio sia corretto per generare chiavi di mappatura valide.

💡 **Evita duplicati** Quando duplichi una Direct List, modifica sempre almeno un parametro (es. i destinatari o la condizione) per evitare comunicazioni doppie.

💡 **Condizioni d'invio** Imposta le condizioni sull'output solo se vuoi limitare l'invio; se non ci sono condizioni, la notifica viene inviata per ogni occorrenza dell'evento.

---

### Collegamenti

- *[Creare e gestire i progetti](https://wiki.eaglearca.com/books/backoffice/page/creare-e-gestire-i-progetti "Creare e gestire i progetti")*
- *[Gestire gli oggetti nel progetto](https://wiki.eaglearca.com/books/funzionalita-dellapp/page/gestire-gli-oggetti-nel-progetto "Gestire gli oggetti nel progetto")*
- [Configurare Data Source e Grafici](https://wiki.eaglearca.com/books/backoffice/page/configurare-data-source-e-grafici "Configurare Data Source e Grafici")
- [Assegnare una data source ad un oggetto](https://wiki.eaglearca.com/books/creazione-e-modifica-oggetti/page/assegnare-una-data-source-ad-un-oggetto "Assegnare una data source ad un oggetto")

---

### Problemi Comuni

<table border="1" id="bkmrk-problema-soluzione-i" style="border-collapse: collapse; width: 100%; border-style: solid;"><thead><tr><td>**Problema**</td><td>**Soluzione**</td></tr></thead><tbody><tr><td>Il bottone **Salva** nella pagina di creazione dell'evento resta disattivato</td><td>Controlla che tutti i campi obbligatori siano compilati.</td></tr><tr><td>Le chiavi di mappatura non compaiono</td><td>Dopo aver incollato il JSON nella sezione Mapping, clicca **Conferma**.</td></tr><tr><td>Non riesco ad aggiungere i destinatari</td><td>Verifica che il tipo di comunicazione sia coerente: gli indirizzi email esterni sono accettati solo nelle Direct List di tipo *Email*.</td></tr><tr><td>Le notifiche arrivano due volte</td><td>Controlla se esistono due Direct List identiche (stesso evento, stessi destinatari, stesse condizioni) e modificane una.</td></tr></tbody></table>

---

***Ultimo aggiornamento**: 6 Novembre 2025*