Externe Services in Power Apps und Power Automate nutzen: Teil 1

Dies ist der 1. Teil einer dreiteiligen Serie, welche die Nutzung von externen Services in Power Apps und Power Automate zeigt:

In Power Apps, wie auch in Power Automate besteht oft die Notwendigkeit, andere Dienste anzubinden, die im Internet verfügbar sind, als auch Dienste, die in Azure oder auch Microsoft 365 zur Verfügung stehen. Sowohl Power Apps, als auch Power Automate bieten die Möglichkeit an, vorhandene Dienste über sog. Konnektoren zu nutzen und mit ihnen zu interagieren. Allerdings kommt es oft vor, dass die Standardverbindungen und -aktionen zu bestimmten Diensten nicht ausreichen oder einfach nicht verfügbar sind. Bietet der gewünschte Dienst jedoch eine REST-Webservice-Schnittstelle an, ist eine Verbindung meist nicht mehr so schwierig.
Dieser Beitrag zeigt, wie man beliebige Webservices anbindet, die über eine REST Schnittstelle verfügen. Ich habe dieses Szenario bereits bei meinem Vortrag auf dem 5th PowerApps and Flow User Group Meetup gezeigt. Dort konnte ich aber aus Zeitgründen das Thema nur anreissen.

Das Szenario

Als Beispiel wollen wir die Umrechnungskurse von Währungen in einer Power App nutzen. Um diese Kurse abzurufen, kann man beispielsweise die folgenden Services nutzen:

  • http://exchangeratesapi.io/: Hierbei handelt es sich um einen Open Source Service, der kostenlos ist und auch keine Registrierung oder Schlüssel benötigt.
  • https://currencyscoop.com/: Dieser Dienst bietet deutlich mehr Kurse an, als auch historische Daten. Es warden verschiedene Kostenpläne angeboten, unter andere auch einen kostenlosen Plan, der die max. Nutzung von 5000 Aufrufen pro Monat ermöglicht. Für den Zugriff auf die REST API benötigt man jedoch in jedem Fall einen API Key, den man durch eine Registrierung erhält.

Ich werde in diesem Beispiel die Nutzung von CURRENCYSCOOP beschreiben, um auch die Nutzung eines API Keys zu zeigen.

Unsere Power App sieht dabei wie folgt aus:

Power App Example

In der Power App stehen die folgenden Funktionen zur Verfügung:

  • Abrufen eines aktuellen Kurses über die Schaltfläche Währungen abrufen. Dabei wird als Basiswährung der Wert im Feld Basis Währung verwendet und in die Währungen im Feld Währungen umgerechnet.
  • Abrufen eines Kurses zu einem zurückliegenden Datum (zukünftige Daten funktionieren leider nicht) über die Schaltfläche Währungen abrufen für Datum. Dabei erden die Kurse zu einem bestimmten Datum abgerufen, welches im Feld Datum eingestellt ist.
  • Umrechnen eines Kurses in eine andere Währung: Über die Schaltfläche Umrechnen, wird der Wert im unteren linken Textfeld in eine andere Währung umgerechnet. Die Basiswährung, als auch die Zielwährung kann angegeben werden.
  • Anzeigen des Ergebnisses aus dem Websrvice in JSON: Dies kann über das Icon rechts oben erfolgen.

Neue Collection in Postman anlegen

Um effizient mit einer REST basierten Schnittstelle arbeiten zu können, ist es notwendig diese genauer zu evaluieren und die Funktionen, Parameter und Rückgabewerte zu kennen. Im Falle con CURRENCYSCOOP kann man die API Dokumentation auf deren Website abrufen: https://currencyscoop.com/api-documentation. Wie dort beschrieben, braucht man für den Aufruf einen API Key. Diesen bekommt man nach der Registrierung.

Um die Schnittstelle praktisch auszuprobieren bietet sich das Tool Postman an. Die dort getesteten API Aufrufe können später dazu genutzt werden, um in Power Apps einen sog. Custom Connector zu konfigurieren. Um diese Möglichkeit zu nutzen, muss man in Postman zunächst eine sog. Collection in Postman anlegen:

Postman New Collection

Der Name der Collection ist dabei frei wählbar:

Postman Create new collection

Authentifizierung festlegen

Als nächstes definiert man im Reiter Authorization die Methode mit welcher sich Postman beim Webservice authentifiziert. In unserem Fall ist dies ein API Key. Der Query Parameter in der URL heist api_key:

Postman Define Authentication

Für unserem Fall genügen diese Angaben und wir können die Collection anlegen.

Requests zur Postman Collection hinzufügen

Danach können die Requests hinzugefügt werden. Als erstes wollen wir basierend auf einer Basiswährung die Kurswerte für einen oder mehrere andere Währungen abrufen. Der entsprechende API Aufruf sieht wie folgt aus:

https://api.currencyscoop.com/v1/latest?base=CHF&symbols=USD,EUR

Um einen solchen Request abzusetzen, kann man innerhalb der zuvor erstellten Collection einen Request hinzufügen:

Idealerweise benennt man den Request sinnvoll, um später noch zu wissen, was dieser macht. Ggf. kann auch noch eine Beschreibung angegeben werden. Das genügt, um einen benannten Request anzulegen:

Postman Save Request

Nach dem Anlegen des Requests, kann die Methode definiert und die Aufruf URL eingegeben werden. In unserem Fall handelt es sich um einen GET Request. Der notwendige API wird dabei von der umschliessenden Collection verwendet:

Postman Add Request URL

Vor dem ersten Senden, sollte man den gerade definierten Request durch Klick auf Save speichern. Danach kann man ihn durch einen Klick auf Send testen:

Postman Send Request

Das Ergebnis wird im JSON Format zurückgeliefert und man erkennt die Struktur, wie das zurückerhaltene Ergebnis aussieht.

Damit man das zurückerhaltene Ergebnis auch für die Definition des Custom Connectors nutzen kann, muss man es ebenfalls speichern durch Klick auf Save Repsone und dann Save as example:

Save Response 1

Danach erscheint oberhalb des Requests in Postman der Hinweis, dass es noch nicht gespeicherte Response Daten gibt. Deshalb muss man dort ebenfalls nochmal auf Save xample klicken, um das Ergebnis tatsächlich auch in der Collection zu speichern und später dann im Custom Connetcor verwenden zu können:

Save Response 2

Weitere Requests lassen sich über das Menü der Collection hinzufügen:

Postman Add additional request

So lassen sich alle notwendigen Requests definieren, die wir für unsere Power App oder unseren Power Automate Flow benötigen:

Postman All Requests

Im Detail sind dies:

TitelMethodeURL
Get latest by symbolsGEThttps://api.currencyscoop.com/v1/latest?base=CHF&symbols=USD,EUR
ConvertGEThttps://api.currencyscoop.com/v1/convert?base=CHF&to=USD&amount=125.75
Get supported currenciesGEThttps://api.currencyscoop.com/v1/currencies?type=fiat

Im 2. Teil werden wir diese Definitionen nutzen, um in Power Apps einen Custom Connector zu definieren.

0 Comments

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert