Questa guida illustra i passaggi di configurazione necessari per collegare Discourse a Salesforce utilizzando il plugin Discourse Salesforce.
Discourse Salesforce è disponibile nel piano Enterprise.
Livello utente richiesto: Amministratore
Passaggio 0: Individuare le persone giuste nella tua organizzazione
Prima di apportare modifiche in Discourse, assicurati di conoscere le persone giuste da coinvolgere nella tua organizzazione per gestire gli aspetti necessari lato Salesforce.
Amministratore Salesforce
Chi è: Nella maggior parte delle organizzazioni, questa è tipicamente la persona che il team chiama “l’amministratore di Salesforce” — colui che gestisce la configurazione dell’organizzazione Salesforce, non necessariamente l’amministratore di sistema IT.
Cosa fa: Gestisce la configurazione iniziale lato Salesforce creando l’External Client App (o Connected App) in Salesforce Setup, configurando le impostazioni OAuth e recuperando la Consumer Key e la Consumer Secret.
Di cosa ha bisogno: Accesso a Setup di Salesforce e in particolare a External Client App Manager. In Salesforce, ciò richiede l’autorizzazione di sistema Customize Application. Questa è inclusa nel profilo standard System Administrator. Se la persona che esegue la configurazione non ha un profilo System Administrator, un amministratore Salesforce dovrà concederle un set di autorizzazioni che includa “Customize Application”.
Utente di integrazione Salesforce
Chi è: Un utente Salesforce le cui credenziali dell’account vengono utilizzate dal plugin Discourse per effettuare chiamate API a Salesforce.
Cosa fa: Fornisce il nome utente da inserire nell’impostazione nome utente salesforce nelle impostazioni del plugin Discourse Salesforce per facilitare tutte le chiamate API da Discourse a Salesforce.
Di cosa ha bisogno: Questo utente deve disporre di:
| Autorizzazione | Perché è necessaria |
|---|---|
| API Enabled | Necessaria per qualsiasi accesso API di Salesforce |
| Create, Read, Edit su Lead | Creare e collegare Lead dagli utenti di Discourse |
| Create, Read, Edit su Contact | Creare e collegare Contact dagli utenti di Discourse |
| Create, Read, Edit su Case | Creare Case dagli argomenti di Discourse |
| Create su Case Comment | Sincronizzare le risposte agli argomenti come Case Comment |
| Create su FeedItem (Chatter) | Pubblicare l’attività degli argomenti su Chatter |
Nota: L’utente di integrazione Salesforce può essere la stessa persona dell’amministratore Salesforce. Tuttavia, come buona pratica di sicurezza, consigliamo di utilizzare un account separato e con autorizzazioni più ristrette per l’utente di integrazione.
Passaggio 1: Generare un certificato e una chiave privata
Ruolo: Admin di Discourse
Discourse Salesforce utilizza il JWT Bearer Flow per autenticarsi con Salesforce. Ciò richiede una coppia di chiavi RSA: un certificato pubblico che Salesforce utilizza per verificare l’identità del plugin e una chiave privata che Discourse utilizza per firmare le sue richieste.
- Segui queste istruzioni per generare la coppia di chiavi:
server.crt- un certificato pubblico che dimostra che Discourse è l’app autorizzataserver.key- una chiave privata che firma le richieste API di Discourse a Salesforce
- Invia il file
server.crtal tuo amministratore Salesforce affinché possa caricarlo nel Passaggio 3. - Conserva la
server.keyper incollarla nelle impostazioni del plugin Discourse Salesforce nel Passaggio 5.
Passaggio 2: Creare l’External Client App in Salesforce
Ruolo: Amministratore Salesforce
-
Accedi a Salesforce.
-
Clicca sull’icona a ingranaggio (
) in alto a destra e seleziona Setup. -
Nella casella Quick Find, cerca External Client App Manager e selezionalo.
-
Clicca su New External Client App.
Nota: Questi passaggi utilizzano l’External Client App Manager, introdotto in Salesforce Spring '25. Se la tua organizzazione utilizza una versione precedente, l’interfaccia utente potrebbe riportare App Manager o Connected Apps invece — le impostazioni sottostanti sono le stesse.
Passaggio 3: Compilare le Informazioni di base e le Impostazioni OAuth
Ruolo: Amministratore Salesforce
-
Compila la sezione Basic Information (App Name e Contact Email sono obbligatori).
-
Espandi la sezione API (Enable OAuth Settings) e seleziona la casella di controllo Enable OAuth.
-
Configura le seguenti impostazioni in questa sezione:
- Callback URL: Aggiungi entrambi questi link, sostituendo
<your-discourse-site>con l’URL completo del tuo sito Discourse (es.meta.discourse.org):
https://<your-discourse-site>
https://<your-discourse-site>/auth/salesforce/callback
Assicurati che non ci sia una barra finale /alla fine di nessuno dei due URL! - Available OAuth Scopes: Aggiungi tutti e tre:
- Access the identify URL service (id, profile, email, address, phone)
- Manage user data via APIs (api)
- Perform requests at any time (refresh_token, offline_access)
- Flow Enablement: Abilita entrambi:
- Enable Client Credentials Flow
- Enable JWT Bearer Flow — questo è necessario affinché il plugin possa creare Lead, Contact e Case
- Callback URL: Aggiungi entrambi questi link, sostituendo
-
Sotto Certificate Upload, clicca su Upload files e carica il file
server.crtdal Passaggio 1. -
Clicca su Create.
Passaggio 4: Recuperare la Consumer Key e la Consumer Secret
Ruolo: Amministratore Salesforce
-
Sulla nuova External Client App appena creata, clicca sulla scheda Settings.
-
Scorri verso il basso ed espandi OAuth Settings.
-
Clicca su Consumer Key and Secret.
-
Reinserisci le tue credenziali di accesso a Salesforce quando richiesto.
-
Copia la Consumer Key e la Consumer Secret e inviale al tuo admin di Discourse per il Passaggio 5.
Passaggio 5: Configurare le impostazioni del plugin di Discourse
Ruolo: Admin di Discourse
-
In Discourse, vai su Admin → Plugins → Salesforce → Settings.
-
Compila le seguenti impostazioni:
Impostazione Valore salesforce enabledSeleziona la casella per abilitare l’integrazione salesforce client idLa Consumer Key dal Passaggio 4 salesforce client secretLa Consumer Secret dal Passaggio 4 salesforce rsa private keyIncolla l’intero contenuto del file server.keydal Passaggio 1salesforce usernameIl nome utente dell’utente di integrazione Salesforce salesforce authorization server urlNecessario solo se utilizzi un dominio Salesforce personalizzato (es. https://mycompany.my.salesforce.com) -
Clicca su Save changes.
Passaggio 6: Autorizzare l’app Discourse in Salesforce
Ruolo: Utente di integrazione Salesforce
- Vai su
https://<your-discourse-site>/salesforce/admin/authorize, sostituendo<your-discourse-site>con l’URL completo del tuo sito Discourse (es.meta.discourse.org). - Verrai reindirizzato a Salesforce e ti verrà richiesto di autorizzare l’app.
- Accedi a Salesforce e concedi l’accesso all’app.
Dopo aver completato questo passaggio, dovresti essere pronto. Puoi confermare che funziona andando su qualsiasi profilo utente in Discourse — dovrebbe apparire un’opzione Sync with Salesforce nel menu admin.
Risoluzione dei problemi
Se il plugin non funziona dopo la configurazione, controlla prima questi punti:
-
Controlli di salute della dashboard Admin: il plugin visualizza due avvisi in
/adminquando le cose sono configurate male:SalesforceInvalidCredentials: la Consumer Key, la Consumer Secret, la chiave privata RSA o il nome utente non sono correttiSalesforceAppNotApproved: il passaggio di autorizzazione (Passaggio 6) non è stato completato, o l’connected app è stata rifiutata
-
Abilitare la registrazione dettagliata: attiva l’impostazione del sito
salesforce_auth_verbose_loggingper scrivere un output di autenticazione dettagliato nei/logsdi Discourse. Errori e cause comuni:
| Sintomo | Causa probabile |
|---|---|
| “Insufficient privileges” durante la creazione di un Lead o Contact | L’utente di integrazione non dispone di autorizzazioni Create/Edit sugli oggetti Lead o Contact |
| “Insufficient privileges” durante la creazione di una Case | All’utente di integrazione mancano le autorizzazioni Case o Case Comment |
| “Invalid grant” nel passaggio di autorizzazione | La chiave RSA non corrisponde al certificato caricato nel Passaggio 3, o il JWT Bearer Flow non è stato abilitato |
| Errore “DUPLICATE_VALUE” durante la creazione di Lead o Contact | Comportamento previsto se l’utente esiste già in Salesforce — il plugin lo gestisce, ma consulta i documenti principali del plugin per dettagli |
| Post su Chatter non visualizzati | L’utente di integrazione potrebbe non avere le autorizzazioni Create su FeedItem |






