Teams-Gruppenbild mit PowerAutomate (Flow) ändern

Für PowerAutomate gibt es mittlerweile unzählige Konnektoren und Möglichkeiten. Eine für uns nicht unwichtige und mit Sicherheit viel genutzte Aktion gibt es mit den Standardmitteln jedoch leider nicht: Das Ändern eines Gruppenbilds für ein Team in Microsoft Teams bzw. Office 365 Gruppen.

Per Graph-API und benutzerdefinierten Konnektoren können wir diese Aktion jedoch selbst bauen.

Am Ende erreichen wir folgendes Ziel

Wir haben eine eigene Aktion, mit der wir mittels GroupID und Base64-Image das Bild abändern können.


Voraussetzungen
Bevor wir loslegen, müssen ein paar Dinge beachtet werden, die technisch bedingt durch die API limitiert sind.
·        Die API funktioniert nur im User-Kontext
o   Der User, der die Connection ausführt, muss demnach Owner der gewünschten Gruppe sein
·        Die Schnittstelle nimmt das Bild nur im Base64-Format an.
o   Das Bild muss daher als String übergeben werden.
o   Über Base64 Image Encoder (base64-image.de) können JPEGs, PNGs, etc. umgewandelt werden. Muss das Bild dynamisch übergeben werden, gibt es genügend Tutorials im Netz, die zeigen, wie man Bilder mit Bordmitteln umwandeln kann (Stichwort Expressions)
·        Die Bilder dürfen NICHT größer als 4MB sein
o   Werden Bilder dynamisch übergeben, sollte das vorher abgefangen werden
 
Außerdem benötigt man Zugriff bzw. die nötigen Rechte um im Azure AD eine App registrieren zu können (anderenfalls schlägt die Authentifizierung fehl).

Hier noch einmal der grobe Ablauf:
1.      Anlage/Berechtigung der Applikation im Azure AD
2.      Anlage des Benutzerdefinierten Konnektors (In PowerAutomate / Flow)
3.      Verwendung der Aktion im Worfklow selbst.

Anlage der Applikation im Azure AD

Aufruf des Azure Active Directory


Unter dem Menüpunkt „App-Registrierung“, klicke auf „Neue Registrierung“

Hier kann ein beliebiger Namen ausgewählt werden, außerdem sollte die Umleitungs-URI unten auf „https://global.consent.azure-apim.net/redirect“ stehen.


Anschließend erstellen wir unter dem Punkt „Zertifikate & Geheimnisse“ einen geheimen Client Secret.
Achtung: Nach Ablauf der einstellbaren Ablaufzeit funktioniert der Zugriff nicht mehr. Es müsste dann ein neuer Clientschlüssel erstellt werden.

Der hierbei erscheinende Wert (siehe Screenshot -> rote Markierung) muss gespeichert werden, da er zu einem späteren Zeitpunkt noch benötigt wird.
Nun konfigurieren wir, was die Schnittstelle überhaupt alles darf. Hierfür klicken wir auf „Berechtigung hinzufügen“

Wähle „Microsoft Graph“

Hier selektieren wir „Delegierte Berechtigungen“, suchen nach „group“ und wählen „Group.ReadWrite.All“ aus. Anschließend kann die Berechtigung gespeichert werden.
Damit die Rechte greifen, muss noch die Administratorzustimmung erteilt werden (siehe Screenshot)
Akzeptiere mit „Ja“
Zuletzt speichern wir uns auch die Application ID (ClientID) und die Directory ID (TenantID) ab. Diese findet man in der Übersicht unserer erstellten Applikation.

Die Vorbereitungen von Azure-Seiten sind nun alle getroffen. Als nächstes legen wir den Konnektor in PowerAutomate an.

Anlage des Benutzerdefinierten Konnektors (in PowerAutomate / Flow)

Login unter „https://flow.microsoft.com/“. Navigiere unter „Daten“ zu den „Benutzerdefinierten Konnektoren“

Erstelle einen neuen Konnektor ohne Vorlage
Wähle einen beliebigen Namen
Das Symbol, die Hintergrundfarbe und die Beschreibung können nach Belieben gewählt werden. Übernehme das Schema Host + Basis-URL wie im folgenden Screenshot. Navigiere anschließend unten rechts zum Punk „Sicherheit“
Die Authentifizierungsmethode solle „OAuth 2.0“ sein
Hier konfigurieren wir die Authentifizierung unseres Konnektors mit unserer erstellten Applikation bei Azure. Dort kommen ebenfalls die zuvor gespeicherten Daten zum Einsatz.
Client idVon der erstellten Applikation gespeichert
Client secretVon der erstellten Applikation gespeichert
Login URL “https://login.windows.net”
Tenant ID“Common”
Resource URL“https://graph.microsoft.com”
Bereichhttps://graph.microsoft.com/.default
Wähle „Neue Aktion“ und vergebe eine Namen (siehe Screenshot)
Über “Aus Beispiel importieren” unter „Anforderungen“ konfigurieren wir unseren API-Befehl.
Wähle PUT und füge folgende Werte ein.
URLhttps://graph.microsoft.com/v1.0/groups/{GroupID}/photo/$value
HeaderContent-Type Image/jpeg
Text{
   „$content-type“:“application/octet-stream“,
   „$content“:“string“
}

Bestätige mit „Importieren“

Bearbeite „Content-Type“ unter Header
Konfiguriere wie im folgenden Screenshot
Bearbeite ebenfalls den „body“ unter Text
Bearbeite innerhalb des Bodys „$content“
Bearbeite wie im folgenden Screenshot
Navigiere eine Ebene nach oben
Und bearbeite ebenfalls „$content-type“
Bearbeite wie im folgenden Screenshot
Den größten Teil haben wir nun geschafft. Zuletzt müssen wir den Konnektor erstellen und die Aktion nur noch anwenden.

Auswahl der erstellen Aktion im Worfklow. Diese steht (in jedem Flow) unter „Benutzerdefiniert“ zur Auswahl bereit.
Unter „GroupID“ fügt man letztlich noch die ID der Gruppe ein und unter „Base64-Image“ den String für das Bild
Ich persönlich setze das Bild vorher immer gern in eine Variable und setze diese dann ein. Wie am Anfang schon beschrieben lässt sich jedes Bild über Base64 Image Encoder (base64-image.de) in Base64 codieren. Soll das Bild dynamisch gezogen werden, gibt’s im Netz viele Tutorials die zeigen, wie man mit Bordmitteln normale Bilder in Base64 codieren kann.

Viel Spaß damit!