# Externe API-Antwort in einer Szene verwenden

**URL:** <https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199>\
**Category:** Demandes livrées\
**Created:** [19. März 2021 um 21:51 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199 "2021-03-19T21:51:56Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [19. März 2021 um 21:51 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/1 "2021-03-19T21:51:56Z")

</div>

**Funktionsbeschreibung**  
Man kann einen API-Aufruf in Szenen ausführen, aber nur, um Aktionen auf entfernten Diensten auszulösen.

Es wäre super mächtig, zusätzlich einen API-Aufruf machen und die Antwort als Variable verwenden zu können.

Konkrete Beispiele:

- Um 6 Uhr einen Aufruf an die Wetter-API auslösen
- Mir eine Nachricht mit den Tagesvorhersagen schicken

Oder, wenn ich das Haus verlasse, mich warnen, ob es an diesem Tag regnen wird.

Ich stelle mir die Möglichkeit vor, einen zurückgegebenen JSON-Wert abzurufen, entweder wie in JavaScript `{{ reponseapi.data.meteo.pluie }}` oder in grafischer Form, wie bereits mit den vorhandenen Geräten gemacht.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [20. März 2021 um 01:04 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/2 "2021-03-20T01:04:53Z")

</div>

Sehr gute Idee! 🙂

Ich denke, wir werden es in grafischer Form machen. Dann müssen wir beim Erstellen der Karte einen „Test“-Aufruf machen. Und dann die JSON-Antwort lesen und eine Liste aller verfügbaren Schlüssel erstellen und diese in die Liste der verfügbaren Variablen einfügen 🙂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [17. April 2021 um 03:37 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/3 "2021-04-17T03:37:28Z")

</div>

Ich komme darauf zurück, immer mit dem Ziel, die Szenen zu verbessern, habe ich heute Morgen Spaß daran gehabt, das zu codieren 🙂

Kleines Video-Beispiel, bei dem der BTC-Preis über die Coinbase-API abgefragt und die API-Antwort in der Box „Nachricht senden“ verwendet wird 🙂

Natürlich ist das nur ein Beispiel, es ist möglich, jede beliebige API-Antwort abzurufen!

[https://streamable.com/ezw984](https://streamable.com/ezw984)

Der Pull-Request kommt bald

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [17. April 2021 um 04:02 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/4 "2021-04-17T04:02:13Z")

</div>

Hop, der PR ist auf GitHub =\>

[https://github.com/GladysAssistant/Gladys/pull/1148](https://github.com/GladysAssistant/Gladys/pull/1148)

Natürlich kann man die Daten auch in der Box „Nur fortsetzen, wenn“ verwenden:

 ![Screenshot 2021-04-17 at 12.04.17](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/f/f934ecbfd0c925c72b9487ba64f6a51803965131.png)

 ![Screenshot 2021-04-17 at 12.04.22](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/3ee6711c247c5b6d3aae58de0f570f2d22ed1792.png)

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [17. April 2021 um 06:13 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/5 "2021-04-17T06:13:55Z")

</div>

😳 Das ist super sauber und genau das, was ich mir vorgestellt habe, als ich dieses Thema geschrieben habe!

Ich wollte, dass Gladys mir Nachrichten mit Daten schickt, die von extern abgerufen wurden, wie z. B. das Wetter, wenn ich das Haus verlasse – das ist Spitze!!! 🔥

Was passiert, wenn:

- es kein Internet gibt?
- Die Antwort während der Ausführung anders ist als erwartet (z. B. „API-Grenze überschritten“)?

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [17. April 2021 um 06:20 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/6 "2021-04-17T06:20:46Z")

</div>

> [@lmilcent](#):
>
> Gibt es kein Internet?

Gute Frage, ich habe den Fall nicht behandelt, aktuell wird es ein bisschen wild werden ^^

Ich denke, man sollte die Ausführung der Szene stoppen.

> [@lmilcent](#):
>
> Die Antwort ist anders als erwartet während der Ausführung (z. B. „API-Schwellenwert überschritten“)?

Es wird wild werden, deine Nachricht wird Löcher haben.

Dann weiß ich nicht, was die Lösung wäre: Überprüfen, ob das Schema dasselbe ist, und wenn es nicht dasselbe ist, die Szene stoppen? Das Problem ist, dass einige API-Antworten möglicherweise variable Antworten haben und das muss nicht unbedingt ein Grund sein, die Ausführung der Szene zu stoppen… Gute Frage!

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [17. April 2021 um 06:29 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/7 "2021-04-17T06:29:24Z")

</div>

Ansonsten basiert man nur auf dem Rückgabecode der API.

- Timeout von 20 Sekunden
- Code 200 = Weiter

Der Rest stoppt die Ausführung.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [17. April 2021 um 06:35 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/8 "2021-04-17T06:35:59Z")

</div>

> [@lmilcent](#):
>
> Man basiert einfach auf dem API-Rückgabecode.

Ganz im Gegenteil, ich denke, es ist nützlich, auch mit anderen Statuscodes weiterzumachen.

Beispiel:

- Du möchtest überprüfen, ob deine Website/API mit Gladys online ist. Du erstellst eine Szene, die alle Minuten läuft und einen GET-Request an deine Website sendet. Du machst ein „Weiter nur, wenn Status != 200“ und sendest eine Nachricht „Die Website ist offline, Status = {{status}}“

- Du möchtest ein Gerät steuern und eine Nachricht zurücksenden, wenn alles gut gelaufen ist

- usw.

Ich denke, in vielen Fällen sollte die Szene auch mit „Fehler“-Codes weiterlaufen, gerade damit der Benutzer diese Information in der Szene verwenden kann.

Für den Fall „Internet ist offline“ scheint mir das ein besonderer Fall zu sein, und da kann man die Szene tatsächlich abbrechen.

Ansonsten könnte man in der Box einen Parameter „Szene stoppen, wenn der Rückgabecode anders ist als: „Liste der Codes auswählen“, aber das erscheint mir etwas umständlich, ich weiß nicht

---

<div class="post-metadata">

**Author:** ![spenceur](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/spenceur/32/1961_2.png) [@spenceur](https://community.gladysassistant.com/u/spenceur)\
**Post date:** [17. April 2021 um 07:42 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/9 "2021-04-17T07:42:29Z")

</div>

Hallo @lmilcent!  
Ich verstehe dein Beispiel nicht ganz, bei dem eine API verwendet wird, um das Wetter abzurufen, obwohl wir bereits einen Dienst dafür haben.  
Warum nicht diesen Dienst für die Szenen verwenden, anstatt einen API-Aufruf zu machen? (Vorausgesetzt, wir haben die Aktion?)

Ansonsten ist es sauber, was du vorschlägst @pierre-gilles, aber man könnte dem Benutzer die Wahl lassen, die Szene basierend auf x oder y Gründen zu stoppen, aber das haben wir bereits mit „nur fortsetzen, wenn“ (oder?).

Falls die Antwort jedoch anders ist, warum nicht eine Option hinzufügen, um ihm zu sagen, dass er basierend auf der Benutzerauswahl stoppen soll?

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [17. April 2021 um 08:12 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/10 "2021-04-17T08:12:43Z")

</div>

> [@spenceur](#):
>
> Warum nicht diesen Service für die Szenen verwenden, anstatt einen API-Aufruf zu machen? (Vorausgesetzt, man hat die Aktion?)

Soweit ich weiß, ist das aktuell gerade nicht möglich.

---

<div class="post-metadata">

**Author:** ![spenceur](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/spenceur/32/1961_2.png) [@spenceur](https://community.gladysassistant.com/u/spenceur)\
**Post date:** [17. April 2021 um 08:25 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/11 "2021-04-17T08:25:50Z")

</div>

Ja, daher meine Frage am Ende 😃.  
Für mich, um diesem Wetterbedarf gerecht zu werden, müssten wir einfach die fehlenden Bausteine im Zusammenhang mit dem Wetterdienst ergänzen, heute OpenWeather, aber auch morgen TotoMeteo 😛

Genau wie die fehlenden Bausteine im Kalenderservice (der uns heute nicht viel nützt, außer dass er das Gleiche wie die nativen Apps tut [nur schlechter, weil wir derzeit nicht mit den Ereignissen interagieren können])

Ich bin mir bewusst, dass das Arbeit bedeutet, ich bin selbst Entwickler und habe nicht die Zeit (so viel Zeit wie bei der V3), um euch zu helfen ^^.  
Ich äußere nur Ideen oder meine Gedanken zu bestimmten Bedürfnissen 😃

Abgesehen davon beobachte ich aus dem Augenwinkel den Fortschritt von Gladys (nur zur Info, seit zibee2mqtt bin ich endlich auf die V4 umgestiegen, während meine V3 weiterhin läuft, um die Lücke auszugleichen, aber das ist ein anderes Thema 😛)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [27. Mai 2021 um 06:38 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/12 "2021-05-27T06:38:50Z")

</div>

Ich schließe dieses Thema, da die Funktion entwickelt wurde.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [27. Mai 2021 um 06:38 UTC](https://community.gladysassistant.com/t/utiliser-une-reponse-api-externe-dans-une-scene/6199/13 "2021-05-27T06:38:55Z")

</div>


