Power Automate ile Teams ‘de Kanal ve Kişi Etiketleme

Çoğu insanın merakla googleladığı, sekmeler arasında kaybolduğu o muamma konu! Bu makalede Power Automate ile Microsoft Teams ‘de kanal ve kişiyi etiketleme ile otomatik post paylaşma konusunu ele alıp tüm adımlarıyla nasıl yapacağımıza bakacağız.

Odak sorunumuzun doğuş hikayesi şöyle:

  “İnsan Kaynakları departmanı her gün kim doğmuş diye mesaisinin yarısını bu kişileri tespit edip onlara mail atarak geçirmesin, şirketçe haberleşme platformu olarak Teams kullanıyoruz. Burada otomatik doğum günü postu oluşturabilecek bir sistem kuralım. Hem herkesi haberdar etsin hem de kişinin doğum gününü kutlasın.”

Power Automate

, aslında Microsoft’un önceden ortamlarda Flow adıyla bilinen ürününün yeni adı. O yüzden power automate olarak girdiğiniz sitenin çoğu yerinde hala “Flow” ismini görebilirsiniz. Power Automate, yaklaşık 200 – 250 ürünle entegre çalışabilen, bu ürünler arasında çeşitli aktarım, yazma, okuma, oluşturma işlemlerinizi gerçekleştirebileceğiniz iş akışı oluşturma ürünüdür.  Bu ürünü kullanarak her sabah 9’da bitmemiş tasklarınzı kendinize gönderebilir, gönderdiğiniz anketlerin sonuçlarına göre task oluşturma gibi birden çok ürünle entegre akışlar oluşturabilirsiniz.

Şimdi odak sorunumuza geri dönersek yapmamız gereken işler şöyle:

  • Doğum günleri, kişi mail adreslerinin olduğu bir veri kaynağı oluşturacağız.
  • Veriler içinde doğum günlerinin bugün olup olmadığının kontrolünü yapacağız.
  • Doğum günü bugün olanlar içinde Microsoft Teams ‘de kanal seçip kişiyi ve kanalı mentionlayarak herkesin haberinin olmasını sağlayacağız.
  • Bunu her gün tekrarlasın.

Şimdi adım adım ilerleyelim. Öncelikle Power Automate ‘in sitesine gidip yeni bir tane akış oluşturun.

1-TETİKLEYİCİ SEÇİMİ

Bir flow akışı başlatmanız için ihtiyacınız olan en temel şey bir başlatıcı eylemdir(trigger-tetikleyici). Cevap vereceğimiz soru şu olmalıdır: “Ben bu akışın ne zaman çalışmaya başlamasını istiyorum?”. Biz bu akışımızda “Yineleme -Recurrence” kullanacağız. Tetikleyiciyi seçtikten sonra ne zaman çalışacağına dair bilgileri giriyoruz. Biz bu akış için her sabah 10 dedik.

power automate ile teams de mention için yineleme triggeri gif

2-Doğum günleri ve kişi bilgilerini içeren veri kaynağına bağlantı

Burada veri kaynağı olarak biz SQL tercih edeceğiz. Siz isterseniz Excel de tercih edebilirsiniz. Bu noktada şunu hatırlatmakta fayda var. Veri kaynağını değiştirmek istediğiniz akışı en başından tekrar yapmanız gerek. Çünkü bu kaynağı kullanarak kontrol gerçekleştireceğiz ve işlem yapacağız. Seçtiğimiz aksiyon “Satırları Al” işlemi. Böylelikle tablodaki hepsi için kontrol yapabilecek.

sql bağlantısı

3- “Doğum günü bugün mü?” kontrolü

Bu kontrol için action olarak “Koşul” seçiyoruz. Bu koşulda 2 parça olacak: ilki doğum gününün gün parçasını kontrol edecek (ayın aynı günü mü?); ikincisiyse ayını kontrol edecek (Aynı ay mı?). “Choose a value” alanına şimdi bir expression yazacağız. Bunun için “Expression” başlığını seçiyoruz.

power automate kosul ekleme

Koşulları takip etme açısından zorlanmayın diye aşağıya görsel olarak bıraktım. Bir tanesinin kod halini de aşağıda bulabilirsiniz. Burada ilk satırda gelen tarih ibarelerinin gün kısımlarını almak için  formatDateTime fonksiyonunu kullanıyoruz, bugünle eşleşip eşleşmediğini görmek için bugünü de utcNow fonksiyonu ile elde ediyoruz. Yanlarındaki ‘dd’ ve ‘MM’ ifadeleri sırasıyla gün ve ayı temsil ediyor. Bu ifadeleri eklediğinizde bunu her satır için yapacak şekilde “Her Birine Uygula” adımının içina alacak. Formüllerdeki items(‘Apply_to_each’) adımı oradan geliyor. [‘Birthday’] ise bizim veri kaynağımızda doğum günlerinin tutulduğu sütunun adı.
PS: ‘MM’ ifadesini büyük kullanmamız gerekiyor yoksa algılamıyor, yani yanlış yazmadık.

kosullar

formatDateTime(items('Apply_to_each')?['Birthday'],'dd')

4- TEAMS ‘DE ETİKETLEME

Geldikk esas konuyaa… Üstteki adımları yaptıktan sonra şimdi esas mesele doğum günü bugün olanın paylaşımını yapmak. Öncelikle bu adımda bunu hangi grupta ve hangi kanalda paylaşacağımızı seçmeli ve grubun&kanalın id sini almamız gerekmekte. İlgili grup  ve kanalı seçtikten sonra bunların ID alanlarını gene Power Automate ile alabilirsiniz. Bunun için iki action var: Teams Gruplarını Al , Teams Kanallarını Al. Bu istekleri çalıştırarak çıktılarından ID leri bulabilirsiniz.

power automate list channel

Aldığınız bu idleri şu adreste yerine yazıyoruz:

https://graph.microsoft.com/beta/teams/TEAM_ID/channels/CHANNEL_ID/messages

Teams ile alakalı bu özelliği kullanmak için graph.microsoft.com adresine bir istek göndereceğiz. Microsoft Graph, birden çok cihazı ve hizmeti birbirine bağlayan bir geliştiri platformudur.

Power Automate ile Teams ‘de etiketleme-mention için kullanacağımız aksiyon: HTTP with Azure AD – Invoke an HTTP Request

 

power automate invoke http request

Bu actionı daha önce hiç kullanmadıysanız karşınıza buradaki gibi bir ekran çıkmaz; önce login olmanız gereken bir ekran çıkar. Ekranda çıkan iki alana graph.microsoft.com adresini yapıştırmanız gerekiyor.

base eresource

Bu aşamayı da atladıktan sonra çıkan ekranda 4 alanın da doldurulması gerekiyor.

  • İlk olarak method alanı için bir mesaj yayınlayacağımız için POST seçeneğini seçiyoruz.
  • İkinci olarak Url of Request alanı için üstte oluşturduğumuz graph ile başlayan teams_id ve channel_id ile devam eden linki yazacağız.
  • Header kısmı için Enter Key alanına Content-Type; Enter Value alanına application/json yazıyoruz.
  • Body of Request alanına da aşağıdaki kod bloğunu yapıştırıyoruz.
{
"body": {
"content": "General Doğum günün kutlu olsun @{items('Apply_to_each_2')?['DisplayName']}
",
"contentType": "html"
},
"mentions": [
{
"id": 0,
"mentionText": "General",
"mentioned": {
"conversation": {
"id":"19:[email protected]",
"displayName": "Business Applications Trials",
"[email protected]": "#Microsoft.Teams.GraphSvc.conversationIdentityType",
"conversationIdentityType": "channel"
}
}
},
{
"id": 1,
"mentionText": "@{items('Apply_to_each_2')?['DisplayName']}",
"mentioned": {
"application": null,
"device": null,
"conversation": null,
"user": {
"id": "@{items('Apply_to_each_2')?['Id']}",
"displayName": "@{items('Apply_to_each')?['DisplayName']}",
"userIdentityType": "aadUser"
}
}
}
]
}

Tüm bunlardan sonra görüntü şöyle olacak:

 

http isteği dolu hali

BODY AÇIKLAMASI

Biraz body kısmını açıklayım. Content kısmına istediğimiz düzende bir HTML içerik giriyoruz. Bu içeriğe fotoğraf vs. de ekleyebilirsiniz. HTML içerikte kimleri etiketlemek istiyorsak onlar tagı içinde etiketliyoruz. Bunu yaparken id ler kullanıyoruz. Bu tagların içindeki id leri kod bloğunun alt kısmındaki mentioned alanının içinde tanımlıyoruz. Biz hem kanalı etiketleyeceğiz -ki bu grubu etiketlemek olacak.- hem de kişiyi etiketleyeceğiz. ID numaralarını siz verebilirsiniz, ne verdiğiniz önemli değil. Önemli olan aşağıdaki mentioned alanıyla eşleşmesi.

Mentioned kısmında öncelikle bu postun hangi konuşmada çıkacağını belirteceğiz yani kanalı etiketleyeceğiz. Bu da bizim tarafımızdaki Business Applications Trials grubumuzun general kanalı.  Conversation içinde id alanına bizim kanalın idsini yazıyoruz. ConversationIdentityType kısmına da “Channel” bilgisini yazıyoruz. Bir diğeri ise kişiyi etiketleyeceğiz. Kişi etiketini yazarken de kişinin Office 365 idsine ihtiyacımız var. Bu id yi de gene Power Automate üzerinden alabiliriz. Bu noktada kullanmamız gereken action Office 365 Users- Search User. Kullanıcının mail adresini kullanarak idsini alıyoruz.

search user

Bu id yi ilgili Id alanına yazıyoruz. Kişi etiketleyeceğimiz için ConversationIdentityType yerine userIdentityType geliyor. Burada da “aadUser” yazıyoruz vee kaydediyoruzz.

 

Bitirdik.. bitirdik Bu konuya ilişkin söyleyeceğim son şey aşağıdaki linklerden Graph’daki Teams APIleriyle ilgili detaylı bilgi edinebilirsiniz. Bizim blogumuzda Power Automate ve Teams ile ilgili başka güzel makalelerimizi de ziyaret edebilirsiniz. Bir de bu akışın çıktısını sunuyorum.

power automate ile teams de mention

https://docs.microsoft.com/en-us/graph/api/channel-post-messages?view=graph-rest-beta&tabs=http

https://docs.microsoft.com/en-us/graph/api/resources/chatmessage?view=graph-rest-beta

https://docs.microsoft.com/en-us/graph/api/resources/chatmessagemention?view=graph-rest-beta

https://docs.microsoft.com/en-us/graph/api/channel-post-messages?view=graph-rest-beta&tabs=http


Arkadaşlar gg, sosyal izalasyon önemli