Come inviare messaggi di Microsoft Teams con Python

Ogni lavoro include compiti ripetitivi. Che si tratti di un agente di supporto che analizza richieste di aiuto frequenti, di un capo team che monitora le metriche di performance o di un ingegnere software che controlla i processi aziendali, questi compiti spesso si ripetono – giornalmente, settimanalmente o anche ogni ora.

Fortunatamente, puoi automatizzare gran parte di questo lavoro con Python. È una lingua versatile che è ottima per gestire dati e diretta per la scripting di attività di automazione. Immagina di raccogliere metriche di performance: manualmente, potresti dover scavare attraverso diverse dashboard. Con uno script Python, puoi automaticamente estrarre questi dati, evidenziare i punti chiave e inviare un rapporto compilato al tuo capo. Ciò non solo risparmia tempo ma anche riduce il rischio di errori.

In questo tutorial, esamineremo il caso specifico dell’esecuzione di codice Python per recuperare il pronostico meteo per una specifica località e inviare un riepilogo di questo pronostico a Microsoft Teams, la piattaforma di comunicazione di team di Microsoft. Copriremo tutti i passi necessari per configurare un webhook Teams, un programma Python che sfrutta il webhook per inviare messaggi e impostare una pianificazione in modo che lo script Python possa essere eseguito su una base regolare. Questo esempio specifico riguarda la segnalazione di un pronostico meteo, ma naturalmente puoi sostituire questa ‘logica aziendale’ con qualsiasi altra cosa; tutta la configurazione e il codice per inviare il messaggio a Teams rimarranno esattamente gli stessi.

Verrà usato DataLab in questo tutorial, poiché ha funzionalità integrate per memorizzare in modo sicuro i segreti come variabili d’ambiente (una caratteristica che useremo per memorizzare il webhook di Teams) così come per pianificare il tuo codice Python con pochi clic. Per seguire, tutto ciò di cui hai bisogno è un account Microsoft (per inviare messaggi) e un account DataCamp (per usare DataLab), entrambi i quali puoi creare gratuitamente!

Puoi anche consultare la nostra guida separata su come inviare messaggi Slack con Python.

Mettilo a punto!

1. Configura un Webhook Microsoft Teams

All’interno di Microsoft Teams, ci sono team, che a loro volta hanno canali. È possibile aggiungere cosiddette ‘app’ a questi canali. Puoi pensare ad una app Teams come a un’estensione o componente aggiuntivo di MS Teams per uno scopo specifico. Ci sono app per integrare Jira, Zendesk, Salesforce e tanti altri in Teams, in modo da poter essere notificato all’interno di Teams di cose che accadono, ma puoi anche eseguire azioni in quelle app da dentro Teams. Per il nostro piccolo progetto, dovrai installare una di queste app, più precisamente l’app “Incoming Webhook”, mantenuta da Microsoft stessa.

Per iniziare, assicurarsi di avere un account Microsoft con accesso a Teams. Verificare di essere membro di un team e di avere i permessi necessari per aggiungere app ai canali in questo team. Se non lo si ha, contattare il dipartimento IT e inviargli questo link.

Successivamente, andare al canale del team a cui si desidera pubblicare messaggi. Nel nostro esempio, questo è il canale “Generale” all’interno del team “Data Analytics Heroes”:

Cliccare sulla segno più (+) vicino al nome del canale; vedere un riepilogo delle app che puoi aggiungere al canale:

Cliccare su “Ottieni altre app”. Arriverai in un mercato completo di app che puoi aggiungere a MS Teams:

Nella casella di ricerca, digitare “Incoming Webhook.” L’app che appare prima è quella che serviamo:

Cliccare Aggiungi, quindi “Aggiungi a un team”. Ora ti viene richiesto di specificare a quale team o canale vuoi inviare messaggi:

L’esempio di questo tutorial è il canale “Generale” nel team “Data Analytics Heroes”, ma probabilmente questo sarà diverso per te. Successivamente, fare clic su “Imposta un connettore”. Appare un’altra schermata per richiedere ulteriori impostazioni webhook.

Specificare un nome per il webhook in entrata; i tuoi messaggi verranno inviati con questo nome, quindi scegli qualcosa di sensato, ad esempio “Python Messenger”. Puoi anche caricare un’immagine personalizzata, ma questo è facoltativo. Infine, fare clic su “Crea”. Appare l’URL del webhook!

Avrai bisogno di questo URL webhook nel tuo programma Python, quindi assicurati di copiarlo negli appunti e di salvarlo da qualche parte (ad esempio, nella tua app di note) per un utilizzo futuro. Poi fai clic su “Fatto”. Nell’overview che appare, vedrai un’overview di tutti i connettori nel canale che hai selezionato.

Puoi chiudere questo schermo. Nel canale che hai appena configurato il webhook in entrata, dovresti vedere un messaggio corrispondente che conferma la configurazione:

Ecco qui! Adesso, il tuo canale Microsoft Teams è pronto a ricevere messaggi tramite il webhook.

2. Scrivi la logica aziendale in Python

Complimenti per aver raggiunto questo punto! Con il Webhook in entrata per Teams configurato, è ora il momento più interessante: scrivere del Python. Inizieremo scrivendo del codice Python per la nostra ‘logica aziendale’ per risolvere l’attività in corso.

Se hai bisogno di un refresh sulla scrittura del codice Python, il nostro corso Introduzione a Python è il posto ideale per iniziare.

Puoi scegliere se creare un foglio di lavoro vuoto da zero, utile se già sai cosa programma di Python vuoi automatizzare e integrare con Microsoft Teams.

Se sei qui per imparare ai concetti, puoi iniziare con un foglio di lavoro di esempio che riassume il previsioni del tempo per una città che puoi specificare. Ogni giorno saranno disponibili nuovi dati, quindi questo è un grande candidato per i rapporti giornalieri! Clicca sul pulsante “Esegui Codice” qui sotto per creare questo foglio di lavoro.

Esegui e modifica il codice di questo tutorial online

Run code

In entrambi i casi, dovresti arrivare a un workbook DataLab con tutta la tua logica aziendale codificata:

3. Inviare un messaggio a Teams

Quindi, webhook Teams: fatto. Logica aziendale: fatto. Per integrare il notebook Python con Microsoft Teams, abbiamo bisogno di fare due cose: memorizzare l’URL del webhook nel workbook DataLab e scrivere del codice Python per inviare un messaggio al canale Teams.

Memorizza l’URL del webhook

Il nostro notebook Python ha bisogno dell’URL del webhook per inviare il messaggio al corretto canale Teams. Potresti semplicemente copiare e incollare questo URL all’interno di una cella di codice del tuo notebook. Tuttavia, questo non è un approccio sicuro e non è consigliato. L’URL del webhook è un po’ come una password. Se condividi il tuo notebook con qualcun altro, loro possono vedere l’URL del webhook, e potrebbero spammare il tuo canale Teams!

Questo approccio richiederebbe inoltre di ripetere questa copia-incolla in ogni workbook con cui desideri inviare messaggi a Teams. Se vuoi aggiornare l’URL del webhook per qualche motivo, dovrai andare a modificare ogni workbook.

Un approccio più sicuro e scalabile è memorizzare il token dell’URL del webhook in una così detta variabile d’ambiente. Quando connetti questa variabile d’ambiente, sarà disponibile nella tua sessione Python. Nel tuo workbook:

  • Fai clic sulla scheda “Ambiente” sul lato sinistro
  • Fai clic sull’icona del pulsante più vicino a “Variabili d’ambiente”
  • Nella finestra modale “Aggiungi Variabili di Ambiente”:
    • Imposta “Nome” su MS_TEAMS_WEBHOOK_URL
    • Nel campo “Valore”, incolla l’URL del Webhook che hai salvato prima.
    • Imposta “Nome Set Variabili di Ambiente” su “Microsoft Teams” (può essere qualsiasi nome, davvero)

Dopo aver compilato tutti i campi, clicca su “Crea”, “Avanti” e infine “Connetti”. La sessione del workbook si riavvierà e MS_TEAMS_WEBHOOK_URL sarà disponibile come variabile d’ambiente nel tuo workbook. Puoi verificare questo creando una cella Python con il codice seguente e eseguendola:

import os webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"] print(webhook_url)

Se vuoi riutilizzare le stesse credenziali dell’account di servizio in un altro workbook, non devi impostare di nuovo la variabile d’ambiente: puoi riutilizzare la variabile d’ambiente in altri workbooks.

Codice Python per inviare il messaggio a Microsoft Teams

Con MS_TEAMS_WEBHOOK_URL pronto all’uso, possiamo ora scrivere del codice Python per inviare un messaggio a Teams! Per questo, useremo il pacchetto pymsteams open-source, che fornisce un comodo wrapper per l’API piuttosto intricata per inviare messaggi a Teams. Installiamolo ed importiamolo, insieme al pacchetto os per leggere le variabili d’ambiente:

!pip install pymsteams import pymsteams import os

Poi, possiamo creare una cosiddetta ‘connector card’ – un termine elegante per un messaggio in formato testo ricco in Teams –, aggiungere del testo e inviarla:

