Cursus
Elk beroep kent terugkerende taken. Of het nu gaat om een supportmedewerker die veelvoorkomende helpverzoeken analyseert, een teamleider die prestatiecijfers monitort of een software engineer die bedrijfsprocessen controleert: deze taken keren vaak terug – dagelijks, wekelijks of zelfs elk uur.
Gelukkig kun je een groot deel hiervan automatiseren met Python. Het is een veelzijdige taal die uitstekend is voor dataverwerking en heel geschikt voor eenvoudige automatiseringstaken. Stel je voor dat je prestatiecijfers moet verzamelen: handmatig moet je dan misschien meerdere dashboards doorploegen. Met een Python-script kun je deze data automatisch ophalen, de belangrijkste punten uitlichten en een samengesteld rapport naar je baas sturen. Dat bespaart niet alleen tijd, maar verkleint ook de kans op fouten.
In deze tutorial bekijken we het specifieke geval waarin we Python-code gebruiken om een weersvoorspelling voor een bepaalde locatie op te halen en een samenvatting van die voorspelling naar Microsoft Teams te sturen, het communicatieplatform van Microsoft. We behandelen alle benodigde stappen om een Teams-webhook te configureren, een Python-programma te schrijven dat via de webhook berichten verstuurt, en een schema in te stellen zodat het Python-script regelmatig draait. Dit voorbeeld gaat over een weersvoorspelling, maar je kunt deze ‘businesslogica’ natuurlijk vervangen door alles wat je wilt; alle configuratie en code om het bericht naar Teams te sturen blijft precies hetzelfde.
We gebruiken DataLab in deze tutorial, omdat het ingebouwde functionaliteit heeft om geheimen veilig op te slaan als omgevingsvariabelen (een feature die we gebruiken om de Teams-webhook te bewaren) én om je Python-code met een paar klikken in te plannen. Om mee te doen heb je alleen een Microsoft-account (om berichten te plaatsen) en een DataCamp-account (om DataLab te gebruiken) nodig, die je allebei gratis kunt aanmaken!
Bekijk ook onze aparte gids over hoe je Slack-berichten verstuurt met Python.
Laten we erin duiken!
1. Configureer een Microsoft Teams-webhook
Binnen Microsoft Teams heb je teams met daarbinnen kanalen. Aan deze kanalen kun je zogeheten ‘apps’ toevoegen. Je kunt een Teams-app zien als een extensie of add-on van MS Teams voor een specifiek doel. Er zijn apps om Jira, Zendesk, Salesforce en talloze andere tools te integreren met Teams, zodat je in Teams meldingen kunt krijgen over wat er gebeurt, maar ook acties in die apps kunt uitvoeren vanuit Teams. Voor ons projectje moeten we zo’n app installeren, specifiek de “Incoming Webhook”-app, die door Microsoft zelf wordt onderhouden.
Zorg om te beginnen dat je een Microsoft-account met toegang tot Teams hebt. Controleer of je lid bent van een team en toestemming hebt om apps aan kanalen binnen dit team toe te voegen. Zo niet, neem dan contact op met je IT-afdeling en stuur ze deze link.
Ga vervolgens naar het teamkanaal waarin je berichten wilt plaatsen. In ons voorbeeld is dit het kanaal “General” binnen het team “Data Analytics Heroes”:

Klik op het +-teken naast de kanaalnaam; je ziet nu een overzicht van apps die je aan het kanaal kunt toevoegen:

Klik op “Get more apps”. Je komt in een complete marketplace met apps die je aan MS Teams kunt toevoegen:

Typ in het zoekvak “Incoming Webhook”. De app die als eerste verschijnt, is degene die we nodig hebben:

Klik op Add en vervolgens op “Add to a team”. Je wordt nu gevraagd om te specificeren naar welk team of kanaal je berichten wilt sturen:

In dit tutorial-voorbeeld is dat het kanaal “General” in het team “Data Analytics Heroes”, maar dat zal voor jou waarschijnlijk anders zijn. Klik daarna op “Set up a connector”. Er verschijnt nog een scherm met extra webhook-instellingen.

Geef een naam op voor de inkomende webhook; je berichten worden onder deze naam verstuurd, dus kies iets dat logisch is, bijvoorbeeld “Python Messenger”. Je kunt ook een aangepaste afbeelding uploaden, maar dat is optioneel. Klik ten slotte op “Create”. Er verschijnt een webhook-URL!

Deze webhook-URL heb je nodig in je Python-programma, dus kopieer hem naar het klembord en bewaar hem ergens (bijv. in je notitie-app) voor later gebruik. Klik tot slot op “Done”. In het overzicht dat verschijnt, zie je alle connectors in het door jou geselecteerde kanaal.

Je kunt dit scherm gewoon sluiten. In het kanaal waarvoor je zojuist de inkomende webhook hebt geconfigureerd, zou je een overeenkomstig bericht moeten zien ter bevestiging van de setup:

Dat was het! Je Microsoft Teams-kanaal is nu klaar om berichten via de webhook te ontvangen.
2. Schrijf de businesslogica in Python
Goed bezig tot nu toe! Met de Incoming Webhook in Teams geconfigureerd, is het tijd voor het leuke deel: Python schrijven. We beginnen met wat Python-code voor onze ‘businesslogica’ om de taak op te lossen.
Heb je een opfrisser nodig voor het schrijven van Python-code? Onze cursus Introduction to Python is de ideale start.
Je kunt ofwel een leeg werkboek helemaal opnieuw maken, handig als je al weet welk Python-programma je wilt automatiseren en integreren met Microsoft Teams.
Ben je hier om de concepten te leren, dan kun je beginnen met een voorbeeldwerkboek dat een weersvoorspelling samenvat voor een stad die je kunt opgeven. Elke dag zijn er nieuwe data, dus dit is een uitstekende kandidaat voor dagelijkse rapportage! Klik op de knop "Run Code" hieronder om dit werkboek te maken.
Voer de code van deze tutorial online uit en bewerk deze
Code uitvoerenIn beide gevallen eindig je met een DataLab-werkboek waarin je businesslogica helemaal is uitgewerkt:

3. Een bericht naar Teams sturen
Dus: Teams-webhook, check. Businesslogica, check. Om het Python-notebook met Microsoft Teams te integreren, moeten we twee dingen doen: de webhook-URL in het DataLab-werkboek opslaan en 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 zou deze URL gewoon kunnen kopiëren en plakken in een codecel van je notebook. Dit is echter niet veilig en niet aan te raden. De webhook-URL is eigenlijk geheim. Als je je notebook met iemand anders deelt, kan die persoon de webhook-URL zien en je Teams-kanaal spammen!
Bovendien zou je deze kopieer- en plakactie moeten herhalen in elk werkboek waarmee je Teams-berichten wilt sturen. Als je de webhook-URL om wat voor reden dan ook wilt updaten, moet je elk werkboek langs om het aan te passen.
Een veiligere en schaalbaardere aanpak is om de webhook-URL-token op te slaan in een zogeheten omgevingsvariabele. Wanneer je deze omgevingsvariabele koppelt, wordt hij beschikbaar in je Python-sessie. In je werkboek:
- Klik op het tabblad “Environment” aan de linkerkant
- Klik op het plusteken naast “Environment Variables”
- In de modal “Add Environment Variables”:
- Zet “Name” op MS_TEAMS_WEBHOOK_URL
- Plak in het veld “Value” de webhook-URL die je eerder hebt opgeslagen.
- Zet “Environment Variables Set Name” op “Microsoft Teams” (dit kan eigenlijk van alles zijn)

Klik na het invullen op “Create”, “Next” en tot slot op “Connect”. Je werkboeksessie wordt herstart en MS_TEAMS_WEBHOOK_URL is nu beschikbaar als omgevingsvariabele in je werkboek. Je kunt dit verifiëren door een Python-cel met de volgende code te maken en uit te voeren:
import os
webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"]
print(webhook_url)
Wil je dezelfde serviceaccountreferenties in een ander werkboek hergebruiken, dan hoef je de omgevingsvariabele niet opnieuw in te stellen: je kunt de omgevingsvariabele in andere werkboeken hergebruiken.
Python-code om het Microsoft Teams-bericht te versturen
Met de MS_TEAMS_WEBHOOK_URL paraat 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 behoorlijk ingewikkelde API om berichten naar Teams te sturen. Laten we het installeren en importeren, samen met het os-pakket om omgevingsvariabelen uit te lezen:
!pip install pymsteams
import pymsteams
import os
Vervolgens kunnen we een zogeheten ‘connector card’ maken – een mooi woord voor een rich text-bericht in Teams –, er wat tekst aan toevoegen en hem versturen:
card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"])
card.text("Hello Teams!")
assert card.send()
Voer deze code uit! Je zou dit bericht in het kanaal moeten zien verschijnen:

Top! Dit was een nietszeggend voorbeeldbericht, maar je kunt ook een bericht maken op basis van het resultaat van je businesslogica, zoals we deden in het voorbeeldwerkboek:
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:

Tot slot kun je ook de omgevingsvariabele DL_WORKBOOK_ID gebruiken om een knop toe te voegen die naar je werkboek linkt, voor het geval je een eenvoudige 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:

Best netjes, toch?!
4. Automatiseren!
Je hebt een Python-script gemaakt dat een nuttige analyse uitvoert en een samenvatting daarvan naar Teams stuurt, inclusief een link terug naar het volledige notebook voor wie meer details wil. Top! Stel je nu voor dat je dit notebook automatisch kunt laten uitvoeren, dagelijks of wekelijks, zodat je continu up-to-date bent met verse resultaten. Goed nieuws: dat kan! DataLab biedt scheduled runs om dit mogelijk te maken.
- Klik in de menubalk bovenaan op Run > Schedule Run
- Stel het schema in zoals jij wilt:
- Laat het notebook automatisch dagelijks of wekelijks draaien. Kies voor wekelijkse schema’s de exacte dag en tijd.
- Voeg DataCamp-gebruikers toe die je wilt informeren zodra het notebook klaar is (succesvol of met een fout). Handig bij fouten, zodat je meteen kunt inspringen en het probleem oplossen.

Als je het instelt zoals in de screenshot hierboven, draait het notebook nu elke dag om 9:30 uur lokale tijd, wat betekent dat er iedere ochtend een bericht in het opgegeven Teams-kanaal wordt geplaatst.
Automatiseren of niet
Niet elke taak leent zich goed voor automatisering. Het hangt af van hoe vaak je het doet, hoe lang het kost om het handmatig te doen en hoeveel tijd het kost om een Python-script te schrijven dat het automatiseert. Neem bijvoorbeeld een jaarlijks rapport dat 20 minuten kost om handmatig te maken. Als het je een halve dag kost om er een script voor te schrijven, duurt het jaren voordat je de geïnvesteerde tijd hebt terugverdiend!
Hier is een samenvatting in tabelvorm:

Dus als een taak die je dagelijks moest doen eerder 5 minuten kostte, kun je tot 6 dagen besteden aan het automatiseren ervan. Besteed je minder tijd aan het automatiseren, dan heb je (over vijf jaar gerekend) tijd gewonnen.
Conclusie
Het opzetten van DataLab om berichten naar Microsoft Teams te sturen vraagt in het begin wat klikken door verschillende schermen. Maar zodra alles staat en de webhook-URL in DataLab is ingesteld, komt het verzenden van een bericht neer op een paar regels Python-code – superrechttoe rechtaan! Het mooiste? Je kunt bijna elk Python-script automatiseren en je stakeholders direct informeren, precies daar waar ze zijn: in Teams.
Weg met herinneringen voor repetitieve, saaie taken. Welkom in een tijdperk van efficiënte, geautomatiseerde workflows waarin je niet tussen tools hoeft te schakelen. Alles wat het kost, is DataLab omarmen.
Onthoud: heb je een opfrisser nodig voor het schrijven van Python-code, dan is onze cursus Introduction to Python de ideale plek om te beginnen.
Filip is de gepassioneerde ontwikkelaar achter een aantal van DataCamp's populairste cursussen in Python, SQL en R. Momenteel leidt Filip de ontwikkeling van DataLab, DataCamp's AI-aangedreven datanotebook. Filip heeft diploma's in elektrotechniek en kunstmatige intelligentie.

