Le richieste all’API di Discourse possono essere automatizzate creando uno Zap che utilizza un Webhook di Zapier come passaggio di azione. Questo argomento descrive come eseguire richieste per le seguenti azioni:
- aggiungere un utente a un gruppo
- assegnare un badge personalizzato
Per capire come eseguire altri tipi di richieste API con Zapier, leggi questo argomento e poi cerca nella documentazione dell’API di Discourse l’azione che desideri eseguire. Puoi anche scoprire come creare una richiesta API per un’azione specifica leggendo Reverse engineer the Discourse API.
Configurare il passaggio di attivazione (trigger)
Ogni Zap deve avere un passaggio di attivazione (trigger) e un passaggio di azione. Il trigger viene utilizzato per trasferire dati da un’applicazione al passaggio di azione dello Zap. In alcuni casi, il trigger può anche essere utilizzato per impedire allo Zap di completare il passaggio di azione a meno che i dati non soddisfino determinate condizioni.
Per configurare il passaggio di azione, vai alla tua Dashboard di Zapier e clicca sul pulsante “Crea uno Zap”. Si aprirà un modulo di ricerca che ti chiederà di scegliere un’app di attivazione.
Per gli esempi in questo argomento, sto utilizzando l’evento “Nuovo utente” di WordPress come passaggio di attivazione. Questo perché è facile da configurare per testare le chiamate API.
Il nodo “Testa questo passaggio” del tuo passaggio di attivazione ti consente di selezionare un campione di dati dalla tua applicazione di attivazione che verrà trasferito al passaggio di azione dello Zap. Questi dati saranno utili per configurare il passaggio di azione.
Aggiungere un passaggio opzionale per recuperare i dettagli da Discourse
A seconda dei dati trasferiti dalla tua app di attivazione, potresti aver bisogno di recuperare alcuni dati da Discourse prima di effettuare la richiesta API finale. Ad esempio, il trigger “Nuovo utente” di WordPress trasferisce il nome utente WordPress e l’indirizzo email dell’utente. So che l’indirizzo email corrisponderà all’email dell’utente su Discourse, ma per le richieste API in questo esempio, ho bisogno di conoscere il nome utente Discourse dell’utente.
Per ottenere i dettagli di un utente su Discourse dal suo indirizzo email, aggiungi un passaggio di azione al tuo Zap. Seleziona “GET” dal menu delle azioni del webhook.
Nel passaggio di modifica del modello del webhook, inserisci l’URL di base del tuo sito Discourse, seguito da /admin/users/list/all.json nella sezione URL. Ad esempio, l’URL di base del mio sito è https://demo.scossar.com, quindi inserisco https://demo.scossar.com/admin/users/list/all.json nel campo URL.
Nella sezione Parametri della stringa di query, inserisci “email” come Chiave e quindi clicca sull’icona “Inserisci un campo” per aprire il menu a discesa. Seleziona il valore trasferito dal tuo passaggio di attivazione che contiene l’indirizzo email dell’utente.
Autenticare la richiesta
Scorri verso il basso nel modulo fino alla sezione Intestazioni (Headers). Questa sezione viene utilizzata per autenticare la richiesta. Richiede tre coppie chiave/valore:
Api-Username: il nome utente di un amministratore sul tuo sito. Nella maggior parte dei casi, l’utente ‘system’ sarà una buona scelta.Api-Key: la chiave API associata al nome utente utilizzato nella prima coppia chiave/valoreContent-Type:multipart/form-data
La sezione Intestazioni completata dovrebbe assomigliare a questa, ma con la tua chiave API:
Clicca sul pulsante Continua per visualizzare i dati recuperati da Discourse per questa richiesta.
Aggiungere il passaggio di azione finale
Una volta configurati il trigger e il passaggio opzionale per recuperare i dati da Discourse, clicca sul link “Aggiungi un passaggio” e seleziona “Webhooks by Zapier” dal menu delle azioni. Ti verrà quindi chiesto di scegliere quale metodo di richiesta utilizzare nella tua richiesta API a Discourse.
Ecco i tipi di richiesta necessari per gli esempi utilizzati in questo argomento:
- aggiungere un utente a un gruppo:
PUT - assegnare un badge personalizzato:
POST
Per configurare richieste API diverse dagli esempi di questo argomento, consulta la documentazione dell’API di Discourse per vedere se esiste un esempio della richiesta che desideri effettuare. Se non trovi un esempio lì, leggi Come fare reverse engineering dell’API di Discourse per imparare a trovare l’URL e il metodo di richiesta per l’azione che desideri eseguire. Una volta trovato il metodo di richiesta, selezionalo dal menu delle azioni.
Nota: se la tua richiesta utilizza il metodo DELETE, seleziona “Richiesta personalizzata” dal menu delle azioni.
Configurare il passaggio di azione finale
La sezione Intestazioni dell’azione può essere configurata nello stesso modo per tutte le richieste API. Consulta la sezione ‘Autenticare la richiesta’ di questo argomento per i dettagli. Se hai aggiunto il passaggio opzionale per recuperare i dettagli da Discourse, puoi configurare la sezione Intestazioni dell’azione finale esattamente nello stesso modo in cui hai fatto per quel passaggio.
Una volta aggiunte le coppie chiave/valore delle intestazioni, dovrai compilare i campi URL e Dati del modulo per la tua richiesta API.
Aggiungere un utente a un gruppo
Per aggiungere un utente a un gruppo, viene effettuata una richiesta PUT a /groups/<group_id>/members.json. Il modo più semplice per trovare l’ID di un gruppo è visitare la pagina del gruppo tramite l’interfaccia utente di Discourse e quindi inserire .json nell’URL nella barra degli indirizzi del browser. Ad esempio, il mio sito ha un gruppo “supporto” all’indirizzo https://demo.scossar.com/g/support. Andando su https://demo.scossar.com/g/support.json posso vedere che l’ID del gruppo è 41. L’URL di base del mio forum è https://demo.scossar.com. L’URL nel mio passaggio di azione finale per aggiungere utenti a un gruppo viene impostato su https://demo.scossar.com/groups/41/members.json.
La richiesta per aggiungere utenti a un gruppo richiede un parametro: un elenco di nomi utente separati da virgole. Nella sezione Dati del modulo, inserisci “usernames” come chiave. Quindi clicca sull’icona “Inserisci un campo” per cercare la proprietà del nome utente che è stata trasferita dal trigger o dal passaggio di azione GET opzionale.
Nel mio caso, voglio il nome utente recuperato dal passaggio GET, quindi espando il menu “GET” e seleziono Username dal menu a discesa.
Tutte le altre sezioni del modulo possono essere lasciate con i valori predefiniti.
Clicca sul pulsante Continua e poi testa il tuo passaggio. Se l’utente che hai trasferito attraverso i passaggi precedenti esiste sul tuo sito Discourse e non è già membro del gruppo selezionato, dovrebbe essere aggiunto al gruppo quando testi il passaggio.
Se tutto funziona come previsto, attiva il tuo Zap.
Assegnare un badge personalizzato
Per assegnare un badge personalizzato a un utente, viene effettuata una richiesta POST all’URL di base del tuo forum + /user_badges. Per il mio sito, l’URL per l’assegnazione dei badge è https://demo.scossar.com/user_badges. Il campo URL completato su Zapier appare così:
La sezione Dati del modulo richiede due coppie chiave/valore. Aggiungi una chiave “username” e impostala sul campo che restituisce il nome utente dell’utente. Aggiungi una chiave “badge_id” e impostala sull’ID del badge che desideri assegnare. Puoi trovare l’ID del badge andando alla pagina Amministratore / Badge e selezionando il badge dal menu a sinistra. Vedrai l’ID del badge come ultimo valore dell’URL nella barra degli indirizzi del browser.
Il badge che sto assegnando ha un ID di 105, quindi la mia sezione Dati completata appare così:
Assicurati di aver configurato la sezione Intestazioni del modulo, quindi clicca su Continua. Quindi clicca sul pulsante Invia test per testare il tuo Zap. L’utente che hai trasferito attraverso i passaggi precedenti dovrebbe ricevere il badge.
Se tutto funziona correttamente, attiva lo Zap.












