0

Ninox und Zapier

Guten Tag allerseits

wir haben versucht, mit Ninox als Trigger vie Zapier eine Nachricht in Microsoft Teams auszulösen. Grundsätzlich hat das auch funktioniert, doch nicht ganz so, wie wir es wünschen:

In einer Tabelle haben wir ein Auswahlfeld mit drei Optionen: Positiv, Negativ, Unklar. Wir möchten die Teams-Nachricht ausschliesslich dann auslösen, wenn bei diesem Feld die Option "Positiv" geklickt wird.

Nun kann der Trigger aus Ninox offenbar nur bei 1) New Record oder 2) bei Update Record ausgelöst werden. (Schade, dass der Trigger nicht auf Feld-Ebene hinabreicht - würde vieles erleichtern)

Also haben wir versucht, einen Filter einzubauen. Der Trigger ist Update Record, die Action bei Zapier soll jedoch nur ausgelöst werden, wenn das beim Auswahlfeld Positiv drinsteht. Da haben wir nun zwei Probleme:

1) wir haben es schlicht nicht geschafft, auf das Auswahlfeld zuzugreifen: Wie kann ich den Wert aus einem Auswahlfeld herauslesen? (Offensichtlich geht das nur mit Text oder Zahlen)

2) wenn der Datensatz im Verlauf in einem anderen Feld verändert wird und das Auswahlfeld auf Positiv steht, löst das erneut ein Zap aus.

 

Das Problem 1) haben wir versucht zu lösen, indem wir ein verstecktes Berechnungsfeld eingefügt haben und mit der Funktion (im Auswahlfeld nach update des Feldes) if Auswahlfeld = 1 then "Positiv" else "not" end den Wert Positiv zu übergeben. Das funktionierte nicht, da das Berechnungsfeld in Zapier partout nicht angezeigt wird. Also haben wir versucht, das mit einem Textfeld zu lösen, da in Zapier "Text equal as" gewählt werden könnte. Doch wir haben es nicht hingekriegt in der if then else end-Funktion eine Variable zu definieren, um den String "Positiv" in dieses Textfeld reinzuschreiben.

Konnte ich mich verständlich ausdrücken?

Wäre für Unterstützung sehr dankbar. Vielen Dank und liebe Grüsse, Roger

4 Antworten

null
    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Man kann doch sicher die Microsoft Teams API direkt ansprechen...Ich hatte mir das vorhin schonmal angeschaut - das funktioniert. Man braucht einen API Bearer Token, die Teams ID und die Chat ID und kann dann aus der NINOX heraus direkt in Teams schicken .. ohne Zapier. (Zapier macht ja im Grunde nix anderes, nur komfortabler - und teurer...)

     

    Die alternative wäre, bei POSITIV einen Datensatz in eine Positiv-Tabelle zu schreiben ... und dann hat man den "New Record". Man könnte so auch vorher abfragen, ob es den Record schon gibt in der Tabelle...

     

    Ich stecke gerade mitten im Umzug, vielleicht schaffe ich es ja mal mir die Teams API anzuschauen... oder jemand hat das schon gemacht hier im Forum?

    • Roger_Schwab
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo T. Bartzsch

    vielen Dank für die Rückmeldung - dann klemme ich mich mal dahinter und lerne, mit API umzugehen.

    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Im Prinzip ist das kein Hexenwerk, es kann nur manchmal kompliziert mit der Authorisierung werden. Hier mal schnell ein Beispiel rauskopiert, um via Button alle Dateien eines Datensatzes in die Dropbox zu kopieren....

    Du hast immer eine Authorisierung für die API, entweder als API-Key oder Bearer Token usw. den man in der entsprechenden Anwendung generiert (Teams, Dropbox, Google etc.). Und dann hast Du den link zur RestAPI. Dieser erwartet dann meist einen bestimmten Body mit vorgegebener Datenstruktur im JSON Format. Da muss man sich die jeweiligen API Dokumentationen anschauen..

    Wie gesagt, hier mal als Beispiel BUTTON -> NINOX -> Dropbox:

     

    let auth := {
    Authorization: "Bearer d-PR8eU-shUXXXXXXXXXXXx2YyI5TsTAaB0E675WfJXXXXXX--U8X4Mnv5",
    'Content-Type': "application/json"
    };
    for i in files(this) do
    let Bildlink := shareFile(i);
    let data := {
    path: "/Standskizzen/AK-" + Artikelnummer + "/" + item(split(text(i), "/"), 1),
    url: Bildlink
    };
    do as server
    let response := http("POST", "https://api.dropboxapi.com/2/files/save_url", auth, data);
    'Dropbox API' := text(response)
    end
    end

     

    Zur Erklärung: in "auth" werden die Authorisierungs credentials abgelegt, dann iterieren wir durch die Dateianhänge und erzeugen für jeden Dateianhang einen NINOX Share link in der Variable Bildlink. Der Pfad zur Dropbox wird im "data"-Block manuell angelegt (weil ich vorher über eine andere Funktion bereits einen passenden Ordner - auch über die API - angelegt habe) und um den Dateinamen ergänzt ( item(split(text(i), "/"), 1) ). Am Ende wird alles kombiniert und in der Variable "response" zwischengespeichert - d.h. der http-Aufruf als POST (oder GET usw.), der link zum entsprechenden API-Knoten (siehe Dokumentation der jeweiligen API), der Block mit der Authentifizierung und letztlich der Block mit den Daten, so wie die API das eben jeweils braucht... Damit ich sehe was passiert, habe ich ein mehrzeiliges Textfeld "Dropbox API", welches ich dann mit text(response) befülle .... "response" ist in diesem Fall auch eine Antwort der API im JSON Format, mit der man dann bei anderen Abfragen zB. weiterarbeiten kann.

    Frei erfundenes Beispiel.... man fragt eine WetterAPI mit GET ab und hat dann in der Variable "response" die Antwort dieser API - dann kann man anhand der Punkt-Navigation die einzelnen JSON Elemente auslesen und in der NINOX weiterverarbeiten und zB. in ein Ninox-Textfeld schreiben: let TEXTFELD := number(response.result.location.degrees)

    Das nur als grober Abriss - bin mitten im Unzugs-Chaos, ab Freitag heisst es: Goodbye Deutschland!

     

    LG, Tobias

    • Roger_Schwab
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Tobias

    das ist ein wunderbarer Einstieg, vielen Dank

    Ich sehe eine tolle Lernkurve auf mich zukommen :-)

    Alles gute ausserhalb Deutschland

    LG, Roger