Nodi
Il catalogo dei nodi conta 36 tipi, distribuiti nelle tre schede della palette: Triggers, Actions (comprese le azioni di design e AI) e Rules (logica, tempistiche e controllo del flusso). Ogni nodo è completamente configurabile e viene validato nel momento stesso in cui lo posizioni. Alcuni nodi di azione funzionano già davvero; altri sono presenti nel catalogo prima del loro executor e registrano onestamente un passaggio "non ancora collegato" invece di fingere di riuscire: vedi la colonna When run più sotto.
Panoramica rapida
- Apri la scheda della palette adatta a ciò che ti serve: Triggers, Actions o Rules.
- Trascina il nodo sulla tela.
- Configura i suoi campi nell'inspector.
- Controlla le tabelle qui sotto prima di affidarti all'effetto reale di un nodo di azione.
Riferimento dettagliato
Triggers
Esattamente un nodo trigger avvia un grafo. Vedi Trigger per capire come ciascuno scatta davvero.
| Nodo | Cosa avvia un'esecuzione |
|---|---|
| Manual start | Tu, dal pulsante Test del builder |
| Scheduled | Una cadenza a intervallo, giornaliera o settimanale |
| Incoming webhook | Una chiamata all'URL dedicato dell'automazione |
| Design created | Viene creato un nuovo design |
| Design updated | Un design viene salvato |
| Design shared | Un design viene condiviso o pubblicato |
| Design downloaded | Un design viene scaricato |
| Part tagged | Viene aggiunto un tag a un elemento, con filtro facoltativo su un singolo tag |
| Brand applied | Un kit del brand viene applicato a un design |
| Asset uploaded | Un file viene aggiunto alla libreria multimediale |
| AI generation done | Una generazione AI termina |
| New work in folder | Un progetto viene aggiunto a una cartella scelta |
Design actions
| Nodo | Cosa fa | Campi | When run |
|---|---|---|---|
| Pick a part | Scegli un progetto, poi un elemento al suo interno (pagina, riquadro o slide); i passaggi successivi agiscono su di esso | Part (apre il selettore di elemento) | Funziona davvero |
| Set status / folder | Cambia lo stato del design e/o lo sposta in una cartella | Status, Folder | Funziona davvero |
| Publish a part | Pubblica l'elemento selezionato come modello della community | nessuno | Non ancora collegato |
| Duplicate a design | Crea una copia del design selezionato | nessuno | Non ancora collegato |
| Generate a cover | Genera una copertina o una miniatura per l'elemento selezionato | nessuno | Non ancora collegato |
AI actions
Passa attraverso la tua chiave del provider AI, la stessa usata altrove nell'app; vedi Usa la tua chiave AI.
| Nodo | Cosa fa | Campi | When run |
|---|---|---|---|
| Generate copy | Scrive testo con un LLM | Impostazioni AI (aperte dal nodo) | Funziona davvero con qualsiasi chiave AI collegata; in caso contrario registra un passaggio saltato |
| Generate an image | Da testo a immagine | Impostazioni AI (aperte dal nodo) | Funziona davvero con una chiave compatibile OpenAI; con qualsiasi altro provider, o senza chiave, registra un passaggio saltato |
| Generate a video | Da testo a video | Impostazioni AI (aperte dal nodo) | Oggi registra sempre un passaggio saltato; il video non è ancora collegato a un provider, nemmeno con una chiave configurata |
| Run an AI skill | Esegue una skill di AI Studio | Impostazioni AI (aperte dal nodo) | Uguale a Generate an image per una skill che produce immagini; una skill che produce video registra sempre un passaggio saltato |
Notify actions
| Nodo | Cosa fa | Campi | When run |
|---|---|---|---|
| In-app notification | Crea una notifica nella tua area di lavoro | Message | Funziona davvero |
| Send webhook | Invia una richiesta POST a un URL | URL | Funziona davvero |
| Slack / Discord | Pubblica un messaggio tramite un incoming webhook | Webhook URL, Message | Funziona davvero |
| Write an audit entry | Aggiunge una riga al registro di audit | nessuno | Funziona davvero |
| Send email | Invia un'email | To, Subject, Body | Funziona davvero tramite la connessione SMTP configurata nella tua area di lavoro; senza di essa registra un passaggio saltato |
| Add to calendar | Aggiunge un evento al calendario dell'area di lavoro | Title | Funziona davvero; finisce nel feed di attività del tuo Portal Calendar |
Rules and logic
Ogni nodo qui è gestito direttamente dal core engine, quindi tutti funzionano davvero.
| Nodo | Cosa fa | Campi |
|---|---|---|
| Condition (yes/no) | Divide il flusso in due rami in base a una condizione | Condition |
| Filter | Interrompe il flusso se una condizione non è soddisfatta | Condition |
| Delay | Attende prima di continuare | Amount, Unit (minuto, ora, giorno) |
| Wait until a date | Attende fino a una data e un'ora specifiche | Date |
| Set a variable | Scrive un valore nel contesto dell'esecuzione per i passaggi successivi | Key, Value |
| Expression / template | Costruisce un valore a partire dagli output precedenti | Template |
| HTTP request | Chiama un URL e memorizza la risposta | URL, Method, Body |
| No-op | Non fa nulla; un passaggio di transito | nessuno |
| Exit | Termina l'automazione | nessuno |
Templates e condizioni
La maggior parte dei campi di testo e textarea, il nodo Expression / template e diversi campi delle azioni di notifica accettano placeholder tra doppie parentesi graffe, scritti come {{ context.someKey }}, che attingono a tutto ciò che i nodi precedenti hanno scritto nell'esecuzione, per esempio l'elemento che hai scelto o un blocco di testo generato dall'AI.
Condition (yes/no) e Filter costruiscono invece una regola strutturata: scegli un campo, un confronto (equals, contains, starts with, greater than, is empty e altri, a seconda del tipo di dato del campo) e un valore. Entrambi i lati della regola possono fare riferimento al contesto dell'esecuzione allo stesso modo, per esempio confrontando {{ context.status }} con un valore fisso come approved. Una regola vuota passa sempre, ed è per questo che un nodo Condition o Filter appena creato lascia passare tutto finché non lo configuri.
Come si usa
Guida pratica: configurare un passaggio HTTP request
- Trascina HTTP request sulla tela dalla scheda Rules e collegalo dopo il nodo che produce i dati da inviare.
- Imposta Method (GET, POST, PUT, PATCH o DELETE) e URL; il campo URL accetta
{{ context.x }}come qualsiasi campo di testo. - Scegli Auth: None, Bearer token, Basic (
user:pass) o un header personalizzato, e compila il campo del valore corrispondente che compare. - Per un metodo che trasporta un corpo, scegli un Body type (JSON, form o testo grezzo) e scrivi il Body, di nuovo con i placeholder dove ti servono.
- Lascia Response variable sul valore predefinito
__http, oppure rinominala, poi fai riferimento al risultato a valle, per esempio{{ context.__http.status }}o un valore annidato dentro{{ context.__http.body }}.
Guida pratica: notificare un canale Slack o Discord
- Nell'app di destinazione, crea un incoming webhook per il canale su cui vuoi pubblicare e copiane l'URL.
- Trascina Slack / Discord sulla tela (Actions > Notification) e incolla quell'URL in Webhook URL.
- Scrivi il Message, usando
{{ context.x }}per includere qualsiasi cosa abbiano prodotto i nodi precedenti. - Facoltativamente imposta Username e Icon emoji, così i messaggi automatici sono facili da individuare in un canale affollato.
- Testa l'automazione una volta; un invio fallito compare come passaggio
errorcon lo stato HTTP allegato, non come un no-op silenzioso.
Attività comuni
- Scattare ogni mattina nei giorni feriali. Su un trigger Scheduled, imposta Frequency su Cron, l'espressione su
0 9 * * 1-5e un fuso orario comeEurope/Istanbul. La modalità Cron mantiene un puntatore di recupero, così un minuto mancato (un deploy, un cold start) scatta comunque una volta recuperato, invece di andare silenziosamente perso. - Accettare solo chiamate webhook firmate. Compila il campo HMAC secret del trigger Incoming webhook; il chiamante deve poi inviare un header
X-Signature: sha256=...calcolato sul corpo grezzo, altrimenti la chiamata viene rifiutata con un 401 prima che parta qualsiasi cosa. - Spostare un elemento in revisione dopo l'approvazione. Concatena Pick a part con Set status / folder, impostando Status su "İncelemede" (In revisione); usa lo stesso percorso di aggiornamento del controllo di stato interno all'editor.
- Abbozzare una didascalia o un riepilogo. Il prompt di un nodo Generate copy può fare riferimento direttamente al contesto precedente, per esempio
Summarize this in one sentence: {{ context.__aiText }}concatenato dopo un altro passaggio AI. - Chiamare un'API esterna e agire sulla risposta. Un nodo HTTP request (scheda Rules) può impostare l'autenticazione Bearer/Basic/header personalizzato, scrivere la sua risposta in una variabile (predefinita
__http), e un nodo Filter subito dopo può filtrare in base a quella risposta, per esempio proseguendo solo se la chiamata è andata a buon fine. - Firmare un webhook in uscita. Il campo Secret dell'azione Webhook gönder (Send webhook), se compilato, firma il corpo della richiesta con HMAC-SHA256 e lo invia nell'header indicato in Signature header (predefinito
X-Signature), così il destinatario può verificare che la chiamata provenga davvero dalla tua automazione. - Combinare più valori di contesto in una sola stringa. Usa Expression / template invece di più nodi Set a variable, per esempio
{{ context.name }} <{{ context.email }}>scritto una sola volta nel suo campo Template, poi fai riferimento al risultato a valle come{{ context.__expr }}. - Collegare una notifica al lavoro a cui si riferisce. Il campo Href di In-app notification accetta un percorso come
/works/<id>, così un clic sulla notifica nell'area di lavoro porta il tuo team direttamente al progetto interessato. - Interrompere un'esecuzione in anticipo senza che conti come un fallimento. Concatena un nodo Filter con una regola falsa per i casi che vuoi scartare; un'esecuzione filtrata compare come Exited in Runs, non come Failed, e nulla dopo il filtro viene eseguito.
Risoluzione dei problemi
- Il passaggio di un nodo mostra
skippedin Activity. È un filtro voluto (un nodo Filter la cui condizione ha dato esito negativo), un nodo il cui executor davvero non è ancora collegato (vedi le colonne "When run" qui sopra), oppure un'azione che per ora non ha nulla su cui agire (email senza connessione SMTP, AI senza una chiave compatibile). Nessuno di questi è un bug; l'esecuzione prosegue comunque con ciò che viene dopo. - Un nodo di azione continua a fallire sullo stesso passaggio. Apri la scheda Settings del suo inspector e imposta un Retry count e un'attesa, oppure cambia On error in Continue così il resto del grafo viene comunque eseguito; vedi Creare un flusso di lavoro.
- La mia condizione non sembra mai passare (o non sembra mai fallire). Verifica che il campo che legge risolva davvero in qualcosa: un refuso in un percorso
{{ context.x }}, o un nodo a monte che è stato a sua volta saltato, lasciano entrambi il valore vuoto, e la maggior parte dei confronti diversi da "is empty" fallisce contro un valore vuoto. - Un'esecuzione non è mai partita. Questa è una questione a livello di trigger, non di nodo; vedi Trigger per debounce, orari di silenzio e insidie dello stato Active.
- Set status / folder registra "önce bir parça seç" (scegli prima un elemento) e salta. Questo nodo agisce sull'elemento scelto in precedenza da un nodo Pick a part nella stessa esecuzione. Senza uno prima di esso nel grafo, non c'è nulla su cui agire, quindi salta sempre con quel messaggio.
- "Publish a part", "Duplicate a design" o "Generate a cover" non sembrano fare nulla. Queste tre azioni di design sono ancora in anticipo sul loro executor; registrano sempre un passaggio saltato e proseguono, esattamente come un nodo AI o email la cui dipendenza non è configurata. Nulla di ciò che imposti su di essi cambia questo, per ora.
- Un messaggio Slack o un webhook in uscita non è arrivato senza alcun avviso. Controlla prima la sua voce in Recent step logs. Un URL di incoming webhook errato o scaduto, o un destinatario che ha restituito uno stato diverso da 2xx, compaiono entrambi come passaggio
errorcon lo stato della risposta nel messaggio, non come un fallimento nascosto.
Consigli
Saltato non significa rotto
Un nodo contrassegnato "non ancora collegato" non è un bug. L'esecuzione lo attraversa comunque, registra un onesto passaggio "skipped" e continua al nodo successivo, così il resto del tuo grafo funziona mentre aspetti l'executor di quel nodo.
Combina condition e filter
Usa Condition quando ti servono due percorsi diversi (sì e no); usa Filter quando vuoi solo fermare un'esecuzione che non è idonea.