card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.text("Hello Teams!") assert card.send()

Esegui questo codice! Dovresti vedere comparire questo messaggio nel canale:

Fantastico! Questo era un messaggio campione senza significato, ma puoi anche creare un messaggio basato sul risultato della tua logica aziendale, come abbiamo fatto nel modello di lavoro campione:

card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.title("Weather Forecast") card.text("\n".join([ f"Weather for {CITY} in the next three days:", f"- Min temperature: {weather_df['temperature_2m'].min()} {unit_temperature}", f"- Max temperature: {weather_df['temperature_2m'].max()} {unit_temperature}", f"- Total precipitation: {weather_df['precipitation'].sum():.2f} {unit_prec}" ])) assert card.send()

Con il seguente risultato:

Infine, puoi anche sfruttare l’ambiente variabile DL_WORKBOOK_ID per includere un pulsante che Collegamenti al tuo modulo di lavoro DataLab, in caso tu voglia includere un semplice modo per passare da Teams al modulo di lavoro DataLab che sta powering questo messaggio:

card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.title("Weather Forecast") card.text("\n".join([ f"Weather for {CITY} in the next three days:", f"- Min temperature: {weather_df['temperature_2m'].min()} {unit_temperature}", f"- Max temperature: {weather_df['temperature_2m'].max()} {unit_temperature}", f"- Total precipitation: {weather_df['precipitation'].sum():.2f} {unit_prec}" ])) card.addLinkButton("View detailed forecast", f"https://www.datacamp.com/datalab/w/{os.environ.get('DL_WORKBOOK_ID', 'invalid')}/edit") assert card.send()

Con il seguente risultato:

Pretty neat, right?!

4. Automatizza!

Hai creato uno script Python che esegue un’analisi utile e invia una sintesi di questa analisi a Teams, incluso un link al documento completo per chi è interessato ai dettagli. Fantastico! Ora, immagina se potessi impostare questo documento per eseguirsi automaticamente, giornalmente o settimanalmente, tenendoti costantemente aggiornato con risultati freschi. Beh, la grande notizia è che puoi! DataLab offre la funzione di esecuzioni pianificate per renderlo possibile.

  • Nella barra del menu in alto, clicca su Esegui > Pianifica Esecuzione
  • Configura il programma come ti sembra utile:
    • Impostare il documento per eseguirsi automaticamente giornalmente o settimanalmente. Per i programmi settimanali, scegli il giorno e l’ora esatto.
    • Aggiungi utenti di DataCamp che si desidera informare ogni volta che il notebook termina (con successo o con un fallimento). È utile fare questo per i fallimenti, così puoi interferire e risolvere quando si verifica un problema.

Se configurato come nella schermata riportata sopra, il notebook verrà ora eseguito alle 9:30 AM ora locale ogni giorno, il che significa che verrà pubblicato un messaggio nel canale Teams specificato ogni mattina.

Automatizzare o non automatizzare

Non ogni compito è un buon candidato per l’automazione. dipende da quanto lo fai, quanto tempo impiega a fare manualmente e il tempo che ci vorrebbe per creare un script Python per automatizzarlo. Per esempio, considera un rapporto annuale che richiede 20 minuti per la compilazione a mano. Se ci vuole mezzogiorno a scrivere un script per questo, morirai prima di recuperare il tempo impiegato nell’automazione!

Ecco un riepilogo in tabella:

Quindi se un compito che devi fare ogni giorno richiedeva 5 minuti prima, puoi spendere fino a 6 giorni per provare ad automatizzare quel compito. Se spendi meno tempo automatizzando, otterrai del tempo in più (conteggiato su cinque anni).

Conclusione

Configurare DataLab per inviare messaggi a Microsoft Teams richiede di navigare attraverso molte schermate all’inizio. Ma una volta impostato il webhook URL in DataLab, inviare un messaggio è solo aggiungere qualche riga di codice Python – è davvero semplice! La cosa migliore? Puoi automatizzare quasi qualsiasi script Python e notificare direttamente i tuoi interessati esattamente dove sono: su Teams.

Gone sono le giornate in cui bisognava impostare promemoria per compiti ripetitivi e banali. Benvenuti in un’epoca di flussi di lavoro efficienti e automatizzati dove non serve passare da uno strumento all’altro. Tutto ciò che serve è abbracciare DataLab.

Ricordate, se avete bisogno di un refresh sulla scrittura del codice Python, il nostro corso Introduzione a Python è il punto di partenza perfetto.

Source:
https://www.datacamp.com/tutorial/how-to-send-microsoft-teams-messages-with-python