Attiva un'attività Zapier con i webhook di Discourse

Vuoi utilizzare i Webhook di Discourse per attivare un’attività tramite Zapier? Iniziamo!

:bulb: Suggerimento: Zapier ora dispone di un’integrazione ufficiale con Discourse con trigger e azioni integrati (ad esempio “Nuovo post”, “Crea post”). Per i casi d’uso comuni, questa soluzione è più semplice rispetto alla configurazione manuale dei webhook generici. La guida seguente illustra l’approccio manuale dei webhook, che offre maggiore flessibilità e accesso a tutti i tipi di eventi di Discourse.

Zapier richiede un trigger e un’azione. In questa guida, il trigger sarà un Webhook di Discourse e l’azione sarà l’invio di un’email.

Invia un’email per qualsiasi evento utente

Ora configuriamo uno Zap per inviare un’email in caso di qualsiasi evento utente (ad esempio, quando un utente viene creato, approvato, aggiornato, effettuato l’accesso, disconnesso, sospeso e altro). Per attivare un evento utente specifico, consulta la sezione Attiva su un evento utente specifico qui sotto.

Crea un Webhook di Discourse

Crea un nuovo Zap

Cerca questo pulsante nella dashboard di Zapier:

Configura il Trigger

Configura l’Azione su Zapier

Attiva lo Zap

È tutto: ora riceverai un’email per ogni evento utente. L’elenco completo degli eventi utente che possono attivare un webhook è:

Nome evento Descrizione
user_created Viene creato un nuovo account utente
user_approved Un utente viene approvato
user_updated Il profilo di un utente viene aggiornato
user_logged_in Un utente effettua l’accesso
user_logged_out Un utente effettua la disconnessione
user_confirmed_email Un utente conferma la propria email
user_destroyed Un account utente viene eliminato
user_suspended Un utente viene sospeso
user_unsuspended Un utente viene riabilitato
user_anonymized Un account utente viene anonimizzato

:tada:


Attiva su un evento utente specifico

Vuoi inviare email solo per un evento utente specifico, ad esempio solo alla creazione dell’account ma non all’aggiornamento? Utilizza il trigger “Catch Raw Hook”.

  1. Clicca su “mostra opzioni meno comuni”
  2. Clicca su “Catch Raw Hook”
  3. Segui i passaggi rimanenti per configurare il trigger normalmente.

Una volta configurato il trigger, aggiungi un filtro.

  1. Clicca su “Aggiungi un passaggio”
  2. Clicca su “Filtro”
  3. Clicca su “Salva e continua”
  4. Seleziona “Headers Http X Discourse Event” dal primo menu a discesa.
  5. Seleziona “(Testo) Corrisponde esattamente” dal secondo menu a discesa.
  6. Inserisci l’header completo per cui vuoi filtrare (ad esempio, user_logged_out).
  7. Se vuoi che Zapier venga eseguito su più header, clicca su “+OR” e aggiungili come il primo.
  8. Clicca su “Testa e continua”
  9. Rivedi il test del filtro, quindi clicca su “Continua”

Una volta configurato il filtro, configura l’azione preferita.

Utilizzare l’header completo del Webhook

Per accedere all’header, segui i passaggi precedenti: seleziona “Catch Raw Hook” e aggiungi un filtro. Configura il filtro in modo che continui solo se Headers Http X Discourse Event corrisponde all’evento che stai cercando.

La difficoltà qui è che Catch Raw Hook passa il corpo grezzo del webhook. L’azione finale che sto utilizzando richiede dati analizzati dal corpo. Ciò che funziona per me è aggiungere un’azione Codice dopo il filtro. Nella finestra modale Azione Codice, seleziona “Esegui Javascript”:

Zapier creerà un oggetto inputData a cui puoi aggiungere proprietà denominate. Aggiungi un nome per la tua proprietà nella colonna di sinistra. Dalla colonna di destra, seleziona “Catch Raw Hook” dal menu a discesa e poi seleziona “Raw Body”:

Scorri la pagina verso il basso per vedere un input di codice:

Dovrai quindi sostituire il codice di esempio con un codice che analizza il Raw Body e restituisce un oggetto contenente i valori necessari per la tua azione finale. Ecco il codice che sto utilizzando. L’oggetto restituito viene utilizzato dall’integrazione Salesforce. Salesforce richiede un cognome, quindi se non esiste un cognome, viene restituito un errore:

const parsed = JSON.parse(inputData.raw);
if (parsed.user) {
  const user = parsed.user,
        name = user.name,
        userFields = user.user_fields;
  let firstName,
      lastName,
      company;
  
  if (name) {
    const splitName = name.split(' ');
    firstName = splitName[0];
    lastName = splitName[1]
    }
  if (userFields) {
    company = userFields['10'];
  }
  if (lastName) {
    return {id: user.id,
            username: user.username,
            lastName: lastName,
            firstName: firstName,
            email: user.email,
            company: company
           };
  } else {
    return {error: "Missing last name"}
  }
} else {
  return {error: "A user object was not returned"};
}

Per evitare di effettuare una richiesta fallita nell’azione finale, è possibile aggiungere un altro filtro Zapier. Imposta quel filtro in modo che continui solo se il campo errore restituito dal javascript non esiste:

Puoi quindi aggiungere la tua azione finale. Per selezionare i campi da utilizzare nell’azione finale, utilizza le proprietà restituite dall’azione Esegui Javascript.

32 Mi Piace