NEWS
Http post mit Blockly
-
Hallo,
ich würde gerne einen http post über blockly erstellen.
Das scheinr so leicht ja nicht zu gehen.Kann man das so in der Art machen?
Würde gerne alles mit Blockly erstellen und das dann mit einer Funktion erledigen.Über get geht es mit folgender url:
http://api.pdflayer.com/api/convert?access_key=xxxxx&document_url=https://Google.de
Ich möchte allerdings anstatt "document_url" "document_html" verwenden. Dort muss mit post gearbeitet werden.
Als Ergebnis kommt vermutlich ein Link zu einer PDF.
Diesen würde ich gerne in einen Datenpunkt schreiben, zusätzlich runterladen und in einer Mail als Anhang senden.Das Problem ist, daß ist alles theoretisch und weiß bei keinem Schritt wie es geht und ob es geht...
EDIT:
Hier ist die API beschrieben:
https://pdflayer.com/documentation#quickstartEDIT 2:
Habe auch schon was mit curl rumprobiert. Aber auch das schaffe ich nicht... -
@david-g hast du es hin bekommen? ich versuche was ähnliches....
mit dem Javascript Adapter in der Version 7.11.1 (aktuell im beta repo) kommt ein http-post blockly baustein, der aber scheinbar noch bugs hat... -
Habe den Ansatz damals nicht weiter verfolgt.
Hatte eine lokale Alternative gefunden. -
@chris299 sagte in Http post mit Blockly:
@david-g hast du es hin bekommen? ich versuche was ähnliches....
mit dem Javascript Adapter in der Version 7.11.1 (aktuell im beta repo) kommt ein http-post blockly baustein, der aber scheinbar noch bugs hat...Der Ansatz funktioniert so eher nicht, da das absenden des http Post Befehls und das annehmen der Antwort des Servers asynchron laufen - das führt zu laufzeitproblemen, es sei denn du arbeitest im ‘Fire and forget’ Modus, sprich du ignorierst die Antwort des Servers auf den HTTP-Post.
Ich würde auf die 7.11.1 des JS Adapters warten.
A.
P.s. mit hinreichen JS wissen kann man das natürlich hin bekommen - aber das wird dann weder handlich noch übersichtlich. -
@asgothian die Anmerkung verstehe ich nicht. Bezog sich das auf diese konkrete API? Man bekommt doch üblicherweise schon eine Antwort auf ein HTTP-POST, die man weiter verarbeiten kann...
Ich habe die 7.11.1. installiert, aber ich hänge da an einem Bug, dass ich das script mit dem POST nicht speichern kann.
Zudem scheint der von mir benötigte Auth-typ (String im Header) nicht möglich zu sein.....Ich habe auch noch nicht verstanden, wie, bzw. ob überhaupt möglich ist, per blockly-JSON2object aus einem DP mit einem komplexen JSON Array einen bzw. mehrere Pfade für ein HTTP-GET zu extrahieren, dessen Response-Binary-Daten ich dann per POST weiterleiten wollte....
siehe auch https://forum.iobroker.net/topic/14288/tr-064-fritzbox-anrufbeantworter/39
das Format ist:{"Root":{"Message":[{"Index":["1"],"Tam":["0"],"Called":["0123456789"],"Date":["09.09.20 21:30"],"Duration":["0:01"],"Inbook":["0"],"Name":["Feuersturm"],"New":["1"],"Number":["0987654321"],"Path":["/download.lua?path=/data/tam/rec/rec.0.001"]},{"Index":["0"],"Tam":["0"],"Called":["0123456789"],"Date":["09.09.20 21:17"],"Duration":["0:01"],"Inbook":["0"],"Name":["Feuersturm"],"New":["0"],"Number":["0987654321"],"Path":["/download.lua?path=/data/tam/rec/rec.0.000"]}]}}
-
@chris299 sagte in Http post mit Blockly:
@asgothian die Anmerkung verstehe ich nicht. Bezog sich das auf diese konkrete API? Man bekommt doch üblicherweise schon eine Antwort auf ein HTTP-POST, die man weiter verarbeiten kann...
Ich habe die 7.11.1. installiert, aber ich hänge da an einem Bug, dass ich das script mit dem POST nicht speichern kann.
Zudem scheint der von mir benötigte Auth-typ (String im Header) nicht möglich zu sein.....Ich habe auch noch nicht verstanden, wie, bzw. ob überhaupt möglich ist, per blockly-JSON2object aus einem DP mit einem komplexen JSON Array einen bzw. mehrere Pfade für ein HTTP-GET zu extrahieren, dessen Response-Binary-Daten ich dann per POST weiterleiten wollte....
siehe auch https://forum.iobroker.net/topic/14288/tr-064-fritzbox-anrufbeantworter/39
das Format ist:{"Root":{"Message":[{"Index":["1"],"Tam":["0"],"Called":["0123456789"],"Date":["09.09.20 21:30"],"Duration":["0:01"],"Inbook":["0"],"Name":["Feuersturm"],"New":["1"],"Number":["0987654321"],"Path":["/download.lua?path=/data/tam/rec/rec.0.001"]},{"Index":["0"],"Tam":["0"],"Called":["0123456789"],"Date":["09.09.20 21:17"],"Duration":["0:01"],"Inbook":["0"],"Name":["Feuersturm"],"New":["0"],"Number":["0987654321"],"Path":["/download.lua?path=/data/tam/rec/rec.0.000"]}]}}
Das extrahieren wird in Blockly wahrscheinlich gehen - das ist nicht das Problem. Das Problem ist das der http Post Aufruf asynchron abgearbeitet wird. Das bedeutet das deine js Funktion irgendwie darauf warten muss das das Ergebnis abgeholt werden kann, dann das Ergebnis laden muss. Dazu werden üblicherweise externe Bibliotheken genutzt. Diese Integration innerhalb einer Blockly Funktion dürfte eher schwierig werden.
Wenn die 7.10.1 für dich nicht funktioniert empfehle ich den folgenden Umweg:
Schreib (mit Hilfe aus dem Forum) ein JS Skript welches die Http Abfrage macht, getriggert durch einen DP in den du den Post String rein schreibst.
In dem Skript kannst du dann über eine entsprechende Bibliothek (Axios ist da aktuell glaub ich die Bibliothek der Wahl) den Post Befehl absetzen und das Ergebnis lesen. Dann schaust du noch ob ein Fehler geworfen wird,und wenn das nicht der Fall ist dann schreibst du die Antwort als String in einen weiteren DP. Auf dessen Änderung kannst du dann in Blockly triggern und die weitere Verarbeitung in blockly machen.Zu dem JS Skript sollte es im Forum hinreichend Beispiele geben.
A.