Automatizza l'invio di email di invito a Discourse con Zapier

L’API di Discourse può essere utilizzata per automatizzare l’invio di email di invito dal tuo forum quando viene eseguita un’azione su un’applicazione esterna. Per molte applicazioni, puoi utilizzare Zapier per configurarlo senza dover scrivere codice.

Un caso d’uso comune per questo è invitare gli utenti sul tuo forum quando acquistano un prodotto o si iscrivono a un servizio esterno. Per l’esempio in questo argomento utilizzerò l’integrazione Zapier WordPress per attivare l’invio di un invito da Discourse quando un nuovo utente si iscrive a un sito WordPress.

Configura un passaggio di attivazione (trigger step) su Zapier

Vai alla tua dashboard di Zapier e cerca l’applicazione che desideri attivi l’email di invito. Nelle schermate seguenti, ho selezionato WordPress come attivatore (trigger).

L’unica configurazione richiesta per questo è collegare lo Zap di WordPress a un account WordPress e selezionare l’evento Nuovo Utente (New User) per attivare lo Zap.

Configura un passaggio di azione (action step) per inviare l’invito

Fai clic sul pulsante Aggiungi un passaggio (Add a Step) e quindi fai clic su Azione/Ricerca (Action/Search) dal menu a discesa.

Inserisci ‘webhook’ nel menu di ricerca e quindi seleziona Webhooks by Zapier dal menu delle azioni. Il passaggio di azione Webhook verrà aggiunto alla barra laterale del tuo Zap e si aprirà un modulo che ti consente di scegliere quale tipo di richiesta desideri che esegua il webhook.

Seleziona POST dal modulo e quindi fai clic su Continua (Continue).

Il modulo che si apre ti consente di configurare la richiesta POST che viene inviata a Discourse. Nel campo URL, inserisci l’URL di base del tuo forum, seguito da /invites. Ad esempio, l’URL di base del mio forum è https://demo.scossar.com, quindi il link completo alla rotta degli inviti è https://demo.scossar.com/invites

Ora devi configurare le sezioni Payload Type, Data e Headers del modulo. Tutte le altre sezioni del modulo possono essere lasciate con i loro valori predefiniti.

Il Payload Type indica a Zapier in quale formato inviare il payload. Dovrebbe essere impostato su Json.

La sezione Dati (Data) viene utilizzata per indicare a Discourse quale indirizzo email inviare l’invito e per impostare un elenco opzionale di nomi di gruppi e un messaggio personalizzato. Per invitare un utente senza aggiungerlo a gruppi o includere un messaggio personalizzato, inserisci il testo email come Chiave dati (Data Key) e quindi fai clic sull’icona ‘Inserisci un campo’ (Insert a Field) per aprire il menu a discesa del campo. Scorri l’elenco fino a quando non vedi il valore che è stato passato dalla tua app di attivazione che contiene l’email dell’utente. Quando si utilizza WordPress come app di attivazione, la sezione Dati completata dovrebbe apparire simile a questa:

Per aggiungere automaticamente gli utenti ai gruppi quando accettano l’invito, fai clic sull’icona :heavy_plus_sign: della sezione Dati per aggiungere un nuovo campo. Imposta la Chiave del campo su group_names. Imposta il Valore del campo su un elenco di nomi di gruppi separati da virgole che desideri vengano aggiunti gli utenti. Per includere un messaggio personalizzato nell’email di invito, crea un altro campo con la sua Chiave impostata su custom_message e il suo valore impostato sul messaggio che desideri inviare.

Nota: aggiungendo un passaggio di Codice (Code step) dopo il passaggio di attivazione del tuo Zap, dovrebbe essere possibile impostare dinamicamente i nomi dei gruppi e un messaggio personalizzato per utenti specifici.

La sezione Intestazioni (Headers) viene utilizzata per autenticare la tua richiesta. Per configurare il campo Headers, dovrai generare una chiave API sul tuo sito Discourse. Per farlo, vai alla pagina Amministrazione / API del tuo sito Discourse e fai clic sul pulsante “Nuova chiave API” (New API Key). Durante la creazione della chiave, assegnala a un utente dello staff e imposta l’ambito su Globale (Global), oppure utilizza un ambito Granulare (Granular) con la casella Inviti > Crea (Invites > Create) spuntata.

Ora, nella sezione Headers dello Zap, inserisci le seguenti coppie chiave/valore. Sostituisci qualsiasi valore che ho incluso tra parentesi quadre con valori appropriati per il tuo sito. La distinzione tra maiuscole e minuscole nei nomi delle chiavi è importante.

Api-Username: <l'username dello staff che vuoi invii gli inviti>
Api-Key: <la chiave API che hai generato>
Content-Type: application/json

Il modulo dovrebbe ora apparire simile allo screenshot seguente, ma con il tuo Api-Username e Api-Key:

Fai clic sul pulsante Continua (Continue).

Ora sarai in grado di testare l’integrazione facendo clic sul pulsante ‘Invia Test a Webhooks by Zapier’ (Send Test To Webhooks by Zapier). Il test verrà eseguito con i dati che hai impostato nel passaggio di attivazione. Vedrai un messaggio di successo se tutto è configurato correttamente e, se l’utente che hai impostato nel passaggio di attivazione non esiste ancora sul tuo forum Discourse, verrà inviata un’email di invito e vedrai un messaggio di successo su Zapier. Una volta che il passaggio di test ha successo, fai clic sul pulsante Termina (Finish) e attiva il tuo Zap.

Per dettagli su come eseguire altri tipi di richieste all’API di Discourse con Zapier, consulta Make requests to the Discourse API with Zapier.

25 Mi Piace

È fantastico, grazie per la funzionalità e per le istruzioni chiare!

È possibile impostare anche il gruppo personalizzato quando si genera un invito, come si può fare dall’app?

Questo può essere fatto aggiungendo una chiave group_names al campo Headers. Il suo valore deve essere impostato su un elenco di nomi di gruppo separati da virgole. Aggiungerò un esempio di questo all’argomento.

L’approccio di base utilizzato in questo argomento funzionerà per qualsiasi richiesta API a Discourse.

3 Mi Piace

Fantastico!! Credo che la finestra di dialogo accetti anche un messaggio personalizzato, immagino che si possa fare allo stesso modo?

1 Mi Piace

Ho provato a configurarlo stamattina e ho riscontrato un errore 400. Dopo un po’ di debug, ho scoperto che i passaggi relativi all’autenticazione devono essere inseriti nella sezione headers come indicato, ma i valori effettivi del modulo (indirizzo email, nome del gruppo e messaggio personalizzato) devono essere inseriti nella sezione data come coppie chiave/valore.

Una volta apportata questa modifica, però, ha funzionato perfettamente!

1 Mi Piace

Grazie mille, @simon!

Ci sono descrizioni su meta riguardo a metodi alternativi per creare un processo automatizzato di invio di un’email di invito dopo che un lettore si è iscritto a un’offerta, a cui potresti fare riferimento qui?

Grazie per averlo testato! Quello che sto riscontrando è che quando custom_message o group_names non sono inclusi nella richiesta, passare l’email nell’intestazione funziona. Non è comunque il modo corretto per passare l’indirizzo email. Ho aggiornato la guida per utilizzare la sezione Dati per impostare l’indirizzo email e ho incluso esempi per aggiungere utenti ai gruppi e includere un messaggio personalizzato.

4 Mi Piace

Non sono a conoscenza di altri servizi simili a Zapier, ma sono sicuro che esistano. Puoi inviare richieste direttamente all’API di Discourse senza utilizzare servizi di terze parti. Il requisito principale per farlo è disporre di un’applicazione da cui inviare le richieste. Questa può essere qualcosa di semplice come un sito WordPress.

Una buona risorsa su Meta per iniziare con l’API è Reverse engineer the Discourse API. Puoi testare le richieste API con CURL dal terminale del tuo computer o con un servizio come Postman.

