Elk werk bevat herhalende taken. Of het nu gaat om een supportmedewerker die frequente hulpverzoeken analyseert, een teamleider die prestatiegegevens monitort, of een softwareingenieur die bedrijfsprocessen controleert, deze taken komen vaak voor – dagelijks, wekelijks of zelfs ieder uur.
Gelukkig kunt u veel van deze werkzaamheden automatiseren met Python. Het is een veelzijdige taal die goed is in het verwerken van gegevens en gemakkelijk gebruikt kan worden voor het schrijven van automatiseringscripts. Stel u voor dat u prestatiegegevens moet verzamelen: handmatig zou u door verschillende dashboarden moeten bladeren. Met een Python-script kunt u deze gegevens automatisch ophalen, de belangrijkste punten markeren en een samengesteld rapport naar uw baas sturen. Dit bespaart niet alleen tijd maar vermindert ook het risico op fouten.
In deze tutorial zullen we ons richten op het specifieke geval van het uitvoeren van Python-code om een weersvoorspelling voor een bepaalde locatie op te halen en een samenvatting van deze voorspelling naar Microsoft Teams, Microsoft’s communicatieplatform voor teams, te sturen. We zullen alle noodzakelijke stappen bespreken om een Teams-webhook te configureren, een Python-programma dat gebruik maakt van de webhook om berichten te verzenden, en een planning in te stellen zodat het Python-script op regelmatige basis kan worden uitgevoerd. Dit specifieke voorbeeld gaat over het rapporteren van een weersvoorspelling, maar u kunt natuurlijk deze ‘bedrijfslogica’ vervangen door wat u maar wilt; alle configuratie en code om het bericht naar Teams te sturen blijft exact hetzelfde.
We zullen in dit tutorial DataLab gebruiken, omdat het ingebouwde functionaliteit heeft voor het veilig opslaan van geheimen als omgevingsvariabelen (een feature die we zullen gebruiken om de Teams webhook op te slaan) alsook om uw Python-code te plannen met een paar klikken. Om mee te doen, heeft u alleen een Microsoft-account nodig (om berichten te plaatsen) en een DataCamp-account (om DataLab te gebruiken), die beide gratis aangemaakt kunnen worden!
U kunt ook onze aparte gids bekijken over hoe berichten naar Slack te sturen met Python.
Laten we beginnen!
1. Configureer een Microsoft Teams Webhook
Binnen Microsoft Teams zijn er teams, die op hun beurt kanalen hebben. Het is mogelijk om zogenaamde ‘apps’ aan deze kanalen toe te voegen. U kunt een Teams-app zien als een uitbreiding of add-on van MS Teams voor een specifiek doel. Er zijn apps om Jira, Zendesk, Salesforce en vele anderen in Teams te integreren, zodat u binnen Teams op de hoogte wordt gebracht van gebeurtenissen, maar u kunt ook acties in die apps uitvoeren vanuit Teams. Voor ons kleine project moeten we een van deze apps installeren, meer specifiek de “Inkomende Webhook” app, die wordt onderhouden door Microsoft zelf.
Om te beginnen, maak er eerst zeker van dat u een Microsoft-account heeft met toegang tot Teams. Controleer of u lid is van een team en of u toestemming heeft om apps toe te voegen aan kanalen in dit team. Indien niet, neem dan contact op met uw IT-afdeling en stuur hen deze link.
Vervolgens gaat u naar het kanaal waaraan u berichten wilt plaatsen. In ons voorbeeld is dit het “Algemeen” kanaal binnen het “Data Analytics Heroes” team:
Klik op het plus symbool naast de kanaalnaam; u zult een overzicht van apps zien die u aan dit kanaal kunt toevoegen:
Klik op “Meer apps krijgen”. U zal nu in een volledig uitgebreide marktplaats van apps die u aan MS Teams kunt toevoegen terechtkomen:
Voer in het zoekveld “Inkomende Webhook” in. De eerste app die verschijnt is de een die we nodig hebben:
Klik op “Toevoegen”, en vervolgens op “Toevoegen aan een team.” U wordt nu gevraagd om te specificeren aan welk team of kanaal u berichten wilt verzenden:
Het voorbeeld in deze handleiding is het “Algemeen” kanaal in het “Data Analytics Heroes” team, maar dit zal waarschijnlijk verschillend zijn voor u. Klik vervolgens op “Een kanaalconnector instellen.” Opnieuw verschijnt een scherm om enkele meer webhook-instellingen te vragen.
Geef een naam aan de inkomende webhook; uw berichten zullen onder deze naam verzonden worden, dus kies iets dat verstandig is, bijvoorbeeld “Python Messenger”. U kunt ook een aangepaste afbeelding uploaden, maar dat is optioneel. Klick uiteindelijk op “Aanmaken”. Een webhook-URL verschijnt!
U zult deze webhook URL nodig hebben in uw Python-programma, dus maak er zeker van dat u hem kopieert naar het klembord en ergens opslaat (bijvoorbeeld in uw notitiesapp) voor later gebruik. Klik uiteindelijk op “Klaar”. In de overzichtsvenster dat verschijnt, zult u een overzicht van alle connectors in het gekozen kanaal zien.
U kunt dit scherm gewoon sluiten. In het kanaal dat u net voor configureerde inkomende webhook, zou u eenovereenkomstige bericht moeten zien die de setup bevestigt:
Dat is het! Nu is uw Microsoft Teams kanaal klaar om berichten te ontvangen via de webhook.
2. Schrijf de bedrijfslogica in Python
Blijf goed aan het werk! Met de inkomende webhook voor Teams geconfigureerd, is het tijd voor het leukste deel: schrijven van Python. We zullen beginnen met het schrijven van Python-code voor onze ‘bedrijfslogica’ om de opdracht op handen te lossen.
Als u een herinnering nodig heeft aan het schrijven van Python-code, is ons Introductie tot Python cursus de ideale startplaats.
U kunt ofwel een lege werkblad van de grond aanmaken, wat handig is als u al weet wat Python-programma u wilt automatiseren en integreren met Microsoft Teams.
Als u hier om leert over de concepten, kunt u beginnen met een voorbeeldwerkblad dat een weersvoorspelling voor een stad samenvat die u kunt specificeren. Elke dag zal er nieuwe gegevens zijn, dus dit is een uitstekende kandidaat voor dagelijkse rapportage! Klik op de knop “Uitvoeren code” hieronder om dit werkblad aan te maken.
Voer de code uit uit deze handleiding online
In beide gevallen moet je uiteindelijk een DataLab werkblad krijgen met al uw bedrijfslogica gecodeerd:
3. Een bericht versturen naar Teams
Dus, Teams webhook: check. Bedrijfslogica: check. Om de Python notebook te integreren met Microsoft Teams, moeten we twee dingen doen: de webhook URL opslaan in het DataLab werkblad en een stuk Python code schrijven om een bericht naar het Teams kanaal te sturen.
Sla de webhook URL op
Ons Python notebook heeft de webhook URL nodig om het bericht naar het juiste Teams kanaal te sturen. Je kunt de URL gewoon kopiëren en plakken binnen een code cel van je notebook. Echter, dit is geen veilige aanpak en wordt niet aanbevolen. De webhook URL is een soort geheim. Als je je notebook met iemand anders deel, kunnen zij de webhook URL zien, en kunnen zij uw Teams kanaal spammen!
Deze aanpak zou ook ertoe leiden dat je deze kopiëren en plakken moet voor elk werkblad waarmee je berichten naar Teams wilt sturen. Als je de webhook URL voor iets redenen moet bijwerken, moet je door elk werkblad gaan en deze bewerken.
Een veiligere en scalablere aanpak is het opslaan van de webhook URL token in een zogenaamde omgevingsvariabele. Wanneer je deze omgevingsvariabele connecteert, zal ze beschikbaar zijn in uw Python sessie. In uw werkblad:
- Klik op de tab “Omgeving” aan de linkerkant
- Klik op het plus symbool naast “Omgevingsvariabelen”
- In het venster “Omgevingsvariabelen toevoegen”:
- Stel “Naam” in op MS_TEAMS_WEBHOOK_URL
- Plak in het veld “Waarde” de Webhook-URL die je eerder hebt opgeslagen.
- Stel de “Naam van de set omgevingsvariabelen” in op “Microsoft Teams” (dit kan eigenlijk alles zijn)
Nadat je alle velden hebt ingevuld, klik op “Aanmaken,” “Volgende,” en tenslotte op “Verbinden.” Je werkbladsessie zal herstarten, en MS_TEAMS_WEBHOOK_URL is nu beschikbaar als een omgevingsvariabele in je werkblad. Je kunt dit controleren door een Python-cel aan te maken met de volgende code en deze uit te voeren:
import os webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"] print(webhook_url)
Als je dezelfde servicesaccountreferenties in een ander werkblad wilt hergebruiken, hoef je de omgevingsvariabele niet opnieuw in te stellen: je kunt de omgevingsvariabele in andere werkbladen hergebruiken.
Python-code om een bericht naar Microsoft Teams te sturen
Met de MS_TEAMS_WEBHOOK_URL ingeschakeld en geladen, kunnen we nu Python-code schrijven om een bericht naar Teams te sturen! Hiervoor gebruiken we het open-source pymsteams-pakket, dat een handige wrapper biedt voor de tamelijk ingewikkelde API om berichten naar Teams te sturen. Laten we het installeren en importeren, samen met het os-pakket om omgevingsvariabelen te lezen:
!pip install pymsteams import pymsteams import os
Vervolgens kunnen we een zogenaamde ‘connector card’ maken – een mooi woord voor een rijk tekstbericht in Teams –, voeg wat tekst toe, en stuur het:
card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.text("Hello Teams!") assert card.send()
Voer deze code uit! Je zou dit bericht moeten zien verschijnen in het kanaal:
Uitstekend! Dit was een zinloos voorbeeldbericht, maar u kunt ook een bericht maken gebaseerd op de uitkomst van uw bedrijfslogica, zoals we in het voorbeeldwerkboek hebben gedaan:
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()
Met het volgende resultaat:
Tenslotte kunt u ook de omgevingsvariabele DL_WORKBOOK_ID
gebruiken om een knop op te nemen die verwijst naar uw werkboek, in geval u een gemakkelijke manier wilt bieden om vanuit Teams naar het DataLab-werkboek te gaan dat dit bericht aanstuurt:
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()
Met het volgende resultaat:
Mooi strak, toch?!
4. Automatiseren!
U heeft een Python-script geschreven dat een bruikbare analyse uitvoert en een samenvatting van deze analyse verzendt naar Teams, inclusief een link terug naar het complete notebook voor diegenen die meer details willen kennen. Fantastisch! Nu, veronderstel dat u dit notebook kunt instellen om automatisch uit te voeren, dagelijks of wekelijks, zodat u constant wordt geupdate met verse resultaten. Het goede nieuws is, dat kunt u! DataLab biedt de mogelijkheid van geplande uitvoeringen om dit mogelijk te maken.
- Gebruik de menubalk bovenin en klik op Run > Schedule Run
- Stel de planning in zoals u wilt:
- Stel het notebook in om automatisch dagelijks of wekelijks uit te voeren. Voor wekelijke schema’s kunt u de exacte dag en tijd kiezen.
- Voeg DataCamp-gebruikers toe die je wilt informeren elke keer als het notebook voltooid is (mee succes of met een fout). Het is handig om dit te doen bij fouten, zodat je in kan duiken en het probleem kan oplossen als er een issue optreedt.
Als je het zoals in de bovenstaande schermafbeelding hebt ingesteld, zal het notebook elke dag op 9:30 uur lokale tijd worden uitgevoerd, wat betekent dat er elke ochtend een bericht in de aangegeven Teams-kanaal wordt geplaatst.
Automatiseren of niet automatiseren
Niet elke taak is een goede kandidaat voor automatisering. Het hangt af van hoe vaak je het doet, hoe lang het duurt om het handmatig uit te voeren, en de tijd die het kost om een Python-script te schrijven om het te automatiseren. Bijvoorbeeld, overwegen een jaarlijkse rapportage die 20 minuten duurt om handmatig samen te stellen. Als het je een halve dag kost om een script voor te schrijven, zal het nog veel jaren duren voordat je de tijd die je aan automatisering hebt besteed, terugkrijgt!
Hier is een samenvatting in tabelvorm:
Dus als een taak die je dagelijks moet uitvoeren 5 minuten duurde, kan je maximaal 6 dagen besteden om die taak te automatiseren. Als je minder tijd dan dat besteedt aan automatisering, zal je tijd winnen (geteld over vijf jaar).
Conclusie
Het instellen van DataLab om berichten naar Microsoft Teams te sturen houdt in dat je aanvankelijk door meerdere schermen moet navigeren. Maar eenmaal je alles hebt ingesteld met de webhook-URL in DataLab, is het verzenden van een bericht gewoon een kwestie van een paar regels Python-code toevoegen – het is heel gemakkelijk! Het beste deel? Je kunt bijna elk Python-script automatiseren en je stakeholders direct op hun favoriete plek informeren: op Teams.
Het tijdperk van het instellen van herinneringen voor herhalende, saaie taken is voorbij. Welkom bij een tijdperk van efficiente, geautomatiseerde werkstromen waarin u geen tools moet schakelen. Alles wat nodig is, is het aanvaarden van DataLab.
Onthoud, als u een herhaling nodig heeft van het schrijven van Python-code, is ons Introductie tot Python cursus de ideale startplaats.
Source:
https://www.datacamp.com/tutorial/how-to-send-microsoft-teams-messages-with-python