{count, plural, one {Kurs} other {Kurs}}
Her işte tekrarlayan görevler vardır. İster sık gelen destek taleplerini analiz eden bir destek temsilcisi, ister performans metriklerini izleyen bir ekip lideri, ister iş süreçlerini kontrol eden bir yazılım mühendisi olun, bu görevler çoğu zaman günlük, haftalık hatta saatlik olarak tekrar eder.
Neyse ki, bu işlerin büyük bir kısmını Python ile otomatikleştirebilirsiniz. Python, verilerle çalışmak için çok yönlü ve otomasyon betikleri yazmak için son derece elverişli bir dildir. Performans metriklerini topladığınızı düşünün: Elle yaptığınızda birkaç gösterge panosunu tek tek dolaşmanız gerekebilir. Bir Python betiği ile bu verileri otomatik olarak çekebilir, önemli noktaları vurgulayabilir ve derlenmiş bir raporu yöneticinize gönderebilirsiniz. Bu yalnızca zaman kazandırmakla kalmaz, hata riskini de azaltır.
Bu eğitimde, belirli bir konum için hava tahmini almak ve bu tahminin özetini Microsoft’un ekip iletişim platformu Microsoft Teams’e göndermek için Python kodu çalıştırma özel durumuna bakacağız. Bir Teams webhook’unu yapılandırmak, bu webhook’u kullanarak mesaj gönderen bir Python programı yazmak ve Python betiğinin düzenli aralıklarla çalışması için bir zamanlama ayarlamak dâhil gerekli tüm adımları ele alacağız. Bu örnek özel olarak hava durumu raporlamasıyla ilgili olsa da, elbette bu ‘iş mantığını’ dilediğiniz başka bir şeyle değiştirebilirsiniz; Teams’e mesaj göndermek için gereken yapılandırma ve kod tamamen aynı kalacaktır.
Bu eğitimde DataLab kullanacağız; çünkü gizleri ortam değişkenleri olarak güvenle saklamak (Teams webhook’unu saklamak için kullanacağız) ve yalnızca birkaç tıklamayla Python kodunuzu zamanlamak için yerleşik işlevsellik sunar. Takip etmek için ihtiyacınız olan tek şey bir Microsoft hesabı (mesaj göndermek için) ve bir DataCamp hesabı (DataLab’i kullanmak için); ikisini de ücretsiz oluşturabilirsiniz!
Ayrıca Python ile Slack mesajları nasıl gönderilir başlıklı ayrı rehberimize de göz atabilirsiniz.
Hadi başlayalım!
1. Microsoft Teams Webhook’unu Yapılandırın
Microsoft Teams’in içinde takımlar ve bu takımların kanalları vardır. Bu kanallara ‘uygulamalar’ eklemek mümkündür. Bir Teams uygulamasını, belirli bir amaç için MS Teams’in bir uzantısı ya da eklentisi olarak düşünebilirsiniz. Teams’e Jira, Zendesk, Salesforce ve daha pek çok şeyi entegre eden uygulamalar vardır; böylece Teams içinde gerçekleşen olaylardan haberdar olabilir, hatta Teams içinden bu uygulamalarda eylemler de gerçekleştirebilirsiniz. Küçük projemiz için bu uygulamalardan birini, daha spesifik olarak Microsoft’un kendisinin bakımını yaptığı “Incoming Webhook” uygulamasını kurmamız gerekecek.
Öncelikle Teams’e erişimi olan bir Microsoft hesabınız olduğundan emin olun. Bir takımın üyesi olduğunuzu ve bu takımın kanallarına uygulama ekleme iznine sahip olduğunuzu doğrulayın. Eğer değilseniz, BT departmanınızla iletişime geçin ve onlara bu bağlantıyı gönderin.
Ardından, mesaj göndermek istediğiniz takım kanalına gidin. Bizim örneğimizde bu, “Data Analytics Heroes” takımı içindeki “General” kanalıdır:

Kanal adının yanındaki + işaretine tıklayın; kanala ekleyebileceğiniz uygulamaların bir özetini göreceksiniz:

“Get more apps”e tıklayın. MS Teams’e ekleyebileceğiniz uygulamaların tam kapsamlı bir pazar yerine yönlendirileceksiniz:

Arama kutusuna “Incoming Webhook” yazın. İlk çıkan uygulama ihtiyacımız olan uygulamadır:

Add’a ve ardından “Add to a team”e tıklayın. Şimdi mesajları hangi takım ya da kanala göndermek istediğinizi belirtmeniz istenecek:

Bu eğitimin örneği “Data Analytics Heroes” takımı içindeki “General” kanalıdır; ancak sizde muhtemelen farklı olacaktır. Sonrasında “Set up a connector”a tıklayın. Biraz daha webhook ayarı istemek için başka bir ekran daha görünecek.

Gelen webhook için bir ad belirtin; mesajlarınız bu adla gönderilecektir, bu yüzden mantıklı bir şey seçin, örneğin “Python Messenger”. İsterseniz özel bir görsel de yükleyebilirsiniz, ancak bu isteğe bağlıdır. Son olarak “Create”e tıklayın. Bir webhook URL’si görünecek!