2 Mi Piace

Grazie! La maggior parte di ciò che scrivi mi è completamente sconosciuta… ma controllerò i tuoi link e vedrò se riesco a capire qualcosa :smiley:

2 Mi Piace

@simon

Una domanda veloce:

Quando invio un invito automatizzato tramite Zapier, si tratta di un link già personalizzato o di un link alla pagina di accesso generale del mio forum (dove qualcuno può accedere e anche creare un account)?

Vorrei evitare che chiunque e il suo cane, se conosce la pagina di accesso, possa creare un account. Qual è il modo migliore per evitarlo?

Quando invii un link di invito tramite Zapier, attivi esattamente la stessa azione che si otterrebbe cliccando sul link ‘Invia un invito’ dalla pagina Inviti del tuo account.

La creazione di un invito invierà un’email all’indirizzo email dell’utente invitato. Tale email contiene un link a una pagina dove l’utente invitato potrà impostare il proprio nome e password, e accedere al nuovo account. L’indirizzo email per il nuovo account è quello utilizzato per inviare l’invito.

Solo gli utenti che hanno ricevuto un invito possono creare un account tramite questa pagina. Se desideri permettere la registrazione sul tuo sito solo agli utenti invitati, vai alla sezione Login delle Impostazioni del sito e seleziona l’impostazione del sito solo su invito.

Il modo migliore per comprendere come funzionano gli inviti è invitare te stesso al tuo sito. Puoi utilizzare a questo scopo un indirizzo Gmail temporaneo. Dovrai uscire dal sito prima di poter accettare il tuo invito.

3 Mi Piace

Ah, ottime informazioni. Grazie!!

1 Mi Piace

Grazie per il fantastico tutorial! C’è un modo per aggiungere un ID argomento a cui l’utente viene reindirizzato dopo essersi registrato, come nella funzione di invito in massa?

È possibile invitare un nuovo utente a un argomento con un approccio simile a quello descritto sopra, ma l’URL che configuri nel passaggio Azione deve puntare all’argomento. Ad esempio, per invitare un utente a un argomento con l’ID 123, dovresti aggiungere l’URL https://forum.example.com/t/123/invite al passaggio Azione. Successivamente, aggiungi i parametri email e, facoltativamente, custom_message e group_names nello stesso modo descritto nella guida.

3 Mi Piace

Ciao Simon,

Grazie per il tuo post!

Ho due domande; se potessi aiutarmi, sarebbe fantastico :slight_smile:

Domanda 1/
Da parte mia, l’invito + messaggio funziona correttamente, ma indipendentemente dai group_names che aggiungo, ho accesso solo al gruppo pubblico predefinito quando mi unisco al forum.

Sai se qualcosa potrebbe “bloccare” l’invito a un gruppo privato specifico?

L’URL del nome del gruppo è così: https://forum.[mysito].com/c/cercle/33

Quindi ho: group_names /// PUBLIC,cercle

Ho anche provato a usare il “numero” invece del nome del gruppo (33) per questo gruppo, ma non funziona ancora.

Forse c’è una sorta di “restrizione” nelle impostazioni di amministrazione del forum che blocca l’invito ai gruppi privati?

Domanda 2/

Vorrei poter invitare persone non solo a un “gruppo privato”, ma anche a un “sottogruppo privato” (non so il nome corretto per questo).

Qui puoi vedere che ho il gruppo “RÉSERVÉ…”
E tutti i piccoli sottogruppi sotto di esso.

Vorrei invitare gli utenti a sottogruppi specifici.

Sai come posso farlo?

Grazie mille se puoi dedicare un po’ di tempo ad aiutarmi con questo! :slight_smile:

1 Mi Piace

Assicurati di utilizzare il nome del gruppo e non il nome della categoria a cui consenti l’accesso al gruppo. Puoi trovare il nome del gruppo nell’URL del gruppo o nel campo Nome del gruppo:

Se ciò non risolve il problema, assicurati che la chiave API di Discourse che aggiungi a Zapier sia una chiave API globale per tutti gli utenti. Inoltre, verifica che il nome utente API impostato su Zapier abbia il permesso di aggiungere utenti al gruppo. Qualsiasi nome utente amministratore sul tuo sito funzionerà per questo scopo.

Fammi sapere se questo non risolve il problema per te.

Puoi invitare l’utente in più gruppi aggiungendo un elenco di nomi di gruppo separati da virgole nel campo group_names su Zapier. Discourse non prevede il concetto di sottogruppi, quindi dovrai aggiungere il nome di ciascun gruppo a cui desideri invitare l’utente.

Dallo screenshot che hai fornito, sembra che tu stia cercando di concedere all’utente l’accesso a una categoria e a tutte le sue sottocategorie. Invece di creare un gruppo per ogni sottocategoria, puoi semplicemente consentire a un singolo gruppo di accedere alla categoria e a tutte le sue sottocategorie. Questa opzione è configurata nella sezione Sicurezza della pagina di modifica della categoria.

2 Mi Piace

Grazie per la risposta, Simon!

Per quanto riguarda l’API:

Avevo concesso l’accesso a un solo utente (l’amministratore), pensando che fosse sufficiente. Quindi ora ho creato una nuova API per dare accesso a tutti gli utenti.

Tuttavia, non ha ancora funzionato. Ma credo di aver capito il problema :slight_smile:

Sto cercando di aggiungere un nome di “categoria” nel campo “group_names”, quindi immagino che non possa funzionare :).

Ho frainteso la differenza tra nomi di gruppi, categorie e argomenti…

Nello screenshot puoi vedere un elenco di forse 15 sottocategorie: TB, MT, RD, MA…

Ad esempio, l’URL della prima sottocategoria è: https://forum.MYWEBSITE.com/c/question-formactions/TBD/14

Quindi immagino che voglia invitare automaticamente nuovi membri a certe sottocategorie private, e non a certi gruppi.

Nell’URL che ti ho fornito, vorrei concedere l’accesso solo alla sottocategoria “TBD”, per esempio.

E un altro utente avrà accesso solo a un’altra.

Sai se è possibile farlo?

Forse devo solo sostituire il campo “group_names” su Zapier con quello relativo alle categorie?

1 Mi Piace

I Gruppi e le Categorie sono fonte di molta confusione in Discourse!

  1. I Gruppi sono collezioni di persone.
  2. Le Categorie sono collezioni di argomenti. Non puoi invitare direttamente le persone in esse. Tuttavia, l’accesso a queste è controllato dai Gruppi.

Per ottenere ciò che desideri, crea un Gruppo. Nelle impostazioni di sicurezza della categoria rilevante, aggiungi l’accesso per quel Gruppo. Utilizza quel Gruppo per l’API degli inviti. Fatto.

3 Mi Piace

Grazie per la risposta, Nathan!

Proverò e pubblicherò qui il mio risultato :wink:

2 Mi Piace

La tua soluzione funziona bene, grazie! :smiley:

Ho un’altra domanda, forse tu (o @simon) potreste aiutarmi con questo:

Con Zapier, c’è un modo per concedere l’accesso a un nuovo gruppo a persone che sono già membri di Discourse?

In sostanza, ecco il mio flusso di lavoro:

1/ Un membro si iscrive a uno dei miei corsi

2/ Zapier preleva la sua email dalla mia piattaforma di apprendimento e gli invia un invito al mio Discourse, aggiungendolo automaticamente al gruppo giusto, relativo al corso a cui si è appena iscritto.

3/ A volte, qualche mese dopo, lo stesso membro si iscrive a un altro corso: quindi, con il mio attuale processo, Zapier gli invierà un nuovo invito a Discourse, anche se è già membro, quindi l’invito non funzionerà.

Avrei bisogno che Zapier gli desse accesso a un nuovo gruppo, se è già un membro del mio Discourse.

Vedi un modo per farlo?

1 Mi Piace