Microsofts Power Virtual Agnets (Bots) sind voll im Trend. Mit diesem Tool können Routinen optimal auf Unternehmensprozesse hin abgestimmt erstellt werden um Arbeitsschritte automatisiert auszuführen. Bots leisten besonders hilfreiche Arbeit, indem sie wiederkehrende Prozesse in Form von Fragen durch vorweggenommene Fragen inkl. Bedingungen und Antworten liefern.
Noch interessanter kommen sie zum Einsatz, wenn Ihre Arbeitsweise erweitert wird, um vielschichtige Prozesse mittels eines Power Automate Workflows (Flow). Der Bot liefert nicht nur Informationen, beantwortet zielgerichtet Fragen, sondern führt angereichert durch Flows wahlweise komplexe Arbeitsprozesse aus.
In diesem Blog beschreibe ich ein Fallbeispiel aus einer neulich durchgeführten Schulung. Vorweg sei erwähnt, dass sich die Teilnehmer des Kurses maßgeblich an diesem Beispiel beteiligt haben was in einem großartigen Ergebnis mündete.
Die Ausgangslage stellt ein Thema mittels eines Bots dar. Hier reagiert der Bot auf einen sog. Triggerausdruck. Der Bot liefert eine Antwort, die aufgrund eines Flows und einer SharePoint-Liste zustande kommt. Die Herausforderung war die richtige Antwort anhand Berechnungen zusammenhängend mit der aktuellen Zeit herauszubekommen und als Antwort der fragestellenden Person zu übermitteln.
Ausgangsfrage: Wann kommt die nächste Pause? In der entsprechenden SharePoint-Liste sind die Pausenzeiten absichtlich unsortiert hinterlegt.

Hinweis: Entsprechend anhand der aktuellen Uhrzeit soll ein Flow die richtige Pause ausfindig machen und dem Benutzer als Antwort liefern.
Die Spalte „Uhrzeit_berechnet“ extrahiert als berechnete Spalte aus dem Datum die Uhrzeit für die Pausen. Die Formel lautet: =TEXT(Uhrzeit;"hh:mm")

Kommen wir nun zur Umsetzung des Bots inkl. zugehörigem Flow.
Schritt 1: Triggerausdrücke und Botaufbau
Der Bot reagiert entsprechend z.B. auf die gestellte Frage „Pause“

Um die Nachricht ausgeben zu können, wird die nächste Aktion „Handlungsaufforderung“ (Flow) in den Bot eingebunden.

Schritt 2: Der Flow schaut wie folgt aus.

Der Flow hat automatisch eine Verbindung zu dem Dienst Power Virtual Agents (PVA).
Die zweite Aktion ist der Zugriff auf die SharePoint-Liste, die Aktion „Elemente abrufen“ wird später in einem Schleifenvorgang benötigt.

Hinweis: Es ist erforderlich die erweiterten Optionen aufzurufen, um eine Sortierung einzusetzen, Sortieren nach “Uhrzeit asc”, damit die Liste, sortiert abgerufen wird, um ggf. Fehler im Abruf der richtigen Zeile zu vermeiden.
Die nächste Aktion definiert mithilfe einer Variable die aktuelle Uhrzeit für die weitere Ermittlung der Pausenzeit.

addHours(utcNow(),1,'HH:mm')
Zwei weitere Variablen folgen.
Ausgabe wir zunächst initialisiert aber bleibt vorerst leer. Zuweisung erfolgt erst im weiteren Verlauf, sobald die nächste Pause ermittelt worden ist.

Die letzte Variable ist notwendig, um die richtige Uhrzeit aus der unsortierten SharePoint-Liste heraus zu extrahieren. Diese übergibt per Parameter „false“ diesen, um den Suchprozess zu unterbrechen, damit die nächste richtige Pausenzeit entnommen wird.

Als nächstes kommt eine Schleife „Aus alle Anwenden“ zum Einsatz.

Sobald eine Bedingung als nächste Aktion hinzugefügt wird, fügt Power Automate automatisch eine Schleife ein, da hier durch den Abruf der Daten aus der Liste eine Iteration notwendig und unabdingbar ist.
Die Bedingung überprüft, ob die Spalte aus SharePoint „Uhrzeit_berechnet“ größer ist als die aus der Variable „akt_zeit“ ebenso, ob die Variable „Fertig“ den Vorgang unterbrechen muss, da die Uhrzeit aus der SharePoint-Liste größer ist als die aktuelle Zeit und liefert beim Ergebnis „Wahr“ (Wenn ja) durch die Belegung der Variable „Ausgabe_Zeit“ den Rückgabewert „Uhrzeit“ sowie der nächsten Pausenzeit und „Fertig“ durch Wert „true“ den Stopp des Schleifendurchlaufes.
Die letzte Aktion “Return value(s) to Power Virtual Agents” übergibt dem Bot den Wert „Uhrzeit“.

Damit ist der Flow beendet. Der weitere Verlauf erfolgt im Bot.
Im Bot ist nun der Flow als Aktion eingebunden. Wie zu sehen ist, liefert der Flow als Rückgabewert die Variable Zeit.

Die letzte Aktion „Nachricht“ übergibt diesen Wert „Zeit“ dem Benutzer.
So schaut der Bot Unterhaltungsvorgang in der Praxis aus:

Viel Spaß beim Umsetzen.