Bu webhook URL’sine Python programınızda ihtiyaç duyacaksınız, bu nedenle panoya kopyaladığınızdan ve daha sonra kullanmak üzere bir yerde (örneğin notlar uygulamanızda) sakladığınızdan emin olun. Son olarak “Done”a tıklayın. Açılan ekranda, seçtiğiniz kanaldaki tüm bağlayıcıların bir özetini göreceksiniz.

Bu ekranı kapatabilirsiniz. Az önce gelen webhook’u yapılandırdığınız kanalda, kurulumun onaylandığını bildiren ilgili bir mesaj görmelisiniz:

Hepsi bu! Artık Microsoft Teams kanalınız webhook üzerinden mesaj almaya hazır.
2. İş Mantığını Python ile Yazın
Buraya kadar harika iş çıkardınız! Teams’te Incoming Webhook yapılandırıldığına göre, şimdi işin eğlenceli kısmına, yani Python yazmaya geçelim. Elimizdeki görevi çözmek için ‘iş mantığımız’ı yazmakla başlayacağız.
Python kodu yazmayı tazelemek istiyorsanız, Python’a Giriş kursumuz başlamak için ideal bir yerdir.
İsterseniz sıfırdan boş bir çalışma kitabı oluşturabilirsiniz; bu, otomatikleştirmek ve Microsoft Teams ile entegre etmek istediğiniz bir Python programınız zaten varsa kullanışlıdır.
Kavramları öğrenmek için buradaysanız, belirteceğiniz bir şehir için hava tahminini özetleyen bir örnek çalışma kitabıyla başlayabilirsiniz. Her gün yeni veri olacağı için bu, günlük raporlama için harika bir adaydır! Bu çalışma kitabını oluşturmak için aşağıdaki "Run Code" düğmesine tıklayın.
Bu eğitimdeki kodu çevrimiçi olarak çalıştırın ve düzenleyin
Kodu çalıştırHer iki durumda da iş mantığınız tamamen yazılmış bir DataLab çalışma kitabına sahip olmalısınız:

3. Teams’e Mesaj Göndermek
Yani, Teams webhook: tamam. İş mantığı: tamam. Python not defterini Microsoft Teams ile entegre etmek için iki şey yapmamız gerekiyor: webhook URL’sini DataLab çalışma kitabında saklamak ve Teams kanalına mesaj göndermek için biraz Python kodu yazmak.
Webhook URL’sini saklayın
Python not defterimizin, mesajı doğru Teams kanalına göndermek için webhook URL’sine ihtiyacı var. Bu URL’yi not defterinizde bir kod hücresine kopyalayıp yapıştırabilirsiniz. Ancak bu, güvenli bir yaklaşım değildir ve önerilmez. Webhook URL’si bir nevi gizlidir. Not defterinizi bir başkasıyla paylaşırsanız, webhook URL’sini görebilir ve Teams kanalınızı istenmeyen mesajlarla doldurabilir!
Bu yaklaşım ayrıca Teams mesajları göndermek istediğiniz her çalışma kitabında bu kopyala-yapıştır işini tekrarlamanızı gerektirir. Herhangi bir nedenle webhook URL’sini güncellemek isterseniz, tüm çalışma kitaplarını tek tek düzenlemeniz gerekir.
Daha güvenli ve ölçeklenebilir bir yaklaşım, webhook URL belirtecini bir ortam değişkeninde saklamaktır. Bu ortam değişkenini bağladığınızda, Python oturumunuzda kullanılabilir hâle gelecektir. Çalışma kitabınızda:
- Sol taraftaki “Environment” sekmesine tıklayın
- “Environment Variables”ın yanındaki artı simgesine tıklayın
- “Add Environment Variables” penceresinde:
- “Name”i MS_TEAMS_WEBHOOK_URL olarak ayarlayın
- “Value” alanına, daha önce kaydettiğiniz Webhook URL’sini yapıştırın.
- “Environment Variables Set Name”i “Microsoft Teams” olarak ayarlayın (gerçekte herhangi bir şey olabilir)

Tüm alanları doldurduktan sonra “Create”, “Next” ve son olarak “Connect”e tıklayın. Çalışma kitabı oturumunuz yeniden başlayacak ve MS_TEAMS_WEBHOOK_URL artık çalışma kitabınızda bir ortam değişkeni olarak mevcut olacak. Bunu, aşağıdaki kodla bir Python hücresi oluşturup çalıştırarak doğrulayabilirsiniz:
import os
webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"]
print(webhook_url)
Aynı hizmet hesabı kimlik bilgilerini başka bir çalışma kitabında yeniden kullanmak isterseniz, ortam değişkenini yeniden ayarlamanız gerekmez: ortam değişkenini diğer çalışma kitaplarında da yeniden kullanabilirsiniz.
Microsoft Teams mesajı göndermek için Python kodu
MS_TEAMS_WEBHOOK_URL hazır olduğuna göre, artık Teams’e mesaj göndermek için Python kodu yazabiliriz! Bunun için, Teams’e mesaj göndermeye yönelik oldukça karmaşık API için kullanışlı bir sarmalayıcı sağlayan açık kaynaklı pymsteams paketini kullanacağız. Hadi bunu kuralım ve ortam değişkenlerini okumak için os paketiyle birlikte içe aktaralım:
!pip install pymsteams
import pymsteams
import os
Sonrasında, Teams’te zengin metin mesajı için kullanılan bir ‘connector card’ oluşturabilir, buna biraz metin ekleyebilir ve gönderebiliriz:
card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"])
card.text("Hello Teams!")
assert card.send()
Bu kodu çalıştırın! Kanala şu mesajın düştüğünü görmelisiniz:

