Imposta le notifiche di Microsoft Teams usando il plugin discourse-chat-integration

Questa guida descrive come configurare il provider Microsoft Teams incluso in discourse-chat-integration.

Configurazione di Microsoft Teams

In Microsoft Teams:

  1. Dalla barra di navigazione verticale a sinistra, fai clic sul pulsante puntini di sospensione () e seleziona Flussi di lavoro dal menu.

  2. Fai clic sul pulsante + Crea da zero nell’angolo in alto a destra della pagina Flussi di lavoro.

  3. Nel modale del flusso di lavoro personalizzato, cerca webhook e seleziona il trigger Quando viene ricevuto un webhook di Teams.

  4. Nel campo Chi può attivare il flusso, seleziona Chiunque. [1]

  5. Fai clic su + Nuovo passaggio.

  6. Successivamente, cerca scheda e seleziona l’azione Pubblica scheda in una chat o in un canale.

  7. Compila i campi come segue:

  • Pubblica come: Scegli da chi devono provenire i messaggi; puoi lasciare questo valore predefinito o scegliere Utente per far apparire il messaggio da te.

  • Pubblica in: Seleziona Canale, il che farà apparire altri campi:

    • Team: Seleziona il team desiderato.
    • Canale: Seleziona il canale desiderato.
    • Scheda adattiva: Fai clic all’interno dell’input, che aprirà un pop-up (descritto nel passaggio successivo).

  1. Fai clic all’interno del campo Scheda adattiva per aprire un pop-up [2] per inserire contenuto dinamico o un’espressione. Passa alla scheda Espressione e digita triggerBody() nel campo espressione.

  2. Fai clic su Salva.

  3. Dovresti ora vedere un flusso di lavoro denominato manuale → Pubblica scheda in una chat o in un canale nel tuo elenco. Fai clic sul pulsante puntini di sospensione verticali su questo flusso di lavoro e seleziona Dettagli dal menu a discesa.

  4. In questa pagina, fai clic su Copia collegamento webhook per ottenere il collegamento per i passaggi successivi. Mentre sei qui, puoi facoltativamente modificare il nome del flusso di lavoro per riflettere il suo scopo per gli altri membri del tuo team.

Configurazione di Discourse

Ora, torniamo a Discourse:

  1. Nell’area di amministrazione di Discourse, abilita l’impostazione Chat integration enabled per attivare il plugin Integrazione chat e l’impostazione Chat integration Teams enabled per supportare Microsoft Teams.

  2. Nella barra laterale, trova la sezione Plugin e fai clic su Integrazioni chat, quindi fai clic su + Crea canale.

  3. Nel modale Modifica canale, compila i campi come segue:

  • Nome: Inserisci un nome che renda chiaro a quale canale Microsoft Teams ti stai connettendo; non è necessario che corrisponda perfettamente.
  • URL webhook: Incolla l’URL webhook che hai copiato al passaggio 11 della sezione di configurazione di Teams sopra.
  1. Fai clic su Salva canale.

Prova l’integrazione

Ora è il momento di assicurarsi che tutto funzioni come previsto.

  1. In Discourse, fai clic su Test sul canale appena creato.

  2. Cerca un argomento tramite ID, titolo o URL; seleziona l’argomento desiderato e fai clic su Invia messaggio di prova.

  3. In Microsoft Teams, un nuovo messaggio con le informazioni dell’argomento verrà pubblicato nel canale:

Facoltativo: Imposta regole per il tuo canale

Ora che hai confermato che tutto funziona, puoi tornare a Discourse e impostare regole aggiuntive per il tuo canale per personalizzare il messaggio.

Debug

Se non vedi il messaggio in Microsoft Teams come previsto, vai alla pagina Dettagli flusso di lavoro (vedi passaggio 10 nella sezione di configurazione di Teams sopra) e controlla la sezione Cronologia esecuzioni. Questa dovrebbe mostrare i log di ogni esecuzione del messaggio.

Fai clic sull’esecuzione fallita, che ti porterà all’area Power Automate dove potrai vedere un messaggio di errore nella parte superiore della pagina. (Nello screenshot seguente, l’esecuzione è riuscita, ma la freccia indica dove apparirà l’errore in caso di esecuzione fallita.)

Questo dovrebbe dettagliare il problema, che puoi quindi correggere o condividere con noi qui in modo che possiamo aiutarti.


    1. Discourse attualmente non supporta webhook autenticati su Teams, quindi funziona solo l’opzione “Chiunque”.
    ↩︎
  1. se il popup non appare, digita temporaneamente qualcosa nel campo Scheda adattiva, salva il flusso di lavoro, aprilo di nuovo per la modifica e il popup dovrebbe apparire ↩︎

12 Mi Piace

L’ho appena provato e sembrava funzionare, ma solo la prima volta che ho cliccato sul pulsante di test.
Le regole sono configurate come segue:

  • Tipo: normale
  • Filtro: Tutti gli argomenti (?) e le risposte (tradotto dal tedesco)
  • Categoria: Sandbox

