Azioni personalizzate
Le azioni di Frame.io permettono di accedere rapidamente alle operazioni multimediali più comuni, come scaricare, rinominare e duplicare i contenuti. Inoltre, consentono di integrare strumenti e servizi di terze parti direttamente nell’interfaccia di Frame.io.
Informazioni sulle azioni
Con l’introduzione delle azioni personalizzate, gli sviluppatori possono configurare e gestire le proprie azioni in Frame.io V4.Sfruttando lo stesso sistema di eventi alla base dei webhook, le azioni personalizzate costituiscono un meccanismo alternativo che permette agli sviluppatori di collegare le risorse agli strumenti più importanti per gli utenti del loro account Frame.io.
Le azioni possono essere eseguite da qualsiasi utente che faccia parte dell’area di lavoro Frame.io in cui è abilitata l’azione. Durante l’esecuzione di un’azione, Frame.io invia un payload a un URL fornito dall’utente. L’applicazione ricevente risponde con un codice di stato HTTP per confermare la ricezione, oppure con un callback personalizzato per visualizzare altri campi di modulo nell’interfaccia di Frame.io. L’applicazione ricevente può essere un programma in hosting, un servizio o persino uno strumento IPaaS low-code/no-code come Workfront Fusion o Zapier.
Usa le azioni personalizzate per creare delle integrazioni direttamente in Frame.io come componenti programmabili dell’interfaccia utente.In questo modo vengono abilitati vari flussi di lavoro che possono essere attivati dagli utenti all’interno dell’app, sfruttando lo stesso indirizzamento di eventi sottostante dei webhook. Puoi creare moduli con uno o più passaggi attivati dall’utente che riportano a Frame.io sotto forma di modulo diverso o risposta di base. Quando un utente fa clic su un’azione personalizzata in una risorsa, Frame.io invia un payload a un URL che fornisci. L’applicazione ricevente risponde con un codice di stato HTTP per riconoscere la ricezione oppure risponde con un callback personalizzato che permette di mostrare un’interfaccia utente aggiuntiva in Frame.io.
Miglioramenti delle azioni in V4
Sfruttando i feedback degli utenti della versione legacy, abbiamo incluso diversi miglioramenti al set di funzionalità delle azioni in Frame.io V4:
Prima erano supportati solo campi di testo e a selezione singola, mentre ora supportiamo anche la selezione multipla, un’area di testo (per una casella di testo più grande) e un campo booleano (per un pulsante di scelta).
I campi di testo non facilitano le operazioni per copiare e incollare gli URL da parte degli utenti. Ora è possibile usare il nuovo campo del link per semplificare l’operazione di copia con un solo clic.
In base alla quantità di dati restituiti, la finestra delle azioni si ridimensiona in modo dinamico e si adatta al meglio alle informazioni nel modulo. Se necessario, le finestre sono anche scorrevoli.
Configura un’azione in modo che includa fino a 100 risorse in una singola richiesta.
NOVITÀ
Le azioni non sono limitate a un solo tipo di risorsa: possono essere attivate in base a una combinazione di file, cartelle e stack di versioni.
Vogliamo sapere da sviluppatori e utenti finali come vengono utilizzate le azioni, perciò abbiamo inserito un modulo di feedback nella pagina delle impostazioni sul web.
Azioni migrate
Ci sono alcune cose da tenere a mente quando si esegue la migrazione a un account Frame.io V4 contenente azioni personalizzate create nella versione legacy di Frame.io.
Stato delle azioni
Dopo la migrazione dell’account a Frame.io V4, tutte le azioni personalizzate create nelle versioni precedenti avranno uno stato “null” e verranno disabilitate automaticamente. In questo modo, gli utenti possono aggiornare preventivamente le azioni per utilizzare l’API V4 prima dell’abilitazione, poiché le azioni non aggiornate non funzioneranno. Per identificare le azioni in questo stato, visita la pagina delle impostazioni delle azioni e controlla la colonna dello stato oppure, se utilizzi l’API, controlla il campo is_active.
Risorse utilizzabili: file, cartelle e stack di versioni
Data la separazione dei tipi di risorsa come risorse a parte nell’API Frame.io V4, potrebbe esserci un comportamento da considerare quando si interpreta l’ID risorsa ricevuto nel payload dell’azione. Il comportamento per i singoli file è semplice, poiché l’ID riflette il file specifico su cui è stata eseguita l’azione. Come nel caso delle cartelle, ricevi l’ID della cartella su cui è stata eseguita l’azione; tuttavia, a seconda del caso d’uso, hai diverse opzioni per definire il comportamento dell’azione. Usa l’ID cartella per effettuare chiamate successive all’API Frame.io se vuoi interagire con la risorsa cartella stessa. In alternativa, potresti voler ottenere gli elementi figlio di quella cartella per eseguire ulteriori elaborazioni sulle risorse al suo interno. Quando un’azione viene eseguita su uno stack di versioni, il payload contiene l’ID per “Head Asset”, che è il file più in alto nello stack ed è quello mostrato nell’interfaccia utente Frame.io.
Scopri di più sulle differenze tra l’API Frame.io legacy e la V4 nella nostra guida alla migrazione.
Configura le azioni personalizzate con l’API.
Un’azione personalizzata richiede:
Configura l’azione personalizzata
Quando un utente attiva un’azione personalizzata, Frame.io invia un payload a un URL che fornisci. L’applicazione ricevente può rispondere con un codice di stato HTTP per riconoscere la ricezione oppure rispondere con un callback personalizzato che permette di mostrare un’interfaccia utente aggiuntiva in Frame.io.
Sono richieste autorizzazioni come amministratore dell’account per creare azioni personalizzate per un’area di lavoro. Chiedi al tuo amministratore di modificare le tue autorizzazioni se non hai accesso.
Configurazione multi-risorsa
Il supporto multi-risorsa è basato sulla configurazione e deve essere abilitato esplicitamente dalla finestra di configurazione dell’azione sul web. Questa operazione può essere eseguita durante la creazione di una nuova azione o quando aggiorni un’azione esistente.
Se il supporto multi-risorsa è abilitato, il formato del payload cambia immediatamente. I payload legacy e quelli che supportano più risorse si escludono a vicenda.
Payload da Frame.io
Quando l’utente fa clic sull’azione personalizzata, un payload verrà inviato all’URL specificato nel campo URL. Usa questo payload per identificare:
-
Su quale azione personalizzata è stato fatto clic
-
Su quali risorse è stato fatto clic
-
Quale utente ha eseguito l’azione
-
Quale tipo di evento è stato attivato
-
Quale account è associato all’azione personalizzata
-
Quale area di lavoro è associata all’azione personalizzata
-
Quale progetto contiene le risorse
Payload - Supporto per singola risorsa o multi-risorsa
Le azioni personalizzate accettavano originariamente solo una risorsa per richiesta, utilizzando un oggetto resource contenente una sola risorsa. Con il supporto multi-risorsa abilitato, il payload utilizza un elenco di resources con una o più risorse (con un massimo di 100 risorse in una richiesta).
Payload legacy - Solo supporto per singola risorsa
Migrazione dal payload legacy
Payload legacy pianificato per essere deprecato
Il payload legacy è pianificato per essere deprecato. Suggeriamo fortemente agli utenti di migrare i loro servizi per elaborare il nuovo payload.
Abilitando il flag della configurazione e aggiornando la gestione del payload, un’azione può passare senza problemi al supporto di un payload multi-risorsa.
-
Sostituisci l’utilizzo del singolo oggetto
resourcecon l’elenco diresources2. Aggiorna il codice per iterare sull’elenco diresources -
Abilita il flag multi-risorsa nella configurazione delle azioni
Interazioni, nuovi tentativi e timeout
L’interaction_id è un identificatore univoco per tenere traccia dell’interazione mentre si evolve nel tempo. Se non è necessario rispondere all’utente, restituisce un codice di stato 200. Sebbene sia facoltativo, consigliamo di includere delle informazioni sul risultato dell’azione, come un messaggio di operazione riuscita o un avviso di errore. Le azioni personalizzate supportano i callback dei messaggi.
Frame.io si aspetta una risposta in meno di 10 secondi e tenta di riprovare fino a 5 volte in attesa di una risposta positiva. Idealmente la risposta è immediata e le azioni asincrone si verificano dopo un trigger tramite un’azione personalizzata.
Crea un callback del messaggio
Nella risposta HTTP all’evento webhook, puoi restituire un oggetto JSON che descrive un messaggio che verrà restituito all’utente che ha avviato l’azione nell’interfaccia utente di Frame.io.
I messaggi consentono di fornire feedback all’utente direttamente nell’interfaccia utente di Frame.io. Se devi raccogliere informazioni aggiuntive dall’utente, usa i callback dei moduli.
Crea un callback del modulo
Supponiamo che tu abbia bisogno di maggiori informazioni prima di iniziare il processo. Ad esempio, potresti caricare dei contenuti in un sistema che richiede dettagli aggiuntivi. Puoi descrivere un modulo nella risposta, che l’utente compila e ti invia. Ecco un esempio:
Quando l’utente invia il modulo, riceverai un evento sullo stesso URL del POST iniziale:
Tutti i campi personalizzati aggiunti a un modulo appaiono nella sezione data del payload JSON inviato da Frame.io. Utilizza l’interaction_id per mappare la richiesta iniziale e questi nuovi dati del modulo. Puoi rispondere con un messaggio o concatenare un altro modulo. Concatenando azioni, moduli e messaggi, puoi programmare in modo efficace flussi di lavoro multi-fase in Frame.io, usando la logica di business di un sistema esterno.
Dettagli del modulo
Come per i messaggi, i moduli supportano gli attributi title e description che vengono visualizzati nella parte superiore del modulo. Oltre a questo, ogni campo del modulo accetta i seguenti attributi di base:
- type:: indica all’interfaccia utente di Frame.io che tipo di dati aspettarsi e quale componente e rendering. * label: appare nell’interfaccia utente come intestazione sopra il campo.
- name: chiave con cui il campo verrà identificato nel payload successivo. * value: valore con cui precompilare il campo.
Tipi di campi supportati
Campo di testo
Un semplice campo di testo senza parametri aggiuntivi.
Area di testo
Una semplice area di testo senza parametri aggiuntivi.
Elenco di selezione
Definisce un elenco di selezione da cui l’utente può scegliere. Deve includere un elenco di opzioni (options), ognuna delle quali deve includere un nome (name) leggibile dall’uomo e un valore (value) analizzabile dalla macchina.
Casella di controllo
Una semplice casella di controllo senza parametri aggiuntivi.
Link
Un semplice link senza parametri aggiuntivi.
Il modello di autorizzazioni di Frame.io
Le azioni personalizzate seguono un modello di autorizzazioni speciale: appartengono a un’area di lavoro, non a un utente specifico che esiste in un account. Ciò significa che:
-
Qualsiasi amministratore può creare un’azione personalizzata su un’area di lavoro.
-
Qualsiasi amministratore può modificare o eliminare un’azione personalizzata che esiste in un team.
-
Una volta apportata la modifica, tutti gli utenti potranno vederne immediatamente il risultato.
Sicurezza e verifica
Per impostazione predefinita, per tutte le azioni personalizzate viene generata una chiave di firma durante la creazione. Non è configurabile. Questa chiave può essere utilizzata per verificare che la richiesta provenga da Frame.io. Nella richiesta POST sono inclusi i seguenti elementi:
La marca temporale è il momento in cui la richiesta è stata firmata in uscita dalla rete Frame.io. Può essere utilizzata per evitare attacchi di tipo replay. Si consiglia di verificare che questo orario rientri nei 5 minuti dall’orario locale.
La firma è un hash HMAC SHA-256 che utilizza la chiave di firma fornita quando viene creata per la prima volta l’azione personalizzata.
Verifica della firma
La firma fornita ha il prefisso v0=. Al momento Frame.io ha solo questa versione per firmare le richieste. Dovrai aggiungere questo prefisso alla firma calcolata.
Feedback
Ci piacerebbe conoscere l’opinione di sviluppatori e utenti finali su come vorrebbero utilizzare le azioni in Frame.io V4. Assicurati di comunicarci domande, idee e casi d’uso per aiutarci nella definizione delle priorità.