Harika! Bu anlamsız bir örnek mesajdı; ancak örnek çalışma kitabında yaptığımız gibi, iş mantığınızın sonucuna dayalı bir mesaj da oluşturabilirsiniz:
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()
Sonuç şöyle olacaktır:

Son olarak, bu mesajı oluşturan DataLab çalışma kitabına Teams’ten kolayca geçiş yapmak isterseniz, çalışma kitabınıza bağlantı veren bir düğme eklemek için DL_WORKBOOK_ID ortam değişkeninden de yararlanabilirsiniz:
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()
Sonuç şöyle olacaktır:

Oldukça hoş, değil mi?!
4. Otomatikleştirin!
Faydalı bir analiz yapan ve bu analizin özetini, tamamına bakmak isteyenler için not defterine geri bağlantı dâhil, Teams’e gönderen bir Python betiği oluşturdunuz. Harika! Şimdi, bu not defterini günlük ya da haftalık olarak otomatik şekilde çalıştırabildiğinizi ve sizi sürekli güncel sonuçlarla haberdar tuttuğunu hayal edin. Güzel haber şu ki, bunu yapabilirsiniz! DataLab, bunu mümkün kılan zamanlanmış çalıştırmalar özelliğini sunar.
- Üstteki menü çubuğunda Run > Schedule Run’a tıklayın
- Zamanlamayı dilediğiniz gibi yapılandırın:
- Not defterini günlük veya haftalık olarak otomatik çalışacak şekilde ayarlayın. Haftalık zamanlamalarda tam gün ve saati seçin.
- Not defteri tamamlandığında (başarıyla veya hatayla) bilgilendirilmesini istediğiniz DataCamp kullanıcılarını ekleyin. Bir sorun oluştuğunda hızlıca inceleyip düzeltmek için özellikle hatalar için bunu yapmak faydalıdır.

Yukarıdaki ekran görüntüsündeki gibi yapılandırıldığında, not defteri artık her gün yerel saatte 09:30’da çalışacaktır; bu da her sabah belirtilen Teams kanalına bir mesaj gönderileceği anlamına gelir.
Otomatikleştirmek mi, otomatikleştirmemek mi
Her görev otomasyon için iyi bir aday değildir. Bu, görevi ne sıklıkla yaptığınıza, manuel olarak ne kadar sürdüğüne ve otomatikleştirmek için bir Python betiği yazmanın ne kadar zaman alacağına bağlıdır. Örneğin, yılda bir kez hazırladığınız ve elle 20 dakika süren bir raporu düşünün. Bunun için bir betik yazmanız yarım gün alacaksa, otomasyona harcadığınız zamanı telafi etmeniz yıllar sürebilir!
İşte tablo hâlinde bir özet:

Dolayısıyla her gün yapmanız gereken bir görev önceden 5 dakika sürüyorsa, bu görevi otomatikleştirmeye 6 güne kadar zaman harcayabilirsiniz. Otomasyona bunun altında zaman harcarsanız, (beş yıl boyunca hesaplandığında) net zaman kazanmış olursunuz.
Sonuç
DataLab’i Microsoft Teams’e mesaj gönderecek şekilde kurmak başlangıçta birden fazla ekranda gezinmeyi gerektirir. Ancak webhook URL’sini DataLab’e ekledikten sonra, mesaj göndermek yalnızca birkaç satır Python kodu eklemekle ilgilidir – gerçekten çok basit! En güzel yanı mı? Neredeyse her Python betiğini otomatikleştirip paydaşlarınızı tam bulundukları yerde, yani Teams’te doğrudan bilgilendirebilirsiniz.
Tekrarlayan, sıkıcı görevler için hatırlatıcı kurduğunuz günler geride kaldı. Araçlar arasında geçiş yapmanıza gerek olmayan, verimli ve otomatik iş akışlarının zamanına hoş geldiniz. Tek gereken DataLab’i benimsemek.
Unutmayın, Python kodu yazmayı tazelemek istiyorsanız, Python’a Giriş kursumuz başlamak için ideal bir yerdir.
Filip, DataCamp’in en popüler Python, SQL ve R kurslarının birçoğunun arkasındaki tutkulu geliştiricidir. Şu anda Filip, DataCamp’in yapay zekâ destekli veri not defteri olan DataLab’in geliştirilmesine liderlik ediyor. Filip, Elektrik Mühendisliği ve Yapay Zekâ alanlarında derecelere sahiptir.

