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

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

Im vorigen Beitrag, habe ich beschrieben, wie man eine REST API mit Hilfe von Postman evaluieren kann. Diese Vorarbeit können wir nun nutzen, um einen Custom Connector für Power Apps und auch Power Automate (benutzen den selben Mechanismus, ebenso Azure Logic Apps) zu konfigurieren.

In diesem Beitrag nutzen wir eine Postman Collection für die Definition eines Custom Connectors.

Postman Collection exportieren

Zunächst können wir die Collection in Postman exportieren, um sie dann für die Definition der Schnittstelle zu nutzen:

Postman export collection 1

Für die Definition eines Custom Connectors kann momentan nur die Version v1 von Postman genutzt werden:

Postman export collection 2

Der Klick auf Export speichert eine JSON Datei mit der Definition der Collection und der darin enthaltenen Requests.

Collection für Custom Connector importieren

Die eigentliche Definition des Custom Connectors erfolgt nun im Power Apps Portal (https://make.powerapps.com/ ).

Unter dem Abschnitt Data lassen sich nun die Custom Connectors aufrufen:

PowerApps Data Custom Connector

Auf der dann angezeigten Seite kann man rechts oben einen neuen Custom Connector anlegen. In unserem Fall nutzen wir die Option Import a Postman collection:

New-custom-connector import postman collection

Nun kann man einen Namen für den neuen Connector vergeben und die zugehörige JSON Datei für die Postman Collection auswählen:

Import postman cpllection

Über die Schaltfläche Continue kommt man dann zur eigentlichen Definition des Cutom Connectors.

Die Informationen in General werden aus der gespeicherten Collection von Postman übernommen. Zur besseren Identifikation des Connectors bei der späteren Nutzung in einer Power App empfiehlt sich das Icon anzupassen und die Beschreibung (z.B. eine Versionsnummer, da diese dann auch im Power Apps Studio beim Einbinden sichtbar ist) zu erweitern:

Custom Connector General Info

Authentifizierung konfigurieren

Über den Link Security gelangt auf die zweite Seite. In der JSON Datei von Postman ist die Authentifizierungsmethode eigentlich korrekt hinterlegt:

Postman Collection JSON

Der Import erkennt dies jedoch nicht. Deshalb muss man dies manuelle machen. In unserem Fall greifen wir über einen API Key zu, der in einem Query Parameter mitgeliefert wird. Wichtig ist, dass der Parameter name mit der API Schnittstelle übereinstimmt (in unserem Fall api_key) und dass in der Parameter location der Wert Query ausgewählt ist:

Custom Connector Security

Aktionen konfigurieren

Weiter geht es dann mit der eigentlichen Definition der möglichen Aktionen. Da wir eine Postman Collection importiert haben, sind diese bereits definiert:

Custom Connector Actions 1

Man sollte jedoch die einzelnen Aktionen kontrollieren, ob der Import die Parameter korrekt eingelesen hat. Ansonsten kann man dies manuell korrigieren:

Custom Connector Actions 2

Response definieren

Da wir in Postman die Ergebnisse der Abfragen (Requests) jeweils gespeichert haben, werden diese automatisch im Abschnitt Response eingetragen. Man kann diese durch Klick auf 200 (Rückgabecode bei erfolgreicher Abfrage) sich ansehen:

Custom Connector 200 Response 1

Man sollte die Definition des Ergebnisses noch einmal kontrollieren:

Custom Connector 200 Response 2

Auf diese erkannten Felder/Tokens kann später in Power Apps oder Power Automate zugegriffen werden.

Anderes Response definieren

Sollte es nicht dem erwarteten Ergebnis entsprechen, kann man auch manuell durch Klick auf den Link + Import from sample ein neues beispielhaftes Ergebnis im JSON Format importieren.

Das Ergebnis, welches von einem Webserviceaufruf zurückgegeben wurde, kopiert man sich am besten wieder von Postman:

Postman response

Und fügt es dann in die das Feld Body ein:

Custom Connector Response 3

Nach einen Klick auf die Schaltfläche Import, werden die erkannten Felder bzw. Token angezeigt:

Custom Connector 200 Response 3

Wie gesagt muss man die obigen Schritte nur machen, wenn das automatisch erzeugte Ergebnis nicht dem entspricht, was man erwartet. Bzw. wenn man es im Nachhinein noch anpassen will, weil man beispielsweise andere Werte für die Input Parameter verwendet.

Rückgabetoken auf Datentyp kontrollieren

Idealerweise prüft man für jeden Token des Ergebnisses, ob der Datentyp korrekt gesetzt ist und korrigiert diesen ggf. Dies kann vor allem bei Zahlenwerten vorkommen (z.B. ist das Ergebnis bei einer Gleitkommazahl zunächst als String interpretiert, anstatt als Number):

Custom Connector Response 5

Nach dem Editieren ist man in der Lage den Datentyp ggf. anders zu definieren (vor allem sinnvoll, wenn man damit noch weitere Berechnungen in Power Apps durchführen will. Ansonsten kann man es auch String belassen):

Custom Connector Response 6

Manuelle Konfiguration

Es ist auch zu jeder Zeit möglich, neue Aktionen in den Custom Connector aufzunehmen. Hierzu klickt man auf New action:

Custom Connector New Action 1

Dort erfasst man im Abschnitt General zunächst Summary, Beschreibung und die ID der neuen Aktion:

Custom Connector New Action 2

Danach muss man den Aufruf (Request) definieren indem man auf den Link + Import from sample klickt:

Custom Connector New Action 3

Dadurch wird auf der linken Seite die Möglichkeit angeboten, die Parameter anzugeben. In unserem Beispiel verwende ich einen weiteren Get Request und gebe die URL mit der aufzurufenden Funktion samt Parametern an:

Custom Connector New Action 4

Durch Klick auf Import, wird die Definition für die Aktion erstellt:

Custom Connector New Action 5

In diesem Fall ist es notwendig, den Response manuell zu definieren. Dies erreich man durch Klick auf Default:

Custom Connector Response 1

Die restlichen Schritte sind dann identisch wie im Abschnitt Anderes Response definieren beschrieben (siehe oben).

Testen der Aktionen

Hat man alle Aktionen definiert, sollte man zum Schluss den Konnektor noch testen. Bevor man dies erledigen kann, muss man zunächst den Konnektor erstellen (Klick auf Create connector):

Custom Connector Test 1

Troubleshooting Einschub

Bei der Erstellung des Custom Connectors kann es zu Fehlermeldungen kommen. In unserem Fall erscheint am oberen Rand die folgende Fehlermeldung:

Create Custom Connector Error 1
Fehlermeldung
Specified swagger has the following errors: ‚Definition is not valid. Error: ‚Critical : paths/~1v1~1convert/get/responses/200/schema/properties/response/properties/amount/format : The type of the property is incorrect. Expected type ‚String‘, but value is of type ‚Null‘. ‚

Letzten Endes geht es um den Response unseres Aufrufes für die unterstützten Währungen:

https://api.currencyscoop.com/v1/currencies?type=fiat

Das Ergebnis (Response) ist schlichtweg zu gross und kann vom Custom Connector nicht mehr verarbeitet werden:

Create Custom Connector Error 2

Hier bieten sich 2 Lösungen an:

  • Man kürzt den Response manuell (z.B. mit Hilfe von Visual Studio Code oder Notepad++), bis er akzeptiert wird.
  • Man arbeitet mit dem Default Ergebnis und nutzt eine Azure Function, um das erhaltene Ergebnis so umzuwandeln, dass es dann in Power Apps genutzt werden kann (ich werde in einem späteren Post zeigen, wie man mit Hilfe einer Azure Function das erhaltene JSON Ergebnis so umformen kann, dass man besser damit in Power Apps arbeiten kann).

In unserem Fall habe ich das JSON so verkürzt, bis es akzeptiert wurde. Anpassen kann dann den Response dann durch Klick auf + Import from Sample:

Create Custom Connector Error 3

Danach kann man auf die Testseite wechseln, indem man unten rechts auf Test klickt:

Custom Connector Test 2

Um die Aktionen zu testen, ist zunächst eine Verbindung (Connection) notwendig:

Custom Connector Test 3

Wir müssen nun in unserem Fall den API Key eingeben, damit man die Verbindung nutzen kann. Ein Klick auf Create erzeugt dann die Verbindung:

Custom Connector Test 4

Man landet dann merkwürdigerweise auf der Auflistung der verfügbaren Verbindungen. Hier muss dann nochmal explizit die Custom Connectors aufrufen:

Custom Connector Test 5

und den gerade erstellten Konnektor nochmal im Edit Modus öffnen:

Custom Connector Test 6

Nachdem der Custom Connector angezeigt wurde, kann man direkt den Punkt 4. Test anwählen:

Custom Connector Test 7

Und die jeweilige Funktion testen:

Custom Connector Test 8

Als Ergebnis sollte man zum Einen den Status Code 200  erhalten und das zurückerhaltene Ergebnis sollte zudem noch die korrekten Werte enthalten:

Custom Connector Test 9

Es ist zu empfehlen die Tests für alle Funktionen durchzuführen:

Custom Connector Test 10

Ansonsten kann es später in der Power App zu einer aufwendigen Fehlersuche kommen, wenn die Operationen nicht das zurückliefern, was man eigentlich erwartet hat.

Damit ist die Definition unseres Custom Connectors erst mal abgeschlossen. Im nächsten Teil verwenden wir diesen in der Power App.

0 Comments

Schreibe einen Kommentar

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