Imposta le notifiche Slack usando il plugin discourse-chat-integration

Purtroppo, al momento, nessuna di queste cose è possibile.

2 Mi Piace

Ciao, sto attualmente configurando questo, e non sono sicuro se l’interfaccia sia cambiata o meno, ma questi ambiti sono configurati sotto Ambiti del token del bot o sotto Ambiti del token dell’utente?

Grazie.

1 Mi Piace

Entrambe queste funzionalità dovrebbero essere possibili tramite l’integrazione con Zapier. So che non è l’ideale, ma dato che stavo valutando questa soluzione come workaround per questo plugin, ho pensato di condividerla.

1 Mi Piace

Ciao!

Ho provato a configurare il plugin come spiegato in questa discussione, ma quando provo a pubblicare una trascrizione ricevo solo dal bot di Slack:

“Caricamento della trascrizione…”

Il mio Discourse è ospitato nel sottodominio “discourse.group”. Ecco cosa ottengo dai log degli errori:

/var/www/discourse/plugins/discourse-chat-integration/lib/discourse_chat/provider/slack/slack_command_controller.rb:86:in `block in process_post_request’

/var/www/discourse/lib/scheduler/defer.rb:94:in `block in do_work’

rails_multisite-2.1.0/lib/rails_multisite/connection_management.rb:252:in `with_connection’

rails_multisite-2.1.0/lib/rails_multisite/connection_management.rb:61:in `with_connection’

/var/www/discourse/lib/scheduler/defer.rb:89:in `do_work’

/var/www/discourse/lib/scheduler/defer.rb:79:in `block (2 levels) in start_thread’

Sai come risolvere questo problema?

Il punto in cui si verifica l’errore indica che le credenziali di Slack inserite nella pagina delle impostazioni del tuo sito non sono corrette. Per trovare le impostazioni delle integrazioni di chat, vai alla pagina Amministratore/Impostazioni e scorri fino in fondo al menu laterale sinistro. Vedrai un pulsante “Integrazioni Chat” in fondo all’elenco.

In quella pagina delle impostazioni, assicurati che le seguenti impostazioni siano corrette:

  • chat integration discourse username
  • chat integration slack access token
  • chat integration slack incoming webhook token

Facci sapere se ciò non risolve il problema. Dato che il tuo sito è ospitato da noi, possiamo verificare cosa non sta funzionando.

2 Mi Piace

Soluzione per gli errori:

1) DiscourseChat::ProviderError

2) {\"ok\":false,\"error\":\"not_in_channel\"}

Sto cercando di rendere tutto più chiaro, poiché purtroppo era difficile trovare la risposta. Il processo di creazione dell’app Slack è cambiato leggermente rispetto a queste istruzioni. Inoltre, sembra che l’integrazione effettiva del bot con un canale su Slack richieda un po’ più di configurazione.

Dal mio spazio di lavoro Slack, ho potuto confermare che l’app funzionava inviando messaggi privati (DM) al bot @discourse ed eseguendo i comandi /discourse. Tuttavia, dalle impostazioni del plugin Discourse, ricevevo errori e non potevo impostare un canale né inviare un messaggio di prova.

Come implementare

MODIFICA: nelle risposte qui sotto sono presenti informazioni aggiornate. Ho tentato di incorporare i passaggi aggiuntivi qui, alla data del 06/04/20. Si prega di commentare o modificare secondo necessità. - dp

  1. Permessi del bot: è necessario aggiungere il permesso chat:write.customize affinché il comando slash /discourse funzioni. Ho aggiunto anche chat:write.
  2. Dovrai creare il canale su Slack. Successivamente, esegui i comandi /discourse direttamente dal canale o configura una regola in Discourse.
  3. Devi aggiungere manualmente il bot al canale di interesse (almeno per pubblicare una trascrizione)! Puoi farlo nella conversazione privata con il bot su Slack: "impostazioni conversazione" > "aggiungi questa app a un canale".
  4. Quindi, cosa molto importante, devi aggiungere l’utente del bot Discourse al canale. Non sono riuscito a farlo tramite i normali pulsanti del canale “aggiungi utente” o “aggiungi app”. Tuttavia, sono riuscito inviando un messaggio a “@discourse” all’interno del canale → Slack mi ha quindi chiesto: “@discourse non è in questo canale, vuoi aggiungerlo?”.
  5. A quel punto sono riuscito a inviare un messaggio di prova con successo dalle impostazioni dei plugin :rocket:

Nota: nella configurazione dell’app Slack ho impostato il nome dell’app come @discourse

5 Mi Piace

Grazie @thedavidprice e @simon per il vostro ottimo supporto!

Ho risolto il problema! Tutto era a posto, ma il bot doveva essere aggiunto al canale per pubblicare una trascrizione. Forse puoi aggiungere questo punto all’elenco delle istruzioni sopra?

Un’altra cosa che ho notato è che l’ambito di autorizzazione chat:write:bot non è più disponibile; devi scegliere chat:write!

4 Mi Piace

Ciao @Vincenzo_Lomonaco, per conferma, stai dicendo che il Plugin stesso aggiungerà ora il bot al canale (ad esempio, quando si crea una regola)?

Effettivamente, sembra che ci siano stati molti cambiamenti nella configurazione di Slack. Posso confermare di aver aggiunto chat:write. Ho anche aggiunto chat:write.customize.

Dopo averlo creato tramite l’API di Slack, non era chiaro se fosse necessario aggiungere anche l’app a un canale nelle impostazioni del mio Workspace per le App. Nel mio caso ho scelto un canale.

Infine, ho avuto anche qualche confusione su se fosse necessario o meno aggiungere “Informazioni di visualizzazione” nella pagina delle impostazioni dell’app su Slack. L’ho fatto, e sembra che queste informazioni vengano utilizzate nella directory delle app di Slack e per “App recenti” nella colonna sinistra di Slack. L’URL dell’immagine che ho inserito in Discourse per i messaggi del bot non sembra funzionare. Il nome del bot, invece, funziona.

Grazie ancora! Nel complesso, sono molto soddisfatto di come stanno andando le cose.

1 Mi Piace

Ciao @thedavidprice,

No, devi aggiungere manualmente il bot al canale di interesse (almeno per pubblicare una trascrizione)! Puoi farlo nella conversazione privata con il bot su Slack: "impostazioni conversazione" > "aggiungi questa app a un canale".

1 Mi Piace

Grazie per averlo fatto. Ho aggiornato la guida in base al tuo post e ai miei test. Posso confermare che è necessario aggiungere l’autorizzazione chat:write.customize alle impostazioni degli ambiti del token del bot affinché il comando slash /discourse post funzioni.

Pensavo che l’ambito channels:join potesse essere sufficiente per consentire al bot di unirsi automaticamente a un canale, ma dai miei test sembra che non funzioni. Penso che il modo più semplice per aggiungere il bot a un canale sia ora descritto al punto 15 della guida. Se esiste un metodo migliore, fammelo sapere.

Pulirò le risposte in questo argomento tra qualche giorno, una volta confermato che lo stato attuale della guida funziona per tutti.

1 Mi Piace

Ciao a tutti, sto cercando di configurare questo per un ambiente con restrizioni di sicurezza più rigide. Dopo aver esaminato gli ambiti richiesti documentati nell’OP rispetto a quelli attualmente consentiti, ecco cosa ho rilevato:

chat:write # ? non chiaro, ma chat:write:bot è OK
chat:write.customize ? non chiaro, ma chat:write:bot è OK
users:read # X rifiutato
channels:history X rifiutato
groups:history # OK, accettato con cautela
im:history # OK, accettato

Se l’app fosse configurata solo con i seguenti ambiti, cosa funzionerebbe e cosa non funzionerebbe?

chat:write:bot
groups:history
im:history

Ad esempio, sarei disposto a rinunciare ai trascritti…

3 Mi Piace

È passato un po’ di tempo da quando ho implementato per la prima volta questa funzionalità, e sembra che gli scope di Slack siano cambiati molto da allora. Vedo che le persone stanno tenendo aggiornata la wiki dell’OP, il che è fantastico! :heart_eyes:

Penso che chat:write:bot e chat:write:user siano stati deprecati a favore di chat:write.

Sembra che chat:write.customize sia richiesto perché personalizziamo author_name e author_icon del messaggio per abbinarli all’utente Discourse.

Gli scope users:read e *:history sono utilizzati solo per la pubblicazione delle trascrizioni. Mi rendo conto che possa sembrare molto! Ma fondamentalmente Discourse necessita dell’accesso alla tua cronologia chat per costruire la trascrizione. Se preferisci non concedere tali autorizzazioni, va benissimo saltarle e continuare senza la pubblicazione delle trascrizioni.

3 Mi Piace

Quando uso i comandi con la barra, ricevo questo errore: /hub non è riuscito con l'errore "dispatch_failed"

(Usiamo /hub invece di /discourse)

Sono riuscito ad aggiungere l’app al canale. Sono anche riuscito a inviare un post di prova da Discourse al nostro Slack, ma non sono riuscito a far funzionare i comandi con /. Mi farebbe molto piacere un aiuto per risolvere il problema!

Puoi controllare le autorizzazioni che hai aggiunto all’app su Slack? L’ultima volta che ho provato a configurarlo, tutte le autorizzazioni dei passaggi 5 e 6 della guida dovevano essere aggiunte agli ambiti delle App:

  • chat:write
  • chat:write.customize
  • users:read
  • channels:history
  • groups:history
  • im:history

Facci sapere se questo non risolve il problema.

1 Mi Piace

Credo di avere le autorizzazioni corrette. Ecco uno screenshot delle impostazioni che ho sotto “Bot Token Scopes”.

Cosa ne pensi? Purtroppo significa che c’è qualcos’altro che non va.

2 Mi Piace

Ho riesaminato la guida di configurazione e ho creato un comando slash /hub. L’esecuzione di /hub post funziona per me su tutti i canali a cui ho aggiunto l’app. Sto utilizzando le stesse autorizzazioni mostrate nello screenshot che hai pubblicato.

Puoi assicurarti di aver completato il passaggio 8 della guida? Quella sezione indica di:

Andare alla pagina Interattività e scorciatoie, abilitare la sezione Interattività impostandola su On e inserire questo URL in “URL di richiesta”:

<your-discourse-url>/chat-integration/slack/interactive

Potrebbe anche essere utile verificare che tu riesca a pubblicare da Discourse nel canale Slack su cui stai cercando di eseguire il comando /hub post.

Facci sapere se non riesci ancora a far funzionare tutto correttamente.

1 Mi Piace

Ho controllato e credo di sì, ho seguito quel passaggio.

Ecco uno screenshot.

Penso che l’errore si verifichi in qualcosa legato al Passaggio 7, però.

Ecco le mie impostazioni.

Ecco come appare quando provo a usare il comando slash su Slack:

Sì, quella parte funziona perfettamente.

No, non funziona. :slightly_smiling_face:

1 Mi Piace

L’“URL della richiesta” nella sezione Modifica comando dello screenshot non sta usando HTTPS. Forse è quello il problema.

2 Mi Piace

Hai fatto, grazie!!!

1 Mi Piace

Ho seguito le istruzioni contenute in questa guida e la mia integrazione Discourse/Slack funziona (quasi) correttamente. Ottimo lavoro con questo plugin! Ho però tre domande/osservazioni.

Impossibile iscriversi ai messaggi di una sottocategoria iscrivendosi alla categoria genitore

Potrebbe essere un comportamento previsto, ma all’inizio non era affatto chiaro. Ho categorie genitore con sottocategorie al loro interno. Mi aspettavo che, creando una regola che filtrasse “Tutti i post e le risposte” nella categoria genitore, venissero implicitamente incluse anche tutte le sottocategorie. Tuttavia, ciò non sembra funzionare: ho dovuto creare regole separate per ciascuna delle mie (numerose) sottocategorie. Sarebbe un ottimo miglioramento per semplificare la configurazione in un’installazione Discourse con molte sottocategorie sotto poche categorie genitore.

Impossibile iscriversi a tutte le categorie con una singola regola

Ho trovato informazioni contrastanti su questo punto e suppongo che il vecchio plugin Slack permettesse questa funzionalità, ma non sono riuscito a trovare un modo per creare una singola regola che si iscrivesse semplicemente a tutti i post e le risposte di TUTTE le categorie del sito. Speravo di poterlo fare con una regola unica e semplice. Tuttavia, a causa di questo problema e di quello precedente, mi sono trovato a dover creare 31 regole separate invece di una sola per stabilire un collegamento di base tra l’intera piattaforma Discourse e un canale Slack. A meno che non abbia saltato qualcosa, vi chiedo di considerare anche questa come una richiesta di miglioramento.

Il comando post di Discourse funziona solo in un canale

Ora, è probabile che la colpa sia mia, ma non riesco a capire il problema. Ho letto tutti i thread sull’argomento e mi farebbe molto piacere avere un aiuto. Ho verificato e ricontrollato i permessi della mia app Slack e posso confermare che funziona al 100%… ma solo in uno dei miei canali!

/discourse post 20

Quindi so che il token di accesso è configurato correttamente e funziona. Tuttavia, in tutti gli altri canali del mio team Slack, il comando sopra riporta semplicemente:

Loading the transcript...

E non succede altro. Si tratta di canali pubblici e ho provato ogni possibile combinazione di impostazioni. L’unico canale che funziona è stato creato oggi, ma quando ne ho creato un altro nuovo per fare dei test, non ha funzionato. Non ho nemmeno idea di da dove iniziare a risolvere il problema. Gli unici log di cui sono a conoscenza in Discourse sono:

./launcher logs app

ma non sembra esserci assolutamente nulla lì. Quale impostazione potrei aver trascurato che permette l’invio di post solo in un canale e dove dovrei cercare per eseguire il debug di questo problema?