Quando ho scritto una risposta all’argomento di test nella mia categoria Sandbox, ho visto un’icona di avviso nella sezione delle integrazioni chat, ma cliccando sul triangolo di avviso appare “errore sconosciuto…” con il messaggio di errore impostato su null.

Quando provo a inviare un’altra notifica di test, ricevo un altro errore: 500 internal server error.

Qualsiasi suggerimento su dove iniziare a risolvere il problema è benvenuto. Se questo post dovrebbe essere spostato altrove (ad esempio nella pagina del plugin di integrazione chat) o creato come argomento separato, sentiti libero di spostarlo di conseguenza o fammelo sapere.

3 Mi Piace

Ciao @SHilser - puoi controllare /logs sul tuo sito e vedere se c’è qualcosa di rilevante?

2 Mi Piace

Ci sono due cose che sembrano rilevanti.

  • Errore Socket
  • Errore Interno del Server

Ho copiato i log qui sotto (ho sostituito il mio nome di dominio con mydomain.tld)

Errore Socket

Messaggio (4 copie riportate)

SocketError (Impossibile aprire una connessione TCP a outlook.office.com:443 (getaddrinfo: Temporanea fallimento nella risoluzione del nome))
app/controllers/application_controller.rb:340:in `block in with_resolved_locale'
app/controllers/application_controller.rb:340:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
config/initializers/100-quiet_logger.rb:19:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'

Backtrace

/usr/local/lib/ruby/2.6.0/net/http.rb:949:in `rescue in block in connect'
/usr/local/lib/ruby/2.6.0/net/http.rb:946:in `block in connect'
/usr/local/lib/ruby/2.6.0/timeout.rb:93:in `block in timeout'
/usr/local/lib/ruby/2.6.0/timeout.rb:103:in `timeout'
/usr/local/lib/ruby/2.6.0/net/http.rb:945:in `connect'
/usr/local/lib/ruby/2.6.0/net/http.rb:930:in `do_start'
/usr/local/lib/ruby/2.6.0/net/http.rb:919:in `start'
/usr/local/lib/ruby/2.6.0/net/http.rb:1470:in `request'
rack-mini-profiler (2.0.4) lib/patches/net_patches.rb:19:in `block in request_with_mini_profiler'
rack-mini-profiler (2.0.4) lib/mini_profiler/profiling_methods.rb:33:in `step'

Env

HTTP HOSTS: mysite.tld

Errore Interno del Server

Messaggio (4 copie riportate)

Errore: Errore Interno del Server
Url: https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js
Riga: 1
Colonna: 267890
Posizione della finestra: https://mysite.tld/admin/plugins/chat/teams

Backtrace

o/t</</@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:267890
o/t<@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:267993
o@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:268074
trigger@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:545343
A</e._onError/</@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:550189
f</t.invoke@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:490190
f</t.flush@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:489198
p</t.flush@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:491205
t</t._end@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:496596Here
t</t.end@https://mysite.tld/assets/ember_jquery-1ed3f3559e6f967733b4088aa729ff7039dff2c09c5a5f787a214b016f58aabc.js:1:493157

Env

HTTP HOSTS: mysite.tld

Grazie per l’aiuto :slight_smile:

2 Mi Piace

Ciò suggerisce che il tuo server sta riscontrando problemi con la risoluzione DNS. Stai utilizzando un’installazione standard basata su Docker? Oppure si tratta di un ambiente di sviluppo?

3 Mi Piace

L’ho configurato circa una settimana fa su un droplet DigitalOcean separato (installazione in un clic; ora sono alla versione: 2.6.0.beta1 (310952fd6a). Uso un sottodominio e ho i record DNS anch’essi su DigitalOcean. Ho un record A che punta all’indirizzo IP e un record MX che punta al nome del sottodominio per la risposta via email, come indicato in queste istruzioni). L’unica cosa è che non ho pubblicato un record DMARC.

È tutto quello che mi viene in mente di aver fatto in relazione alle impostazioni DNS. Tuttavia, finora tutto ha funzionato come previsto. Il sito è configurato, posso accedervi tramite il nome del sottodominio, effettuare l’accesso, creare argomenti (anche via email), ecc.

Sono solo sorpreso che il primo messaggio sia arrivato, ma quelli successivi no :man_shrugging:

2 Mi Piace

Quando parlo di risoluzione DNS, intendo che il tuo server sta riscontrando problemi nel contattare outlook.office.com. La configurazione dei record DNS del tuo forum non dovrebbe influenzare questo aspetto.

Puoi provare a connetterti al tuo server tramite SSH ed eseguire

host outlook.office.com

Dovresti ottenere un risultato simile a

outlook.office.com è un alias per substrate.office.com.
substrate.office.com è un alias per substrate.ms-acdc.office.com.
substrate.ms-acdc.office.com è un alias per afd-k.office.com.
afd-k.office.com è un alias per outlook-office-com.k-0002.k-msedge.net.
outlook-office-com.k-0002.k-msedge.net è un alias per k-0002.k-msedge.net.
k-0002.k-msedge.net ha l'indirizzo 13.107.18.11
k-0002.k-msedge.net ha l'indirizzo IPv6 2620:1ec:c::11
3 Mi Piace

Quando immetto

host -d outlook.office.com

ottengo quanto segue:

Trying "outlook.office.com"
Host outlook.office.com not found: 2(SERVFAIL)
Received 36 bytes from 127.0.0.53#53 in 43 ms

Quando aggiungo la porta :443 ottengo un altro errore

Trying "outlook.office.com:443"
Host outlook.office.com:443 not found: 3(NXDOMAIN)
Received 40 bytes from 127.0.0.53#53 in 3 ms
Received 40 bytes from 127.0.0.53#53 in 3 ms

Per altri domini come google.com o il dominio della mia istanza di Discourse in questione (h-da.transformative-praxis.cc), o altri siti, ottengo l’output previsto, simile a quello che descrivi.

Ho cercato informazioni sul primo errore, ma non sono ancora sicuro della sua origine. Ho letto quanto segue, ma non sono riuscito a stabilire se sia effettivamente rilevante per il mio problema:

1 Mi Piace

Ho continuato a riprovare e questa volta ho ottenuto i risultati che hai descritto digitando

host outlook.office.com

Quindi a questo punto sembrava che tutto fosse a posto. L’ho ripetuto molte volte di fila per essere sicuro (circa 15 volte con un intervallo di circa 10 secondi) e in un certo momento ho ricevuto lo stesso errore servfail di prima. Ma per la maggior parte ha funzionato.

Il contrario è vero quando provo a inviare un messaggio di prova. Funziona forse una volta su dieci. Le altre volte ricevo gli stessi errori di prima. E quando pubblico un messaggio regolare che rispetta la regola che ho impostato per il canale, non ricevo una notifica, né un messaggio di errore nei log.
Mi sembra tutto così casuale che non riesco a capire cosa lo causi.

Ho continuato a sospettare della mia configurazione con due droplet per ogni sottodominio e due relativi record A, più un set di record NS per il mio dominio principale che punta a ns1.digitalocean.com. Quindi ho provato a usare dnsstuff per il mio sito ottenendo un Fallimento per il controllo del record SOA e whatsmydns.net per i miei record NS, ma non sono ancora riuscito a trovare alcuna possibile connessione con il mio problema.

A questo punto sono completamente confuso su chi stia causando l’errore: io, avendo impostato alcune configurazioni DNS errate (che secondo @david non dovrebbero influire), impostazioni/problemi del server, o è semplicemente MS-Teams (outlook.office.com) che si comporta in modo strano o mi sta bloccando in qualche modo?

Apprezzo qualsiasi suggerimento su cosa potrei controllare/fare per individuare l’errore, incluso dove altro andare e chiedere, se pensi che questo sia oltre ciò che puoi fare per aiutarmi qui.

Grazie mille per tutto l’aiuto finora.

1 Mi Piace

Ciao, grazie per questo. Continuo a fallire al passaggio Discourse 5: la finestra di dialogo indica che il mio URL dei Webhook in ingresso non è valido?

Qualsiasi aiuto è apprezzato!

Dan

1 Mi Piace

Potresti condividere com’è strutturata la tua URL del webhook? Tramite messaggio privato a me o, se riesci prima a renderla non valida, qui nel topic?

1 Mi Piace

Grazie @Dan_Turner, ho appena allentato un po’ la nostra convalida, il che dovrebbe aiutare la situazione. Provala e fammi sapere se funziona meglio per te.

2 Mi Piace

Grazie! Ci proverò.

Dan

1 Mi Piace

Scusa se sono lento, ma devo aggiornare Discourse o modificare direttamente il file come dettagliato nella correzione?
Grazie, Dan

1 Mi Piace

È necessario aggiornare il plugin. Visita /admin/upgrade e premi il pulsante di aggiornamento accanto a “Discourse-chat-integration”.

2 Mi Piace

Ehi, scusa per la mia incompetenza, ma come posso provare effettivamente questa cosa dato che sono su un’istanza di Discourse ospitata? Grazie, Dan.

1 Mi Piace

Dovrai chiedere al tuo provider di hosting di aggiornare il plugin per te. Su discourse.org questa modifica è già stata distribuita a tutti i nostri clienti, quindi immagino tu sia ospitato altrove?

1 Mi Piace

Sì, l’hosting di Discourse per me. Quale versione è, per favore, e chiederò loro di aggiornare?

1 Mi Piace

Non abbiamo numeri di versione per i plugin, ma puoi condividere questo link al commit con loro: https://github.com/discourse/discourse-chat-integration/commit/00ec1f486a3fd1dc523cdf242cfb1c78baaa407e

2 Mi Piace

Grazie per questo plugin, è molto utile.
Un grande miglioramento sarebbe: aggiungere la menzione di gruppo nel messaggio per generare notifiche sul lato Teams.
Sembra che l’API webhook non implementasse (o non implementi più?) questa funzionalità, ma alcuni dicono che è stata implementata di recente.
Pensi che potrebbe essere implementata facilmente?